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 出现时,你能快速判断它在这个光谱上的位置。
返回:模块目录