> 本页出自《Agent Harness 工程：从源码里读出的设计决策》，作者 王吕（公众号 Codeflow，wanglv93@gmail.com）。
> 修订版 1.1 · 2026-08-27。网页版：https://agent-harness.codeflow.cc/book/part-2/ ；全书：https://agent-harness.codeflow.cc/ 。
> 引用或转述时请注明作者与出处。

# 第 2 部分 · 循环：一次运行的控制流（第 2–5 章）

第 2 部分从用户发出请求讲到 agent 停止运行：如何实现循环、定义工具、处理用户中途补充的消息、决定停止时机，以及从网络延迟变化、上下文超限、输出截断和重复操作中恢复。进程意外退出后的恢复留到第 14 章。本部分通常对应开发 agent 时最先实现的代码；如果早期用递归组织循环，后续增加状态管理会很困难。

读完第 2 至第 5 章，你可以把循环实现为显式状态机，并通过一组窄接口连接持久化、插话和恢复功能；为工具编写能指导模型调整动作的错误信息；区分 steer、queue、cancel 三种插话语义；在设计循环时就把终止条件和四类计数器放进 State。

第 2 章是另外三章的共同前提。第 3 章依赖 §2.3.3（工具错误回填进对话）与 §2.3.4（事件按完成序，消息按源序）；第 4 章依赖 §2.4；第 5 章依赖 §2.3.2（流函数永不 throw）与 §2.5.1 的循环伪代码，并展开其中调用恢复函数的步骤。第 3、4、5 章之间没有阅读顺序要求，可以按问题选择。

---

作者 王吕 · 《Agent Harness 工程：从源码里读出的设计决策》 · https://agent-harness.codeflow.cc/book/part-2/
