LC

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行
最大文件

📦 查看完整源码

Codex 完全开源,所有本教程分析的 Rust 源码均可在官方仓库中直接阅读。

openai/codex · codex-rs/