对比:Claude Code vs Codex CLI

同样是让 AI 帮你写代码,一个用 Rust 写了 81 个 crate,靠操作系统内核来保证安全;另一个用 TypeScript 做了 54 个工具,靠额外调一次 LLM 来判断你的命令危不危险。

总览对比

Claude Code
Anthropic
TypeScript · Bun · LLM Classifier
54 Tools · 6 Permission Modes · MCP
vs
Codex CLI
OpenAI
Rust · 81 Crates · Kernel Sandbox
Shell + File · Landlock/Seatbelt · Minimal

架构对比

维度 Claude Code Codex CLI
语言 TypeScript (TSX) Rust
运行时 Bun Native Binary (tokio)
代码规模 代码分割 ~450 chunks, 大型 monorepo 81 crates, 精简编译
UI 框架 React + Ink (终端 React) Ratatui (Rust TUI)
模块系统 ESM, 动态导入, Feature Flags Cargo workspace, 静态编译
API 模型 Claude (Anthropic/Bedrock/Vertex/Azure) + OpenAI 兼容层 OpenAI GPT-4o / o3 系列
扩展性 MCP 协议 + Hook 系统 + 自定义 Agent 有限扩展

安全模型 — 核心差异

这是两者最大的分歧点。 两种完全不同的安全哲学:一个信任操作系统内核,一个信任 AI 模型的判断力。

Claude Code: LLM 分类器

  • 每次工具调用前,可选地调用一次 LLM 分类器判断安全性
  • 6 种权限模式 + 7 层规则来源
  • 分类器有 2 秒超时的推测性检查
  • 支持危险命令模式检测 (rm -rf, force push 等)
  • 用户可自定义 allow/deny 规则,细到命令前缀级别
  • 本质:概率性安全 — 依赖模型理解命令语义

Codex CLI: OS 内核沙箱

  • 使用 Linux Landlock LSM + macOS Seatbelt 进行内核级隔离
  • 限制文件系统访问(只允许读写项目目录)
  • 限制网络访问(可完全禁止)
  • 限制进程创建和系统调用
  • 沙箱策略由用户选择的模式决定
  • 本质:确定性安全 — 依赖 OS 内核强制执行

工具系统对比

能力 Claude Code Codex CLI
文件搜索 GlobTool (glob 模式) + GrepTool (ripgrep 正则) Shell 命令 (find, grep)
文件编辑 FileEditTool (字符串替换) + FileWriteTool (全文覆盖) apply_patch (unified diff)
Shell 执行 BashTool (后台, 超时, 流式) + PowerShellTool shell (在沙箱内执行)
Web 访问 WebFetchTool + WebSearchTool 无 (可被沙箱限制)
多 Agent AgentTool (7+ 类型, Worktree 隔离, Team Swarm)
代码智能 LSPTool (Language Server Protocol)
任务管理 TaskCreate/Update/List/Get (完整任务系统)
外部集成 MCP 协议 (任意工具源)
总工具数 54 (+ MCP 动态工具) ~3 (shell, file_read, apply_patch)

Agent Loop 对比

Claude Code

AsyncGenerator 驱动的循环。
多工具并行执行。
三级上下文压缩 (Auto/Snip/Reactive)。
错误恢复 (max_output_tokens 重试, prompt_too_long 压缩)。
子 Agent 可递归生成。
Thinking 模式支持。

Codex CLI

简洁的 while 循环。
逐个工具执行。
上下文管理简单。
错误直接回退。
无子 Agent 概念。
依赖模型原生能力。

设计哲学总结

Claude Code 选择了"丰富的工具 + AI 驱动的安全"路线 — 54 个工具覆盖几乎所有开发场景,用 LLM 分类器实现语义级的安全判断,用 MCP 协议实现无限扩展。代价是安全性依赖模型判断(概率性),且系统复杂度高。
Codex CLI 选择了"极简工具 + OS 内核安全"路线 — 只需 3 个工具(shell、read、patch),用操作系统内核的 Landlock/Seatbelt 提供确定性的安全保证。代价是功能有限,扩展性低,但安全性可证明。

这两种方法没有绝对的对错,反映了不同的工程权衡: