dsh-minato(原 DeepSeek Harness Toolkit):给不想管炉子的人,一个会自己照看烤箱的工具箱

dsh-minato 鲸鱼娘
介绍
DeepSeek Harness(dsh)是 DeepSeek 的官方工具。官方推荐的用法其实不难,但很"厨房":先备料(装 Node.js),再开火(敲两行命令),以后每次想用都得围着灶台转。
但总有人只想吃面包,不想管炉子。
于是就有了这个项目——DeepSeek Harness Toolkit。现在它有了自己的短名:dsh-minato("凑",也是港——一个让东西靠岸的地方)。它把安装、启动、监控、备份、恢复、体检、卸载全收进一个能双击的窗口里,就像把整间后厨的活儿,收进一个小小的烤盘。
十月它正式转正:3.0 首个稳定版。从这一版起,它不再只是 Windows 上的一个 exe,而是一套 Windows / Linux 通用的跨平台工具箱——一个命令行核心,加一扇十个页面的图形窗口。
3.0 的样子:一个窗口,两个平台
图形界面用 Avalonia 写的(Windows / Linux 通用),左边一排十个页面:
| 页面 | 干嘛的 |
|---|---|
| 概览 | 一屏看清:装了什么、在跑什么、哪里过期了 |
| 看板 | 会话数 / 缓存命中率 / token 数,一键启停 |
| 会话与 Token | 逐会话明细,父子分组,可排序 |
| 形态与插件 | 一个 profile 装了哪些插件、哪些被禁用、哪些会让它起不来 |
| 备份 | 建包、查包、校验、恢复、导出、删除 |
| 体检 | "到底哪里坏了" + 该改哪一行;点按钮才跑,不自己乱跑 |
| 设置 | 语言、端口、行为,不用手改 YAML |
| 说明 | 版本、致谢,以及它故意不做什么 |
| 更新中心 | dsh / 官方桌面端 / 本工具 / 插件,一处更新 |
| 日志 | 筛选、搜索、导出 |
命令行(dsh-minato):31 个具名命令 + 无参数数字菜单。图形界面调的就是它,它也能单独用:
每个命令都吐机器可读的标记(STATUS_OK / BACKUP_OK / RESTORE_FAIL…),脚本和图形界面照标记办事,不用猜文字。
装法也变了:
| 平台 | 产物 | 说明 |
|---|---|---|
| Windows | dsh-minato-<版本>-win-x64-setup.exe | 双击即装;免安装也行:dsh-minato-win-x64.zip,跑 gui\dsht-gui.exe |
| Linux | dsh-minato-linux-x64.tar.gz | 解包后 ./install.sh,装到当前用户,不用 sudo |
| 校验 | hashes.txt + hashes.txt.asc | 全部产物的 SHA-256,及其 GPG 签名 |
它现在能做什么
| 功能 | 说明 |
|---|---|
| 安装 dsh | 双击。不用碰终端、不用懂 Node.js。装 CLI、配 PATH、加开始菜单,并在旁边留一个卸载器 |
| 一键启停 / 监控 | 一个按钮开 Web UI,实时状态行 + 要打开的网址 |
| 备份 / 恢复 | 会话、设置、凭据一起打包;包带完成标记 + 逐文件内容哈希——被打断或被改过的包会被拒收,而不是悄悄恢复 |
| 备份管理器 | 动手之前先看清每个包里是什么 |
| 换台电脑 | 导出一个包,在新机器上导入 |
| 更新中心 | dsh、官方桌面端、本工具、已装插件,一处更新 |
| 体检 | "到底哪里坏了"——点名坏在哪,并打印那一行修法 |
| 会话与 Token | 逐会话 token / 缓存命中率 / 速度,父子分组 |
| 余额 | 自己填 key 后看 DeepSeek 充值余额与赠送余额;不填就整卡隐藏、一个请求都不发 |
| profile 诊断与处方 | profilecheck 静态扫出哪个文件第几行缺哪个键;profilepatch 幂等、先备份、先预览、必须 --yes 才写、只加一行、失败逐字节回滚 |
| 引导诊断 | bootdiag 从错误链里取最内层病灶,认不出就明说 unknown,不猜 |
| 卸载 | 默认永不删你的数据,且拒绝删除"看起来不像安装目录"的目录 |
| 自检 / 快捷方式 / 自动启动 / 配置读写 | 零碎但日常要用的那些 |
另有一个可选的只读桥接插件 dsh-minato-bridge:dsh 进程里"哪些会话还活着"这件事只有它自己知道,不落盘。不装插件,"运行中"这一列显示 unknown;装了就能实时看到。插件不发模型请求(不烧 token)、不写 dsh 状态、不读会话正文、不联网、不阻塞。
从 2.6 到 3.0,这一路补了什么
2.7 线:从"能用"到"坏了能修"。 托盘常驻、底部状态栏、快捷键、操作气泡;桌面快捷方式可以自选指向 GUI;多了个"验证此安装"按钮(拉官方最新 Release 的 hashes.txt 比对 SHA-256,三态:一致 / 不一致 / 未能验证)。最要紧的是 dsh 起不来时的定位链:profilecheck 扫出哪个 profile 文件、第几行、哪个条目缺哪个键 → bootdiag 从堆栈里取最内层病灶 → profilepatch 带着备份、预览、幂等和回滚,去只加那一行;后来又加了第二条处方 --disable,把任何坏插件先隔离掉再排查(只追加,不改动任何已有字符)。顺带一处诚实修正:restore --dry-run 带相对路径时会谎报"0 个文件",修了(只影响预览,不影响真实恢复)。
3.0.0:转正。 跨平台 CLI + 十页图形界面、Linux 支持(免 sudo 一键装 Node,按 CPU 架构选包,下载后必须过官方 SHASUMS256 校验才解压)、备份/恢复引擎重写(完成标记 + 逐文件哈希 + 恢复前自动锚点可回滚 + 截断包拒收 + 不写穿符号链接)、47 项缺陷修复。代表条目:恢复失败会自动回滚;符号链接 / junction 不再绕过恢复隔离闸门;.. 越界删除一律拒绝;中断的备份会被识别为不完整;wipe 只打印手动删除路径——不删也不备份。CLI 的 Program.cs 拆成七个 partial 文件(3595 → 1060 行);Windows 与 Linux 两端逐字相同的备份代码提成共享基类(此前"一处修 bug 必须记得改两处",而已经漏过一次)。真机验证还抓出三个自动化门槛全都漏掉的问题:tar 包里没有 hashes.txt、5 个 shell 脚本丢了可执行位、桥接插件要求用户手工补 patch 行——三个都在这版修掉。
3.0.1:把"卡"和"读数不诚实"一起修。 切页不再等 CLI 跑完(原来体检要 6.5 秒、更新要 7.9 秒,屏幕一动不动),现在点击立刻换页、带加载指示、数据到账淡入;体检改成点按钮才跑;「挂在 dsh 里」不再被说成「运行中」,改成如实三态(运行中 / 挂着·最后活动 N 前 / 活动未知);设置页分类并改用下拉;新增 DeepSeek 余额检测;图形界面靠裁剪瘦了三分之一(自包含包约 74 MB → 约 50 MB)。另有一处值得记的:.dsh_launcher_root(卸载器"防误删"闸门依赖的标记)曾被取消跟踪,会让发布包丢掉这道闸门——已恢复。
3.0.2(最新):两个实际踩到的坑。 一是更新能连点好几次——每次点击都新起一个 CLI 进程,点三次就是三个 update --yes 同时跑(npm 安装互相踩、连做三次备份、回滚点互相覆盖)。现在同时只允许一个 CLI 动作,正在跑时的点击如实拒绝并说明在跑什么、已经跑了多久——不排队(排队会把看不见的活堆在长任务后面);按钮禁用并显示「进行中:X…」,动作结束在 finally 里必定放开闸门。「立即备份」按钮的同款漏洞一并纳入。二是余额的入口找不到:未绑定 key 时此前连"去哪填"都无处可寻,现在设置页有独立分组、概览页有一行入口——但余额数字在未绑定时仍然一个都不显示。
安全与隐私:只说代码真做的事
- 只在本机活动。 只有这些命令会联网:
check、update-info、update-center、doctor、install、update、verify-install --url,以及balance(且仅在你填了 key 时;没填则完全离线)。其余的——状态、会话、备份、恢复、日志——一个连接都不开。 - 无遥测、无账号、无上传。
- 卸载不删你的数据。 卸载只删它自己的文件;删数据是另一个显式的动作。
- 备份的完整性是"验过"而不是"假定"。 完成标记写在最后,逐文件内容哈希;被打断或被改过的包会被拒收。
- 零第三方运行时依赖(CLI / 安装器 / 启动器 / 插件),唯一的例外是图形界面建立在 Avalonia 上。
- 你填的 API key 是明文存在本机配置里的,且只会由
balance命令发给 DeepSeek 接口。不填,就什么都不存。 - 发布物可核验:CI 生成 SHA-256 清单 + 维护者 GPG 签名(
verify.ps1钉死维护者指纹、打印 Release → Tag → Commit 链);仓库不存二进制,可复现构建。
测试:它自己会考自己
没有第三方依赖,用 C# 的 /define:UNIT 做同程序集单元测试 + 打桩端到端集成测试矩阵(只碰打桩目录,绝不接触真实数据)。当前(3.0.2)跑的是:契约测试 355 项 · GUI 逻辑 68 项 · 桥接插件自测 25 项,另保留 v2 线 318 项单元测试;CI 在 windows-latest / ubuntu-latest 两平台全绿,Windows 包里还含一个真的启动并创建窗口的 GUI 冒烟。备份 / 恢复 / 删除走真实往返(隔离根),符号链接 / junction 双向验证,发布物自证(篡改可检出)。烤出来的面包,先自己尝过才敢端上桌。
第一次用(三步)
- 先核对再运行:Windows 产物没有数字签名,SmartScreen 可能弹"未知发布者"——先用公布的
.sha256(和 GPG 签名的hashes.txt)核对一遍再点。 - 装:Windows 双击安装器(或解压免安装包跑
gui\dsht-gui.exe);Linux 解包后./install.sh。打开就是那扇十页的窗口。 - 出问题先体检:点「运行体检」,它会点名坏在哪并给出那一行修法;profile 坏了就走
profilecheck → bootdiag → profilepatch。
诚实的边界
- 这是第三方非官方维护的项目,与 DeepSeek 官方无关,不承诺与未来 dsh 版本的兼容性。它不是 dsh 插件:是独立进程,不注入 dsh,dsh 没装也能用。
- Windows 产物没有数字签名——请用公布的
.sha256与 GPG 签名核对,而不是依赖证书。 - 图形界面基于 Avalonia,因此不是零依赖——项目其余部分是。
- 桥接插件需要 pnpm;
desktopprofile 由官方桌面端独占管理,插件要在桌面端自己的对话框里添加。 - Linux 真机验证停留在 3.0.0(3.0.1 / 3.0.2 只有 CI 的打包与冒烟),如实写明。
- 如果你是终端熟练用户,直接用官方 npm 命令更轻快;这个工具是给"不想碰终端"的人准备的——毕竟,总有人只想吃面包,不想管炉子。
获取
GitHub:https://github.com/sakanamaru/dsh-minato(旧地址 DeepSeek-Harness-Toolkit 会自动跳转到新仓库)
项目自 3.0.0 起正式更名
dsh-minato,旧称 DeepSeek Harness Toolkit 不再使用。本文的链接也一并换成了https://shiogiri.com/posts/dsh-minato——从收藏夹点进来的话,麻烦重新收一下。
MIT 许可(代码),源码、构建脚本、哈希清单、测试都在仓库里;图标不是 MIT(见仓库 docs/ASSETS.md),转载或二次发布时请保留署名与"非官方"声明。
在雾星町,面包房的烤箱从不空着。
v1 脚本协助:SOGR-Momono Dango · v2 重构封装:DeepSeek DSH · GitHub:@sakanamaru