一家卖模型的公司,突然把"跑 agent 的那套壳子"整个开源了,两天涨了十几万 star。这篇不吹参数,只回答四件事:它到底是什么、怎么上手、真正特别在哪、以及它把这个行业的哪块地基挪动了。
不要被 harness、runtime、插件这些词绕住,先建立画面。
先说清楚一个词。harness 直译是"马具"——套在马身上、让马的力气能真正拉动车的那套东西。在 AI 圈里它指的是:模型本身只会"输出下一句话",而 harness 负责把这句话变成真实动作——读文件、跑命令、调工具、把结果再喂回去、决定什么时候停。DeepSeek 官方自己的说法很干脆:Agent = Model + Harness,模型是灵魂,harness 给它手脚和记性。
你现在最熟的 Claude Code,是一个成建制的剧团。导演、演员、道具师、剧本都是同一家公司自己配的,彼此磨合了很久,开演即顺。但你没法把主演换成别家的人,也没法在演出中途换剧本——那些是焊死在班子里的。
DeepSeek Harness(命令行里叫 dsh)走了另一条路:它更像一个装好了标准接口的空舞台。演员(模型)、道具(工具)、剧本(agent 循环)、灯光音响(界面)、后台仓库(会话存储)全都是可插拔的模块,而且——这是最关键的一点——可以在演出进行当中换掉,不用把幕落下来重新开场。更讲究的是,任何模块被拔下去的时候,它上台时搬来的桌椅、拉过的电线、开过的灯,都会被自动收回原位。
Claude Code:导演、演员、剧本同厂配套,磨合最深,但换不了人。
dsh:模型/工具/循环/界面都是插件,演出中途可换。
模块下台时,它搬上台的一切被自动撤回,不留残骸。
第三格是很多人第一眼会忽略的部分,但它才是这套设计真正的技术难点——后面第 04 章专门讲。
如果你只是想写代码、跑任务,第 4 条已经决定了结论:你大概率不需要马上换过去。但第 2、3 条决定了这个项目对行业的意义。
先把手感建立起来,再谈架构。
它不是那种"读三天文档才能跑起来"的框架。装了 Node(官方要求 22.19 以上)之后,一行命令就能把它拉起来:
npx @deepseek-ai/dsh web
命令跑完,浏览器打开 http://127.0.0.1:3080,你会看到一个本地网页界面——注意这一点跟 Claude Code 的气质就不同:dsh 的默认门面是 Web UI,不是纯终端。填进 API key、选一个工作目录(这一步不选,输入框是不激活的),就可以开始对话干活了。
想从源码跑(比如你要改插件),官方给的是标准 pnpm 三步:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
装好之后你要做的第一个选择不是"选哪个模型",而是"选哪种 agent 预设"。这四种模式本身就是理解这个项目的好切口——它们其实是四套不同的插件组合:
不是插件多,是没有一个"谁都得来打补丁"的特权核心。
"支持插件"这句话在 2026 年已经不算卖点,谁都支持。dsh 的说法是更狠的一句:Everything is a Plugin——模型、工具、技能、会话、沙箱、文件系统、循环、调度、界面,全都是插件,开发者不改框架源码就能替换或扩展任意一层。
要理解这句话的分量,得看它反对的是什么。绝大多数 agent 框架长这样:中间有一个主循环("读输入→想→调工具→再想"),所有新功能都得挤进这个循环里去打补丁。记忆功能加个钩子、权限检查加个钩子、多 agent 编排再加个钩子……时间一长,这个主循环变成了那种谁都碰不得的上帝对象:能改的人越来越少,改一次崩三处。
dsh 的做法是取消这个特权位置。它把每个部件都描述成三件事——我需要什么、我提供什么、我干了哪些可撤销的事——然后由内核负责把它们拼起来。主循环也遵守同一套规则,所以它也可以被整个换掉。
列表里最反常的是"循环"。市面上几乎所有 agent 框架都把主循环当作自己的身份,dsh 把它降级成了配件。
"插件能热插拔"是一句轻飘飘的话,真做出来需要一套形式化的地基。
先讲一个大部分报道都漏掉的事实:dsh 的插件内核不是 DeepSeek 写的。它叫 Cordis,作者是国内开发者 shigma,原本是聊天机器人框架 Koishi 的底座,已经打磨了四年。也就是说,中国最热的模型公司,把自己 agent 运行时的地基,交给了一个从聊天机器人插件生态里长出来的元框架——不是从 LangChain 那条 AI 血脉,而是从"插件系统怎么才不会烂"这条工程血脉。
更少人注意的是,Cordis 背后有一篇正经论文:《A Programming Paradigm for Spatiotemporal Composability》(时空可组合性的编程范式)。这个词听着唬人,拆开其实就两句大白话。
论文里承认了一个诚实的边界:外部世界的副作用撤不回来。启动服务器可以关掉,但"已经发出去的邮件"没有反向操作。
如果你想看看这套抽象落到代码是什么手感,最能说明问题的是 effect:注册副作用的同时把清理方式一起交上去。
ctx.effect(() => {
const timer = setInterval(() => {}, 1000)
return () => clearInterval(timer) // 卸载时自动执行
})
ctx.on('message', handler) // 事件监听自动登记为 effect
ctx.provide('db', database) // 提供服务;依赖方会自动感知
await ctx.plugin(MyPlugin, { timeout: 5000 })
底下的实现也颇讲究:上下文用 Proxy 包一层、用原型链 Object.create 派生子上下文,所以派生成本是常数级的;同名服务靠 Symbol 隔离,两个插件各自提供一个叫 db 的服务也互不打架。依赖是否变化,则靠给每个依赖算一个 epoch 串来比对,一变就触发"卸载→重载"。
前面是够用的直觉层,这里补几个更准确的点。
多家媒体点出的一个关键事实:dsh 就是 DeepSeek 内部用来跑自家模型 coding-agent 评测的那套框架(报道提及用于 DeepSeek-V4-Flash 的评测)。这解释了 Minimal 模式为什么会被摆到和 Standard 同级的位置——对评测来说,"只有 bash 和编辑器、没有任何花活"才是干净的基线。也解释了会话日志为什么是 append-only 且可分叉:那是实验记录的要求,不是聊天软件的要求。
官方口径是 model-agnostic:DeepSeek 自家、Anthropic、OpenAI、Bedrock、Vertex、Azure,以及任何 OpenAI 兼容端点都能接。也就是说,你完全可以拿它跑 Claude 或 GPT——一家模型公司开源的 harness 默认支持竞争对手的模型,这件事本身就值得多看两眼。
npx @deepseek-ai/dsh web 起来的是本地 127.0.0.1:3080 的网页界面。这跟 Claude Code、Codex CLI 那种"终端即产品"的取向不同。好处是轨迹可视化、分叉回放这类操作在网页里更自然;代价是它不像纯 CLI 那样天然适合塞进 CI 和远程 SSH 流程。
PTC(用 TypeScript 编排多步工具调用)本质上是把"多轮工具调用"折叠成"一段可执行代码"。它同时解决两个问题:token 消耗(少了大量往返上下文)和确定性(编排逻辑是代码,不是每轮重新赌模型的判断)。这个思路 2026 年在多个 agent 项目里同时出现,说明它正在成为共识而不是 DeepSeek 的独创。
MIT 协议,第三方依赖在 THIRD_PARTY_NOTICES.md 里披露。版本是 v0.1 开发者预览,README 用全大写写着"会有破坏性变更"。官方社区在 GitHub Discussions 和 Discord;插件作者被建议给仓库打上 dsh-plugin 标签方便被发现。
仓库里有两个容易被忽略的包:一个通过官方 Claude Agent SDK 调起本机的 claude 可执行文件,另一个用 codex app-server --stdio 握手拉起 Codex。也就是说,dsh 把竞品的 CLI 直接当作可选的"子代理后端"——你可以让 dsh 主持全局,把某个子任务派给 Claude Code 去做,再把结果收回来。两者都不是默认装载的,要显式开启。这个方向目前还没看到反向的等价物。
dsh 是运行时层,不是协议层。它解决"一个 agent 内部怎么拼装",MCP 那类协议解决"agent 怎么连外部工具",两者不是替代关系——事实上 dsh 原生支持 MCP,而且刻意沿用了 mcp__服务名__工具名 这种和 Claude Code、Codex 一模一样的命名约定。在能互通的地方主动对齐、在架构上另起炉灶,是它挺清晰的一条策略。真正被它挑战的,是那些把运行时逻辑焊死在产品里的 coding agent。
默认在用满上下文窗口 80% 时触发压缩,先可选地裁掉超大的工具返回值,再原样重放系统提示、工具定义和消息、附上一条压缩指令去生成摘要。特意"原样重放"是为了复用服务商的 KV 缓存而不是把它打翻;压缩只吃最老的整段对话、保留可配置长度的近期尾巴,摘要如果没能真的变短就重试。这是那种只有真的被账单教育过的人才会写的细节。
前面的图应该已经把直觉建立起来了,这张表留技术密度。
| 系统 | 一句话定位 | 能换的"脑子" | 核心循环 | 最适合谁 |
|---|---|---|---|---|
| Claude Code | 原厂调校的贴身开发助理 | 仅 Claude 系列 | 产品的一部分,不可替换 | 想把活干完的人 |
| DeepSeek Harness | 万物可拆的 agent 运行时 | 模型无关,含各家及本地端点 | 是一个插件,可整体换掉 | 想改装 agent 本身的人 |
| Codex CLI | OpenAI 的终端编程 agent | 以自家模型为中心 | 产品内定 | OpenAI 生态用户 |
| OpenHands | 开源的自主软件工程 agent 平台 | 多模型 | 可配置,但非"插件化到底" | 要开源可自托管方案的团队 |
| Cline / Roo | 编辑器内的开源 agent 扩展 | 多模型 | 围绕编辑器场景固化 | 习惯留在 IDE 里的人 |
热度是表象,值得记住的是它挪动了哪块地基。
先看几个硬数字。仓库建于 2026 年 8 月 13 日,发布 1.5 小时后 2.2 万 star,48 小时内破 10 万,到 8 月 17 日核实为 144,965 star / 14,742 fork。同一天 DeepSeek 还发布了 V4-Pro-0813 正式版模型。社区侧,发布 24 小时内就出现近 300 个第三方插件,几天后 GitHub 上打着 dsh-plugin 标签的仓库已经数以千计(其中确实混着一批蹭标签的项目,但生态热度是真实的)。
有分析把这条曲线类比成 Android:把手机操作系统商品化的那家公司,最后站在了生态中心。
但同一周里还发生了另一件事,值得放在一起看:DeepSeek 把 V4-Pro 的 API 价格大幅上调,输出价从 V4 Flash 的每百万 token 约 $0.28 抬到 $3.96 这一档,媒体统计的整体涨幅区间在 50% 到 1100% 之间。一手把运行时免费开源、一手把模型显著提价——这两个动作放在同一个新闻周期里,把这次开源的商业逻辑讲得很清楚:壳子免费送,是为了让流量最终流回要付费的那一层。
这一章不复述新闻,只挑那些跟主流叙事拧着来的看法。
绝大多数报道把 dsh 当成"对标 Claude Code 的开源产品",但它更准确的身份是 DeepSeek 内部用来评测自家模型的那套工装。这解释了三处怪异设计:为什么"只有 bash + 编辑器"的 Minimal 模式会被摆到和日常模式同级——评测要的就是干净基线;为什么会话日志是只追加且可分叉——那是实验记录的规格;为什么整个运行时要做到可任意替换——因为要控制变量。一家模型公司把"量自己模型的那把尺子"交出来,比交出模型权重更罕见:从此别人可以用同一把尺子来量它。
dsh 的内核 Cordis 不是 DeepSeek 造的,而是国内开发者 shigma 为聊天机器人框架 Koishi 打磨了四年的元框架,还配着一篇讲"时空可组合性"的论文。这意味着这套 agent 运行时的理论根基,不是从 LangChain 那条"给大模型套流程"的路线上长出来的,而是从"插件系统怎么才不会在装卸几十次之后烂掉"这条老工程问题上长出来的。AI 圈近三年反复重造的很多轮子,在插件生态里已经被磨了十年——这次是那条经验反向输出给了 AI。
几乎所有报道都在写"开源版 Claude Code 挑战者",但仓库里躺着两个包,一个用官方 Claude Agent SDK 调起本机的 claude,一个用 codex app-server --stdio 拉起 Codex——dsh 可以把这两个竞品当作自己的子代理后端来指挥。它连 MCP 工具的命名都刻意沿用了 Claude Code 和 Codex 的写法。这透露出一种很清醒的定位:它不打算在"谁的助理更好用"上赢,它想成为那层站在所有助理之上、决定谁去干哪件事的东西。把对手变成可调用的零件,比打败对手更狠。
让人可以换模型、换工具,只是这套设计的副产品。它真正的用力方向,是让 agent 在运行中改装自己——装一个新工具、换一个模型、派生再回收一批子 agent,全程不重启、不留残骸。那个叫 cordis 的"创造模式"预设(让 agent 自检、试插件、造预设)就是这个意图的明牌。换句话说,这套地基不是为"人机协作"设计的,是为"agent 自我演化"预留的。你今天用不到,不代表它没有对着那个方向。
dsh 把模型看到的每一个字节、每一步推理、每次工具调用都写进可回放的事件日志。而闭源阵营在往反方向走——原始思维链要么只给摘要,要么得走商务渠道。有评论直接点出这个对比:透明度正在变成开源阵营的差异化武器,而不只是道德姿态。对做 agent 的人来说,能精确看到"模型在第几步开始跑偏、成本堆在哪一段",价值远高于多两分跑分。
有独立评测给出了这个刻薄但精准的比喻:为了"可插拔"这一个诉求,代价是 57 个包的 TypeScript 巨型工程、约 50 万行代码,外加一个几百行 C 写的 Linux 沙箱内核。这位评测者的结论值得原样记住——"它不是 DeepSeek 版的 Claude Code,而更像一次关于 agent 运行时应该长什么样的激进实验"。承认长期价值,同时否定短期实用性:这大概是目前对它最诚实的一句话。
不问"哪个更强",问"你现在到底想解决什么"。
至于"要不要换掉 Claude Code"——目前的实测共识相当一致:不换。多篇中文实测都指出 v0.1 在自我纠错、长循环稳定性上还不如成熟产品(有分析观察到它在四十多轮的超长任务里会提前收工)。它现在的价值在架构,不在顺手。
官方仓库与文档优先,媒体与实测作补充,存疑的一律标注。
本文的技术描述以官方仓库、官方文档与 Cordis 论文为准;热度数字以 GitHub 官方 API 的实时查询为准;商业与行业判断来自公开媒体报道,观点部分已注明是分析师或评测者的看法而非事实。以下几点属于未证实,文中已回避或标注:所谓"三天 12.2 万 star 创 GitHub 史上最快"的说法没有一手数据背书;涨价与 IPO 筹备的因果关系仅为媒体推测;DeepSeek 公司估值在不同信源间从 500 亿到 740 亿美元不等,无统一口径。此外,Cline / OpenHands / Aider 等同行维护者截至本文写作时没有公开回应,因此本文不推测它们的反应。