Codex CLI / 07

Codex vs Claude Code vs DSH:三种终端 Agent 的工程对比

为什么这个问题值得关注

2025-2026 年,三个主要的终端 Coding Agent 形成了清晰的竞争格局:

  • OpenAI Codex CLI:Rust + TypeScript,平台原生沙箱,TOML 配置
  • Anthropic Claude Code:TypeScript 全栈,应用层权限,CLAUDE.md 指令
  • DeepSeek Harness:TypeScript + Cordis 插件系统,策略平面,可组合运行时

三者功能高度重叠(都能读写文件、执行命令、调用 MCP 工具),但做了根本不同的工程判断。这些判断不是”谁对谁错”,而是不同环境假设下的合理选择。

理解这些差异,能帮你在具体场景中做出选择——不是”哪个最好”,而是”哪个的假设和我的环境最匹配”。

架构哲学对比

Codex CLI:性能优先 + 平台依赖

核心判断:Agent 的热路径(沙箱检查、MCP 通信、配置解析)必须足够快
实现方式:Rust 内核处理性能敏感路径,TypeScript 处理 UI 和扩展
代价:双层构建、跨语言调试、平台耦合

Claude Code:一致性优先 + 应用层控制

核心判断:整个系统用一种语言能减少边界处的 bug 和认知负担
实现方式:TypeScript 全栈,权限检查在应用层,沙箱在框架内部实现
代价:性能天花板(Node.js GC、JSON 解析),安全边界相对软

DeepSeek Harness:可组合优先 + 插件万物

核心判断:没有任何组件应该是不可替换的
实现方式:Cordis 插件树,所有功能(包括 Agent Loop 本身)都是插件
代价:复杂度最高,学习曲线陡峭,社区生态依赖

一张表对比

维度 Codex CLI Claude Code DeepSeek Harness
核心语言 Rust + TypeScript TypeScript TypeScript (Cordis)
架构风格 分层(性能层 + 交互层) 单体(全栈 TS) 插件树(万物可替换)
Agent Loop Turn-based Continuous 可替换(插件)
复杂度
性能天花板 高(Rust 热路径) 中(Node.js) 中(依赖插件实现)
可替换性 低(Rust 核心固定) 低(框架核心固定) 高(Loop 都可换)

安全模型对比

这是三者分歧最大的维度。

Codex:操作系统强制

安全假设:操作系统的沙箱机制比任何应用代码都可靠
实现:macOS Seatbelt + Linux Bubblewrap
边界:内核级——绕过需要内核漏洞
粒度:路径级(文件系统)+ syscall 级(网络、进程)

Claude Code:应用层审批

安全假设:用户交互式审批 + 框架逻辑检查能覆盖风险
实现:TypeScript 中的权限检查 + 用户 prompt
边界:应用级——框架 bug 可能绕过
粒度:操作级(读/写/执行分别控制)

DSH:策略平面

安全假设:安全策略本身需要可编程、可替换
实现:Approval 插件 + 策略平面
边界:取决于策略实现——可以硬也可以软
粒度:完全自定义(可以根据上下文决策)

安全对比表

维度 Codex Claude Code DSH
绕过难度 极高 取决于策略
子进程安全 自动继承 需显式处理 取决于插件
动态策略 不支持 有限 完全支持
审计友好 是(TOML 可审计) 中(规则分散) 取决于实现
平台限制 macOS/Linux only 跨平台 跨平台
配置复杂度 中(TOML 层级) 低(交互式) 高(需写插件)
Prompt Injection 防护 无(不理解语义) 有限 可编程

安全选择指南

需要最硬的安全边界 → Codex(OS 沙箱,绕过需要内核漏洞)
需要开箱即用的安全 → Claude Code(无需配置,交互式审批)
需要可编程的安全策略 → DSH(策略是插件,可以根据上下文决策)
不需要框架级安全 → Pi(安全交给容器化基础设施)

MCP 集成对比

维度 Codex Claude Code DSH
实现层 Rust 原生 crate TypeScript 内置 Cordis 插件
传输支持 STDIO + Streamable HTTP STDIO + SSE STDIO
审批粒度 Per-tool(4 种模式) 统一权限模型 取决于 Approval 插件
Token 优化 不做 不做 不内置(Pi 做了)
安全隔离 Guardian 隔离 无专门隔离 取决于策略
生态投入 1,100+ PR 不公开 不公开

MCP 选择逻辑

  • 需要细粒度 per-tool 审批:Codex 最强
  • 需要和内置工具统一的权限体验:Claude Code
  • 需要可编程的工具路由和动态加载:DSH
  • 需要 token 经济学优化:Pi 的 pi-mcp-adapter

扩展性与生态对比

维度 Codex Claude Code DSH
扩展机制 MCP + 配置 Skills + Hooks + MCP Cordis 插件(万物可替换)
扩展语言 TOML 配置 + MCP server TypeScript/Markdown + MCP TypeScript (Cordis API)
扩展粒度 MCP server 级 Skill/Hook 级 函数级
社区生态 发展中 成熟 依赖 DSH 社区
跨框架兼容 通过 MCP 标准 通过 MCP + Skills 通过 MCP 标准

扩展选择逻辑

  • 最低门槛(写 Markdown 就能扩展):Claude Code Skills
  • 最大灵活性(连 Loop 都可替换):DSH Cordis 插件
  • 标准化集成(MCP 协议):三者都支持,Codex 最深

开发者体验对比

维度 Codex Claude Code DSH
安装 npm install npm install npm install
首次配置 需要配 TOML 开箱即用 需要理解插件系统
交互模式 Turn-based(审查式) Continuous(自动式) 取决于 Profile
IDE 集成 VS Code Web + headless
会话恢复 支持 支持 内置(Session Log)
学习曲线
Breaking changes 频繁 中等 频繁
ThoughtWorks Trial Adopt 未评级

场景推荐矩阵

场景 推荐 原因
个人日常开发 Claude Code 开箱即用,学习曲线最低
安全敏感环境 Codex OS 沙箱最硬
企业合规要求 DSH 策略可审计、可编程
CI/CD 自动化 Codex SDK per-turn 权限 + 编程接口
需要可编程策略 DSH 策略即插件
多模型切换 DSH / Pi Provider 适配最灵活
团队协作 Claude Code Skills 共享 + CLAUDE.md 统一
MCP 重度使用 Codex 原生 Rust 实现 + per-tool 审批
快速原型 Claude Code Continuous loop + 低配置
需要容器隔离 Pi 设计哲学最匹配

三者的收敛趋势

尽管路线不同,三个框架在某些方向上正在收敛:

MCP 标准化。 三者都支持 MCP,且投入在增加。工具生态正在通过 MCP 标准实现跨框架兼容。

多角色安全。 Codex 的 Guardian 隔离、DSH 的策略平面、Claude Code 的 Hooks——都在向”同一系统内不同角色不同权限”的方向演进。

SDK/编程接口。 三者都在提供编程式调用能力,支持 CI/CD 和自动化集成。

会话恢复。 长任务断点续传成为标配。

收敛不意味着趋同——它们在收敛的方向上仍然用不同的方式实现,保持各自的架构特色。

决策框架

选择时问自己三个问题:

1. 你的安全需求能提前声明吗?

  • 能 → Codex(TOML 配置 + OS 沙箱)
  • 不能,需要动态决策 → DSH(策略平面)
  • 不需要精细控制 → Claude Code(交互式审批够用)

2. 你的主要工作模式是什么?

  • 交互式、每步审查 → Codex(Turn-based)
  • 自动化、批量处理 → Codex SDK
  • 快速迭代、信任模型 → Claude Code(Continuous)
  • 高度定制 → DSH(可替换的 Loop)

3. 你能承受多大的学习曲线?

  • 最小 → Claude Code
  • 中等 → Codex CLI
  • 最大(但最灵活)→ DSH

小结

三种终端 Coding Agent 代表了三种工程哲学:

  • Codex CLI:安全交给操作系统,性能交给 Rust,配置交给 TOML——静态、可预测、硬边界
  • Claude Code:一切在应用层解决——简单、一致、易上手,但边界相对软
  • DeepSeek Harness:一切都是插件——最大灵活性,但最高复杂度

没有绝对的优劣。关键变量是你的环境:安全需求、自动化程度、团队技术栈、学习预算。

理解三者的设计判断和 tradeoff,比记住功能对比表更有价值。当下一个 Coding Agent 出现时,你能快速判断它在这个光谱上的位置。


返回:模块目录