连 Agent 循环本身都是插件——这可能是今年最有野心的一次 Agent 开源。
一、黑色鲸鱼浮出水面
8 月 13 日晚,DeepSeek 连放两记重磅:
先是官方宣布 DeepSeek-V4-Pro 正式版上线,并同步预告 API 即将大幅涨价;
仅仅两小时后,DeepSeek Harness(dsh)开发者预览版 v0.1 面向全球开放测试,并以 MIT 协议完整开源。
这套"闪电二连击"瞬间引爆海内外开发者社区:项目上线半小时 GitHub 星标破万,当天突破 3.3 万,几天后逼近 4 万。参与内测的开发者纷纷晒出体验感言和大合影——这只 Logo 为黑色鲸鱼的开源项目,终于游到台前。
但真正让社区炸锅的,不是"DeepSeek 也做了一个 Claude Code",而是它的设计哲学——一切皆插件(Everything is a Plugin)。
二、Harness 是什么?大厂为什么都在抢这个生态位
先理解概念。DeepSeek 内部有一个公式:
Model + Harness = Agent
- Model 是大脑,负责推理;
- Harness 是身体,负责把大脑接到真实世界——文件系统、Shell、浏览器、其他 Agent,同时记录模型做了什么、限制它不能做什么、出错时决定重试、取消还是压缩上下文。
"Harness"本义是"马具/线束/约束装置",在 AI 语境里,它特指夹在模型与工具之间的那一整层工程系统。OpenAI 自己现在也明确把 Codex 的核心称为 agent loop / harness:负责把用户输入、模型推理、工具调用、执行结果不断循环起来,直到任务完成。
这一层决定了模型能发挥几成功力——所以大厂都在抢。
今年,DeepSeek 专门组建了 Harness 团队,资深研究员陈德里说过一句大白话:"简单来说,就是对标 Claude Code,做 DeepSeek Code Harness。"团队负责人崔添翼此前在顶级量化机构 Jane Street 有九年系统开发经验——这个背景,解释了为什么这套框架对执行细节、可观测性、工程化如此较真。
三、先看全景:它和 Claude Code、Codex 到底差别在哪
在拆开技术细节之前,先用一张表建立整体印象——看看 dsh 站在今天主流 Agent 方案的哪个位置。表里一些概念后面会逐节展开,这里先抓个轮廓:
维度 | LangChain / AutoGPT | Claude Code | OpenAI Codex | DeepSeek Harness |
本质 | 编排库/框架 | 闭源商业产品 | 闭源商业产品(CLI 开源) | 开源平台/框架 |
核心循环 | 内置,框架定义 | 内置,不可动 | 内置,不可动 | 插件,可整体替换 |
模型适配器 | 可配置 | 锁定 Anthropic | 主要是 OpenAI | 插件,数十家+自定义 |
"插件"的含义 | 工具/链节点 | 打包层(Skills/Hooks/MCP) | Skills/MCP | 一切组件 |
热插拔 | 不支持 | 不支持 | 不支持 | 支持(卸载即回滚) |
会话日志 | 简单存储 | 内部实现 | 内部实现 | 事件溯源,可回放/分叉 |
定位 | 帮开发者调模型 | 开箱即用的产品 | 开箱即用的产品 | 让开发者造产品 |
区别可以浓缩成三句话:
- LangChain 系
解决的是"怎么编排模型与工具",但 agent loop、会话、沙箱这些底座,依然是框架替你定死的;
- Claude Code / Codex
解决的是"开箱即用",核心逻辑是死的,只能向外扩展(装 MCP、装 Skills); DeepSeek Harness
这也是为什么有人评价:这是 Agent 领域的"Linux 时刻"——内核可模块化、按需组合,而不是只有一个发行版。
下面几节,我们就把这些差异逐项拆开。
四、"一切皆插件":不是给 Agent 加插件,而是用插件拼出 Agent 本身
回到开头那张表最关键的一行——dsh 的核心循环"可整体替换"。这正是"一切皆插件"的起点,也是全篇最需要掰开揉碎的一点。
我们平时说的"给 Agent 装插件",是给一个已经造好的产品加功能——给 Claude Code 加个浏览器工具、给 Codex 配个 MCP Server。产品本体是固定的,插件只是附件。
DeepSeek Harness 的"插件"完全是另一个量级:模型适配器、工具注册表、技能、会话、沙箱、存储、调度、UI……甚至 Agent 循环(agent loop)本身,全部都是插件。
DeepSeek公开文档里有一处措辞极其关键:agent-loop 这个包,被定义为"Agent 公开接口的一个具体实现"(one concrete implementation)——注意,是"一个",不是"那个"。所有扩展插件依赖的是接口包,从不直接依赖 agent-loop,所以这个循环随时可以被整体换掉。
文档还强调:"没有特权核心可以修补"(no privileged core to patch)。扩展 Harness 的方式不是改源码,而是在它旁边挂一个插件,然后在配置层组合。
做一个不恰当的比喻:普通工具开源的是一份"坐诊医生名单";DeepSeek Harness 连挂号、门诊、收费、取药的流程,都开放给你打乱、取消、重构。
五、技术底座:Cordis 元框架与"时空可组合性"
把一切做成插件,第一个要回答的问题是:插件怎么拼、怎么拆、拆了之后会不会留下一地鸡毛?
dsh 没有从零造轮子,而是把 Cordis 的源码整个拷进了自己的仓库、锁定版本、可以按需改。。Cordis 是国内聊天机器人框架 Koishi 的新一代内核——在机器人圈子里,Koishi 处理了多年"插件热插拔、运行时组合"的难题,沉淀出 Cordis,还配套写了一篇论文:
《A Programming Paradigm for Spatiotemporal Composability》(一套处理时空可组合性的编程范式),由北京大学与 DeepSeek 研究人员联合署名。
Cordis 元框架只负责三件事:插件的加载、卸载、依赖关系。它本身不承载任何业务功能,Agent Harness 的所有具体组件都是不同的 Cordis 插件,通过 Cordis 的服务(Service)与事件(Event)彼此协作,在配置层自由组合。
论文的核心,是把"插件系统为什么难做"提炼成两个正交维度:
- 时间可组合性(Temporal Composability)
:组件被卸载后,它对共享环境做过的每一次修改都必须可以完全撤销。
- 空间可组合性(Spatial Composability)
:组件必须能声明、发现、校验依赖;当某个依赖出现、消失或被替换时,系统自动激活或停用相关组件。
论文证明了五条元定理,其中最关键的是一条 汇合性(Confluence):无论插件以什么顺序插入、移除、替换,最终系统状态与"一次性静态组装出最终配置"的结果同构。翻译成人话——你完全不用操心调度顺序,系统怎么折腾,最后都收敛到同一个正确状态。
论文还拿 VSCode 开刀:截至 2026 年 6 月,Marketplace 前 100 的扩展中,87 个包含可执行代码,但一旦激活就无法在运行时单独卸载,禁用或删除必须重启整个扩展宿主。几乎所有主流插件系统都有这个毛病,只是程度不同——普通软件里重启一下还能忍;而在 Agent 语境下,一个 harness 里塞着工具集、执行环境、权限控制、沙箱、会话状态、记忆系统,任何组件都要重启才能换,根本没法忍。
更关键的是,这不是实验室玩具:Cordis 的前身 Koishi 已在生产环境跑了四年,拥有 4000+ 社区插件。DeepSeek 不是从零发明,而是把一套"踩过坑的地基"搬过来当 Agent 的脊柱,还动手改造过。
六、四个模式:同一套积木,四种官方装法
针对不同场景,dsh 默认提供四种运行模式,每种模式就是一套默认加载的插件集合:
模式 | 默认插件组合 | 适用场景 |
标准模式 | 功能全开的编码 Agent:文件编辑、Shell、检索、Skills、计划、子代理、工作流 | 对标 Claude Code / Codex 的日常开发 |
PTC 模式 | 程序化工具调用(Programmatic Tool Calling):模型生成一段 TypeScript 程序,把十几步操作一次性串起来跑完,只返回最终结果 | 重度自动化、在意 token 成本的批处理 |
极简模式 | 只留两个工具:持久 bash + 文件编辑工具 | 最小环境下的模型基准测试(如 SWE-bench) |
创造模式 | 标准模式全部能力 + 运行时检查、内存中试验插件、创作新模式的引导 | 插件开发者"做模式的模式" |
切换模式不是切换模型能力,而是切换"这个 agent 手上有哪些工具、按什么规则跑"。换句话:同一套积木,官方给了四种默认装法,你也可以自己装出第五种、第五十种。
(有媒体实测:极简模式下写一个贪吃蛇游戏只用了 50 多秒;标准模式下翻译 88 页论文耗时 22 分钟、派发 10 个子代理、缓存命中率 98%。)
七、每一次运行都有迹可循:事件溯源式会话日志
对应开头那张表里的"会话日志:事件溯源,可回放/分叉"——这是 dsh 的另一个硬核设计:会话是一份仅追加(append-only)的事件日志。
系统提示词、思维链、工具调用与结果、子 Agent 调度、每一次上下文注入——模型看到的一切,都必须能从日志里重建出来。文档把这条不变量写得很直白:
Model-visible means logged(对模型可见,即已记录)。
而且这不是写给人看的约束,是代码里有运行时断言在检查的。消息历史是从日志"投影"出来的,从不单独存储,连流式分片的原始 chunk 都保留。于是恢复、分叉(fork)、检索、回放全部共享同一份事件流——Trajectory 视图让你按来源回放一次运行的完整轨迹,报错信息也一目了然。
有开发者评价:事件溯源(event sourcing)在后端圈被讲烂了,但真正把它彻底用在 Agent 会话上、并且用运行时断言保证"可见即已记录"的,dsh 是目前见过最彻底的一个。
八、能力接缝:换一个 provider,整个产品都变
对应开头那张表里"热插拔:支持(卸载即回滚)"的工程落点——capability seam(能力接缝)。
"全插件"如果只是抽象洁癖,那没有意义。一个 seam 由三个角色组成:
- Service Definition(接口声明):定义"什么是执行命令";
- Service Provider(实现):本地真正去创建进程;
- Consumer(消费者):面向模型的工具,把能力翻译成模型能理解的 schema 和结果。
好处是立竿见影的:文件系统和子进程共享同一个"执行世界",你把它们的 provider 指向远程沙箱,Bash、PTY、LSP 会跟着一起搬到远程,不需要为每个工具单独 fork 一套。文档原话:seams are why one provider swap changes the whole product——接缝,就是为什么换一个 provider 能改变整个产品。
安全方面也做得很实:本地后端用 Linux Landlock(DeepSeek 自己写了一个 Node addon)、macOS Seatbelt、Windows ACL 受限令牌包裹子进程,默认工作区只读,权限可配置。
九、不绑定自家模型,甚至能指挥 Claude Code
对应开头那张表里"模型适配器:插件,数十家+自定义"——dsh 在设计上并不绑定 DeepSeek 模型,模型适配器就是插件,provider 目录覆盖 DeepSeek、Anthropic、OpenAI、AWS Bedrock、Azure、Google Gemini 企业平台,以及自定义 OpenAI 兼容网关,合计支持数十家。
更有意思的是,它还内置两个子代理 provider,可以把任务直接委托给 Anthropic Claude Code 和 OpenAI Codex 的本机二进制(默认关闭),还提供桥接层,能兼容运行用户在 Claude Code / Codex 里写好的 hooks.json——官方坦言这只是"兼容路径,不是更好的设计",但诚意拉满。
MCP 客户端、Agent Client Protocol 也都在支持列表里,还能读 AGENTS.md 和 CLAUDE.md。
十、自进化的伏笔:cordis_* 工具族
最容易被忽略、也最野的设计,是 cordis_* 工具族:cordis_define、cordis_run、cordis_stop、cordis_undefine、cordis_inspect_query。
这意味着什么?Agent 可以在会话中途,自己写一个插件包、激活它、用完后拆掉,全程不用重启——模型在运行中扩展自己的运行时。官方对这块相当谨慎(执行动态代码会弹审批),但把它和"社区插件生态+海量 Agent 实例"放在一起看,自进化的拼图就完整了:从成百上千万个 Agent 实例里,筛出魔改得好的插件,再融回主线。
配合今年 Anthropic 那篇 self-improvement 博客引发的讨论,DeepSeek 这套"模型自己给自己造工具"的路线,被不少人认为是目前看到的最可落地的自进化实现路径之一。
十一、为什么讨论这么热烈?
当然,冷水也不少:官方自己用大写字母警告"未来会有破坏兼容性的变更";v0.1 还很粗糙,插件 API 尚未稳定;企业生产落地为时尚早。有人把它吹成"Agent 时代的安卓",也有人提醒它目前更像一张精心绘制的图纸,而不是一栋盖好的楼。
十二、结语
DeepSeek Harness 真正有意思的地方,不是"DeepSeek 也做了个 Claude Code",而是它对"Agent 应该是什么"给出了一个很不一样的答案:
Agent 不是一个做好的产品,而是一堆可以自由拼装、替换的组件。
模型是大脑,harness 是身体。当"大脑与身体之间的接口"变成一套开源标准,模型竞争就会从"谁的智商高"延伸到"谁的生态大"。
也许过几年回看,8 月 13 日晚上这只黑色鲸鱼浮出水面的时刻,会是 Agent 领域的一个分水岭。
夜雨聆风