智能体循环:感知、思考与行动
智能体循环:感知、思考与行动:实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因,通过架构、轨迹和故障重放完成验收。
学习目标
- 能解释“智能体循环:感知、思考与行动”如何实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因
- 能区分agentic loop、tool_use、tool_result、stop_reason、调用标识,并指出控制权、数据与副作用边界
- 能固定输入与版本,沿以下证据定位首个分叉:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数
- 能注入“运行时漏回一个工具结果或错配调用标识,下一轮却继续消费不完整历史”,完成阻断、恢复、复位和同输入重放
来源、课程编排与适用边界
“智能体循环:感知、思考与行动”以Anthropic 公开全文《Building effective agents》为总纲,并用Claude Platform《How tool use works》核对本单元机制;涉及 MCP 的控制权边界再由MCP 2025-06-18 官方规范交叉检查。
这不是 Anthropic 出版的“19 章教材”。平台把公开文章、官方工具文档与协议规范重组为 19 个应用单元;下列 152 个节点是站内课程地图,不冒充原文目录。正文、代码、图表、实验和练习均为独立教学重写;产品接口、模型行为或协议版本变化时必须重新验证。
本单元的八个课程坐标
- 智能体循环:感知、思考与行动:这是“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的第 1 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 先打个比方:这是“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的第 2 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 第一个概念:为什么一次调用不够,得让它转圈:这是“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的第 3 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 第二个概念:ReAct——把一圈拆成「想、做、看」三段:这是“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的第 4 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 第三个概念:多轮迭代——结果喂回,思考随之改变:这是“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的第 5 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 第四个概念:循环何时该停:这是“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的第 6 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 动手看:一个任务怎么转 3 轮才办成:这是“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的第 7 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
- 用代码看带刹车的循环骨架:这是“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的第 8 个课程坐标;必须进入机制解释、实验观察或练习证据,不能只停在目录。
术语与运行合同
↡agentic loop:模型请求工具、运行时执行并把结果送回模型的循环;在“智能体循环:感知、思考与行动”中按以下证据核对:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。、↡tool_use:模型产生的结构化工具调用请求块;在“智能体循环:感知、思考与行动”中按以下证据核对:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。、↡tool_result:应用返回的工具执行结果块;在“智能体循环:感知、思考与行动”中按以下证据核对:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。、↡stop_reason:说明本轮为何结束或暂停的协议字段;在“智能体循环:感知、思考与行动”中按以下证据核对:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。、↡调用标识:配对请求与结果,防止并行工具响应串线的标识;在“智能体循环:感知、思考与行动”中按以下证据核对:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。。
本页不变量是:每个 tool_use 都由运行时执行并以匹配调用标识的 tool_result 回到下一轮。任何“成功”结论都要保存以下证据:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数,模型生成的计划或自信不能替代环境事实。
关键机制与可推翻实验
模型不直接执行客户端工具
模型只生成调用请求;数据库、文件和网络副作用发生在应用运行时。
动手验证:记录模型输出与执行器日志,确认两者边界清晰。
停止原因驱动状态机
tool_use、end_turn、max_tokens、refusal 和 pause_turn 不能都按最终答案处理。
动手验证:逐个注入停止原因,断言状态机进入对应分支。
并行结果按标识配对
返回顺序可能变化,数组位置不能替代 tool_use_id。
动手验证:反转两个工具的完成顺序,验证下一轮消息仍正确配对。
循环预算约束恢复
重试需要次数、总时长、成本和副作用幂等边界。
动手验证:让同一工具连续超时,确认系统进入 blocked 而不是无限旋转。
先预测,再操作三类证据
1. 架构与复杂度边界
在“智能体循环:感知、思考与行动”中切换简单基线、受控工作流与自主循环,先预测“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”在哪个阶段需要增加控制权,再比较延迟、成本、可观测性和自主性。
Architecture decision laboratory
智能体循环:感知、思考与行动
实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因
不变量:每个 tool_use 都由运行时执行并以匹配调用标识的 tool_result 回到下一轮
最小可运行实现
while (true) {
const response = await callModel(messages, tools);
messages.push(response.message);
if (response.stopReason !== "tool_use") return finish(response, messages);
const results = await Promise.all(response.toolUses.map(executeSafely));
messages.push(asToolResultMessage(results));
}这段切片只暴露“实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因”的最小运行合同。交付版本还要补齐超时、密钥隔离、结构化日志、幂等和批量评测;缺少消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数时,代码能运行也不代表本章结论成立。
小结
- agentic loop 是决策、执行、回灌、重新决策的循环
- 模型只生成调用请求,副作用发生在运行时
- stop_reason 驱动状态机,不同停止原因须分别处理
- 并行结果按 tool_use_id 配对,数组位置不可替代标识
- 每个 tool_use 须有匹配 tool_result 回到下一轮
练习与答案
练习
问题 1:最小证明。 怎样用最少样本证明“每个 tool_use 都由运行时执行并以匹配调用标识的 tool_result 回到下一轮”?
问题 2:课程覆盖。 智能体循环:感知、思考与行动、先打个比方、第一个概念:为什么一次调用不够,得让它转圈、第二个概念:ReAct——把一圈拆成「想、做、看」三段、第三个概念:多轮迭代——结果喂回,思考随之改变、第四个概念:循环何时该停、动手看:一个任务怎么转 3 轮才办成、用代码看带刹车的循环骨架如何进入可操作验证?
问题 3:恢复闭环。 怎样证明“运行时漏回一个工具结果或错配调用标识,下一轮却继续消费不完整历史”已经修复?
本章回顾
- “智能体循环:感知、思考与行动”的主问题是实现“决策—工具执行—结果回灌—重新决策”的循环,并正确处理所有停止原因。
- 核心不变量是每个 tool_use 都由运行时执行并以匹配调用标识的 tool_result 回到下一轮。
- 首要反例是运行时漏回一个工具结果或错配调用标识,下一轮却继续消费不完整历史。
- 最小证据包包含消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- agentic loop
模型请求工具、运行时执行并把结果送回模型的循环。在“智能体循环:感知、思考与行动”中必须能按以下证据重新定位:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。
- tool_use
模型产生的结构化工具调用请求块。在“智能体循环:感知、思考与行动”中必须能按以下证据重新定位:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。
- tool_result
应用返回的工具执行结果块。在“智能体循环:感知、思考与行动”中必须能按以下证据重新定位:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。
- stop_reason
说明本轮为何结束或暂停的协议字段。在“智能体循环:感知、思考与行动”中必须能按以下证据重新定位:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。
- 调用标识
配对请求与结果,防止并行工具响应串线的标识。在“智能体循环:感知、思考与行动”中必须能按以下证据重新定位:消息序列、stop_reason、tool_use_id、参数、tool_result、错误标记与循环计数。