第十五课:Agent Loop 深度解析
1.4K字·4分钟·
请求→推理→工具调用→执行→反馈完整循环
学习目标
- 理解 Agent Loop 的完整工作流程
- 掌握消息类型和处理机制
- 了解上下文构建过程
- 理解 Token 估算机制
一、Agent Loop 概述
Agent Loop 是 Codex 的核心引擎,它是一个不断循环的过程:用户输入 → 构建上下文 → 调用模型 → 处理响应 → 执行工具 → 返回结果 → 循环。这个循环会一直持续,直到模型认为任务完成。
二、完整工作流程
第1步:用户输入
用户在终端输入 prompt,可以是:
- 文本描述:帮我修复这个 bug
- 文件引用:@src/utils.py
- 图片:-i screenshot.png
第2步:构建上下文
Codex 构建发送给模型的上下文,包含:
- 系统提示:定义 Codex 的角色和行为约束
- AGENTS.md:项目级指令
- 对话历史:之前的交互记录
- 工具定义:可用工具的 JSON Schema
- 用户输入:当前的 prompt
第3步:调用 Responses API
使用 OpenAI Responses API 调用模型,传入消息和可用工具列表。
第4步:处理响应
模型返回的响应有三种类型:
- message:文本回复,直接显示给用户
- function_call:工具调用请求,需要执行工具
- reasoning:推理过程,显示思考过程
第5步:执行工具
如果模型请求调用工具,Codex 会:
- 检查沙盒策略
- 检查审批策略
- 在沙盒中执行
- 收集结果
第6步:循环
将工具结果加入上下文,再次调用模型。循环直到模型返回文本回复或达到限制。
三、消息类型详解
| 类型 | 说明 | 示例 |
|---|---|---|
| user | 用户消息 | "修复这个 bug" |
| system | 系统提示 | "你是一个编程助手" |
| assistant | 助手回复 | "我来看看这个问题" |
| function_call | 工具调用 | shell("python test.py") |
| function_call_output | 工具结果 | "测试通过" |
四、上下文管理
上下文由四部分组成:
- 系统提示:硬编码在 agent-loop 中
- AGENTS.md:全局和项目级指令
- 对话历史:完整的消息数组
- 工具定义:可用工具的 JSON Schema
Token 估算使用 approximate-tokens-used.ts,英文约 4 字符 = 1 token,中文约 2 字符 = 1 token。
五、本课小结
| 要点 | 说明 |
|---|---|
| Agent Loop | 用户输入→上下文→API→工具→循环 |
| 消息类型 | user/system/function_call/function_call_output |
| 上下文 | 系统提示 + AGENTS.md + 对话历史 |
| Token 管理 | 自动估算 + 压缩 |
下一步
下一课我们将深入工具系统。