Claude Code
最佳长任务体验与记忆/会话产品化。代价是核心 CLI 实现不完全公开,部分结论只能来自官方行为文档。
Codex
最强的“可审计 Harness 工程感”:Rust 开源、审批与沙箱分离、线程/分支/压缩机制清晰。交付表达更偏过程透明。
DeepSeek Harness
架构想象力最高:Everything is a plugin、Cordis 时空可组合。当前仍更像 Harness 实验平台,而非成熟生产工作台。
我的判断:差异来自 Harness 设计
- Codex 麻利但话多:它把工具轨迹、权限边界、检查点和中间判断显式化,优先保证可审计和可控,因此过程感更强。
- Claude Code 默默但成品漂亮:它把更多中间治理放进会话状态、自动记忆、后台任务、hooks 和输出风格,用户看到的是压缩后的交付。
- 这不是单一优劣:前者偏“工程控制台”,后者偏“工作流产品”;如果任务失败需要回溯,Codex 的显式轨迹更容易审计;如果任务成功率和交付洁净度优先,Claude Code 更占优势。
- DeepSeek Harness 的路线不同:它把 Harness 本身做成可替换的插件系统,适合研究和二次开发,尚未证明在复杂生产任务上胜过前两者。
统一模型:可恢复的执行系统
自然语言
规则/记忆/工具
文本或 tool call
权限/审批/沙箱
shell/edit/MCP
日志/快照/记忆
成熟 Harness 的核心不是“会调用工具”,而是能在工具失败、上下文接近上限、用户暂停、网络断开、权限变化、子代理并行时,仍然知道自己处于哪个可恢复状态。
内循环
prompt + system/tools/history → assistant tool call → 工具/Hook 执行 → 结果回填 → 继续推理,直到 text-only result。
while not done:
ctx = build_context(state)
msg = model(ctx)
if msg.tool_call:
decision = policy(msg.call)
result = execute(msg.call, decision)
state.append(msg, result)
else:
return finalize(msg)外循环
会话恢复、分支、子代理、并行任务、Git/文件检查点、长期记忆、预算/步数限制、用户审批和审计日志。
关键洞察:模型能力决定“想出什么”,Harness 决定“能否安全、持续、可验证地做完”。
能力矩阵
| 维度 | Claude Code | Codex | DeepSeek Harness | 工程判断 |
|---|---|---|---|---|
| 公开性 | 核心 CLI 非完整开源;SDK/文档公开 部分事实 | CLI 与 SDK 开源,可读 Rust/TS/Python 事实 | 开源 MIT,developer preview 事实 | Codex/DeepSeek 可审计;Claude 需行为黑盒测试 |
| Agent loop | 内置 CLI/SDK loop,max_turns/max_budget,ResultMessage 事实 | Responses API 驱动,tool call 迭代,线程化 事实 | 插件化 loop,核心能力均可替换 事实 | Claude 产品化最好,Codex 可解释性最好,DeepSeek 可塑性最好 |
| 会话恢复 | continue/resume/fork;SDK 支持 SessionStore 云端镜像 事实 | thread resume/fork/archive,~/.codex/sessions,rollout/checkpoint 事实 | 有轨迹/插件机制,但生产级持久化证据较少 推断 | Claude 与 Codex 都强;Claude 云恢复产品化更成熟 |
| 记忆 | CLAUDE.md + auto-memory + path-scoped rules;主题文件按需加载 事实 | AGENTS.md/项目指令 + transcript/compaction;更偏上下文治理 事实 | 插件/技能按需加载、跨会话快照、goal 状态和 durable session;组合语义快速迭代 事实 | Claude 的“显式长期记忆”最完整 |
| 上下文压缩 | 自动压缩,重注入规则、记忆、计划、最近文件;可 /compact、/rewind 事实 | auto_compact_limit + Responses compact,保留 compaction encrypted_content 事实 | 需看插件/模型上下文策略;公开证据不足 未知 | Codex 机制最公开,Claude 体验最自然 |
| 权限与沙箱 | hooks → deny → ask → mode → allow → canUseTool;云端隔离 sandbox 与凭据代理 事实 | 审批与沙箱分离,read-only/workspace-write/full-access,auto-review 事实 | 安全通知明确 preview 风险;依赖宿主和插件治理 推断 | Codex 与 Claude 都强;Claude 云端凭据隔离更漂亮 |
| 工具扩展 | MCP、hooks、skills、subagents、plugins 事实 | MCP、skills、plugins、subagents、SDK 事实 | Everything is a plugin,Cordis 时空可组合 事实 | DeepSeek 的架构自由度最高,治理成本也最高 |
| 交付表达 | 可配置 Default/Proactive/Concise/Explanatory/Learning,偏结果洁净 事实 | 轨迹、审批、diff、工具输出更显式,偏工程透明 推断 | 可由插件和 UI 组合,风格尚未稳定 推断 | 你的主观感受与 Harness 设计目标一致 |
相对评分矩阵
工程成熟度评分(0–100),用于横向比较,不代表模型智力或官方 benchmark。
| 能力维度 | Claude Code | Codex | DeepSeek Harness | 最高分 |
|---|
评分是本报告基于公开证据与工程判断的相对量表;点击上方“证据与来源”查看依据和边界。
泄露复刻线索:证据分层
可安全引用的架构线索
- 单一核心 query loop:社区研究把 Claude Code 的中心识别为一个约 1,730 行的异步生成器,统一处理模型流、工具并发、压缩、预算、恢复、hooks 和终止原因;另一个 clean-room 复刻把它拆成约 5,000 行、13 个工具和独立章节,便于验证设计模式。
- 显式状态/配置/依赖分离:可变 State、入口快照 QueryConfig、可注入 QueryDeps,让 compactor、模型调用和 UUID 都能被替换测试。
- 分层压缩与错误恢复:先做轻量删除/截断,必要时才摘要;社区研究归纳出 Budget Reduction、Snip、Microcompact、Collapse、Auto 等阶段,恢复有次数上限,避免 retry/compact 无限烧预算。
- Fork 子代理的缓存工程:通过复制父级 system prompt、工具定义和历史前缀,只让最后的 directive 不同,以复用 prompt cache;权限请求可以 bubble 回父会话。
- 后台与隔离:async agent、自动 background、worktree isolation、remote task 让长任务不阻塞主会话;fork 子代理可复用父级 cache 前缀,普通子代理则拥有更干净的独立上下文。
对上一版判断的修正
- Claude Code 的“安静但漂亮”不是偶然的输出风格,而是深度整合了预算、上下文、后台任务和结果类型的运行时策略。
- 在“内循环恢复、子代理缓存、后台生命周期、压缩分层”上,Claude Code 的工程复杂度可能高于我们仅凭官方文档估计的水平。
- Codex 仍然在“开源可审计、sandbox/approval 分离、线程协议透明度”上更强;这不是 Claude Code 内部实现不优秀,而是证据可见度不同。
- DeepSeek Harness 的插件化路线更容易替换这些部件,但在默认组合、版本稳定性和供应链治理上仍处于 preview 阶段。
建议阅读:claude-code-from-source 的 agent loop 研究、clean-room 教育复刻、社区 multi-agent 研究、Fork subagent 研究。
安全提醒
搜索结果中也有伪装成“解锁版泄露源码”的恶意仓库和 dropper。不要下载 .7z、可执行文件或要求关闭安全软件的 fork;只阅读 Markdown/源码页面,并优先使用官方发布的当前版本。Anthropic 官方安全公告还记录过恶意仓库配置在信任确认前泄露 API key 的漏洞,说明 agent 的“加载项目配置”本身就是安全边界。
Claude Code:长期工作记忆型
启动:加载 CLAUDE.md、auto-memory、MCP 工具名、技能描述。
执行:每次工具前经过 hooks/deny/ask/permission mode。
压缩:接近上下文上限自动 compact,重新注入系统规则、记忆、计划、git 状态和最近文件。
恢复:本地 JSONL 连续保存;SessionStore 可双写到对象存储/KV/DB,多主机恢复。
回溯:/rewind 可恢复文件检查点,但 Bash 副作用不自动回滚。
Codex:可审计线程型
启动:线程 + cwd + instructions + tools + sandbox/approval policy。
执行:Responses API 返回最终文本或 tool call,结果追加进输入继续推理。
压缩:超过 auto_compact_limit 走 compact endpoint,生成 compaction item。
恢复:thread resume/fork/archive,SDK 暴露线程管理。
检查:Git checkpoint 与 rollout materialization 让“做了什么”容易复盘。
DeepSeek Harness:插件化实验型
公开项目的核心命题不是把所有治理逻辑固化在一个 CLI,而是把 UI、工具、模式、工作流、技能、代理、session log、compaction 和 sandbox 都做成插件。官方文档还明确了 append-only、可派生历史、goal pause/resume/complete 和 session fork。这样可以把 Harness 当作“可编程操作系统”,但也意味着:
- 版本兼容和插件供应链风险更高;
- 状态、权限、持久化语义依赖插件组合;
- 目前 developer preview,不适合直接承担不可逆生产运维。
谁的安全工程更好
Claude Code 云端:官方描述为每会话隔离 sandbox,敏感 git 凭据和签名密钥不放入 sandbox,而由代理服务按范围验证后代发。这是“凭据不进代理执行环境”的优秀模式。
Codex:把“是否允许”与“在哪里执行”拆开,审批策略、文件系统 sandbox、网络策略和自动审查各自独立。设计更透明,适合需要逐项审计的团队。
DeepSeek:开源和插件化让安全边界可自定义,但 preview 阶段不能假设默认组合已经达到 Claude/Codex 的生产级治理。
为什么 Claude 更漂亮、Codex 更啰嗦
同一类任务里,两个系统把过程暴露给用户的方式不同,最后形成了“成品感”和“控制台感”的差异。
Claude Code 的优化目标
- 把状态管理、记忆和后台任务藏到系统层;
- 用 output styles 压缩呈现;
- 通过 hooks、subagents、SessionStore 让长任务少打断;
- 最终输出更像经过编辑的交付物。
Codex 的优化目标
- 把 sandbox、approval、diff、tool result 显式化;
- 强调可复盘、可 steering、可 resume/fork;
- 让用户看见“为什么做、做了什么、权限是否变了”;
- 因此中间过程更长,但工程透明度更高。
证据、边界与来源
把官方文档、开源仓库、社区研究与推断拆开,读者可以沿着原始来源复核每个判断。
- OpenAI:Unrolling the Codex agent loop:公开解释 tool-call loop、上下文窗口、自动 compact。
- OpenAI Codex GitHub:开源 CLI、SDK、sandbox/approval 代码与线程协议。
- Claude Code Memory:CLAUDE.md、auto-memory、路径规则。
- Claude Agent SDK Agent Loop:tool call 循环、max_turns、ResultMessage。
- Claude SDK Session Storage:JSONL、本地/云端 SessionStore、镜像与恢复。
- Claude SDK File Checkpointing:Write/Edit 检查点与回溯边界。
- Anthropic:Claude Code sandboxing:云端隔离 sandbox 与凭据代理。
- DeepSeek Harness GitHub:Everything is a plugin、Cordis、developer preview、MIT。
- DeepSeek Harness 官方介绍:插件化定位与开发者预览。
- Axios:Claude Code source-map leak:说明泄露事件背景。泄露仓库不是官方权威,也不应运行来验证。
- 社区 clean-room / source study:用于理解 loop、预算、压缩和恢复模式,不代表 Anthropic 当前实现。
- Anthropic 安全公告:提醒项目配置与信任边界必须单独审计。