Skip to content

codex 架構總覽

源码版本rust-v0.145.0

codex 是 OpenAI 的開源編碼 Agent,這一版是 Rust 重寫(早期 TypeScript 版已退居 codex-cli/ 僅作 npm 安裝殼)。原始碼主體在 codex-rs/,是一個 Cargo workspace,下掛 90+ 獨立 crate,按職責切分極細。本站按 crate 分層拆解,每個關鍵檔案都帶 SrcLink 直連到 GitHub 對應行。

整體分層

主要 crate 一覽

分層crate職責
CLI 入口cli子命令分發、doctor、login、mcp_cmd
Agent 核心coreAgent 主迴圈、LLM 客戶端、壓縮、會話執行緒、工具
補丁協議apply-patchapply_patch 文字補丁格式
沙箱sandboxing / linux-sandbox / bwrap / windows-sandbox-rs跨平台命令隔離
執行策略execpolicy命令分類與放行策略
執行exec / exec-server命令執行與 exec-server 協議
TUItui終端 UI、chatwidget、diff_model
App-serverapp-server / app-server-protocol / app-server-transport編排服務與協議
MCPmcp-server / rmcp-client / codex-mcp / connectorsModel Context Protocol 整合
Providermodel-provider / model-provider-info / backend-client模型 provider 抽象
Cloudcloud-tasks / cloud-config雲端任務執行
配置config / codex-home配置系統與 home 目錄
周邊prompts / skills / memories / hooks / plugin / rollout提示詞、技能、記憶、鉤子、插件、trace

每層一句話

  • CLI 入口:codex 命令的子命令分發,main.rs 用 clap 解析後路由到各子命令。
  • Agent 核心:Agent 主迴圈消費 Op,驅動 LLM 呼叫與工具執行,CodexThread 是會話編排的入口。
  • Sandbox 執行:命令在沙箱裡跑,execpolicy 先分類命令決定放行/攔截/審批,再交給平台沙箱隔離。
  • TUI/App-server:TUI 是終端前端,App-server 把 Agent 能力以協議暴露給 IDE/外部客戶端。
  • Provider/Cloud:model-provider 抽象不同後端,cloud-tasks 把任務丟到雲端跑。

設計動機

codex 選 Rust 重寫,核心動機是沙箱與效能。編碼 Agent 要跑使用者機器上的任意 shell 命令,沒有可靠的行程隔離就沒有安全可言;Rust 的型別系統和零成本抽象讓 90+ crate 的細粒度切分不會帶來執行時開銷。workspace 按職責切 crate,而不是一個大 crate,是為了編譯增量邊界清晰——改 TUI 不會重編 core。

常見誤讀

  • 「codex 是個 CLI 工具」——對一半。CLI 只是入口,真正能跑的是 core + sandbox + tui/app-server 三層組合。
  • 「Rust 重寫是為了快」——Rust 帶來的是沙箱隔離行程級安全,效能是副產品。
  • 「apply_patch 是 codex 的私有格式」——是 codex 用的文字補丁協議,模型生成、apply-patch crate 解析應用。

推薦閱讀順序

  1. CLI 入口與子命令分發——從 codex 命令進來看怎麼分發
  2. Agent 主迴圈——Agent 怎麼消費 Op 驅動 LLM
  3. LLM 客戶端與 Responses API——怎麼和 OpenAI 後端說話
  4. 跨平台沙箱——命令怎麼被隔離
  5. execpolicy 命令分類——命令怎麼被分類放行
  6. App-server 架構——怎麼以協議暴露給外部

讀完這條線,基本能講清 codex 從「使用者敲命令」到「LLM 跑工具改檔案」的全鏈路。