Agent 为什么能连续做十几步?
Agent Loop 是一条重复运行的工作链:模型判断下一步,工具执行动作,结果回到上下文,系统再决定继续、等待用户还是结束。
任务是:登录超时测试偶发失败,请找到原因、修复代码,并运行相关测试证明修好了。用户只说了一句话,Agent 却会读取项目、搜索代码、比较配置、请求修改、运行测试,再交付 Diff。
这里没有神秘魔法。每一轮只有四步:模型根据当前证据判断下一步;工具进入真实环境行动;结果回到系统成为新证据;系统检查应该继续、等待用户还是结束。这条反复运行的链路就是 Agent Loop。
模型说“修好了”不能让任务结束。系统还要确认文件真的变更、测试真实通过、修改没有越过批准范围。用户看到的状态统一为:运行中、等待确认、完成、受阻或失败、已取消。
一次 Turn 内可以包含多轮模型推理和工具调用。模型请求动作,Harness 校验并执行,结果作为 Observation 回到上下文;结束条件由最终回答、限制策略或人工控制共同决定。
系统为什么继续,又为什么停下?
每一轮只做四件事。真正决定终态的不是模型说“完成”,而是权限、工具结果、完成证据和用户控制。
- 1判断下一步
任务目标 + 最新工具结果(Observation)
- 2调用工具
先过参数、权限与沙箱检查
- 3读取结果
内容、退出码、错误和外部回执
- 4继续还是停止?
用完成条件检查当前证据
证据不足或出现可恢复错误,把新事实送回第 1 步。
改动对比符合预期,18/18 测试通过。
暂停在动作之前,保留当前状态。
缺少必要输入时进入“被阻断”;不可恢复错误进入“失败”,并说明已尝试动作。
停止新动作,保存已有证据和副作用。
从第一步走到下一步
第一轮,模型只知道用户描述的现象,于是请求搜索 login、session 和 timeout。搜索工具返回八个候选文件。第二轮,模型根据搜索结果选择最相关的实现和测试继续读取。第三轮,它发现客户端三秒超时早于服务端最长五秒响应,形成一个可以被测试推翻的原因假设。
搜索结果不是旁白,而是下一轮的新输入。没有工具结果回填,模型只能重复猜测;没有状态记录,用户也无法知道它为什么从一个文件跳到另一个文件。
行动之前,先处理权限和失败
本课的教学规则是:读取和搜索在限定目录内自动进行;修改两个文件会产生真实副作用,因此系统先展示文件范围、改动目的和准备运行的测试。用户批准后,循环从暂停处继续,而不是重新猜一遍任务。
如果测试失败,失败结果也会回到下一轮。Agent 可以根据新错误补读文件、缩小修改或撤回假设;如果连续得到同样错误却重复同一动作,系统应停止空转并告诉用户阻塞在哪里。
有外部证据,任务才真正结束
这次任务的完成证据很具体:两个文件产生预期 Diff,18 项相关测试全部通过,公开 API 没有变化。只有这些检查成立,系统才把状态从“正在验证”改成“完成”。
如果只有 17 项通过,状态是“受阻或失败”,但仍要交付已经完成的 Diff 和剩余失败;如果还没获得写入许可,状态是“等待确认”;如果用户取消,则保存已有证据并标记“已取消”。不同结局不能都包装成绿色的“完成”。
产品经理要设计的不是思维链,而是可检查事件
用户不需要看到模型全部内部推理,但应看到它正在读什么、准备改什么、为什么暂停、测试是否通过、最终影响了哪些文件。每个事件都要能回答:谁做了什么,环境返回了什么,任务状态为什么改变。
这条任务记录把模型判断、系统执行和用户控制分开,便于逐项检查每一方是否尽责。
一次任务为什么会继续,又为什么会结束
会话循环调度命令、队列和完成事件;Turn 将工具结果重新送回模型,直到满足终止条件或进入受限终态。
产品经理要决定:Agent 的核心不是模型多说几轮,而是 Harness 拥有可观察的状态机、预算、暂停点和完成合同。
查看 Grok Build 官方仓库中的对应实现提交 a5727c596045 · 核验 2026-07-23+
证据边界:源码能证明循环与终止机制的实现合同;不能仅凭这些文件证明真实任务成功率或用户价值。
实现对照 · DeepSeek Harness
一句需求,怎样成为连续工作的系统?
“正在运行”“被阻断”“被取消”和“发生错误”是不同状态。源码会在轮次结束时记录原因,也支持在停止检查点接住尚未完成的工作。模型输出一段最终回答,不足以证明业务目标已经达到。
产品判断:设计继续和停止的条件,同时设计停止后用户还能拿到什么。
固定源码观察 · 核验 2026-09-11。业务迁移为本站分析。
本课术语,放回情境理解
- Agent Loop
- 模型判断、工具行动、环境观察和状态调整反复发生,直到进入明确终态。
- 状态机
- 列出系统允许的状态以及状态之间可发生的转换。
- 预算
- 对时间、费用、Token、工具次数或风险暴露设置的运行上限。
- 终止候选
- 模型建议停止,但仍需 Harness 用完成证据判断是否真的成功。
- 进展检测
- 判断新一轮是否获得了新信息或改变了任务状态,用于阻止无效重复。
- 降级交付
- 无法完成全部目标时,保留已验证产物并明确未完成范围。
本课依据与证据边界
正文引用对应下面的具体结论。厂商资料、固定版本实现与本站解释分别标识。
- [1]
OpenAI 对 Codex 的公开拆解说明模型会在工具调用和工具结果之间循环,直到产生最终输出或被系统条件打断。
官方事实OPUnrolling the Codex agent loop官方工程文章 · 核验 2026-07-14 - [2]
Anthropic 将 Claude Code 的工作描述为收集上下文、采取行动与验证结果,并明确这些阶段会交织发生。
官方事实ANHow Claude Code works官方文档 · 核验 2026-07-14 - [3]
Hermes 固定提交源码展示了工具调用校验、修复、去重、执行与结果回填;这些确定性处理都发生在模型之外。
固定源码观察NOHermes Agent tool loop (fixed commit)官方源码 · 核验 2026-07-14 - [4]
Hermes 固定提交的 Turn Finalizer 会区分预算、失败与完成,保存轨迹并持久化会话,说明循环结束还需要系统关账。
固定源码观察NOHermes Agent turn finalizer (fixed commit)官方源码 · 核验 2026-07-14 - [5]
Anthropic 的可信 Agent 研究强调在现实部署中管理自主性、监控、错误与人类控制。
官方事实ANTrustworthy agents in practice官方研究 · 核验 2026-07-14 - [6]
本站四类终态、事件名称和透明模拟器是教学状态机,不代表 Codex 或 Claude Code 的内部枚举。
本站推演OPUnrolling the Codex agent loop官方工程文章 · 核验 2026-07-14
按需查阅的原始材料
- Building effective agents ↗Anthropic · 核验 2026-07-23
- How Claude Code works ↗Anthropic · 核验 2026-07-23
- Unrolling the Codex agent loop ↗OpenAI · 核验 2026-07-23
- Grok Build is Now Open Source ↗xAI · 核验 2026-07-16
- Grok Build repository map(固定提交) ↗xAI · 核验 2026-07-23
- Grok Build session orchestration loop(固定提交) ↗xAI · 核验 2026-07-23
- Grok Build tool ports notice(固定提交) ↗xAI · 核验 2026-07-23
- Hermes Agent tool-call validation and recovery ↗Nous Research · 核验 2026-07-23
- Hermes Agent tool execution and guardrail handoff ↗Nous Research · 核验 2026-07-23
- Hermes Agent budget, completion and cleanup finalization ↗Nous Research · 核验 2026-07-23
- Hermes Agent durable session finalization ↗Nous Research · 核验 2026-07-23