Agent 为什么能连续做十几步?
Agent Loop 是一条重复运行的工作链:模型判断下一步,工具执行动作,结果回到上下文,系统再决定继续、等待用户还是结束。
任务是:登录超时测试偶发失败,请找到原因、修复代码,并运行相关测试证明修好了。用户只说了一句话,Agent 却会读取项目、搜索代码、比较配置、请求修改、运行测试,再交付 Diff。
这里没有神秘魔法。每一轮只有四步:模型根据当前证据判断下一步;工具进入真实环境行动;结果回到系统成为新证据;系统检查应该继续、等待用户还是结束。这条反复运行的链路就是 Agent Loop。
模型说“修好了”不能让任务结束。系统还要确认文件真的变更、测试真实通过、修改没有越过批准范围。用户看到的状态统一为:运行中、等待确认、完成、受阻或失败、已取消。
一次 Turn 内可以包含多轮模型推理和工具调用。模型请求动作,Harness 校验并执行,结果作为 Observation 回到上下文;结束条件由最终回答、限制策略或人工控制共同决定。
系统为什么继续,又为什么停下?
每一轮只做四件事。真正决定终态的不是模型说“完成”,而是权限、工具结果、完成证据和用户控制。
- 1判断下一步
任务目标 + 最新工具结果(Observation)
- 2调用工具
先过参数、权限与沙箱检查
- 3读取结果
内容、退出码、错误和外部回执
- 4继续还是停止?
用完成条件检查当前证据
证据不足或出现可恢复错误,把新事实送回第 1 步。
改动对比符合预期,18/18 测试通过。
暂停在动作之前,保留当前状态。
缺少必要输入时进入“被阻断”;不可恢复错误进入“失败”,并说明已尝试动作。
停止新动作,保存已有证据和副作用。
从第一步走到下一步
第一轮,模型只知道用户描述的现象,于是请求搜索 login、session 和 timeout。搜索工具返回八个候选文件。第二轮,模型根据搜索结果选择最相关的实现和测试继续读取。第三轮,它发现客户端三秒超时早于服务端最长五秒响应,形成一个可以被测试推翻的原因假设。
搜索结果不是旁白,而是下一轮的新输入。没有工具结果回填,模型只能重复猜测;没有状态记录,用户也无法知道它为什么从一个文件跳到另一个文件。
官方事实查看这一结论的依据与边界+
OpenAI 对 Codex 的公开拆解说明模型会在工具调用和工具结果之间循环,直到产生最终输出或被系统条件打断。
OPUnrolling the Codex agent loop官方工程文章 · 核验 2026-07-14行动之前,先处理权限和失败
本课的教学规则是:读取和搜索在限定目录内自动进行;修改两个文件会产生真实副作用,因此系统先展示文件范围、改动目的和准备运行的测试。用户批准后,循环从暂停处继续,而不是重新猜一遍任务。
如果测试失败,失败结果也会回到下一轮。Agent 可以根据新错误补读文件、缩小修改或撤回假设;如果连续得到同样错误却重复同一动作,系统应停止空转并告诉用户阻塞在哪里。
官方事实查看这一结论的依据与边界+
Anthropic 将 Claude Code 的工作描述为收集上下文、采取行动与验证结果,并明确这些阶段会交织发生。
ANHow Claude Code works官方文档 · 核验 2026-07-14有外部证据,任务才真正结束
这次任务的完成证据很具体:两个文件产生预期 Diff,18 项相关测试全部通过,公开 API 没有变化。只有这些检查成立,系统才把状态从“正在验证”改成“完成”。
如果只有 17 项通过,状态是“受阻或失败”,但仍要交付已经完成的 Diff 和剩余失败;如果还没获得写入许可,状态是“等待确认”;如果用户取消,则保存已有证据并标记“已取消”。不同结局不能都包装成绿色的“完成”。
固定源码观察查看这一结论的依据与边界+
Hermes 固定提交源码展示了工具调用校验、修复、去重、执行与结果回填;这些确定性处理都发生在模型之外。
NOHermes Agent tool loop (fixed commit)官方源码 · 核验 2026-07-14产品经理要设计的不是思维链,而是可检查事件
用户不需要看到模型全部内部推理,但应看到它正在读什么、准备改什么、为什么暂停、测试是否通过、最终影响了哪些文件。每个事件都要能回答:谁做了什么,环境返回了什么,任务状态为什么改变。
这条任务记录把模型判断、系统执行和用户控制分开,便于逐项检查每一方是否尽责。
固定源码观察查看这一结论的依据与边界+
Hermes 固定提交的 Turn Finalizer 会区分预算、失败与完成,保存轨迹并持久化会话,说明循环结束还需要系统关账。
NOHermes Agent turn finalizer (fixed commit)官方源码 · 核验 2026-07-14一次任务为什么会继续,又为什么会结束
会话循环调度命令、队列和完成事件;Turn 将工具结果重新送回模型,直到满足终止条件或进入受限终态。
产品经理要决定:Agent 的核心不是模型多说几轮,而是 Harness 拥有可观察的状态机、预算、暂停点和完成合同。
查看 Grok Build 官方仓库中的对应实现提交 a5727c596045 · 核验 2026-07-23+
证据边界:源码能证明循环与终止机制的实现合同;不能仅凭这些文件证明真实任务成功率或用户价值。
有术语没听懂?在这里用人话再看一遍6 个词+
- Agent Loop
- 模型判断、工具行动、环境观察和状态调整反复发生,直到进入明确终态。
- 状态机
- 列出系统允许的状态以及状态之间可发生的转换。
- 预算
- 对时间、费用、Token、工具次数或风险暴露设置的运行上限。
- 终止候选
- 模型建议停止,但仍需 Harness 用完成证据判断是否真的成功。
- 进展检测
- 判断新一轮是否获得了新信息或改变了任务状态,用于阻止无效重复。
- 降级交付
- 无法完成全部目标时,保留已验证产物并明确未完成范围。
本章依据与证据边界2 条补充结论 · 11 份原始材料+
下面补充本章的其他依据,并说明每份材料能证明什么、不能证明什么。
- [5]
Anthropic 的可信 Agent 研究强调在现实部署中管理自主性、监控、错误与人类控制。
官方事实ANTrustworthy agents in practice官方研究 · 核验 2026-07-14 - [6]
本站四类终态、事件名称和透明模拟器是教学状态机,不代表 Codex 或 Claude Code 的内部枚举。
本站推演OPUnrolling the Codex agent loop官方工程文章 · 核验 2026-07-14
查看全部一手材料与源码证据 11 条
这份材料区分了由预定义代码路径控制的 Workflow 与由模型动态控制过程的 Agent,并强调先采用能工作的最简单方案。它还给出 Prompt Chaining、Routing、Parallelization、Orchestrator-Workers、Evaluator-Optimizer 等组合模式,以及何时值得承担 Agent 的延迟、成本和复合错误。
证据边界:官方经验与自测不能单独证明普遍收益,结论不得越过其样本、版本和适用范围。官方产品实现 · 核验 2026-07-23How Claude Code worksAnthropic这份文档把 Claude Code 的 Agent Loop 描述为收集上下文、采取行动、验证结果三个相互交织的阶段,并说明模型与工具如何通过结果反馈持续调整。它还解释 Claude Code 作为 Harness 所承担的上下文管理、执行环境、会话、压缩、检查点和权限职责。
证据边界:官方文档不能单独证明未公开内部实现、长期可靠性或真实用户收益。官方产品实现 · 核验 2026-07-23Unrolling the Codex agent loopOpenAI这份材料逐步解释 Codex Harness 如何组装 instructions、tools 与 input,通过 Responses API 在一次 Turn 内循环完成模型推理和工具调用。它还说明对话增长、上下文窗口、Prompt Caching 与 Compaction 为什么属于 Harness 的核心工程责任。
证据边界:官方文档不能单独证明未公开内部实现、长期可靠性或真实用户收益。官方产品实现 · 核验 2026-07-16Grok Build is Now Open SourcexAIxAI 官方说明本次公开的是 Grok Build 编码 Agent 与终端 TUI,并明确列出 Agent Loop、代码交互工具、终端 UI,以及 Skills、Plugins、Hooks、MCP Servers、Subagents 等扩展系统。它让课程可以用真实实现核对 Harness 责任,而不是让产品经理通读源码。
证据边界:官方公告没有说明 Grok Build 的服务端实现,也不能证明托管产品的完整架构、真实任务成功率或这些设计适用于所有 Agent。固定提交源码 · 核验 2026-07-23Grok Build repository map(固定提交)xAI固定提交 README 将公开范围界定为 grok CLI/TUI 与 Agent Runtime 的 Rust 源码快照,并标出 TUI、Agent Runtime、工具、Workspace、MCP、Sandbox 等主要 crate;仓库由 xAI 内部 monorepo 定期同步且不接受外部贡献。
证据边界:这个快照不是 Grok Build 服务端源码,也不能代表后续线上版本、内部 monorepo 的全部模块或每项功能的运行效果。固定提交源码 · 核验 2026-07-23Grok Build session orchestration loop(固定提交)xAI该文件展示 Session Actor 怎样统一接收命令、模型 Turn 完成、工具与 MCP 事件、会话状态和停止事件,再启动下一段工作或进入 Idle;它证明生产 Loop 还要管理并发事件、生命周期与恢复,而不是只有“模型想一步、工具做一步”。
证据边界:单个调度文件不能证明完整 Prompt 组装、全部工具执行、最终终止条件或线上任务可靠性;这些结论仍需结合相邻模块与运行证据。固定提交源码 · 核验 2026-07-23Grok Build tool ports notice(固定提交)xAI工具 crate 的 NOTICE 明确说明 apply_patch、grep_files、list_dir、read_file 从 openai/codex 移植,bash、edit、glob、grep、read、skill、todowrite、write 从 sst/opencode 移植;这些实现经过跨语言翻译、Tool Trait 适配与扩展。
证据边界:这只证明列出的工具实现存在来源与改造关系,不证明 Grok Build 复制了 Codex 或 OpenCode 的整体 Agent 架构,也不能假设改造后的行为完全一致。固定提交源码 · 核验 2026-07-23Hermes Agent tool-call validation and recoveryNous Research这段固定提交源码展示 Hermes 如何检查工具名和 JSON 参数、限制委派数量、去重调用,并用结构化工具结果把可恢复错误送回下一轮。它直接证明生产级 Agent Loop 在模型输出与真实动作之间还需要确定性处理。
证据边界:固定提交只能证明该版本的公开实现,不能代表现行私有产品、真实任务质量或行业统一架构。固定提交源码 · 核验 2026-07-23Hermes Agent tool execution and guardrail handoffNous Research这段固定提交源码先持久化工具调用,再交给执行器产生真实副作用;若工具 Guardrail 阻断,则写入明确的受控终止原因。它证明工具执行、恢复与用户可见状态需要由 Harness 收口。
证据边界:固定提交只能证明该版本的公开实现,不能代表现行私有产品、真实任务质量或行业统一架构。固定提交源码 · 核验 2026-07-23Hermes Agent budget, completion and cleanup finalizationNous Research这段固定提交源码定义 Turn 结束时的预算耗尽、回退与完成判定,并把轨迹保存、资源清理和清理错误纳入统一关账。它支持课程把 completed 视为需要系统证据与退出处理的状态,而不是模型的一句话。
证据边界:固定提交只能证明该版本的公开实现,不能代表现行私有产品、真实任务质量或行业统一架构。固定提交源码 · 核验 2026-07-23Hermes Agent durable session finalizationNous Research这段固定提交源码在 Turn 结束时修复未闭合的工具消息序列,并把最终消息和会话状态持久化;持久化失败会作为清理错误保留,而不是静默伪装成完整成功。
证据边界:固定提交只能证明该版本的公开实现,不能代表现行私有产品、真实任务质量或行业统一架构。