AI书房
用书来读懂AI
这里收录金京镇律师的AI、法律、产业、历史、政治、文化主题在线书。每本书都按目录、序言、章节、尾声整理,方便连续阅读。
[AI书房] 第18章 构建工作流的常见错误与解决方法
Claude Code完全掌握
Claude Code完全掌握
第18章 构建工作流的常见错误与解决方法
金京镇
错误一:目标描述不够清晰
「我需要一个LinkedIn潜在客户抓取工具。」
把这一句话丢给Claude Code,看看会发生什么。智能体不知道你想要哪个行业的潜在客户,也不知道要瞄准什么职位。它只能开始胡乱抓取随机档案。时间和token白白浪费,末尾只剩下一份毫无用处的Excel文件。
回想前面章节抓取622条招聘信息的经历。在计划模式中,我们提供了URL、告知了页数、描述了需要的字段。Claude Code随后抛出的问题非常具体:是否要抓取每条信息的详情页?文件保存到哪里?有没有筛选条件?回答完这些问题之后,智能体才着手制定执行计划。
模糊目标引发的连锁反应
目标一旦模糊,智能体的每一个判断都会悬在半空。只说「潜在客户抓取工具」,智能体就不得不独自做出以下决定。
这些问题中哪怕一个判断失误,整体结果就会跑偏。智能体确实可以主动提问,但前提是你在计划模式中提供了足够的上下文。如果在旁路权限模式下给出模糊指令,智能体就会自行猜测、一路推进。
明确目标的公式
好的目标设定有固定套路。
模糊的请求:
「帮我在LinkedIn上找CEO的档案。」
清晰的请求:
「我需要75份科技公司CEO的LinkedIn档案。请把姓名、公司名、邮箱、档案链接整理到电子表格里。凑齐75份即为完成。」
差别一目了然。后者包含了目标人群(科技公司CEO)、数量(75份)、所需数据(姓名、公司名、邮箱、档案链接)、输出格式(电子表格)以及完成条件(达到75份)。
[图18-1] 模糊请求与清晰请求的产出差异对比]
把智能体当专家对待
这里需要一个观念上的转变。智能体不是机械执行指令的工具,它是专家。用户扮演管理者的角色,把技术细节委托给智能体去处理。
想象一下,你委托一位真正的软件开发者做一款App。如果只说「帮我做个App」,开发者也会一头雾水。需要什么功能、谁来使用、截止日期是什么时候,这些信息到位了,工作才能启动。智能体同理。
不过,你不必搞清所有技术细节。问一句「我想要这样的结果,你觉得哪种方案比较好?」,智能体就会凭借Opus 4.5级别的推理能力,比较五种方案并选出最优解。
错误二:不定义「完成」的标准
如果说第一个错误关乎「做什么」,第二个错误则关乎「什么时候停下来」。
不给智能体一个明确的终止点,三种问题就会接踵而来:过度复杂化、不必要的重复、没完没了的调研。智能体只要判断还能做得更好,就会继续尝试。这既是优势,同时也是隐患。
无限循环的风险
再看牙医潜在客户抓取的案例。当时只说了「帮我找美国的牙医,收集联系方式」。如果智能体收集到120条之后仍然认为「还能继续」,会怎样?它会添加新的城市、探索新的数据源、不断改进抓取工具,停不下来。
上下文窗口耗尽,token费用飙升,真正想要的结果却迟迟不出。
完成条件的设计
完成条件由两条轴线构成:定量标准和定性标准。
定量标准示例:
定性标准示例:
在欧洲销售岗位抓取案例中,这条原则发挥了作用。我们给出了「500条」的目标,当智能体在欧洲只找到52条时,它主动提出了备选方案。这正是因为完成条件足够明确,智能体自己意识到了目标与现状之间的差距。
[图18-2] 有完成条件的工作流与无完成条件的工作流执行路径对比]
与智能体共同编写项目需求文档(PRD)
两个错误的解决方案最终指向同一个出口:与智能体共同编写项目需求文档(PRD,Project Requirements Document)。
需求文档协作编写的实际过程
打开计划模式,然后这样说。
「我有一个大致的想法,请帮我把它变成一份扎实的PRD。请头脑风暴、做调研、问我该问的问题。这样我们才能高质量地搭建这个工作流。」
收到这个请求后,智能体会经历三个阶段。
第一阶段:头脑风暴与调研。智能体根据描述的目标,调查相关的API、MCP连接服务器和数据源,有时还会进行网络搜索。设计YouTube分析工作流时,智能体对比调研YouTube Data API和MCP连接服务器,就属于这个阶段。
第二阶段:问答环节。智能体会一次性抛出多个问题。「要追踪哪些频道?」「多久收一次报告?」「数据是否也要写入电子表格?」「报告发送到哪个邮箱?」这些问题的作用,就是填补需求文档中的空白。
第三阶段:制定计划。问答结束后,智能体会给出一份完整的执行计划,涵盖目标、工作流结构、所需工具清单、输入值、输出值,以及边界情况(Edge Case)的处理方案。
工作流文档的结构
看一份完成的工作流文档,它的结构本身就是一份需求文档。
# 工作流:scrape_job_listings ## 目标 基于搜索关键词从Daily Remote抓取招聘信息。 ## 必填输入 - search_term:搜索关键词 - max_pages:最大抓取页数 - output_path:Excel文件保存路径 ## 使用工具 - scrape_daily_remote_jobs ## 执行步骤 1. 用关键词抓取第一页 2. 检测分页后逐页抓取 3. 数据清洗与去重 4. 生成Excel文件并应用筛选 ## 预期输出 - 整理好的.xlsx招聘信息文件 ## 边界情况处理 - 页面加载失败时重试3次 - 缺失字段以空值填充
有了这份文档,下次运行同一工作流时,智能体就能交出一致的成果。没有文档,每次都会换一种方式去做,结果的质量忽高忽低。
[图18-3] 基于需求文档的工作流文档实例]
智能体工作流的三大优势:自动调试、自然语言控制、自我学习
前面讲了如何避免常见错误,现在从三个角度来看智能体工作流与传统自动化方式之间的本质区别。
自动调试:再也不用手动翻日志了
传统工作流自动化的日常是这样的:搭好一套流程,跑起来,然后在某个没预料到的边界情况上卡住。接下来就得打开日志,分析报错信息,逐条追踪执行数据找原因。一个小时很快就过去了。
智能体工作流把这个过程自动化了。还记得前面章节里,牙科诊所潜客信息抓取工具只提取出2条数据的情况吗?智能体自行诊断出「解析模式有问题」,修改了正则表达式,更新了工具文件,重新执行。整个过程不需要人介入。
这就是所谓的自我修复特性。在实际工作中,这意味着什么呢?右边的显示器上智能体在构建工作流,左边的显示器上你可以处理别的事。偶尔看一眼,帮它把方向调一下就行。AI具有非确定性(non-deterministic),有时候会偏离路线,但大多数错误它自己就能修复。
用语言控制:不用学节点怎么配了
在n8n这类工具里,你得学每个节点(Node)是做什么的、什么时候用、参数和配置值分别代表什么含义。要接API就得读文档、找端点(Endpoint)、把JSON结构配对、搞清楚认证方式。入门门槛很高。
智能体工作流里,你用自然语言描述想要的结果就行。智能体会检查可用的工具,确认有没有MCP连接服务器,需要的话还会自己去查API文档。「帮我抓取欧洲地区的销售岗位信息」这一句话,就包含了抓取工具选择、过滤逻辑实现、Excel输出格式确定这些步骤。
这个差异可以用下面的图来对比。
[图18-4] 传统自动化与智能体工作流的流程对比示意图
自我学习:用得越多,表现越好
过去要更新自动化流程,得手动改节点、重新配置。智能体工作流不一样,智能体每次遇到问题都会学习,并更新工作流和工具。
回顾求职信息抓取工作流的演进过程就能看得很清楚。第一次运行成功抓取了209条数据,第二次运行直接复用了之前创建的工具。第三次运行(牙科诊所潜客)创建了全新的工具,但用到了前几次积累下来的抓取模式。每个工作流文件和工具文件,经过反复执行变得越来越精细。
手动触发与定时触发的区别
有一个区分需要说清楚。坐在Claude Code前面说「帮我做这件事」,这属于手动触发(Human-triggered)。这种情况下智能体可以实时自我修复和学习。
但如果部署成每周一早上6点自动运行,情况就不同了。部署出去的是工作流和工具,不是智能体本身。所以部署后的工作流在执行过程中遇到错误,没法自己修复,因为智能体并不在场。
这是智能体工作流目前的局限。要改进定时触发运行中的工作流,你需要回到Claude Code里修改工作流,再把更新后的版本重新部署。
我们讨论了如何把工作流设计得更稳健,也看到了智能体方法带来的好处。明确目标、定义完成条件、和智能体一起编写需求文档,工作流的质量会大幅提升。带着这些原则,接下来该了解如何把Google提供的强大工具生态接入智能体了。
人工智能专家 金京镇律师
AI法律政策专家 · 前国会议员 · 著有多部作品
如果这本书哪怕短暂地陪伴过你,请支持我们,让下一个故事也能与世界见面。
(自愿赞助账户:农协 302-1096-0948-81 户名:金京镇)


