Codex 架构总览
从顶到底的分层架构,~66 万行 Rust 代码
TUI 入口
tui/src/
13万行
Agent 引擎 (codex.rs)
core/src/codex.rs + codex/turn.rs
~5300行
Prompt 组装
core/src/codex.rs build_initial_context()
~500行
工具路由
core/src/tools/router.rs + handlers/
~2000行
Shell 执行
core/src/exec.rs
1405行
沙箱隔离
sandboxing/src/ + execpolicy/src/
~3000行
权限编排
core/src/tools/orchestrator.rs
~600行
上下文压缩
core/src/compact.rs
~500行
记忆系统
core/src/message_history.rs + memories/
~1200行
MCP + Skills
core/src/mcp_tool_call.rs + skills.rs
~1000行
Plan 模式 + 多 Agent
core/src/codex/turn.rs (plan) + handlers/
~3700行
HTTP API 服务
app-server/src/
6.8万行
数据流
用户输入
│
▼
codex.submit_input(UserInput::Text) ← core/src/codex.rs
│
├─ build_initial_context() ← 动态 Prompt 组装
│ ├─ 基础系统提示词 (prompt.md)
│ ├─ Skills 注入 (skills.rs)
│ ├─ 长期记忆检索 (memories/)
│ └─ 会话历史 (message_history.rs)
│
├─ run_turn() 状态机循环 ← core/src/codex/turn.rs
│ ├─ try_run_sampling_request() ← 调用模型 API (流式)
│ ├─ StopReason::ToolCall ← 工具分发
│ │ ├─ orchestrator 三阶段权限检查
│ │ ├─ exec::run_sandboxed() ← 沙箱执行
│ │ └─ compact() Token 预算检查
│ └─ StopReason::EndTurn ← 结束本次 turn
│
└─ AgentEvent 流式输出
├─ TUI (tui crate)
├─ HTTP API (app-server crate)
└─ CLI stdout代码量统计
1000+
Rust 文件
6
核心 Crate
66万+
总代码行数
3106行
最大文件