全书目录

第一编 概念层

第 4 章 Agent 的最小闭环:目标、观察、决策、动作、反馈

8 分钟 3,560 字 第 5 / 161 个阅读单元

如果整本书只允许保留一个分析框架,我会保留这一章。

因为无论一个 Agent 看起来多复杂,背后都可以先压缩成一个最小闭环。 这个闭环不一定足以描述所有细节,但足以判断一个系统是不是在真正运行,而不是只是在生成表象。

本书采用的最小闭环是五个词:

  • 目标
  • 观察
  • 决策
  • 动作
  • 反馈

只要这五个环节能成立,Agent 才开始具备系统意义。 只要其中任何一环缺失,系统就很容易退化成问答器、脚本、流程节点,或者看起来忙碌但其实不收敛的自动化玩具。

为什么用这五个词?

因为它们是多个传统在大模型时代的交汇点。

经典 AI 用的是 percept -> action 和基于目标或效用的 rational agent 视角。 控制论与自适应系统强调的是 feedback loop。 OODA 强调的是 observe、orient、decide、act 的快速循环。 IBM 的 MAPE-K 强调监测、分析、规划、执行以及知识基座。 ReAct 强调 reasoning 和 acting 的交替。 Reflexion 强调把反馈显式纳入后续策略修正。 Generative Agents 强调 observation、memory、reflection、planning 的连续耦合。

这些框架名字不同,但内核很像:

text
系统必须基于目标读取环境,形成判断,采取动作,
并让动作结果重新进入下一轮判断。

本书把这件事压缩成“目标、观察、决策、动作、反馈”,是因为这种表达既足够抽象,又足够工程化。

先看第一个环节:目标。

没有目标,系统就只有输出,没有方向。 它也许能说很多话、做很多事,但无法判断哪些行为是推进任务,哪些行为只是看起来合理。

所以,目标在 Agent 里从来不是一句口号,而至少包含三层内容:

  • 成功标准是什么
  • 约束条件是什么
  • 停止条件是什么

例如“帮我做一个旅行计划”不是完整目标。 它至少还需要补上预算、时间、出行成员、偏好、是否允许自动预订、何时算完成。

在工程里,目标定义不清通常会直接导致两类问题:

  • 系统过早结束,因为它误以为自己完成了
  • 系统过度执行,因为它不知道该停在哪

再看第二个环节:观察。

观察不是“世界本身”,而是系统能够拿到并交给模型消费的那一部分世界。 这是 Agent 设计里最容易被低估、但又最决定上限的环节。

很多人一谈 Agent,注意力会立刻放到模型推理上。 但实际上,模型能做出什么判断,很大程度上取决于它看到了什么,以及没看到什么。

观察至少有四个来源:

  • 用户当前输入
  • 历史状态与记忆
  • 工具或环境返回结果
  • 系统预先注入的规则、约束、上下文

经典 agent literature 说的是 percept。 今天工程里更准确的说法是 model-visible context。

OpenAI 对 context management 的强调非常重要,因为它明确区分了:

  • 程序世界里已经存在的信息
  • 模型这一步真正看得到的信息

这两者不等同。 程序拿到的数据,可能没有进模型上下文。 进了上下文的数据,可能又被裁剪、压缩、摘要或重排。

所以很多系统失败时,问题并不是“模型不会推理”,而是:

  • 它没看到关键事实
  • 它看到的是错序事实
  • 它看到的是被污染或冲突的事实
  • 它没法把过去结果和当前观察接起来

这里顺便要强调一点:

观察不等于记忆。 记忆是状态存储能力。 观察是当前这一步实际被送入决策过程的那部分信息。 有记忆但没正确取出来,和根本没有记忆,在效果上经常没有区别。

第三个环节,是决策。

决策是 Agent 最像“智能”的位置,但也最容易被神秘化。 实际上,决策无非是在当前目标、当前状态和当前观察之下,选择下一步最值得做的动作。

这个“选择”可能表现为很多不同形态:

  • 选一个工具
  • 选一个子任务
  • 选一个执行顺序
  • 选一个协作对象
  • 选是否继续还是停止
  • 选是否需要追问用户

OODA 里的 orientdecide,在这里可以理解成“先把当前观察转成可判断的问题,再形成下一步动作选择”。 很多 Agent 看起来会“思考”,其实只是会生成文本,并没有真正做这一步面向任务的策略选择。

ReAct 的贡献就在于,它把 reasoning 和 acting 放在同一个循环里,让决策不再是一次性规划,而是随观察变化的动态过程。 Plan-and-SolveReWOO 这类方法则是在探索:怎样让决策既保持质量,又不至于在每一步都完全自由,导致成本和不稳定性失控。

第四个环节,是动作。

动作是 Agent 和纯分析系统真正分家的地方。 没有动作,再好的决策也只是脑内模拟。

动作可以有很多形态:

  • 生成给用户看的内容
  • 发起工具调用
  • 修改某个外部系统状态
  • 写文件、发消息、下指令
  • 调起另一个 workflow 或另一个 Agent
  • 发起审批或中断等待

动作最重要的,不是数量,而是可执行性和可验证性。

如果动作接口含糊不清,Agent 就可能:

  • 明明决定了,却执行不出去
  • 执行了,却副作用不可控
  • 执行完了,却无法确认是否成功

这也是为什么 Anthropic 会专门讲“如何为 agents 写工具”,因为动作接口设计得差,整个闭环都会变形。

第五个环节,是反馈。

反馈不是附属物,而是 Agent 能不能形成闭环的决定因素。 很多系统看起来已经具备目标、观察、决策和动作,但仍然不稳定,核心原因就是没有把反馈变成下一轮决策的有效输入。

反馈至少可以来自三类地方:

  • 动作执行结果
  • 环境状态变化
  • 外部评估或内部反思

Reflexion 之所以重要,就是因为它把“从结果中修正后续策略”显式化了。 而在工程上,feedback 并不一定非要长成一段自然语言反思。 它也可以是:

  • 工具返回的状态码
  • 测试是否通过
  • 网页是否出现目标元素
  • 数据库写入是否成功
  • 人工审批是否通过
  • 运行 trace 中暴露出的错误轨迹

只要这些结果没有真正回流到下一轮决策,它们就不构成闭环中的反馈。

所以,这五个环节可以写成一条非常简单但很有力量的链:

text
目标规定方向
观察提供现实
决策选择下一步
动作改变世界
反馈修正后续

注意,这里还有一个经常被忽略但实际贯穿五环的隐变量:

text
状态

状态不是五环之外的可选配件,而是这五环能够连续运转的载体。

目标要落在状态上,才能知道完成了多少。 观察要写入状态,才能被后续利用。 决策要读取状态,才能理解自己在流程中的位置。 动作要更新状态,才能让系统不是每轮都从零开始。 反馈要沉淀为状态,才能真正改变未来行为。

所以,从工程角度说,更完整的最小闭环其实是:

text
目标 -> 基于状态读取观察 -> 做出决策 -> 发起动作 ->
接收反馈 -> 更新状态 -> 再进入下一轮

OpenAI 的 sessions、context management、tracing,LangGraph 的 persistence、checkpoint、interrupt,本质上都在为这个闭环补工程支架。 Google ADK 的 event loop、state delta、session service,以及 Microsoft/AutoGen 的 runtime、persisted conversation,也在强调同一件事。

它们在提醒同一件事:

  • 闭环不是逻辑上存在就够了
  • 它还必须能被保留、恢复、检查和重放

否则系统虽然“理论上有循环”,但工程上不可验证,也不可治理。

理解了这个最小闭环,再去看 Agent 失败,诊断会快很多。

大致可以按五环排查。

目标问题:

  • 目标太宽,导致系统不知道先做什么
  • 目标冲突,导致系统在多个优化方向之间摇摆
  • 停止条件不清,导致过早结束或无穷执行

观察问题:

  • 关键事实没有进入模型可见上下文
  • 历史状态没有正确提取
  • 环境返回结果被压缩得过度失真
  • 噪声信息盖过了关键信号

决策问题:

  • 动作空间过大,系统不会选
  • 缺少中间策略,系统只能盲跳
  • 约束没有显式进入判断,导致选择失真

动作问题:

  • 工具接口不清晰
  • 副作用不可控
  • 权限过大或过小
  • 执行结果不可验证

反馈问题:

  • 执行结果没有回流
  • 回流结果没有进入下一轮上下文
  • 系统不会把失败解释成策略修正信号

一旦用这个框架看问题,你会发现很多所谓“模型不行”的锅,其实并不在模型本身。

模型也许只是在一个坏闭环里被迫做决定。

最后,本章给出一个非常实用的分析问题清单。

看任何一个 Agent,先问五个问题:

第一,它到底在优化什么,何时算完成。

第二,它此刻到底能看到什么,看不到什么。

第三,它凭什么决定下一步,而不是另一种下一步。

第四,它实际能执行哪些动作,这些动作会产生什么副作用。

第五,动作结果怎样进入下一轮,系统如何因此改变行为。

如果这五个问题回答不清,一个 Agent 系统大概率只是“看起来在运行”。 如果这五个问题回答得很清楚,哪怕系统还不复杂,它也已经具备了真正可扩展的骨架。

下一章我们就在这个骨架之上,去看现实里最常见的几种 Agent 形态到底有什么差别。