Skip to content

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:性能优先 + 平台依赖 ​

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

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

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

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

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

一张表对比 ​

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

安全模型对比 ​

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

Codex:操作系统强制 ​

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

Claude Code:应用层审批 ​

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

DSH:策略平面 ​

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

安全对比表 ​

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

安全选择指南 ​

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

MCP 集成对比 ​

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

MCP 选择逻辑 ​

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

扩展性与生态对比 ​

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

扩展选择逻辑 ​

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

开发者体验对比 ​

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

场景推荐矩阵 ​

场景推荐原因
个人日常开发Claude Code开箱即用,学习曲线最低
安全敏感环境CodexOS 沙箱最硬
企业合规要求DSH策略可审计、可编程
CI/CD 自动化Codex SDKper-turn 权限 + 编程接口
需要可编程策略DSH策略即插件
多模型切换DSH / PiProvider 适配最灵活
团队协作Claude CodeSkills 共享 + CLAUDE.md 统一
MCP 重度使用Codex原生 Rust 实现 + per-tool 审批
快速原型Claude CodeContinuous 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 出现时,你能快速判断它在这个光谱上的位置。


返回:模块目录

把零散知识,整理成可以反复走的路。