Codex 上下文管理架构
范围:深入分析 OpenAI Codex 的上下文管理机制,包括对话历史、Token 管理、上下文压缩和引用追踪
综合自:codex (openai/codex)
优先级:P1
概述
Codex 的上下文管理系统采用了多层次的策略来处理 LLM 的有限上下文窗口。核心设计目标是在保持对话连贯性的同时,最大化有效上下文利用率。
上下文管理层次:
- ContextManager - 核心历史管理
- 消息历史持久化 - 文件系统 存储
- Token 估算与截断 - 自适应上下文窗口管理
- 上下文压缩 - 智能摘要减少 Token 使用
ContextManager 核心架构
数据结构
#[derive(Debug, Clone, Default)]
pub(crate) struct ContextManager {
/// 历史项目, oldest → newest 顺序
items: Vec<ResponseItem>,
token_info: Option<TokenUsageInfo>,
/// 参考上下文快照,用于差异计算
reference_context_item: Option<TurnContextItem>,
}
设计理由:
Vec<ResponseItem>保持顺序,支持高效的前端/后端操作token_info缓存上次 API 响应的 Token 使用量reference_context_item支持上下文差异检测
Token 使用跟踪
#[derive(Debug, Clone, Copy, Default)]
pub(crate) struct TotalTokenUsageBreakdown {
pub last_api_response_total_tokens: i64,
pub all_history_items_model_visible_bytes: i64,
pub estimated_tokens_of_items_added_since_last_successful_api_response: i64,
pub estimated_bytes_of_items_added_since_last_successful_api_response: i64,
}