AgentHarness 课程

第十七课:上下文管理

1.2K字·3分钟·
系统提示AGENTS.md加载对话历史Token估算

学习目标

  • 理解上下文的组成和管理
  • 掌握 AGENTS.md 的加载层级
  • 了解 Token 估算和压缩策略
  • 学会优化上下文使用

一、上下文组成

Codex 的上下文由四部分组成:

1.1 系统提示

系统提示是硬编码在 agent-loop 中的,定义了 Codex 的角色和行为约束。用户无法直接修改,但可以通过 AGENTS.md 间接影响。

1.2 AGENTS.md

AGENTS.md 是项目级指令,告诉 Codex 如何处理特定项目。支持多层级加载:

  • 全局:~/.codex/AGENTS.md(所有项目通用)
  • 项目根目录:project/AGENTS.md(项目级指令)
  • 子目录:project/src/AGENTS.md(目录级指令)

1.3 对话历史

完整的 ResponseItem 数组,包含所有用户消息、助手回复和工具调用。

1.4 工具定义

可用工具的 JSON Schema,告诉模型有哪些工具可以使用。

二、Token 估算

Codex 使用 approximate-tokens-used.ts 估算 token 使用量:

  • 英文:约 4 字符 = 1 token
  • 中文:约 2 字符 = 1 token
  • 代码:约 3 字符 = 1 token

当 token 接近上下文窗口限制时,Codex 会自动压缩历史。

三、压缩策略

3.1 /compact 命令

手动压缩对话历史,释放 token 空间。压缩后保留关键信息,删除冗余内容。

3.2 自动压缩

当 token 使用量超过阈值时,Codex 自动压缩:

  • 保留最近的消息
  • 合并旧消息为摘要
  • 保留工具调用结果

3.3 --full-context 模式

实验模式,预加载所有文件到上下文。适用于小型项目,但会消耗大量 token。

四、优化技巧

  1. 使用 /compact 定期压缩
  2. 使用 /mention 精确指向相关文件
  3. 使用 /plan 先规划再执行
  4. 合理使用 AGENTS.md 提供上下文
  5. 避免在单个会话中处理太多任务

五、本课小结

要点说明
上下文组成系统提示 + AGENTS.md + 历史 + 工具
AGENTS.md多层级加载,子目录覆盖上级
Token 估算自动估算,接近限制时压缩
压缩策略/compact 手动 + 自动压缩

下一步

下一课我们将了解模型选择与切换。