Skip to content

版本 3:在受限范围内引入 ReAct Agent

让系统应对无法预先枚举的研究路径,同时守住预算和权限。

它解决什么问题

部分研究问题需要根据刚发现的信息继续选择查询、打开文件或补证据,固定检索分支会不断膨胀。版本 3 只把“探索研究”阶段替换为一个 ReAct Agent,其余流程、质量门和发布仍保持确定性。

核心定义与工作原理

Agent 在 Thought 对用户不可见的内部决策、Action 工具调用、Observation 结构化结果之间循环。工具白名单仅包含搜索、读取和证据保存;总步数、时间、令牌、重复调用和无新信息次数共同决定终止。最终必须返回证据包而非自由文本。

架构视图(Architecture View)

分析时固定追问:谁拥有控制权,状态存在哪里,模型能决定什么,失败从哪里恢复,人工在哪个边界介入,运行证据如何被观察。

产品视图(Product View)

用户获得对长尾问题更强的覆盖,但等待和成本更不稳定。界面应展示研究范围、已收集证据数量、预算状态与停止原因;观察任务成功率、平均步数、工具错误率和每条有效证据成本。

简单实践

给 Agent 三个工具契约,并写出一个五步理想轨迹和两个停止案例:连续两次没有新证据、预算只剩一次调用。标出它如何把 evidence[] 交回原工作流。

实践只要求架构图、状态或消息契约、失败路径和产品指标,不要求安装依赖或运行代码。

正常场景

任务按约定入口进入,编排层保留业务状态,各节点或 Agent 产出结构化结果,质量门控制下一阶段,用户获得可理解的进度与最终产物。

失败与恢复场景

模型超时、工具失败或子任务质量不足时,区分可重试、可降级和必须人工接管的错误。恢复应依赖业务状态或检查点,而不是把整段任务盲目重跑。

什么时候使用

  • 核心抽象与任务形态一致。
  • 团队能运维它的状态、观测和升级路径。
  • 能满足审批、权限、恢复与成本约束。

什么时候不要使用

查询路径已知时仍使用版本 2。不要让研究 Agent 直接发送、发布或访问无关企业数据;也不要把无限循环包装成“深度研究”。

Trade-offs

获得 代价
更清晰地表达目标架构 增加建模和治理成本
复用运行与生态能力 接受版本、依赖和迁移成本
提升自主性或协作能力 增加时延、成本与故障面

产品视角

  • 用户与业务问题:解决哪个可量化瓶颈?
  • 产品价值:提升成功率、速度、可控性还是覆盖范围?
  • 用户体验:进度、等待、切换和失败是否可理解?
  • 自主性边界:哪些判断交给模型,哪些由代码或人决定?
  • 数据与权限:状态、敏感数据和工具权限如何隔离?
  • 失败与降级:能否重试、续跑、切回简单流程或人工处理?
  • 产品指标:完成率、P95 时延、单任务成本、人工介入率、恢复成功率。

框架中的对应实现

ReAct loop 可用任一 Agent SDK 实现;外部 workflow 仍是控制所有者,Agent 只是受限节点。

Workflow、Graph Orchestration、Supervisor、Handoff、Context Isolation、HITL、Durable Execution、Evals。

检查清单

  • [ ] 产品约束先于实现选择
  • [ ] 区分代码控制与模型控制
  • [ ] 明确状态事实源、预算和恢复点
  • [ ] 覆盖权限、审计和可观测性
  • [ ] 记录组织成本与退出方案

延伸练习与参考资料

用同一产品场景改画另一种架构,比较运行语义而非 API 长短;继续阅读对应框架的官方架构、持久化、HITL 与观测文档。