第十七课:上下文管理
系统提示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。
四、优化技巧
- 使用 /compact 定期压缩
- 使用 /mention 精确指向相关文件
- 使用 /plan 先规划再执行
- 合理使用 AGENTS.md 提供上下文
- 避免在单个会话中处理太多任务
五、本课小结
| 要点 | 说明 |
|---|---|
| 上下文组成 | 系统提示 + AGENTS.md + 历史 + 工具 |
| AGENTS.md | 多层级加载,子目录覆盖上级 |
| Token 估算 | 自动估算,接近限制时压缩 |
| 压缩策略 | /compact 手动 + 自动压缩 |
下一步
下一课我们将了解模型选择与切换。