Agent Loop
Agent Loop 可以理解为“观察—决定—行动—再观察”的循环。它把一次复杂任务拆成许多可以核对的小步。
用户目标
↓
准备上下文与本次可用工具
↓
模型决定:回答,还是调用工具?
├─ 回答 ─────────────→ 完成
└─ 调用工具
↓
权限、参数与审批检查
↓
执行并得到结果
↓
把安全结果交回模型 ───→ 下一轮一次循环发生了什么
1. 准备
系统读取当前对话、模型配置、权限、已选择 Skill 和可用 MCP Tool,组装本轮模型真正能看到的上下文。每次模型请求都会冻结当时可用的 Tool;激活 Skill 或内置能力后,下一次请求可以获得更新后的集合,但模型不能凭空发明未注册的 Tool。
2. 模型选择下一步
模型可能直接回答,也可能提出一个或一批 Tool 调用。例如先搜索文件,再读取其中两个文件。Tool 的参数必须满足结构要求。
3. Host 校验和执行
真正执行前,系统检查路径、权限、工具身份和风险策略。需要用户决定时,Run 保存可恢复状态并暂停,而不是让模型假装工具已经成功。
4. 观察结果
工具结果以有界、适合模型阅读的形式返回。过大的结果可能分页、截断或保存为独立产物;“界面显示了活动”并不代表全部原始输出都进入模型上下文。
5. 继续或结束
模型根据新证据选择下一步。如果任务完成,就生成最终回答;如果失败、取消或遇到无法恢复的问题,则以相应状态结束。
为什么审批后还能继续
等待审批时,系统会保存本次 Run 的检查点:已经看到的历史、待处理动作、工具身份和权限边界。你批准后,Host 重新校验冻结的动作并继续同一逻辑 Run,而不是让模型凭记忆重新生成一次调用。
为什么有时不应自动重试
读取失败通常可以安全重试,但写文件、调用外部 MCP 工具或向网站提交表单可能已经产生效果。如果连接在返回结果前中断,系统只能报告“结果未知”。这时再次执行可能造成重复写入,正确做法是先检查真实环境。
用户怎样影响 Loop
- 在任务开头给出完成条件和禁止事项;
- 选择合适权限,逐项处理审批;
- 在 Run 进行中补充方向时,使用界面提供的引导能力;
- 看到结果未知、冲突或来源不足时,要求先核对事实;
- 需要停止时取消 Run,但仍检查已经跨过副作用边界的动作。
Tool 的授权细节见Tool Calling,长对话如何保持连贯见上下文管理。