
导读: 8 月 17 日发了给 DeepSeek Harness 做的桌面版 v0.1.0:不会敲命令的人,下载、双击、填个 key 就能用。到 8 月 22 日,这个仓库又发了 13 个版本、73 次提交,长出了插件市场、技能管理器、一只常驻屏幕角落报状态的性能浮标,更新机制也从一层变成了三层。这篇把 v0.1.0 之后的变化盘一遍:哪些是新窗口,哪些是你看不见但每天都在受益的地方,以及哪些边界至今没变。仓库:github.com/huyang218/d...,MIT 开源。
上一版发出去之后,评论区和 issue 里陆续收到两类反馈。
一类是「装上了,能用」。另一类紧跟着就来了:Intel 的 Mac 怎么没有包?插件除了粘贴包名还有没有更省事的装法?它跑起来到底吃我多少内存?
这两类反馈拼在一起,正好是一个产品从「装得上」走到「住得下」的过程。v0.1.0 解决的是第一件事,之后的 13 个版本,几乎全在解决第二件。
01 装插件,从「粘贴包名」变成「逛市场」
v0.1.0 的插件管理是一个输入框:你得先在别处知道一个插件的 npm 包名或仓库地址,回来粘贴、点安装。它能用,但有个前提------你得知道世界上存在这个插件。
现在菜单里多了一项「插件市场」。独立窗口,接的是 DSH Market(dshplugin.market)的目录:可以搜索,能看到每个插件的星标数和简介,看中了点一下就装。

几个设计上的取舍值得说一句:
目录在本地有缓存,6 小时内不再请求网络,断网也能逛,手动点刷新才重新拉。一键安装只对市场标记过、且确实发布在 npm 上的条目开放;只挂了 git 仓库的条目,窗口只给你仓库链接,让你自己看过再装------来路不明的代码,多一步人工确认不是坏事。目录源本身也是个设置项,你可以把 marketCatalogUrl 指到自己维护的清单上。
手动安装那条路也宽了不少。现在支持五种来源:npm 包名、GitHub 页面地址(直接粘贴浏览器地址栏就行,包括指向集合仓库里单个包的 .../tree/main/packages/xxx 链接)、github: 简写、本地绝对路径、zip 包。装好的插件会在后台对着 npm 源检查更新(配了镜像就查镜像),有新版本会标出来。插件还能不卸载只停用,开关一下就好。
最实用的一条留给了出事的时候:如果一个插件装完导致服务起不来,启动失败的对话框会直接点出它的名字,并给你一个「撤销这一步并重启」的按钮。装坏了不用猜是谁干的,也不用进目录里手动挖。
此前单独开源过的 12 个 dsh 插件(包括修第三方网关断流误报的 gateway-compat),现在都能从市场里直接搜到装上,不用再记包名。
02 技能也有了自己的管理器
dsh 除了插件还有技能(skill)------一段教 agent 怎么干某类活的说明文档,放进指定目录就能被加载。听起来简单,实际用起来有两个麻烦:技能大多散落在各个 GitHub 仓库里,以及放错了位置、写错了格式时,它只是默默不生效,你不知道为什么。
v0.1.9 加了技能管理窗口,把这两个麻烦都接住了。

从 GitHub 装技能时,它不会把整个仓库拉下来------很多技能仓库几十 MB,而一个技能本体往往只有几 KB,它只取需要的那几个文件,并记住来源,之后可以对着上游检查更新。「技能市场」标签页里还列了几个确实在维护技能、且按 dsh 规则校验通过的仓库,作为找技能的起点,看中一个仓库可以一键全装。

另一半更重要:一个技能如果没有被加载,管理器会告诉你为什么------格式问题、位置问题还是别的。「默默不生效」是配置类功能最劝退人的形态,把原因说出来,这个功能才算完整。
03 两只常驻角落的小狗,告诉你它现在多累
这是 13 个版本里最显眼的新东西:性能浮标。
在设置里打开后,屏幕角落会出现一个置顶小窗,实时显示 harness 此刻的开销:CPU、常驻内存、线程数,以及整个进程组里有几个进程。负载分五档,从空闲一路到高热,每一档对应角色的一个状态------瞟一眼就知道它是在闲着还是在拼命。布局有标准、紧凑、极简三种尺寸,还有线条小狗、二次元助手这样的角色形象,甚至可以指定一张自己的图片当形象。极简那档就是角落里一个数字,完全不碍事。

这个功能的来由很直接:上一版发出去之后,被问得最多的一类问题就是「它在后台到底吃多少资源」。与其在 README 里给个笼统数字,不如把仪表盘直接递到用户眼前。
实现上有个容易做错的细节,值得写出来。很多工具显示 CPU 占用时直接读 ps 的输出,但 ps 报的是进程整个生命周期的平均值------对一个从周二就开始跑的服务来说,那是个关于过去的数字,不是现在。浮标的做法是隔一小段时间采两次累计 CPU 时间,用差值除以墙钟,得到的才是「此刻」的速率。统计范围是整个进程组,因为 dsh 会把活委托给 pnpm 和其他命令行工具,那些子进程的开销同样算在它头上。另外它只在显示时才采样------一个监控工具自己先吃掉一份资源,就本末倒置了。
04 更新这件事,现在分三层
v0.1.0 只有一层更新:dsh 运行时的双槽位机制------新版本装进闲置槽位,探针自检通过才切换指针,失败不影响正在用的版本。这套机制还在,但上面又长出了两层。
第一层是通道。dsh 发新版有个习惯:先发到 npm 的 next 标签,稳定后才挪 latest。也就是说一个版本可能明明已经发布了,跟着 latest 的人却完全看不见。现在设置里可以选通道:稳定通道跟 latest,预览通道跟 next;检查更新时两个标签一次都查了,所以就算你在稳定通道上是最新的,它也会告诉你预览通道里有没有更新的东西,而不是让你自己去 npm 上考古。
第二层是回退。旧版本切换后并不删除,还留在另一个槽位里,菜单里多了「回退到 dsh 某某版本」这样一项------不联网、不重装,一点就切回去。新版本有问题时,这比任何故障排查都快。
第三层是应用自己的更新。壳本身也会迭代,现在它对着仓库的 Releases 检查新版本,并且分两种情况处理:如果新版本只改了界面和逻辑代码(Electron 没变),走热更新------下载约 170KB 的一个包,校验 SHA-256,重启即生效,不用重新下载 200 多 MB 的安装包;如果 Electron 或内置运行时变了,才提示你下载完整安装包。
热更新最怕的是把应用更新坏。这里的做法是把运行时那套双槽位规则原样搬到了壳自己身上:新下载的代码有两次启动机会,起不来就自动退回安装包里自带的那份。热更新最坏的结果,就是你手动安装的那个版本------它一直原封不动待在那里。
05 看不见,但每天都在用的
剩下的改动没有窗口可截图,但日常体验里全是它们。挑几件说:
Intel 的 Mac 有包了。 v0.1.0 只有 Apple 芯片的 dmg,这是上一版明确写在「边界」里的一条。v0.1.8 起两种芯片都有,构建跑在 GitHub Actions 的三台机器上(Apple 芯片 macOS、Intel macOS、Windows),检查更新时也会自动认出你的机器该拿哪个包。
文件能直接扔进对话了。 三条路,一个终点:macOS 上右键「打开方式」或把文件拖到 Dock 图标上,Windows 上用「发送到」菜单(设置里有个开关负责写入这个快捷方式),或者两个平台都支持的------直接把文件拖进窗口。文件路径会被填进输入框,dsh 是个有文件系统工具的 agent,拿到路径就能去读,文件再大也不怕。还有个兜底:如果当下没法填(比如没开工作区),路径会进剪贴板并提示你粘贴------功能退化成多按一次快捷键,而不是没有任何反应。
代理终于只用配一次。 这个应用其实有两套互不相干的网络:界面自己的请求走 Chromium,而 npm 装运行时、pnpm 装插件、dsh 调模型接口,读的是环境变量。从 Finder 或开始菜单双击启动的图形应用,是看不到你 shell 配置文件里那行 export 的------这就是为什么终端里一切正常、双击打开就各种超时。现在设置里的「代理」一处配置同时管两边,还能分别测试连通性。
它可以住在后台。 开机自启、启动时直接进托盘不弹窗口,两个开关都在设置里。窗口的大小和位置会被记住;如果上次的位置在一台已经拔掉的显示器上,这个记录会被丢弃,而不是把窗口开到你看不见的地方。
会话有后悔药了。 数据目录可以整体导出成快照,也可以从快照恢复。恢复前会先校验这个包确实是数据快照,被替换的旧目录改名放在一边而不是删除。运行时能退槽位、壳能退安装包、插件能停用,唯独会话数据之前没有任何退路------这是补上的最后一块。
PATH 的坑被填了。 dsh 装插件要找 pnpm,委托编码任务要找 Claude Code、Codex 这些命令行工具,全靠 PATH。而 macOS 上双击启动的应用只拿到系统默认的那几个目录,你用 nvm、Homebrew 装的东西它一概看不见。现在的做法不是维护一张「常见安装位置」清单,而是每次启动时直接问一遍你的 shell:你的 PATH 是什么。你用什么版本管理器、装在哪个犄角旮旯,它都跟着你的 shell 走。
还有一件给开发者的:整个应用的品牌信息(名字、图标、数据目录、更新源)收进了一个 brand.json,改这一个文件、跑同一套构建脚本,就能打出你自己牌子的包,数据目录互不干扰。想基于它做分发的团队可以直接看 README 的 White-labeling 一节。
06 没变的部分,也照旧交代
上一版列过的几条边界,如今状态如下:
dsh 仍在 rc 阶段,这个壳依赖的契约仍然只有两条(dsh web --port N、根路径 200 即就绪),上游变动优先查这两点。本地端口仍然没有鉴权,随机端口只是收窄了窗口,多人共用的机器上依旧要留意。安装包仍然没有花钱买签名:macOS 是 ad-hoc 签名未公证,Windows 会被 SmartScreen 拦一下------也正因如此,请只从官方仓库的 Releases 页下载。Linux 依旧没做,原因没变:手上没有环境验证,不想发一个没在真机上跑过的包。
对话依旧需要你自己的 DEEPSEEK_API_KEY,应用本身不带任何额度,也不上传你的会话。
写在最后
桌面版解决「装得上」,插件库解决「补得齐」,这 13 个版本解决的是「住得下」------插件有市场、技能有管理、开销看得见、更新退得回。
一个人 5 天发 13 个版本,听起来激进,其实每个版本都很小:一个窗口、一个开关、一个被点名的坑。开源项目的迭代未必需要宏大路线图,把 issue 和评论区里最高频的那句抱怨修掉,版本号就自然涨上去了。
桌面版你装了吗?用下来最想要的下一个功能是什么?插件市场里如果缺什么类型的插件,评论区直接说,我看看能不能补。
参考资料:
- 本文项目仓库:github.com/huyang218/d...
- 版本发布记录:github.com/huyang218/d...
- 上游仓库:github.com/deepseek-ai...
- DSH Market 插件目录:dshplugin.market/
说明:文中版本数、提交数统计自 GitHub 仓库(2026 年 8 月 22 日),封面为 AI 生成,界面截图为实机实拍。