Skip to content

上下文管理负责构建、裁剪和维护 LLM 的输入上下文,确保代理循环在上下文窗口限制内高效运行。

为什么需要 Context Management

LLM 有固定的上下文窗口限制(如 128K tokens),而编程任务往往产生大量对话历史、工具调用结果和文件内容。上下文管理确保在窗口限制内保留最有价值的信息,通过智能裁剪和压缩策略,让代理循环能处理任意长度的对话而不会因上下文溢出而失败。

核心原理

  1. 上下文构建build_initial_context() 将 system prompt + 对话历史 + 工具声明 + workspace 信息组装为完整的 LLM 输入
  2. 增量更新:每次工具执行结果追加到上下文,而非重建,减少 token 消耗
  3. 历史压缩compact_conversation_history() 使用 LLM 对早期对话生成摘要,替换原始历史以释放 token 空间
  4. Token 追踪update_token_usage_info()recompute_token_usage() 实时监控 token 用量

在源码中的实现

  • codex-rs/core/src/session/mod.rsbuild_initial_context()record_conversation_items()replace_compacted_history()
  • codex-rs/core/src/client.rscompact_conversation_history() 方法
  • codex-rs/core/src/context/ — 上下文构建的内部模块
  • codex-rs/core/src/context_manager/ — 上下文管理策略

相关概念