Agent Harness 编码范式#

2026 年 8 月 13 日晚间,DeepSeek 做了一次"闪电二连击":在发布 DeepSeek-V4-Pro-0813 正式版模型的同时,悄然开源了 DeepSeek Harness 开发者预览版 v0.1。上线不到 48 小时,GitHub Star 数就突破了 9.3 万,首日更是以约 3.75 万 Star 的速度刷新了 AI 开源项目的记录。与此同时,OpenAI 也宣布开源 Codex 的 Agent Harness。两大 AI 巨头几乎在同一时间将目光聚焦于同一个概念——Harness(智能体运行时)。这并非巧合,而是 AI 编程领域一次深刻范式转移的信号。


一、什么是 Harness?为什么它突然变得重要?#

Harness 直译是**“马具”**——套在马身上那套缰绳和挽具。这个比喻很贴切:模型是一匹马力很强的马,但你需要一套缰绳和车厢,才能让它真正拉车干活。DeepSeek 官网给了一个干脆的等式:

Agent = Model + Harness

模型负责思考和推理,而 Harness 负责模型之外的一切工程化工作:

  • 执行能力:读写文件、执行命令、调用外部服务
  • 上下文管理:长任务中积累的大量中间信息需要压缩、筛选和注入
  • 权限控制:哪些目录能碰、哪些命令需要批准
  • 状态保存与错误恢复:任务中断后能恢复、重试
  • 循环与停止条件:什么情况下继续、什么情况下收尾
  • 可观测性:记录每一步的输入输出,方便排查问题

你可以把 Harness 理解成 AI 的操作系统外壳——它决定了模型能看到什么、可以调用哪些工具、如何组织上下文、遇到错误怎么重试,以及什么时候判断任务已经完成。

为什么 Harness 突然变得如此重要?#

当模型评测从"单次问答"走向"真实工程任务"之后,Harness 本身已经成为影响评测结果的重要变量。一个设计良好的 Harness 能让中等水平的模型在复杂任务中表现优异,而一个糟糕的 Harness 可能让顶级模型频繁出错。这正是 DeepSeek 选择在 V4 Pro 正式版发布的同时开源 Harness 的原因——模型能力和运行框架必须协同进化。

从宏观视角看,AI 工程范式正在经历第三次跃迁:

阶段形态核心特点
第一次跃迁对话式 AI模型即产品,一次提问一次回答,能力边界在"模型本身"
第二次跃迁Agent + 工具调用Function Calling、MCP 等把外部工具接入模型,模型开始"动手"
第三次跃迁Agent 运行时(Harness)在模型与工具之上增加循环、权限、状态、可观测、可组合的底座

DeepSeek Harness 正是第三次跃迁的代表作之一。

Martin Fowler——软件工程领域最受尊重的声音之一——在 2026 年撰文提出了 “Harness Engineering(线束工程)” 这个术语,标志着 Harness 已经从工程实践上升为一种正式的工程范式。


二、两种 Harness 路线#

当前市场上存在两种截然不同的 Harness 路线。

第一种:“产品优先"路线#

代表是 Claude Code 和 OpenAI Codex。它们本质上是把 Harness 做成了闭源成品——工具、Skill、会话管理、沙箱全部被封装进一个壳里。你得到的是精装房,墙不能拆、格局不能动。

Claude Code 追求的是"在当前范式下做出最好的 Agent 产品”,目标是最有效、最简单,同时最大化模型能力边界。

第二种:“框架优先"路线#

代表是 DeepSeek Harness(dsh)。它做的事相当于把精装房的施工图和所有预制件都开源了,告诉你"墙随便拆,零件随便换”。

DeepSeek Harness 以 MIT 协议开源,其核心理念只有五个字:一切皆插件(Everything is a Plugin)。这并非营销话术——模型适配器、工具注册表、会话日志、Agent Loop(智能体主循环)本身,全都可以替换。官方用了一句非常硬核的话:

“不存在需要打补丁的特权内核。”

与主流竞品的对比#

对比维度DeepSeek HarnessClaude CodeOpenAI CodexLangGraph
开源协议MIT 全开源闭源闭源MIT 开源
架构理念一切皆插件,无特权核心核心封闭,开放扩展点封闭黑盒图结构状态机
模型支持可换近 40 种主流模型仅 Claude仅 OpenAI模型无关
Agent Loop 可替换是否否部分
UI 可替换是否否不适用
多 Agent 编排Spawn/Fork/Workflow/Ralph有限有限图结构编排
可观测性Append-only 事件流 + Trajectory有限有限LangSmith 集成
二次开发自由度最高受限受限中等
成熟度v0.1 预览版成熟产品成熟产品成熟框架

形象地说,Claude Code 是精装房,拎包入住;DeepSeek Harness 是毛坯工坊,工具给齐了,但家具得你自己拼。


三、编码新范式:从"写代码"到"编排 Agent"#

Harness 的出现,正在从根本上改变软件开发的方式。

3.1 从"写脚本"到"编排 Agent"#

过去我们写代码,是一行一行地告诉计算机怎么做。现在有了 Agent Harness,开发者从"写代码的人"变成了"编排 Agent 的人"。你不再需要实现每一个细节,而是通过配置和组合插件,让 Agent 自主完成复杂的编码任务。

DeepSeek Harness 预置了四种运行模式,每一种都是一套不同的插件组合方案:

模式默认插件集合适用场景
标准模式完整工具组合:文件操作、Shell、搜索、子任务委派、计划维护等日常写代码、修 Bug、分析项目
代码模式(PTC)标准模式全部能力 + Code Mode SDK模型生成 TypeScript 程序来编排多轮工具调用
极简模式只保留 Shell 工具和 str_replace_editor最小环境下做模型基准测试
创造模式标准模式全部能力 + 运行时检查 + 插件试验实验新插件,组合并创作新的运行模式

PTC(Programmatic Tool Calling)模式#

PTC 模式是四种模式中最具技术深度的创新之一。传统工具调用是"一轮一次"的:模型决定调用某个工具,等待结果,再决定下一步。而 PTC 模式允许模型先生成一段 TypeScript 程序,再由这段程序编排多轮工具调用。例如,模型可以写一段代码:先查询文件列表,对每个文件检查内容,根据匹配结果决定是否修改——整个过程在一次模型请求中完成,减少了多轮对话的延迟和上下文消耗。

四种模式本质上是四种 Profile(配置组合)。一个 Profile 是存储在 Harness 主目录中的命名组合,它列出了要堆叠的 Bundle、持有的任何外部插件,并保留用户自己的配置文件。一个 Bundle 是 Cordis 配置行及其所挂载代码的分发格式——无论它插入什么,都可以被上层 patch 覆盖。你可以通过以下命令查看机器实际启动的配置树:

dsh --profile web --dump-config

这条命令打印出的任何行都可以被你自己的 patch 替换——不 fork 源码,只改配置。

3.2 模型无关:自由选择最优"大脑"#

DeepSeek Harness 在设计上完全不绑定自家模型。官方内置 DeepSeek 模型接入,同时支持 Anthropic、OpenAI 等提供方,以及任意 OpenAI 兼容的自定义端点。模型配置变更下次请求即生效,无需重启服务。

对于自定义提供方(公司网关、自建服务器等),只需选择"添加自定义提供方",填写 Provider ID、基础 URL、API 协议、凭据和至少一个模型即可。你可以根据任务类型和成本预算自由选择最合适的模型:

  • 让 Claude 写复杂逻辑
  • 让 DeepSeek 做低成本批处理
  • 让 GPT-4 做最后的代码审查

更令人惊叹的是,Harness 甚至可以把 Claude Code 和 Codex 作为子 Agent 来调用。通过解析 PATH 中的对应二进制文件,Harness 可以将任务委托给这些顶级的编程 Agent 执行。

竞争者的产品,变成了自己的零件。

与 MCP 的关系#

两者不在同一层。MCP 是连接 AI 应用与外部数据、工具、工作流的开放标准;Harness 是更上层的运行逻辑。MCP Server 可以成为 Harness 里的一个插件。

3.3 会话即事件流:可重现、可调试、可进化#

DeepSeek Harness 的另一个核心设计,是仅追加的会话日志(append-only session log)——这是整个框架最具特色的功能之一。

模型看到的所有内容都会进入同一份 append-only 日志,包括:

  • 系统提示词(system prompts)
  • 推理内容(reasoning / thinking)
  • 工具调用及其结果(tool calls and results)
  • 子 Agent 调度(subagent scheduling)
  • 每一次上下文注入(context injection)

开发者可以在 Trajectory(轨迹) 视图中按照来源检查这些信息。会话恢复、分叉、检索与回放,也都建立在同一份事件流之上。

架构文档中有一条关键的运行时不变量:

模型可见即已记录(Model-visible means logged)。任何到达模型请求的内容都必须可以从日志中重建,运行时会断言这一点。

这项设计首先解决的是可观测性。Agent 任务失败时,问题可能出在模型判断、工具返回、上下文注入、调度策略或系统提示词。若这些内容散落在不同组件中,开发者很难还原模型当时究竟看到了什么。统一事件流给调试、评估和回放提供了一份共同底稿。

它也为会话分叉提供了更自然的数据结构:新分支可以沿用分叉点以前的事件,再追加新的上下文和行动,无需覆写原有历史。对于一个强调插件可替换的系统,这尤其重要——因为开发者需要比较不同 Loop、工具或调度插件在相同任务轨迹上的表现。

3.4 安全沙箱:让 Agent 安全地"动手"#

Agent 能读写文件、执行命令,这带来了巨大的便利,也带来了巨大的安全风险。DeepSeek Harness 构建了多层次的沙箱机制:

操作系统沙箱技术
LinuxLandlock 封装子进程
macOSSeatbelt
WindowsACL 受限令牌

工具调用在 DeepSeek Harness 中被拆成了一条可扩展流水线,这是整个框架安全设计的核心:

Hook前置拦截 → Approval人工审批 → Permission权限检查 → Sandbox沙箱隔离 → Execute实际执行 → Rewrite结果改写 → Record记录+UI

请求执行前会经过 Hook、审批、权限检查、沙箱和超时控制,执行后还可进行结果改写、记录和 UI 渲染。开发者无需修改工具或 Agent Loop,就能在各个环节插入插件。

架构中有一个核心概念叫 Seam(接缝)——一个可替换的能力,包含三个角色:

  1. Service Definition(服务定义):声明接口
  2. Service Provider(服务提供方):实现接口
  3. Consumer(消费方):使用接口,通常是面向模型的工具

Seams 是为什么"一次提供方替换就能改变整个产品"的原因。文件系统和子进程提供方共享一个执行世界,因此将它们指向远程沙箱时,Bash、PTY 和 LSP 会随之移动,无需 provider 分叉。


四、Cordis 微内核:一切皆插件的技术底座#

DeepSeek Harness 底层的插件框架叫做 Cordis——一个只负责插件加载、卸载和依赖管理的微内核。Cordis 本身"几乎什么都不干",它只提供三样东西:

  1. 插件的加载(mount):把插件挂载到共享上下文中
  2. 插件的卸载(unmount):卸载时自动撤销该插件注册的所有副作用
  3. 依赖关系管理:插件可以声明依赖,框架保证依赖先于消费方启动

你可以把整个 Harness 想象成一棵由插件组成的树:

Cordis Root Context
├── Loader
│   ├── Plugin: LLM Adapter (DeepSeek API / OpenAI API / Claude API)
│   ├── Plugin: Tool Registry (Shell Tool / File Editor / Sandbox)
│   └── Plugin: Agent Loop
└── 没有特权核心 —— 所有能力都是插件

Cordis 的理念来自北京大学与 DeepSeek 联合署名的论文《A Programming Paradigm for Spatiotemporal Composability》,强调**“时空可组合性”**:

  • 时间可组合性:插件卸载后,它注册过的服务、事件和副作用能随之撤销
  • 空间可组合性:插件可以声明依赖,并在其他组件变化时重新建立协作关系

插件的三种形态#

Cordis 接受函数插件、对象插件和类插件(Service 子类)。每个插件通过一个 apply(ctx) 函数描述自己贡献的内容。cordis.yml 负责把这些插件"组合"成一个应用。

服务(Service) 是插件间协作的桥梁——一个插件提供、其他插件通过 ctx 消费的具名能力。在 Harness 中,ctx.tools、ctx.llm 和 ctx.agents 都是服务。消费方只指定 'tools' 之类的能力,而不导入其提供方,因此配置可以选择提供方,无需修改消费方。

inject 列出该插件需要的服务。Cordis 会让插件保持 PENDING 状态,直到列出的每项服务都存在。加载顺序由服务依赖决定,而非文件中的位置。

核心设计:动态依赖跟踪#

依赖跟踪是动态的。如果应用运行期间所需服务消失——例如提供方被卸载或热替换——每个依赖插件也会随之卸载,并在服务恢复后再次加载。这就是配置中可以替换服务的原因:卸载 dsh-bash-local,挂载另一个 shell 提供方,所有注入 'shell' 的插件都会重新启动并使用新实现。

生命周期与 Effect#

通过 Cordis API 建立的注册属于 effect,会在所属插件卸载时自动撤销。每个已加载插件实例都拥有一个 fiber,并在以下状态之间转换:

PENDING → LOADING → ACTIVE → UNLOADING → DISPOSED
                            ↘ FAILED

fiber.dispose() 会等该插件的所有清理工作(包括异步 disposer)完成后才结束,并递归卸载它挂载的所有子插件。这种设计确保了插件系统的**“时间可组合性”**——卸载是干净的、可逆的、递归的。


五、更深层的野心:Agent 的自进化#

DeepSeek Harness 的真正野心,并不止于做一个更好的编码工具。

它把 Harness 设计成了可以被 Agent 自己修改、热重载的对象。这不是为了服务现在的编码需求,而是为了服务未来下一代的自进化和持续学习框架。

创造模式(Creator Mode) 是四种模式中最值得关注的设计。传统 Harness 的运行方式通常由产品开发者预先写定,用户只能在既有配置中选择。创造模式试图让 Agent 直接理解自己所处的运行时,再按任务需要试装插件和组合能力。换句话说,Harness 的配置本身也开始成为 Agent 可以操作的对象。

我们可以想象这样的场景:一个 Agent 在执行长达数天的复杂任务时,一边执行任务,一边更换支撑自身运行的部件,就像一艘持续航行的忒修斯之船。当它发现某个工具效率不高,可以自己写一个更好的插件并热替换上去;当它发现当前的推理策略不适合当前任务,可以自己调整 Agent Loop 的逻辑。

这就是 DeepSeek 与 Anthropic 的本质区别:

维度AnthropicDeepSeek
目标在当前范式下做出最好的 Agent 产品押注下一个范式——直接把替换、组合和撤销 Harness 本身作为研究对象
路线产品优先框架优先 + 自进化

Creator 模式虽然还不是一个完整的自进化系统,但它已经在为这一天做准备。DeepSeek 已经把运行时的可组合性同时交给了模型、配置文件和框架开发者。


六、多 Agent 编排:Spawn、Fork、Workflow 与 Ralph#

DeepSeek Harness 已经内置了一套完整的多 Agent 系统。父 Agent 可以通过多种方式启动子 Agent:

方式说明适用场景
Spawn启动拥有全新上下文的子 Agent独立的探索任务
Fork让子 Agent 继承已有会话——子请求保持父 Agent 的系统提示词和消息历史字节级一致,追加一个结构化状态快照,然后添加子 Agent 角色指令和任务需要上下文连续性的任务
Workflow模型通过 workflow 工具现场编写 JavaScript,用 parallel() 和 pipeline() 组织并行或流水线任务复杂任务编排
Ralph 循环模式多个全新 Agent 按轮次接力——每个 Agent 在自己的轮次中工作,完成后将控制权交给下一个 Agent需要持续迭代的长时间任务

Fork 设计让 DeepSeek 前缀缓存复用率保持在较高水平。

如果放进常见的五种编排模式中,DeepSeek Harness 最接近层级式 Supervisor-Worker:父 Agent 负责拆解、分配和汇总任务,子 Agent 负责执行。更准确地说,它是一个以层级式编排为主,兼容并行、流水线和 Ralph 循环的混合系统。

真正特别的地方在于——它把这些编排方式做成了可以随配置替换的插件,甚至可以把 Claude Code、Codex 或支持 ACP 的外部 Agent 接到同一个子 Agent 接口后面。


七、范式转移的启示#

Agent Harness 下的编码新范式,带来的启示是深刻的:

第一,AI 编程的竞争正在从"模型竞赛"转向"Harness 竞赛"#

当模型能力逐渐趋同,真正决定 Agent 能否进入生产环境的,已经不只是模型能力,而是 Harness 如何管理上下文、状态、工具、权限、恢复与验收。

第二,开发者的角色正在被重新定义#

你不再需要事无巨细地编写每一行代码,而是需要理解如何设计、组合和编排 Agent 的能力。这是一种更高层次的抽象,也是一种更高层次的价值创造。

第三,开源正在重塑 AI 编程的格局#

DeepSeek 选择 MIT 协议开源,OpenAI 选择 Apache-2.0 开源 Codex 的 Harness。两家巨头不约而同地将最核心的 Agent 基础设施开放出来——这预示着 AI 编程的未来不属于任何一家公司的围墙花园,而属于一个开放的、可组合的、不断进化的生态系统。

DeepSeek Harness 目前仍是开发者预览版,但它在 64 天里完成了 12,293 次提交,附带 683 篇设计笔记。这种迭代速度本身,就是对"新范式正在加速到来"的最好证明。


八、挑战与局限:v0.1 阶段的冷静思考#

DeepSeek 在 GitHub 仓库的 README 中明确标注:

DeepSeek Harness is currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES.

这意味着现在进入生态的开发者需要承受较高的迁移成本。核心插件与基础接口仍会快速变化,尝鲜、学习、做二次开发完全没问题;追求稳定、要上生产,建议等版本收敛。

“什么都能换"这条路线也带来了明显挑战:

挑战说明
接口稳定性插件边界越深,接口稳定性就越难控制
依赖管理插件之间的依赖关系可能变得复杂
版本兼容不同版本的插件之间可能不兼容
性能开销插件化的间接调用带来额外开销
调试复杂度问题可能出在任何一个插件的交互中

更重要的是,“什么都能换"并不会自动带来更好的任务成功率。真正决定这套架构价值的,仍然是:

  • 官方能否给出高质量的默认插件
  • 能否形成稳定的组合范式
  • 能否提供可信的评测结果
  • 第三方开发者是否愿意围绕它持续构建插件

一位业内专家向 InfoQ 表示,从 Harness 的完整链路看,工具调用、记忆管理和任务规划等大方向已经基本确定,未来仍有大量创新会发生在各个局部环节:记忆管理需要压缩和冲突整理、任务规划需要复用已有路径、Plan 生成后需要增加一层近似"编译"的检查。DeepSeek “一切皆插件"的价值,也正在于为这些局部能力预留替换、组合和持续试验的空间。


模型是大脑,Harness 是手脚和神经系统。 而当我们不仅能让这套神经系统被自由组装,还能让大脑自己去改造它时——我们距离真正的、可自进化的 AI Agent,或许比想象中更近。

对于爱折腾的开发者来说,现在正是上手体验、参与生态建设的最佳时机。想要什么能力,自己拼——这正是"一切皆插件"的承诺。

“闭源为用户提供现在,开源让用户自己掌握未来。”

你又来啦!好开心 🐟