AgentHarness 课程

第十五课:Agent Loop 深度解析

1.4K字·4分钟·
请求→推理→工具调用→执行→反馈完整循环

学习目标

  • 理解 Agent Loop 的完整工作流程
  • 掌握消息类型和处理机制
  • 了解上下文构建过程
  • 理解 Token 估算机制

一、Agent Loop 概述

Agent Loop 是 Codex 的核心引擎,它是一个不断循环的过程:用户输入 → 构建上下文 → 调用模型 → 处理响应 → 执行工具 → 返回结果 → 循环。这个循环会一直持续,直到模型认为任务完成。

二、完整工作流程

第1步:用户输入

用户在终端输入 prompt,可以是:

  • 文本描述:帮我修复这个 bug
  • 文件引用:@src/utils.py
  • 图片:-i screenshot.png

第2步:构建上下文

Codex 构建发送给模型的上下文,包含:

  1. 系统提示:定义 Codex 的角色和行为约束
  2. AGENTS.md:项目级指令
  3. 对话历史:之前的交互记录
  4. 工具定义:可用工具的 JSON Schema
  5. 用户输入:当前的 prompt

第3步:调用 Responses API

使用 OpenAI Responses API 调用模型,传入消息和可用工具列表。

第4步:处理响应

模型返回的响应有三种类型:

  • message:文本回复,直接显示给用户
  • function_call:工具调用请求,需要执行工具
  • reasoning:推理过程,显示思考过程

第5步:执行工具

如果模型请求调用工具,Codex 会:

  1. 检查沙盒策略
  2. 检查审批策略
  3. 在沙盒中执行
  4. 收集结果

第6步:循环

将工具结果加入上下文,再次调用模型。循环直到模型返回文本回复或达到限制。

三、消息类型详解

类型说明示例
user用户消息"修复这个 bug"
system系统提示"你是一个编程助手"
assistant助手回复"我来看看这个问题"
function_call工具调用shell("python test.py")
function_call_output工具结果"测试通过"

四、上下文管理

上下文由四部分组成:

  1. 系统提示:硬编码在 agent-loop 中
  2. AGENTS.md:全局和项目级指令
  3. 对话历史:完整的消息数组
  4. 工具定义:可用工具的 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 管理自动估算 + 压缩

下一步

下一课我们将深入工具系统。