DeepSeek Harness 上手实录:Everything is a Plugin 是新范式还是新命名?
早上查看 GitHub 情报的时候,我注意力被停留在一个消息上:一个8月13日才建仓的项目,deepseek-ai/deepseek-harness,星数 206,587,fork 23,994。
19 天,20 万星。我的第一反应是:刷的吧。
因为我把昨天和今天的 GitHub Trending 日榜、周榜都翻了一遍——日榜 16 个、周榜 20 个仓库,里面压根没有它。一个 20 万星的项目不上趋势榜,这事本身就不对劲。
后来我把时间线对了一下才想明白。先补一句背景:GitHub Trending 是官方的趋势榜,分日榜、周榜、月榜,排序看的是这一周期内新涨的星数,不是仓库总星数——所以一个 20 万星但本周没怎么涨的仓库,会输给总星数几千、但一周翻倍的新仓库。DSH 的爆发期在 8 月中下旬、建仓后的头两周,本周增速已经回落,自然就掉出榜了——热度峰值已经过去了,现在进场的人,吃的是第二波。
但数据是真的。我用 api.github.com 逐项核验过:星数、fork 数、提交记录、发版记录,都是实抓的,不是营销号互相抄的那种“据外媒报道”。这是 DeepSeek 官方的开源项目,不是蹭名字的山寨货。
所以今天这篇文章,记录我把它完整装一遍、跑起来、拆开看了一遍的全过程。先说结论:**东西是真东西,但“Everything is a Plugin”这句口号,一半是新范式,一半是新命名。**往下看就知道我为什么这么拆。
一、它到底是什么
DeepSeek Harness(命令行叫dsh)是 DeepSeek 官方开源的 agent harness,定位对标 Claude Code、Codex CLI 这一挂:起一个本地服务,接上模型,让 agent 读文件、跑命令、改代码。
官方 README 说它“构建于一切皆插件的架构之上,由 Cordis 驱动”。Cordis 是个 TypeScript 插件框架,背后有篇论文(《A Programming Paradigm for Spatiotemporal Composability》,arXiv:2608.25512),感兴趣的同学可以自己去翻。
几个我核实过的基本盘:
- 协议 MIT,商用无障碍
- 8月10日在 npm 发第一个版本,21 天发了 14 个版本,最新 latest 是
0.1.1-rc.2,alpha 通道已经到0.1.2-alpha.3(8月31日发的) - 开发者预览阶段,官方 README 用加粗原话警告:未来将出现破坏兼容性的变更
- 中文是一等公民:官方中英双 README、整套中英双语文档,还建了企微群和微信公众号(README 里直接贴二维码)
最后这条对国内开发者挺重要的。DeepSeek 的 API 在 platform.deepseek.com,国内直连、人民币充值,不像某些工具从注册第一步就开始折腾你。
二、安装实录:我被 npm 坑了大半个小时
先说坑,这是本文可能对你最有用的部分。
README 给的安装方式极简单:
npx @deepseek-ai/dsh web一行命令,默认起 Web UI 在http://127.0.0.1:3080。看起来很美。
我实际执行的记录是这样的:
- 直连 npm:卡死。等了五分钟,啥也没装出来。
- 换 npmmirror 镜像:还是卡死,五分钟超时。
- 挂代理重试:元数据请求全部 200、速度也正常,但还是装不完。
- 翻 npm debug 日志,找到真相:不是网络问题,是依赖树太大。
@deepseek-ai/dsh这个包在依赖组装(placeDep)阶段爬了二十多分钟没爬完。
为什么依赖树这么大?后面拆包那节会讲,这里先剧透:完整装下来是 447 个包,其中 197 个是@deepseek-ai/官方 scope 下的插件包。至于 npm 为什么爬不动这棵树、pnpm 为什么快,4.1 会展开。
我最后用 Node 自带的 corepack 拉起 pnpm:
corepackpnpmadd@deepseek-ai/dsh@latest一两分钟就装完了(504 个包解析、447 个下载——差额 57 个是 pnpm 全局 store 里已有的现成副本,直接软链过来,没走网络)。同一台机器、同一个网络,npm 和 pnpm 的差距是“装不完”和“一两分钟”。
装完还差一步:pnpm 11 的构建白名单
启动前还有个坑,pnpm 11 默认禁止依赖跑安装脚本,node-pty、koffi这些原生模块没编译。而且这个报错不只是警告——dsh启动时自己会做一次依赖自检,自检失败直接拒绝启动。
我在pnpm-workspace.yaml里加了这么一段才通:
dangerouslyAllowAllBuilds:true(更稳妥的做法是用onlyBuiltDependencies列白名单,我只装个预览版偷了懒。但有个坑是确定的:package.json 里那个pnpm字段在 pnpm 11 已经不被读取了——官方警告里明说,我第一次就踩在这上面。中文资料里还没见人写过。)
三、跑起来
corepackpnpmexecdsh web --no-open控制台输出一行:
dsh web: http://127.0.0.1:3080浏览器打开,标题栏就是 DeepSeek Harness。按官方文档的使用流:
- 设置 → 模型,填入 DeepSeek API 密钥保存,模型路由立即可用,不用重启
- 选择工作区,把启动
dsh时所在的项目目录加进来选中 - 发任务。Agent 能读写工作区文件、跑命令、维护计划;按权限策略,敏感操作会先弹审批
这里有个细节值得单独说:PowerShell 是一等公民。它的工具插件里dsh-tool-pwsh、dsh-pwsh-local、dsh-pwsh-sandbox是独立列出来的。用 Windows 写代码的都懂,某些流行 agent 工具在 Windows 上非要你配 bash 环境,那体验一言难尽。DSH 把 PowerShell 和 bash 平行做成了可插拔工具,至少在态度上是照顾 Windows 的。
四、拆包:“一切皆插件”的成色
这是本文的核心。口号谁都会喊,我拆开 npm 包看了看到底是什么货色。
4.1 本体只有 120KB
@deepseek-ai/dsh解压后119,971 字节、20 个文件。一个对标 Claude Code 的东西,本体只有一个引导器。
它的依赖里,bash 工具是dsh-tool-bash,PowerShell 工具是dsh-tool-pwsh,MCP 客户端是dsh-mcp-client,技能系统是dsh-skill,上下文压缩是dsh-compaction-*,token 计量是dsh-token-meter,计划模式是dsh-plan-mode,子代理是dsh-tool-subagent,连 Web 界面都是dsh-web-app——每一个能力,都是一个独立的 npm 包。
现在可以回收第二节的伏笔了。为什么依赖树这么大?因为每一个能力都是一个独立 npm 包,这是架构选择的代价。为什么 npm 爬不动、pnpm 一两分钟装完?npm 要把所有依赖扁平化塞进同一层node_modules,遇到版本冲突就回溯重排(就是日志里卡死的那个placeDep阶段),树越宽回溯越多;pnpm 则是每个版本只往全局 store 里落一份,再用符号链接拼进项目,根本不需要协商。差距是结构性的,不是网络问题。
拆依赖树时还有个意外发现:里面躺着@anthropic-ai/sdk、Google GenAI 和 AWS Bedrock 的 SDK。也就是说“模型适配器也是插件”不是架构图上的空话,Claude、Gemini、Bedrock 的路由已经埋进发行包里了——配一个 DeepSeek key 开箱即用,想切别家也留着门。
CLI 自带四个官方预设(配置文件里的原文):
| 预设 | 官方描述 |
|---|---|
| 极简模式 | 仅提供持久 bash 与 str_replace_editor 的双工具编码 Agent |
| PTC 模式 | 标准模式全能力,通过 Code Mode SDK 让模型用一个 TypeScript 程序组合多步操作 |
| 标准模式 | 功能完整,支持文件编辑、Shell、检索、Skills、计划、目标、子代理和工作流 |
| cordis | 官方名“创造模式”:用于创建自定义 Agent preset,具备标准模式的全部能力,并提供运行时检查、插件实验和 preset 创作指导 |
四个预设里最有意思的是最后一个。cordis 预设的配置注释写得很直白:它存在的意义,就是让一个人能够请 agent 写出另一个 agent——标准模式的工具原样保留,再加一套自我指涉的 Cordis 工具集。
官方也不回避风险,注释里专门有一段安全提醒:这个预设下的cordis_mount会在活着的运行时里执行模型写的 JavaScript,“把这个预设下的会话当作 shell 访问来对待”。敢把“agent 造 agent”做成官方预设,还把信任边界写得这么明白,这点我给好评。
4.2 真正有意思的:整棵树可以导出和替换
跑一下:
dsh--profileweb --dump-config它会把当前组装的完整插件树打印出来,节选几行大家感受下:
# == @deepseek-ai/dsh-base-id:llmname:'@deepseek-ai/dsh-llm'-id:sessionname:'@deepseek-ai/dsh-session'# == @deepseek-ai/dsh-base, patched by @deepseek-ai/dsh-web-app-id:hmrname:'@deepseek-ai/cordis-plugin-hmr'disabled:true注意那些注释行:每个条目都标了它来自哪个组合包、被谁 patch 过。运行中的 dsh 是一棵插件树,按“profile → 组合包 → 你的 patch”顺序叠加。装插件的命令是:
dsh plugin--profilewebadd<package>它内部转发给 pnpm 装到你自己的 profile 目录里。
架构文档里有一句话我觉得值回票价:**“不存在需要打补丁的特权内核。”**连 agent loop 本身、模型适配器、会话日志都是插件,理论上任何一个都能被你的配置整个换掉。这是和“在内核边上留个扩展点”完全不同的设计哲学。
4.3 生态已经自己长出来了
再一个佐证:建仓两周内,第三方生态自己冒出来了——awesome-dsh-plugin精选列表 13,907 星,anywhere-labs/dsh-desktop桌面端 22,474 星,还有 Web 聚合端、路由套件各自几千星。我抽查了其中一个仓库的源码,README、CI、隐私声明俱全,不是空壳。
刷星可以刷出 20 万数字,刷不出 20 个带 CI 的下游仓库。这就是我最终判断它不是刷榜的依据。
顺带一提,Hacker News 上它反而很冷清,最相关的帖子最高也就个位数的赞。热度集中在 GitHub 和中文圈,英文社区还没跟进——对写技术内容的人来说,这是个时间差机会。
五、所以,新范式还是新命名?
我的答案分两半。
**“新命名”的那一半:**插件化架构不是它发明的。Cordis 框架早就存在,VSCode、Eclipse 这类“微内核+插件”的设计在软件工程里是教科书内容。把一个 TS 插件框架用在 agent harness 上,工程上漂亮,但理念上没有石破天惊。
“新范式”的那一半:把“LLM agent 的每一项能力”做成独立分发、可整树替换、有官方背书的 npm 包,这个组合确实没人做过。对比一下就清楚了:
- Claude Code 的插件和 Skills 本质上是目录规范——你往约定位置放文件,宿主程序加载。扩展的是内容,不是宿主本身。
- DSH 的插件是进程内 Cordis 插件——bash 工具、模型路由、上下文压缩策略,全都可以被拔下来换掉。扩展的是宿主本身的每一个器官。
打个比方:一个是给房子添家具,一个是房子本身由标准化模块拼的,你嫌哪个房间不顺眼可以整个拆了重拼。后者的工程天花板明显更高——代价是门槛也高,写个 DSH 插件你得先懂 Cordis。
再加一个变量:DeepSeek 官方在做这件事,MIT 协议。有背书的开放权重模型+有背书的开放 harness,这个打法对生态的杀伤力,参考 ollama 那几年就知道了。
六、风险和购买建议(免费的建议)
现在就该装的:
- 想研究 agent 架构、想给 agent 写插件的——这是目前最好的活教材,
--dump-config一导,整棵树摊开给你看 - 想省 token 钱的——DeepSeek API 定价摆在那,自己算账
建议再等等的:
- 想拿来当日常主力工具的——它在开发者预览期,官方明说会有破坏性变更,今天写的配置下周可能作废
- 网络不好且不想折腾 pnpm 的——npm 直装的实际体验我在第二节写得很清楚了
最后泼一盆冷水:20 万星里有多少会转化为长期贡献者,要看半年后。agent harness 这个赛道,DeepSeek 之外,Claude 插件生态、孵化器里的 Apache Maka(本地优先 agent 运行时)、Cursor 开放插件规范全都压上来了,2026 年下半年会有一场淘汰赛。DSH 手里的牌是架构激进+官方背书+中文生态,短板是 alpha 稳定性和英文社区声量。
装一遍,拆一遍,你自己会有判断。
本文数据(星数、fork、发版时间线、包体积)均为 2026-09-01 当日从 api.github.com 与 npm registry 实抓,安装与启动过程为本机实录。如果对你有帮助,点个赞或者收藏,后续我会跟一篇 DSH 插件开发实录。