DeepSeek 做了一个 Agent 的操作系统

DeepSeek 做了一个 Agent 的操作系统

DeepSeek 开源了 Harness v0.1,一个"一切皆插件"的 Agent 运行时框架。内核几乎为空,所有能力来自可热插拔的插件。MIT 许可证,12293 个 commit,四种出厂模式。这不是一个产品发布的故事,这是一个设计哲学的故事。

发布于 2026/08/14
更新于 2026/08/18
15 分钟阅读
6 次阅读

DeepSeek 做了一个 Agent 的操作系统

昨天 DeepSeek 在 X 上官宣了一个东西。没有新模型,没有 benchmark 刷榜,没有"超越 GPT"的标题。就一条推文,说 Harness v0.1 开发者预览版发布了,MIT 许可证开源。

两百万人看了这条推文。一万五千人点了赞。但我怀疑真正理解这东西意义的人不到 5%。

因为这不是一个"产品发布"的故事。这是一个"设计哲学"的故事。

先说名字

Harness 这个英文词,翻译过来是"挽具"。

就是那个套在马身上让马能拉车的全套装备。马是马,挽具是挽具。没有挽具的千里马拉不了一粒粮食。有了挽具的普通马也能日行百里拉货养家。

DeepSeek 的意思很明确。

模型是马。Harness 是让马干活的装备。他们管这个叫 Agent 的运行时层。模型负责思考,Harness 负责把思考转化为行动,管理工具、环境、记忆和流程。

官方 slogan 四个字就能概括。

Agent = Model + Harness.

过去两年所有人都在卷 Model 那一半。现在 DeepSeek 说,另一半也许更重要。然后他们把自己做的另一半开源了。

小黑给马套上挽具——Agent = Model + Harness

一切皆插件

Harness 的核心设计原则是这五个字。Everything is a plugin.

模型适配器是插件。工具注册表是插件。技能系统是插件。会话管理是插件。沙箱执行环境是插件。文件系统是插件。Agent 的循环逻辑是插件。多步编排策略是插件。审批和权限控制是插件。甚至 Web UI 和 CLI 也是插件。

没有例外。

这意味着 Harness 的内核里面几乎什么都没有。内核唯一做的事情是管理插件之间的关系。加载、卸载、依赖解析。仅此而已。

所有的功能都在插件里。内核本身是空的。

这让人想到一个五十多年前的设计。

1969 年,Ken Thompson 和 Dennis Ritchie 在贝尔实验室做了一个操作系统叫 Unix。Unix 的核心抽象是"一切皆文件"。键盘是文件,打印机是文件,磁盘是文件,网络连接是文件,进程间通信管道也是文件。

这个选择看起来简单到有点无聊。但它释放了巨大的组合空间。任何程序只要知道怎么读写文件,就能和任何其他程序、设备或服务对话。不需要为每一种新设备写特殊的接口。统一的抽象让组合变得免费。

半个世纪后,DeepSeek 在 Agent 领域做了同样的事。

当所有东西都是插件,组合就免费了。你想把默认的 DeepSeek 模型换成 Claude?换一个模型适配器插件就行。想把本地文件系统换成云端对象存储?换一个文件系统插件。想从单 Agent 循环改成多 Agent 并发编排?换一个编排插件。核心代码一行不用改。改的只是配置文件里的一行声明。

小黑在空内核里插拔功能模块

这和微服务架构有本质不同。微服务是把系统拆成很多独立部署的服务,它们通过网络通信。Harness 的插件体系是在一个进程内组合能力,插件之间通过共享上下文的事件和服务直接交互。没有网络开销,没有序列化成本。轻到你感觉不到它的存在。

Cordis 元框架

Harness 底层用了一个叫 Cordis 的东西。Cordis 是一个开源的插件元框架,Harness 整个建在它上面。

Cordis 管三件事。

第一,插件的生命周期。加载、初始化、卸载。保证插件按正确的顺序启动和关闭。

第二,依赖关系。插件 A 声明自己需要"模型推理"这个服务,Cordis 自动找到提供这个服务的插件 B,把它们连起来。如果 B 不存在,A 就不会被加载。

第三,也是最精妙的一点。可逆副作用。

每个插件对系统状态的修改都是可逆的。插件卸载的时候,它造成的所有影响会自动回滚。注册过的事件监听器会被移除,提供的服务会被撤回,修改过的配置会恢复原状。

这保证了插件之间不会互相污染。你可以放心大胆地装一个实验性插件试试效果。不满意就拔掉。系统干干净净回到装之前的状态。

小黑拔掉插件,系统自动回滚干干净净

想象一下日常开发的场景。你在调试一个 Agent,怀疑是工具调用的部分出了问题。传统框架下你得去翻源码、打断点、看日志。Harness 下你可以直接卸掉当前的工具插件,装一个 mock 版本的工具插件,观察 Agent 行为有没有变化。测完了再换回去。全程不改源码,不重启进程。

这才叫开发体验。

四种出厂模式

Harness 预装了四种运行模式,本质上是四种不同的「插件套餐」。

Standard 模式是全家桶。文件编辑、Shell 执行、文件搜索、网页搜索、技能系统、规划模块、目标管理、子 Agent 调度、工作流引擎。全部加载。这是日常干重活用的满配形态。你能想到的 Agent 需要的能力,Standard 模式全给你装上了。

Code 模式做了一个有意思的取舍。它把所有工具暴露为一个 TypeScript SDK,让模型不再一个一个调用工具等结果,而是写一段程序把多步操作串起来一次性执行。

区别很大。Standard 模式下 Agent 的工作方式是"调工具 → 等结果 → 思考 → 再调工具 → 等结果 → 再思考"。每一步之间都有一轮完整的模型推理。十步任务就是十轮推理。

Code 模式下 Agent 先想清楚十步要怎么做,写成一段代码,然后一次性跑完。一轮推理搞定十步操作。对于那些步骤之间依赖关系明确的任务,效率差异巨大。

Minimal 模式走向另一个极端。只有两个工具。一个持久化的 Bash Shell,一个文件编辑器。没了。

这个模式是给做 benchmark 的人用的。当你想测试一个模型在最小工具集下的原始编码能力,不想让框架的额外能力干扰测试结果,就用 Minimal 模式。纯粹测模型本身。

Creator 模式是给框架开发者准备的实验室。可以在运行时检查当前加载了哪些插件、在内存中热装卸插件试验不同组合、把满意的组合打包成一个新模式分发给其他人用。

四种模式。同一个内核。区别只在加载了哪些插件。

这就是"一切皆插件"的真正力量。Agent 的形态不是写死的,是组合出来的。

全量可追溯

Harness 有一个容易被忽略但极其重要的设计。

每一次 Agent 运行的全过程都被完整记录在一个 append-only 的会话日志里。模型看到了什么系统提示词。进行了什么推理。调用了什么工具,传了什么参数,拿到什么结果。子 Agent 是在什么时候被调度的,分配了什么任务。有什么外部内容被注入到了上下文里。全部有据可查。

Harness 把这个叫 Trajectory 视图。你可以按来源筛选,只看工具调用,或只看推理过程,或只看上下文注入。同一个事件流支持恢复(从某个断点继续跑)、分叉(从某一步开始走不同的路径)、搜索(找到某次特定的工具调用)和重放(整个过程重新跑一遍)。

这对生产环境至关重要。

Agent 出错的时候(它一定会出错),你需要知道它为什么出错。是模型产生了幻觉?是某个工具调用返回了异常数据?是上下文窗口被某段超长的注入内容撑爆了导致关键信息被截断?

如果 Agent 的运行过程是个黑箱,排错就是纯粹的玄学。你只能反复试,调提示词,改参数,碰运气。

但如果每一步都有完整日志,你就能像 debug 一段代码一样 debug 一个 Agent。精确定位到第几步出了问题,为什么出问题,怎么修。

这个能力听起来基础。但你去看看市面上绝大部分 Agent 框架,能做到全量可追溯的屈指可数。大多数只记录了最终输出和中间的工具调用结果。模型的推理过程?上下文的组装细节?不记。

Harness 全记。这是工程化和玩具的分界线。

12,293 个 commit 说明什么

GitHub 仓库里现在有 12,293 个 commit。项目结构是标准的 monorepo。apps/ 目录下有 CLI 和 Web 两个入口应用。packages/ 目录下有几十个包,core、llm、mcp、sandbox、context、plan、goal 等等,每一个都是独立的插件或插件组。

这不是一个周末黑客松的产物。不是一个发了论文顺手开源的研究原型。这是一个在内部迭代了很长时间、在生产环境里打磨过的系统,然后以 MIT 许可证无条件开放给社区的。

DeepSeek 选择 MIT 许可证也值得注意。MIT 是最宽松的开源许可之一。你可以用它做商业产品,可以修改后不开源,可以把它嵌到自己的闭源系统里。没有 copyleft 限制。这是在说"我不打算用许可证圈地。你们拿去用。"

社区那边已经有动静了。GitHub 上有一个 dsh-plugin 的 topic,第三方开发者在往上面贡献社区插件。生态的雏形开始长出来了。

和 Claude Code 的区别

有人会问,这和 Anthropic 的 Claude Code 有什么不同。

表面上看都是"给模型套一个编码 Agent 的壳"。但设计取向完全不同。

Claude Code 是一个完整的产品。Anthropic 设计好了交互方式、工具集、权限模型,你拿来用就行。好处是开箱即用体验好。代价是你改不了什么。它不让你换模型,不让你替换它的工具调用逻辑,不让你自定义编排策略。它是一个封闭的、精心调校的整体。

Harness 是一个框架。或者更准确地说是一个运行时。它给你一堆积木和一本组装说明书,让你自己拼。默认组合已经很能打了。但如果你想用自己的模型、自己的工具、自己的编排逻辑,随时可以换。

这两种路径没有优劣之分。它们服务不同的人。

如果你只是想要一个好用的 AI 编程助手,Claude Code 可能更适合。如果你在构建自己的 Agent 产品、需要完全掌控每一层的行为、或者想把不同厂商的模型灵活切换使用,Harness 给了你这个自由度。

更有意思的是,因为 Harness 的模型适配器是插件,理论上你完全可以用 Harness 框架来跑 Claude 模型。用 DeepSeek 的壳,装 Anthropic 的脑子。MIT 许可证允许你这么干。

开源的力量就在这里。不站队,不锁定。你用什么模型是你的事。

为什么这件事对整个行业重要

把视角拉远一点。

过去一年,Agent 领域最常见的创业故事是这样的。拿一个大模型,套上自己写的一层工具调用逻辑和上下文管理逻辑,做成一个特定场景的 Agent 产品。每家都在从头实现那些基础能力。会话管理、工具注册、审批流程、错误恢复、日志追溯。

这和 1970 年代每个程序都自己管内存和磁盘 I/O 是一回事。重复劳动。巨量浪费。而且每家实现的质量参差不齐。

Harness 试图终结这种重复。它把 Agent 运行时需要的公共能力抽象成标准化的插件接口,提供一组开箱即用的默认实现,同时允许你替换任何一个部分。

如果这个方向成功了,未来 Agent 开发的姿势会变。不是"从头写一个 Agent 框架",而是"在 Harness 上选几个插件组装一个 Agent"。创业公司的差异化来自选什么模型、配什么工具、设计什么编排策略,而不是来自自己重新实现一遍会话管理和上下文窗口逻辑。

现在想试的话,一行命令就够了。

终端里敲 npx @deepseek-ai/dsh web。浏览器打开 127.0.0.1:3080。选 Creator 模式。装个插件。拔掉。换一个。感受一下"一切皆插件"跑起来是什么手感。

Agent 的下半场是基础设施竞赛。DeepSeek 刚刚把自己的基础设施摊开放在桌上了。

接下来就看谁能在这个底座上组装出最好用的东西。

评论区

欢迎留下你的看法,支持匿名评论。

你的评论会公开展示,建议填写便于交流的昵称,并尽量提供有信息量的反馈。