Appearance
上下文管理负责构建、裁剪和维护 LLM 的输入上下文,确保代理循环在上下文窗口限制内高效运行。
为什么需要 Context Management
LLM 有固定的上下文窗口限制(如 128K tokens),而编程任务往往产生大量对话历史、工具调用结果和文件内容。上下文管理确保在窗口限制内保留最有价值的信息,通过智能裁剪和压缩策略,让代理循环能处理任意长度的对话而不会因上下文溢出而失败。
核心原理
- 上下文构建:
build_initial_context()将 system prompt + 对话历史 + 工具声明 + workspace 信息组装为完整的 LLM 输入 - 增量更新:每次工具执行结果追加到上下文,而非重建,减少 token 消耗
- 历史压缩:
compact_conversation_history()使用 LLM 对早期对话生成摘要,替换原始历史以释放 token 空间 - Token 追踪:
update_token_usage_info()和recompute_token_usage()实时监控 token 用量
在源码中的实现
codex-rs/core/src/session/mod.rs—build_initial_context()、record_conversation_items()、replace_compacted_history()codex-rs/core/src/client.rs—compact_conversation_history()方法codex-rs/core/src/context/— 上下文构建的内部模块codex-rs/core/src/context_manager/— 上下文管理策略