Codex
§1 · Codex 是什么
Section titled “§1 · Codex 是什么”OpenAI 自家的 coding agent。本地一个 codex 二进制做交互式编辑(TUI 加一组 MCP),云端一个 cloud-tasks 二进制做远端 worker。整套系统用 Rust 写成 mono-repo,crate 之间靠 trait 加 protocol crate 解耦。
§2 · 50+ crate 分层架构
Section titled “§2 · 50+ crate 分层架构”| 维度 | Codex | Claude Code | OpenClaw | Hermes |
|---|---|---|---|---|
| 入口 | `cli/` 终端入口(流式 stdin) | `tui/` ratatui 全屏 UI(带 onboarding、trust) | `app-server/` 加 `app-server-daemon/` 走 JSON-RPC,被 IDE、插件调用 | `cloud-tasks/` 远端任务 binary(独立运行) |
| 核心循环 | `core/` 单 turn 闭环(assemble prompt → model call → tool dispatch → apply) | `core-api/` 对外稳定接口 | `core-plugins/` 插件挂载点 | `protocol/` 跨 crate 共享类型 |
| 状态与记忆 | `state/` SQLite 加 lease、retry、backoff | `memories/` 两阶段 consolidation(stage1 加 global) | `memory_citation` 引用回溯 | `agent-graph-store/` thread、branch 拓扑 |
| 工具 | `apply-patch/` V4A patch 解析器 | `exec/` shell 执行 | `builtin-mcps/` 内置 MCP 桥 | `core-skills/` 8 子 crate skill 引擎 |
| Sandbox | macOS:`sandbox-macos-seatbelt/` 写 .sbpl | Linux:`bwrap/` 加 `landlock/` 加 `seccomp/` | Windows:`windows-sandbox-rs/` | 统一抽象:`sandbox/` 加 `execpolicy/` |
| 观测与计费 | `analytics/` 20+ event type | `codex-otel/` OpenTelemetry 桥 | `codex-rollout-trace/` 整 session 回放 | `codex-cost/` token 转 USD 估算 |
§3 · 工程亮点
Section titled “§3 · 工程亮点”- Rust 类型系统兜底:
Result加enum让状态机错误不可能漏处理。Stage1JobClaimOutcome这种 5 路 enum 强制match走全分支。 - 三平台原生 sandbox:macOS 走 seatbelt(不依赖 SIP 关闭),Linux 用 bubblewrap 加 landlock 加 seccomp(不用 root),Windows 走 windows-sandbox-rs(不用 WSL)。
- 记忆 consolidation 后台化:
memory_consolidate_global把 LLM 重写 MEMORY.md 和 skills 推到后台 job。主 turn 没有额外开销。 - rollout-trace 可重放:整 session 落盘成 JSONL,能回放复现。排查 agent 行为漂移只有这一条路。
apply-patchV4A 格式:自家 patch 格式。比 unified diff 稳,比 SEARCH、REPLACE 高效,结构化对 LLM 也更友好。
§4 · 短板
Section titled “§4 · 短板”- 改动成本高:50+ crate,任何跨 crate 的修改都要动 protocol,编译时间长。
- Rust 门槛陡:异步加 lifetimes 加 tower 风格的 trait composition,本质上是一个 Rust 项目。
- 没有 user-level memory:MEMORY.md 是 cwd 级,跨项目的偏好只能塞到 AGENTS.md 个人级。
- TUI 优先:IDE 集成走
app-serverJSON-RPC,生态没 Claude Code 的 IDE 插件成熟。
§5 · 5 件最值得借鉴的工程动作
Section titled “§5 · 5 件最值得借鉴的工程动作”- Phase 2 consolidation prompt(
codex-rs/memories/write/templates/memories/consolidation.md):800 行 prompt 把「什么算高信号记忆」说清楚,自带 wording-preservation 规则。可以直接复用。 - 三平台 sandbox 抽象(
sandbox/加execpolicy/):一份抽象、三套实现,跨平台 agent 的最佳参考。 - Stage1JobClaimOutcome 5 路状态机(
state/src/model/memories.rs):claim 一个 job 必有 5 种结局,全在 enum 里。 - rollout-trace JSONL:整 session 落盘做回放。想做 agent 的人都该有这个。
- app-server JSON-RPC 协议:把 agent 引擎做成独立进程加 JSON-RPC 客户端。IDE 插件不用重新实现 turn loop。