Skip to content

Agent Loop 怎样成为显式状态机 ​

“让模型循环直到完成”缺少终止、失败和责任定义。状态机把每一步写成可观察契约。

切换三个场景,观察模型只拥有“提出候选动作”,Harness 才拥有任务状态与执行许可。

四个元素 ​

  • state:当前完整状态,如 WAITING_APPROVAL;
  • event:已发生事实,如 TOOL_TIMED_OUT;
  • transition:给定状态与事件转到哪里;
  • action/effect:转移时启动的外部工作。

状态不是日志文案。每个终止分支至少进入 COMPLETED/FAILED/CANCELLED,等待用户则进入可持久化 WAITING_*。

一轮循环 ​

text
读取目标与状态 → 构造模型上下文 → 模型提出 answer/tool/wait
→ 验证动作 → 执行/审批 → observation → 持久化状态
→ 检查完成、预算、取消 → 下一轮

轮次上限、token/成本预算和截止时间由 Harness 强制;模型说“继续”不能突破。

事件身份 ​

一次工具调用应有稳定 invocation_id/tool_call_id;一次顶层任务有 run_id。重试沿用幂等身份但生成新的 attempt 记录。这样才能判断结果属于哪次调用并避免旧结果写入新状态。

常见错误 ​

  • RUNNING 同时表示模型、工具和整个任务;
  • 等待审批只存在内存,重启后丢失;
  • 工具完成事件重复到达导致二次转移;
  • 取消只停止前端动画,没有传播到工具;
  • 模型输出“完成”但没有验收条件;
  • 失败后无限重试。

自测 ​

本节自测

先作答,再查看解释。记录只保存在当前浏览器。

完成 0 / 3
  1. 1判断题 模型输出 finished 即可直接把任务标记成功。
  2. 2单选题 等待用户批准时应进入什么?
  3. 3开放题 工具结果重复到达怎样保持状态正确?
这里的分数只用于本章自测,不代表真实任务能力。

打印版答案:1. 错;2. 可持久化等待状态;3. 身份、幂等和当前状态校验。

来源:ReAct。

下一步 ​

状态机需要持有事实,进入上下文、会话状态与长期记忆。

最近更新