DeepSeek Harness 拆解:“一切皆插件“到底解决什么问题
原文链接:DeepSeek Harness 拆解:"一切皆插件"到底解决什么问题
"一切皆插件"是 DeepSeek Harness 最常被提起、也最容易被当成营销话术的一句话。
为什么非得"能换"?把能力做成插件,跟普通的"支持自定义工具",差别到底在哪?这篇我就把这句口号拆开,不绕弯子,看它到底解决什么问题。
我的判断先放这儿:这句话在 DeepSeek Harness 里不是修辞,从模型适配器到 Agent 循环,没有一个核心是不能换的。
一、先跟普通框架比一比
一切皆插件听着像营销话术,但在 DeepSeek Harness 里是字面意思的设计。
DeepSeek Harness 的模型适配器、工具注册表、技能、会话、沙箱、存储、Agent 循环、调度、UI,每一个能力模块都是可替换、可重组的插件。而且这个可扩展的边界一路沉到了整个运行时:你不仅能换某个搜索工具,还能换掉 Agent 怎么循环、怎么调度子 Agent、怎么存会话、用什么界面。
这一点要跟历史框架比才显分量。LangChain、CrewAI、AutoGen 这类框架,通常把 Agent 的骨架和具体能力耦合在同一个库里:想换执行环境、想换 Agent 循环的组织方式,常常要动到周边不少代码。DeepSeek Harness 把模块化一路沉到了依赖注入那一层,而不只是大多数框架对外开放的"工具调用"表面。
别人给你一把螺丝刀让你换灯泡;DeepSeek Harness 把整面墙的插座都做成了标准接口。

二、为什么"插得稳、拔得干净"
插件系统最大的工程难题,不是插上去,是拔下来。
传统插件系统有个反直觉的现实:大多数插件装上去之后,其实拔不干净。北大和 DeepSeek 研究者合写的论文《A Programming Paradigm for Spatiotemporal Composability》(署名三人,其中一位双属,预印本放在 github.com/cordiverse/paper)里用 VS Code 举过例子:2026 年 6 月的市场数据,按安装量排名前 100 的扩展里,87 个带可执行代码,一旦激活就没法在运行时单独卸载,禁用或删除后必须重启整个宿主进程。论文明确指出,这毛病几乎所有插件架构都有,只是轻重不同。
这篇论文把"动态组合"拆成两个维度,正好回答了"凭什么能拔干净":
- 时间可组合性:组件卸载时,能把它对系统造成的所有改动(资源、事件、连接)完整撤掉。论文落地成"可逆效应":每次环境变换都绑一个逆操作,运行时自动追,卸载时一键回滚。
- 空间可组合性:组件能声明依赖,依赖出现或消失时系统自动激活或卸载它。论文落地成"响应式余效应":依赖变了自动推通知,组件不用手写监听。
这两个机制,就是 DeepSeek Harness 底层 Cordis 内核的理论依据。Cordis 只做插件系统这一件事:加载、卸载、依赖解析、生命周期、热重载。它也不是实验室玩具,同一套内核在聊天机器人框架 Koishi 上跑了四年多,社区插件累计 4000 多个,是在真实生产环境里被验证过的。我特意去翻了 Koishi 的官方文档,这段历史写得明明白白。可组合不是口号,这套内核是被大规模插件生态检验过的。DeepSeek Harness 敢把"一切皆插件"当卖点,靠的就是这个。

三、"一切皆插件"具体指什么
我按官方架构文档归纳过它的八层架构,官方文档自己列的则是九类能力。落到"插件"两个字上,下面这一圈,每一个都是可挂、可卸、可自己写的 Cordis 插件:
- 模型:换成任意供应商或自托管端点;
- 工具:注册新工具、改执行策略、加结果处理;
- 技能:把可复用工作流封成技能插件;
- 会话:换持久化后端、改记忆结构;
- 沙箱:换执行环境、改隔离强度;
- 存储:换向量库、换文件后端;
- 循环:换 Agent Loop 的驱动逻辑;
- 调度:改子 Agent 的编排和并发策略;
- UI:换交互界面,甚至做成全屏终端或二次元面板。
注意最后两个,循环和调度。主流 Coding Agent 里,Agent Loop 通常是框架写死的核心;DeepSeek Harness 把它也做成了插件。这意味着 Agent 怎么想、怎么动,彻底向开发者敞开了,我反正是头一回在主流框架里见到把这一层也做成插件的。你可以接受一个固定人格,也可以从底层插件自己拼一个。
这里有个细节,我越看越觉得是它最狠的一招:dsh 内置了拉起本机 Claude Code、Codex 当子 Agent 的后端(走 ACP 协议),把一个独立任务甩过去,等它干完,只取最终答案回来。你手里已经有的工具,在它眼里都是可以被调用的执行单元。这话不是宣传词,我在官方仓库的服务列表里看到了对应实现,社区实测也验证过。
四、它和 MCP、Skills、Hooks 不是一回事
"插件"这个词这两年被用滥了,很多人会把"一切皆插件"理解成"能装插件",那其实还在老框架的思路里。我把这几个概念捋一遍:
- MCP 解决的是:Agent 能调用什么;
- Skills 解决的是:Agent 知道怎么做什么;
- Hooks 解决的是:Agent 运行到某一步时,我能插一脚;
- "一切皆插件"解决的是:Agent 本身应该怎么组成。
Claude Code 的 Plugin 是一个扩展打包层,把 Skills、Agents、Hooks、MCP Server 打成一个可安装包,本质是"给 Claude Code 装插件"。DeepSeek Harness 的插件是另一层意思:DeepSeek Harness 自己就是插件拼出来的,没有哪个核心是"特权"的。往房子上加房间,和房子本身就是房间拼的,这中间的差别,就是"能装插件"和"一切皆插件"的分界线。
"一切皆插件"落到实处的另一个例子是代码模式(PTC)。这种模式下 dsh 只给模型一个工具 run_code,把所有可用工具自动打包成一套 TypeScript SDK。模型一口气写一段程序,把十几步操作串起来跑完,中间数据留在执行环境里,不进上下文,只把结论返回。往返少了,上下文干净了,token 也省了,而且这些调用照样走权限、审计、超时那套流水线。我评估框架时最烦"为省 token 牺牲安全"的设计,这条两头都占,确实少见。
举个极端例子。你觉得 DeepSeek Harness 的 Agent Loop 不好?换掉。你不想让 Agent 在本机 Bash 里干活,想全丢进远程沙箱?换文件系统、子进程、沙箱的 provider。你想在模型每次真正执行工具之前插一层审查?不用魔改循环,agent/pre-step、tools/pre-execute 这些生命周期节点本身就是开放出来的扩展点。
发布没几天,社区就有人把 dsh 的 Web 界面整个换掉,做出六套皮肤挂成表现层插件,会话、模型、工具这些原生能力一个不动。这种改装热情,我自己的看法是,比任何宣传都更能说明生态在动。
五、我的判断:真正改变的东西,和没那么神的地方
这设计最值钱的地方,在我看来是三件事。
第一,可定制、可移植、不绑模型。因为推理层是插件,同一套 DeepSeek Harness 既能跑 DeepSeek 自家的模型,也能接 Anthropic、OpenAI、Bedrock、Vertex、Azure,或者任意兼容端点。换供应商从重写变成配置。对团队来说,这意味着可以围着一套运行框架做标准化,而不是赌某个模型永远赢。我自己做选型最怕的就是被一家模型绑死,这一点很对我的胃口。
第二,模型与基础设施真正解耦。过去行业比的是谁模型更强;DeepSeek Harness 把战场推到了谁能决定模型怎么工作。开放权重解决了谁能跑模型,开放 DeepSeek Harness 则进一步碰到了模型以什么方式被组装、被约束、被观察。
第三,开源把改装权交回社区。Codex 和 Claude Code 都是绑自家模型的收费服务,Claude Code 整体闭源,Codex CLI 虽然开源,服务端能力照样锁在 OpenAI 自己的 API 上。DeepSeek Harness 选了 MIT 开源,把怎么改交给社区。发布后社区响应很快,GitHub 上 dsh-plugin 话题下的仓库已经几千个,质量参差,真正成型的插件还得靠时间筛选。我的习惯是,这种数字先打个对折再看。
但我得泼点冷水。开源不等于赢。Claude Code 在打磨度和稳定性上仍然领先,dsh 现在还是预览版,接口会变,生态也才刚起。它真正的价值要看接下来半年,社区和官方能把插件标准和质量做到什么程度。我不太迷信单点突破,这类东西最后拼的是谁能把生态养起来。
觉得有用的话,顺手点个关注,下一篇聊聊这套运行时怎么被重写,以及生产为什么反而接得住。
【欢迎访问我的个人博客主页,这里有我的精选文章和AI大模型日报专栏。👇)
本文用到
[1]: 论文《A Programming Paradigm for Spatiotemporal Composability》. github.com/cordiverse/paper
[2]: DeepSeek Harness 官方仓库与架构文档. github.com/deepseek-ai/deepseek-harness
[3]: Koishi 官方文档(Cordis 生态背书). koishi.chat
更多推荐
所有评论(0)