博客 AI / Agent

AI Coding Agent 已经不只是补全代码:Codex、Claude Code、OpenCode、DeepSeek Harness 正在竞争什么?

两年前,多数人说的「AI 写代码」还是编辑器里的下一行建议。2026 年,终端里跑着的是另一类产品:Codex、Claude Code、OpenCode、DeepSeek Harness——它们改文件、跑测试、调 MCP,还能开子 Agent 并行排查。

表面上四家都在卖同一套能力:LLM + 工具 + Agent loop。真正的战场不在功能清单,而在架构中心:谁强化 Agent,谁管执行边界,谁押模型无关,谁把运行时本身做成可替换件。

这篇文章会讲清:

一句话:完成任务 ≈ 模型 × Harness × 任务。四家不是在比「谁多几个开关」,而是在比控制权落在哪里——Claude Code 强化单一 Agent,Codex 管沙箱与审批,OpenCode 押模型可换,DeepSeek Harness 把 loop 与能力做成插件。

真正在竞争什么

补全解决的是「下一行写什么」。Coding Agent 解决的是「这个目标怎么在真实仓库里做完」:读上下文、选工具、改代码、跑命令、看结果、再决策。

底层循环几乎相同:

四家共享的 Agent loop 形状
User goal
  → Agent loop
  → LLM decides next action
  → Tool / environment executes
  → Result returns to context
  → Agent decides again

模型负责推理与下一步动作;harness 决定它能看见什么、能调哪些工具、工具实际做什么、状态如何保存、哪些动作要审批、怎样算任务完成。模型再强,上下文残缺、工具契约松、权限过大、失败无法恢复,结果照样垮。

所以 2026 年的竞争,不再只是「谁的基准分更高」,而是「谁把智能、执行、策略、工具与人的控制组织得更清楚」。四层拼装可参考:

2026 AI Agent 技术栈:LLM、MCP、Function Calling、JSON Schema

四个架构中心

先画边界。功能清单会越来越像,但中心问题不同:

产品 架构中心 核心问题
Claude Code Claude Agent 如何让一个主 Agent 更强、更好用?
Codex Agent + 执行运行时 Agent 如何在真实机器上自主行动,又不失控?
OpenCode 模型无关 harness 如何让用户自由换模型与提供商,不被单家锁定?
DeepSeek Harness 可组合运行时 模型、工具、loop、沙箱能否像插件一样替换与重组?

最后一行不是排名,而是产品边界:你买的是「更强的助手」,还是「更可控的执行环境」,还是「可扩展的 Agent 平台」。

Claude Code:Agent 中心

Claude Code 最好理解为以主 Agent 为中心的产品。Skills、MCP、子 Agent、Hooks、权限都在让同一个 Claude Agent 更有效,而不是把 Agent loop 本身拆成可替换内核。

典型扩展点包括:

它的工程妥协很清晰:概率性 Agent + 确定性 Hooks。改完跑测试、危险命令拦截、受保护路径先审批——这些不该指望模型「每次都记得」。

适合:明确工作流、重视体验与上下文质量、用 Skills 和子 Agent 扩展主循环的团队。

Codex:执行中心

Codex(含 Codex CLI)把问题推到执行层:Agent 一旦能改文件、跑 shell、装依赖、碰网络与凭证,就必须回答两件不同的事——能力边界与当前许可。

两套机制分工:

机制 回答的问题
Sandbox 技术上能访问/修改什么?
Approval / Policy 当前是否允许做这件事?

原则是能力最小化:不要先给满权限再要求「小心一点」,而是先收紧环境,再按需放宽。Rust 实现的 CLI、默认贴着 OpenAI 端点、以及偏强的沙箱叙事,都符合「Agent 要在真实计算机上干活」这条线。

适合:高风险副作用、需要可审计执行轨迹、把审批与隔离当一等公民的场景。开源仓库见:

openai/codex

OpenCode:模型无关

OpenCode 的差异化不在「多一套 Skills 语法」,而在默认立场:模型可换。MIT 开源、终端优先,并支持大量提供商与本地模型(如 Ollama / LM Studio)。灵活性主要落在配置层——providers、models、permissions、themes——而不是把 harness 内核拆成插件总线。

这带来一个很实际的产品结论:如果你不信任单家锁定,或同一会话需要在多家模型间切换,OpenCode 的中心问题就是「如何不被模型供应商绑死」。

它通常赢在:

代价是:执行边界与插件深度未必是卖点第一名。你买的是可换模型的 harness,不是最重的沙箱产品,也不是「Everything is a plugin」的平台内核。

DeepSeek Harness:运行时中心

DeepSeek Harness(dsh)把问题再往里推一层:如果 Agent Loop 本身也不该是永久内核呢?公开预览里的口号是 Everything is a plugin——模型、工具、skills、会话、沙箱、存储、loop、调度、UI 都可以替换。

这和「稳定核心 + 外围扩展点」不同。它把边界往内推:驱动 Agent 的机制也可以重组。能力缝(capability seam)让消费者依赖契约而非单一实现:本地 shell 与容器 shell、远端模型与本地推理、ReAct loop 与工作流 loop,可以换提供方而不重写所有工具。

因此它更像平台:

可组合性有代价:Plugin / Service / Provider / Effect / Session 等概念面更大。对「只想让仓库被改完」的终端用户,学习曲线可能高于 Claude Code 或 Codex;对要造可扩展 Agent 平台的团队,这正是卖点。

若你更关心 DeepSeek 模型 API 与 JSON 输出,可先看:

DeepSeek V4-Pro 完整解析

控制权地图

比功能打勾更有用的,是问每项决策归谁。下表压缩四家的控制风格(OpenCode 与 dsh 在「可替换性」上接近,但深度不同):

维度 Agent 中心 执行中心 可替换性
代表 Claude Code Codex dsh / OpenCode
主优化 能力与体验 安全自主执行 换模型 / 换能力
Agent loop 明确的中心 明确的中心 配置可换 / 插件可换
安全手段 Hooks + 权限 沙箱 + 审批 + 策略 配置策略 / 运行时策略与事件
最佳适配 专业化 Agent 产品 操作真实系统的 Agent 多模型用户 / 可扩展平台

再往下一层:理解任务与生成计划偏模型;校验参数、判断权限、执行工具、终止运行偏程序与策略;高风险动作还要人。四家都覆盖这些词,但把砝码压在不同格子上。

JSON 契约仍是共同底层

无论你选哪家 harness,工具调用最终都要落到可机器执行的结构上:函数名 + 参数 JSON。MCP 的 inputSchema / outputSchema、Function Calling 的 parameters、Structured Output 的 response_format,底层语言仍是 JSON Schema。

契约出现的位置:

环节 常见形态 约束什么
模型选工具 Function Calling / tools JSON Schema
外部工具协议 MCP / Apps inputSchema / outputSchema
执行前校验 Runtime validate 缺字段、错类型、脏参数
轨迹与审计 tool call / result JSON 可复盘的结构化事件

常见翻车:模型侧 parameters 与 MCP inputSchema 各写一份,字段或枚举漂移,看起来像「模型总调不好工具」。修复方式是一份契约、两处挂载。背景见:

AI 为什么需要 JSON SchemaAI Agent 的 JSON Schema 完全解析

示例:Coding Agent 工具参数 Schema 片段
{
  "name": "run_tests",
  "description": "Run the project test suite and return a structured summary.",
  "parameters": {
    "type": "object",
    "properties": {
      "suite": { "type": "string", "enum": ["unit", "integration", "e2e"] },
      "path": { "type": "string", "minLength": 1 }
    },
    "required": ["suite"],
    "additionalProperties": false
  }
}

调试这条路径时,可以在浏览器本地完成,数据不上传:

  1. 1
    格式化 arguments

    把模型返回的 arguments 字符串粘进JSON 格式化,先确认是不是合法 JSON。

  2. 2
    对照 Schema 校验

    JSON Schema工具核对 required、enum、additionalProperties。

  3. 3
    对比漂移

    模型侧 parameters 与 MCP inputSchema 用JSON Diff看字段是否一致。

怎么选

按约束选,而不是按热度选:

也可以组合:例如用 OpenCode / dsh 做多模型实验,生产副作用走 Codex 式边界;或主循环用 Claude Code,外部系统走 MCP。关键是别把「模型分数」当成唯一采购指标。

常见问题

AI Coding Agent 和代码补全有什么本质区别?

补全只建议下一行;Coding Agent 能读仓库、改文件、跑命令、调工具,并在循环里根据结果继续决策。竞争重点从「生成质量」变成「执行边界与运行时控制」。

Codex、Claude Code、OpenCode、DeepSeek Harness 谁最好?

没有统一冠军。看你优化什么:体验与 Skills 选 Claude Code;沙箱与审批选 Codex;多模型与防锁定选 OpenCode;可替换运行时与平台化选 DeepSeek Harness。

DeepSeek Harness 和 OpenCode 都是开源,差别在哪?

OpenCode 的灵活性主要在模型与提供商配置;DeepSeek Harness(dsh)把模型、工具、loop、沙箱、会话等都做成可替换插件,更像可组合的 Agent 运行时平台。

为什么还要谈 JSON Schema?

工具参数、MCP inputSchema/outputSchema、Structured Output 底层都是 JSON Schema。harness 再强,脏参数进执行层一样会出事——契约校验仍是 Runtime 的责任。

选 Agent 时最该盯哪一层?

盯控制权:谁决定工具、谁校验参数、谁审批高风险动作、谁终止任务。模型分数只是输入之一;harness 决定任务能否安全做完。

小结

Codex、Claude Code、OpenCode、DeepSeek Harness 共用同一套词汇:LLM、工具、loop、上下文、Skills、子 Agent、权限、沙箱。它们不再只是「更强的补全」,而是在争控制权落点。

Claude Code 强化一个 Agent;Codex 让 Agent 在真实环境里可控地行动;OpenCode 押模型可换;DeepSeek Harness 把运行时与能力做成可组合平台。

重要问题已经不是「怎么调用模型」,而是「智能、执行、策略、工具、上下文与人的控制如何组织」。工具契约层的 JSON,仍然是你可以本地核对的那一层。

调试 Agent 工具 JSON?在浏览器本地完成。

← 返回博客