跳到主要内容

AI Agents in Action — 本课题摘录

读了哪几章: 第 1 章(agent 与它的世界)、第 5 章(给 agent 加动作)、第 11 章(规划与反馈)。 全书十一章,其余本轮没读。

这本书对本课题的贡献集中在两处:一个分档表,和一个可复现的对照实验。

它对本课题回答了什么

按"谁在决定"分成四档 —— 这张表值得进讲义

谁在决定例子
直接对话全是人你直接跟模型说话,中间没有任何东西
代理改写模型替你改写请求你说"画一张图",模型把它改写成更适合下游的说法
有审批的助手模型准备好调用,但要人点头调用前需要用户批准,批准后执行、结果回给模型、模型再用自然语言包一层还给用户
自治 agent模型自己定计划、自己做决定只在里程碑处可能问一句,其余时候自己跑

(依据:书 · AI Agents in Action §1 —— 按交互形态分四档——直接与 LLM 对话、代理 agent(替你把请求改写成更适合任务的形式)、有审批的 agent/助手(LLM 准备好调用但需用户批准,执行后结果返回 LLM 再包成自然语言)、自治 agent(自己解释请求、构造计划、识别决策点并独立执行,可能在里程碑处请求反馈))

本课题第三圈("人怎么看见与插手")一直被当成一个开关:要不要审批。 这张表说它是一条谱系,而且四档之间的差别不是"批不批",是"谁在做决定"。

对我们的最小原型有一个直接推论:先做第三档(有审批),不要一上来做第四档。 第三档的循环结构和第四档完全一样,只是多一个暂停点——而那个暂停点让你能看清它每一步在干什么。

它还提到:某些厂商刻意避免用"agent"这个词,因为在机器学习的历史里 agent 指的是自主决策的那一类。

单 agent 的五类组件

组件是什么
身份与人设就是系统提示——背景、口吻、怎么响应
动作与工具完成任务、探索、沟通
知识与记忆用最相关的信息标注上下文,同时限制用掉的词元数
推理与评估想清楚问题、评估方案
规划与反馈分"无反馈"与"有反馈"两种

(依据:书 · AI Agents in Action §1 —— 单 agent 由五类组件构成——profile/persona(即 system prompt)、动作与工具、知识与记忆、推理与评估、规划与反馈;规划分 planning without feedback 与 planning with feedback 两种)

"人设就是系统提示"这句直白的对应值得记:前面各家在讲"系统提示怎么拼"时,拼的其实是这一件事。 而 onyx 的实验说"人设塞进系统提示时遵从很差"——两条放在一起,说明这个对应虽然直白,但不一定是最优的实现。

"规划分有反馈和无反馈两种"这个二分很干净:无反馈就是自己定了自己走,有反馈就是根据环境变化或人的意见改计划。

第 5 章的一句话:先统一叫法再讨论

它把动作定义成"agent 能做的任何事",并明说各家框架术语不同(插件、技能、函数、工具),需要先统一叫法。

本课题读了六十多份材料,同一件事至少有五个名字。 讲义应该在开头就立一张对照表,而不是在正文里混着用。

决定四:一个可复现的对照实验

同一个目标:搜某个主题的百科页面、下载每一页、存成一个文件。三个动作分别是"搜"、"下载"、"存"。

配置结果
关掉规划器的普通 agent只执行了"搜"这一步,再也走不下去
带内置规划的助手三步全做完了

它给的原因:常见接口支持并行动作,但不支持有先后依赖的动作。 (依据:书 · AI Agents in Action §11 —— 同一个目标(搜维基、下载每页、存文件)下,关掉 planner 的普通 agent 只执行了搜索这一步就停了,而带内置规划的助手把三步全做完;原因是常见 API 支持 parallel actions 但不支持有先后依赖的 sequential actions)

这个实验对本课题很有价值,但结论要小心转译。

"不支持有依赖的动作"说的不是接口做不到,而是:一次模型调用只能产出一批可并行的调用。 有依赖的三步,本来就需要三轮——第一轮的结果回填之后,模型才知道第二轮该传什么参数。

所以真正的差别不在"有没有规划器",而在"外面那一圈转不转"。 书里那个"普通 agent"停在第一步,恰恰说明它那一侧没有循环。

这反过来印证了 learning-langchain 那句定性:agent 的关键就是那个由模型控制停止条件的循环。 没有循环,给它多少工具都只能走一步。

一条很实在的告诫:只给完成目标所需的那几个动作

四条理由:

  1. 动作多了会让它选不准;
  2. 接口对工具数量有上限;
  3. 它可能以你没预期的方式使用动作;
  4. 安全——它会独立执行任何动作。

作者列了自己亲历的失控清单:下载不该下的文件、在没被要求时写并执行代码、在工具之间无限打转、删掉了不该删的文件。 (依据:书 · AI Agents in Action §11 —— 只给 agent 完成目标所需的动作,理由是动作多会让它选不准、API 对工具数有上限、它可能以你没预期的方式使用动作、以及安全;作者记录了亲历的失控——下载文件、在未被要求时写并执行代码、在工具之间不断打转、删掉了不该删的文件)

这份清单里"在工具之间无限打转"正是 cline/kun/mirothinker 各自做打转检测要防的东西。 "删掉了不该删的文件"正是 goose/dexter 的权限闸门要防的东西。

一本实战书的作者手记,和一堆生产实现的防护措施,对上了。这说明那些防护不是过度设计。

对我们的原型:第一版的工具集应该只有两三个,而且都是可逆的。

它没回答什么

  • 循环的工程细节——轮数上限、连错熔断、结果怎么回填、上下文怎么压,这三章都没讲。
  • 多 agent 的具体做法——第 1 章提了一下,细节在没读的章里。

坑与代价

  • 书里的实验依赖作者自己的一套工具和几家商业接口。 换环境不一定复现,而且它对"哪些模型支持有依赖的动作"的判断有明显的时效性。
  • "关掉规划器就只走一步"这个现象我在上面做了转译(真正的原因是外圈没转)。照抄书的结论会得出"必须有规划器"这个错误推论。

    判断(无锚): 这本书把"外圈循环"和"规划器"混成了一件事。它们是两件事:循环让你能走多步,规划让你少走冤枉路。 如果错,会错在: 如果那个"普通 agent"其实是有循环的(书没写清楚),那它停在第一步就真的是模型不肯继续,那书的结论就成立。这一点书里的描述不足以判定。

  • 它对"agent 与助手是同义词"的处理很宽松,把很多不同的东西装进了同一个词里。读的时候要自己分。