DeepSeek Harness Hub
← 返回列表

sakanamaru/DeepSeek-Harness-Toolkit

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
需源码安装

DeepSeek Harness Toolkit - Windows 安装 / 启动监控 / 备份恢复工具箱…

暂不能直接安装(需源码编译或环境不满足):仓库缺少 package.json,无法用 dsh 插件安装命令安装。 · 最近上游提交 2026/9/19 · 已提供中文文档

DeepSeek Harness Toolkit - Windows 安装 / 启动监控 / 备份恢复工具箱 (unofficial)

综合分
32.2
GitHub 分
32.2
用户评分
★ Stars
3
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add sakanamaru/DeepSeek-Harness-Toolkit
仓库缺少 package.json,无法用 dsh 插件安装命令安装,改用 GitHub 源安装
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包DeepSeek-Harness-Toolkit(未发布到 npm,仅可源码安装)
Node 引擎未声明 engines.node
dsh CLI 依赖未声明 dsh 版本约束
入口文件缺少入口声明

仓库缺少 package.json,无法用 dsh 插件安装命令安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 02:17:11

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

DeepSeek Harness 工具包

English · 简体中文

适用于 DeepSeek Harness (dsh) Web UI 的 Windows 安装程序、监控、备份与还原工具 —— 双击即用。

一款面向 DeepSeek Harness (dsh) 的第三方、非官方启动器 / 运维工具。
安装、启动、监控和卸载 dsh Web UI,内置数据备份 / 还原功能。无需终端。

⚠️ 本项目为非官方项目,与 DeepSeek 无任何关联。

官方下载

仅本仓库的 Releases 页面 提供官方二进制文件 —— 其他任何来源(网盘转载、"付费 / 破解 / 修改"版本、其他网站或账号)均非官方。本项目免费且开源(MIT);任何人无权售卖。运行前请先验证:verify.ps1 会对照 CI 生成的清单校验 SHA-256 及 GPG 签名,而 GitHub 工件证明(artifact attestation)是一项独立的额外来源校验,verify.ps1 并不执行该检查 —— 工件证明同样不能替代 GPG 签名校验。信任模型、供应链控制措施及手动验证步骤详见 SECURITY.md。

截图

七个 GUI 页面(变体 B / C)及其驱动的 CLI 核心(变体 A —— 一切皆可脚本化):

| 主页 —— 状态与操作(浅色) | 主页(深色) | 备份 —— 列表、还原 / 导出 / 删除 |
|:---:|:---:|:---:|
|  |  |  |

| 更新中心 —— 只读更新概览 | 设置 —— 四个配置分组 | 日志中心 —— 级别、筛选、搜索、导出 |
|:---:|:---:|:---:|
|  |  |  |

| 关于 —— 版本、致谢、非官方声明 | CLI —— 交互式菜单 | CLI —— 实时状态监控(3 种状态) |
|:---:|:---:|:---:|
|  |  |  |

点击任意截图可打开全尺寸图片。前七张是 GUI 页面;最后两张是 GUI 所驱动的 CLI 核心 —— 交互式菜单(所有功能均可脚本化:install · start --bg · stop · backup · restore · status · about · …)和实时监控(通过端口 + HTTP 进行三态检测、Web 地址、运行时长、dsh 与 Node.js 版本,每 3 秒刷新一次)。

你可以用它做什么

在 Windows 上安装 DeepSeek Harness —— 双击即可,无需终端

一个 exe 即可检测 Node.js/npm 环境,从默认官方源安装 @deepseek-ai/dsh(可选择 npmmirror,失败时自动切换到另一源重试),然后验证安装结果。未经你按键确认,不会安装任何内容。

启动、停止并监控 dsh Web UI

启动时会检测服务状态 —— 运行中 / 启动中 / 已停止(经 TCP + HTTP 双重验证,因此 :3080 上的其他进程绝不会被误认为 dsh)—— 自动启动 dsh 并倒计时 5 秒,打开浏览器,并保持实时状态视图(状态 / 端口 / 运行时长,每 3 秒刷新一次;断开连接时红色告警)。

备份和恢复 dsh 数据 —— 包括会话和凭据

一键将 dsh 数据目录(~/.dsh)完整备份到 exe 同级的 backup\ 中;支持带确认的列表恢复、打开备份文件夹;手动备份永久保留,自动备份遵循保留策略;每个危险操作(恢复 / 导入 / 清除 / 更新)都会先自动备份。

将 dsh 迁移到另一台电脑

将备份文件夹复制到新机器并使用导入 —— 支持多工作区(_workspace\name\),兼容旧备份格式,长路径安全(\\?\,>260 字符)。

备份管理器 —— 在动任何东西之前,清楚看到你备份了什么

GUI 的备份页面将每个备份列为一行(时间、类型:手动 / 自动 / 更新前 / 恢复前 / 清除前、大小、有效性),并提供针对所选备份的恢复 / 导出 / 删除操作以及一键立即备份;任何更改后列表都会自动刷新。恢复操作始终先运行试运行:确认对话框会显示将添加、覆盖或保留多少文件(仅存在于目标位置的文件绝不会被删除)以及大致将复制多少数据 —— 在你确认之前不会有任何更改。同样的计划也可通过 restore --path  --dry-run 以无界面方式获取(机器可读的 DRYRUN_ 行),交互式清除流程也会在两步确认之前预览其删除数量(文件 / 目录 / 总大小)。

更新或干净卸载 dsh
菜单驱动的 dsh 更新(版本列表含 rc 预发布版、破坏性操作双重确认、更新前备份;失败时打印备份位置 + 手动回滚命令——绝无静默的半成品状态)与卸载(默认保留数据;彻底清除需要两步确认,且仅在 dsh 停止运行时执行)。

更新中心——更新前先了解情况

GUI 的更新页面以只读方式可视化整个更新全貌:当前 dsh 版本、最新稳定版、最新 rc 版、更新通道(update_channel=stable|rc)、最近一次更新前备份、回滚候选(有效备份数量),以及 dsh 发行说明的链接。检查按需刷新;实际更新始终走交互式流程(版本列表 + 破坏性操作双重确认)——检查可以自动,更新绝不自动。

设置页面——无需编辑配置文件即可更改行为

GUI 的设置页面编辑工具包自身的配置(launcher.config,仍是纯 key=value),分为四组:Harness(Web 主机、工作区路径)、备份(自动备份保留数量,≥3)、更新(启动时更新检查、dsh 更新检测、更新通道)、工具包(UI 语言、菜单自动启动倒计时、关闭窗口行为)。保存仅提交你实际更改的键,超出范围的值会在核心侧被拒绝——一个笔误无法悄悄损坏你的配置。无头等价命令:config-get(读取所有键)和 config-set  (白名单写入)。

健康检查——“到底哪里坏了?”

doctor(CLI)和 GUI 的 Doctor 页面运行只读的七类检查——系统(Windows / Node / npm)、Harness(是否安装及版本)、服务(端口、监听者身份、HTTP、三态)、工作区(路径、权限、大小)、备份(目录、最新、时间)、网络(注册表可达性)、完整性(运行中的 exe 与捆绑的 hashes.txt:匹配 / 不匹配,报告为错误 / 未找到清单,对单个复制的 exe 属正常)——并以机器可读的判定结束(DOCTOR_OK 0 / DOCTOR_WARN n / DOCTOR_ERROR n)。doctor --report  导出完整诊断报告,其中 API 密钥 / 令牌 / cookie / 密码均已脱敏。

“dsh 启动不了”——从错误到那一行修复命令

一个真实故障(2026-09-15):dsh web 拒绝启动,报错为

plugin tree failed to load: … provider "kimi" cannot enforce maxDepth (no depthLimit capability) — set maxDepth: 'provider-managed' …

解决办法是一行,写在现有 profile 条目的 config: 块内。profile 补丁层是 YAML,其中带 id 的条目会修改现有行,而新行必须放在 insert: 下——因此本工具绝不重构文件、绝不增删条目、绝不触碰其他任何内容。从原始错误到修复处方的四个步骤:

| # | 步骤 | 告诉你什么 |
| --- | --- | --- |
| 1 | 错误说了什么 | 对捕获的输出运行 bootdiag,或对 profile 目录运行 profilecheck |
| 2 | 哪个插件 | BOOTDIAG_PLUGIN(例如 @deepseek-ai/dsh-tool-subagent) |
| 3 | 哪个条目和行号 | BOOTDIAG_ENTRY + BOOTDIAG_FILE / BOOTDIAG_LINE(例如 tool-subagent-kimi,cordis.patch.yml 的第 20 行) |
| 4 | 一行处方 | 该条目 config: 块内的 maxDepth: 'provider-managed' |

1) Proactive scan (read-only): which profile entries would break a boot?
DeepSeek Harness Toolkit.exe profilecheck              # alias: pc
DeepSeek Harness Toolkit.exe profilecheck --vendor     # also scan node_modules (skipped by default)

2) Already failed to start? Save the startup output to a text file, then:
DeepSeek Harness Toolkit.exe bootdiag --from captured.txt    # alias: bdiag

3) The prescription — preview first, then apply (backup → verify → rollback on failure):
DeepSeek Harness Toolkit.exe profilepatch --file  --id  --set maxDepth=provider-managed
DeepSeek Harness Toolkit.exe profilepatch --file  --id  --set maxDepth=provider-managed --yes

在 GUI 中,Doctor 页面有一个 Config Check 按钮,功能相同:它运行 profilecheck,当发现可修复的风险时,会请求确认,然后通过 profilepatch 备份并修复它们,并重新扫描。

诚实的局限——实时崩溃不会为你检测。 从一次实时失败的启动中自动检测此故障并非自动完成:该工具无法自行看到那次崩溃。要么主动运行 profilecheck(对 ~/.dsh/profiles//.yaml|.yml 进行静态、只读扫描),要么将失败的启动输出保存到文件并运行 bootdiag --from (它从不猜测——无法识别的错误会打印 BOOTDIAG_KIND unknown 以及第一行错误)。扫描和两个诊断都是只读的;写入路径需要显式 --yes,始终先备份,只添加那一行,通过重新扫描进行验证,并在失败时自动回滚,而且它从不接触凭据,从不上网,默认也从不编辑 node_modules 下的文件。在维护者自己的机器上,扫描在 7 个 profile 文件中恰好发现了一个真实遗留问题(subagent-acp-kimi 缺少 maxDepth),同时跳过了 node_modules 下的 563 个包文件;bootdiag 将真实捕获的堆栈解析为 @deepseek-ai/dsh-tool-subagent / tool-subagent-kimi / cordis.patch.yml 的第 20 行;而在一个副本上运行 profilepatch 恰好添加了一行,并在第二次运行时报告 NOOP。

日志中心——过滤、搜索、导出

GUI 的 Log 页面是一个结构化操作日志:每个条目都带有级别(INFO / WARN / ERROR)和时间戳,具有一键级别过滤、实时搜索框以及 Export / Copy 按钮(导出会写入一个 UTF-8 文本文件)。失败——超时、被拒绝的操作、缺少核心——会记录为 WARN/ERROR,以便你可以直接跳转到出错的地方。

托盘、状态栏和快捷键
GUI 保留一个托盘图标(显示窗口 / 启动 dsh / 停止 dsh / 退出),并记住关闭窗口时应执行的操作:第一次关闭时,它会询问一次——最小化到托盘还是直接退出——并将答案存储在 close_action 中(ask | tray | exit,为空 = 从未询问过),之后可在设置页面更改。底部状态栏显示服务状态、PID、运行时长、当前主题和语言以及快捷键提示(无界面版本对应的是只读的 status --detail,它在三态标记行中额外添加 STATUS_PID / STATUS_START / STATUS_UPTIME);Ctrl+1~Ctrl+7 切换页面,F5 刷新状态,Ctrl+B 运行备份(文本输入框保留自己的按键)。备份 / 恢复 / 导出 / 删除的结果会以托盘气泡通知的形式返回。

“验证此安装”——检查你下载的内容

关于页面有一个验证此安装按钮:它会下载官方的 hashes.txt(纯文本——没有 JSON,没有第三方依赖),并将核心 exe 和 GUI exe 的 SHA-256 与其进行比对,有三种结果:匹配 / 不匹配 / 无法验证。同样的比对会在每次启动时于本地运行——无需网络——对照 exe 旁边捆绑的 hashes.txt,并且第一次启动只运行该完整性自检(在既没有环境清单也没有备份提示的机器上,不会进行环境清点和备份提示)。准确地说,它是什么:一种哈希一致性检查,不是签名验证,也不是发布者身份证明——参见 SECURITY.md。

为什么选择这个工具

| | 官方(npm CLI) | 本工具 |
| --- | --- | --- |
| 目标用户 | 熟悉终端的开发者 | 普通用户 / 批量安装 / 远程协助 |
| 安装 | 先安装 Node.js,然后输入命令 | 双击 exe:检测环境;你选择(按 1)是否安装 dsh |
| 日常使用 | 每次手动打开终端和浏览器 | 启动时检测:自动启动、打开浏览器、每 3 秒监控一次 |
| 运维 | 无 | 备份 / 恢复 / 跨电脑导入、卸载(两步确认)、入口切换、双语 UI |
| 故障排除 | 原始终端错误 | 友好消息、健康检查、自检报告 |

诚实的局限:

1. 非官方维护。 不承诺与未来 dsh 版本兼容。如果 dsh 更改其默认端口 / 启动命令 / 数据目录,本工具必须更新(这些点到目前为止一直稳定)。
2. 信任边界。 分发 Windows exe 会带来固有的信任成本——因此本项目完全开源(MIT),每个版本都由 GitHub Actions CI 从源码构建,并附带 hashes.txt(SHA-256)+ GPG 签名,以便任何人都可以验证发布版本。
3. 定位。 如果你熟悉终端,官方 npm 命令更精简;本工具面向不想接触终端的人。

🖥️ GUI 面板(三种变体)
自 v2.4.1 起,图形面板以三种形式提供——选择适合你的那一种(面板现为七个页面:主页 · 备份 · 更新 · 设置 · 日志 · 诊断 · 关于;上方截图展示的是主页 / 日志 / 关于):

| 变体 | 文件 | 解压 / 运行 | 适用人群 |
|---|---|---|---|
| A. CLI 核心 | DeepSeek Harness Toolkit.exe | 完整解压,双击 | 终端用户、脚本/自动化 |
| B. 附带 GUI | Toolkit GUI.exe + 核心放在其旁边 | 必须完整解压——GUI 依赖同级的核心 exe;单独复制一份会显示“未找到核心 exe(CLI)” | 随核心一起部署的 GUI 用户 |
| C. GUI 独立版 | Toolkit GUI Standalone.exe | 单文件,完全独立——内嵌核心,并在首次启动时将其解压到自身旁边 | “一个 exe 搞定一切”的用户 |

共享功能:七个页面(主页——状态指示灯 + dsh 版本 + Web 地址 + 操作按钮 · 备份——备份列表,含还原 / 导出 / 删除 + 立即备份 · 更新——只读更新概览 · 设置——四个配置组,现包含菜单自动启动倒计时和关闭窗口行为 · 日志——结构化日志,含级别筛选、搜索、导出/复制 · 诊断——七类只读健康检查(含 exe 与随附 hashes.txt 的比对) · 关于——版本、致谢、非官方声明、验证此安装)、深色/浅色主题、中文/英文、无边框圆角窗口、内嵌 Logo;托盘图标(显示 / 启动 dsh / 停止 dsh / 退出)、底部状态栏(状态 · PID · 运行时长 · 主题 · 语言)以及 Ctrl+1~Ctrl+7 / F5 / Ctrl+B 快捷键;操作包括启动 Web(左上角)/ 安装 dsh 或修复 dsh(标签随检测结果变化)/ 停止服务 / 立即备份 / 还原备份(先弹出试运行确认对话框) / 检查更新 / 卸载 / 桌面快捷方式 / 刷新状态。在已运行时启动 Web 只会打开浏览器;任何还原之前都会自动备份当前数据。

推荐用法:

- 日常运维 → C(独立版):备份/还原/启动/停止全部在 GUI 内完成,一个文件就够了
- 脚本 / 自动化 / 远程协助 → A(CLI 核心):以编程方式操作(status / start --bg / stop / backup / restore --path ...)
- 完整 zip 包含全部三个 exe + 文档;解压后任选其一。B 和 C 可以共存(核心 exe 名称相同,不会冲突)

必须完整解压:

- 变体 B:GUI 和核心必须位于同一文件夹;单独的 GUI 会拒绝操作,并在日志中给出说明
- 卸载时的“清除所有数据”依赖包中随附的 .dsh_launcher_root 标记(防误操作设计;程序绝不会创建它):如果你把变体 C 复制到一个新文件夹,该文件夹缺少此标记,清除操作会被安全拒绝——需要清除时请从完整包文件夹中操作

可独立运行:

- 变体 C:单个 exe,功能完整(内嵌核心在首次启动时解压——通过临时文件 + 原子重命名,中断的解压绝不会留下损坏的 exe)
- 变体 A:单个 exe 覆盖启动/停止/备份/恢复;安装/清除仍最好使用完整包(.dsh_launcher_root 标记)

底层 CLI 正是核心部分(安装/更新/卸载仍会打开真实的控制台窗口进行交互)。

快速开始

1. 下载 Releases 页面 上的最新版本——日常使用请获取 Toolkit.GUI.Standalone.exe(变体 C)。
2. 解压到它自己的文件夹中(例如 D:\tools\)——备份和配置就放在 exe 旁边;把它放在桌面上会弄得一团糟。(GUI 和 CLI 都会检测从桌面/下载文件夹启动的情况并发出警告:GUI 会在继续前请求确认,CLI 会打印一条提示。)
3. 双击 exe。 如果未安装 dsh → 菜单会等待你操作;按 1 进行安装(默认使用官方源,可选 npmmirror,约 1–3 分钟)。之后再次运行——Web UI 会自动打开。

用法

双击 DeepSeek Harness Toolkit.exe,或使用命令行:

DeepSeek Harness Toolkit.exe install|start|uninstall|update|check|about|help
DeepSeek Harness Toolkit.exe profilecheck|bootdiag|profilepatch     # 当 dsh 无法启动时(见下文)

不带参数启动会打开交互式菜单:已安装 dsh 时,首次运行会在 5 秒倒计时后自动启动 Web UI(可中断);之后的启动也会自动启动。设置 auto_start=off 可取消倒计时——菜单随后会等待手动选择并说明这一点。如果 dsh 未安装,菜单会等待你的选择(按 1)——不会自动安装任何内容。如果服务已在运行,则直接进入状态页面。

关于工作区: 备份会自动检测工作区(exe 上两级目录,排除明显的系统/用户目录);你也可以通过菜单 7 Entry → 3 Set workspace path 手动且持久地设置(launcher.config 中的 ws= 行)。支持多个工作区——逐个添加路径(按空 Enter 结束)——打包在 _workspace\name\ 下并逐个恢复。

FAQ

| 问题 | 解决方法 |
| --- | --- |
| dsh web 无法启动(plugin tree failed to load、cannot enforce maxDepth) | 运行 profilecheck(或保存启动输出并运行 bootdiag --from ),然后用 profilepatch … --yes 应用一行式处方——或使用 GUI Doctor → Config Check。参见上文“dsh 无法启动”部分 |
| 403 或空白页面 | 菜单 7 Entry,切换 127.0.0.1 ↔ localhost(浏览器将它们视为不同站点;缓存过期会导致问题) |
| 卸载/清除时删除失败 | 先关闭 dsh web 窗口(文件锁定),重试;如果仍然失败,请查看 logs\launcher.log |
| 备份失败 | 查看 exe 旁边的 logs\launcher.log 以了解真实原因 |
| 备份失败(PathTooLongException) | 已内置长路径支持和跳过 dsh-data-;如果日志仍显示路径问题,请将该文件夹移出工作区 |
| 提示输入额外路径 | 逐条输入每个额外工作区路径(空回车结束),或在 7 Entry → 3 下预设一个 |
| GUI 提示 "Core exe (CLI) not found" | 变体 B 必须放在 DeepSeek Harness Toolkit.exe 旁边——解压完整包,或改用变体 C(独立版) |

从源码构建

需要 Windows 上内置的 .NET Framework 4.x(Win10 / Win11 已预装):

"%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /nologo /optimize+ /target:exe /win32icon:icon.ico /out:"DeepSeek Harness Toolkit.exe" dsh_v2.cs

或双击本目录下的 build_exe.cmd。GUI 从同规则的单文件 gui_v2.cs 编译(一份源码 → 同时生成附加版和独立版两种变体;独立版额外添加 /resource:,DSHCore.exe)。

可复现发布(源码 == 产物): 每个 GitHub Release exe 都由 GitHub Actions CI 从本源码编译,且 hashes.txt 在同一次运行中由 CI 重新生成并 GPG 签名。标签构建还会额外发布 GitHub 产物证明(artifact attestation)——一项独立的来源校验,需用 gh 单独验证;verify.ps1 不检查它,它也不能替代 GPG 签名检查。仓库不存储任何二进制文件。

开发 / 测试

无需测试框架或第三方依赖。

- 单元测试(277 个)——同程序集测试代理(/define:UNIT;测试入口点是 tests\unit_tests.cs,其余全是被测的生产代码):
"%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /nologo /target:exe /define:UNIT /out:unittests.exe dsh_v2.cs tests\unit_tests.cs
unittests.exe

退出码 0 = 全部通过。覆盖范围:路径往返(含 UNC / 非 ASCII)、工作区黑名单、dsh-data 标记、根标记严格性、备份目录校验、日志轮转、备份命名 + 保留策略、服务状态判定、版本比较 / 发布解析 / 更新检测、netstat PID 解析、试运行合并/删除规划(含恢复侧跳过规则的保真度)、备份类型解析、导出 / 删除校验、回滚候选查找、配置白名单(含 close_action / auto_start 键)、状态栏运行时长格式化、profile 块扫描 / bootdiag 输出解析 / 受控补丁路径(单行计划、幂等 NOOP、备份、验证与回滚)。

- 集成测试(33 个用例)——桩化端到端矩阵(变体 A/C,真实 3080 探测;保留策略、运行时阻止恢复/导入、双语断言):
pwsh -NoProfile -File tests\integration.ps1

仅触及桩化数据目录 ~/.dsh_test——绝不触碰你真实的 ~/.dsh。当端口 3080 关闭时,与“运行中”相关的用例会被 SKIP,而非失败。退出码 0 = 全部通过。
- CI — GitHub Actions 在每次推送到 main、每个拉取请求以及每个 v 标签时,都会运行两套测试套件外加一个三变体 GUI 编译防护;发布资产 + hashes.txt(+ GPG 签名)仅在 v 标签推送或手动触发(workflow_dispatch)时重新构建。

目录布局

dsh_v2.cs            CLI 核心源码(C#5,单文件,无第三方依赖)
gui_v2.cs            GUI 源码(WinForms;一个文件 → 附加 + 独立变体)
app.manifest         GUI 清单(DPI 感知 / 兼容性)
build_exe.cmd        重新构建脚本(核心)
icon.ico             程序图标
logo.png             产品徽标(1536×1536)
verify.ps1           一键发布验证(SHA-256 + GPG)
keys/                维护者 GPG 公钥
SECURITY.md          安全策略、数据与网络边界
CHANGELOG.md         发布历史(双语)
hashes.txt           SHA-256 清单(由 CI 按每次发布重新生成)
tests/               单元测试(277)与集成测试(33)——无第三方依赖
docs/screenshots/    README 截图
.github/workflows/   CI:推送/PR 时运行测试;标签/手动触发时构建发布 + GPG 签名
.dsh_launcher_root   安装标记(随包发布;删除防护)
backup/  logs/       运行时目录(已被 gitignore —— 从不提交)

错误日志

- 运行时错误(备份 / 恢复 / 卸载失败、进程启动失败等)会写入 exe 同目录下的 logs\launcher.log(带时间戳;超过 1 MB 后轮转为 launcher.log.1)。
- 日志仅记录错误消息和文件路径——绝不记录密码 / API 凭据。它已被 gitignore,从不提交。

安全说明

- 完整策略:参见 SECURITY.md(通过 GitHub Security Advisories 私下报告)。
- 运行前先验证(约 20 秒):

powershell -ExecutionPolicy Bypass -File verify.ps1 -Tag v2.7.0 -OutDir D:\verify

verify.ps1(随包发布)会下载发布产物(全部三个
变体 + hashes.txt),对照 CI 生成的 hashes.txt 校验 SHA-256,
使用临时隔离密钥环对照固定的维护者
指纹验证 GPG 签名(hashes.txt.asc)(你的本地密钥环永远不会被
信任——由任何其他密钥生成的签名都会被拒绝),并打印
Release → Tag → Commit 溯源链(标签对象、提交、提交 URL)。
只读——不安装任何内容。使用 -Tag 时,它使用固定的发布
下载 URL,且从不调用 GitHub API(不受匿名速率限制影响);
不使用 -Tag 时,它通过 API 解析最新发布(可选 -Token 用于
受速率限制的网络)。
- GPG 签名:hashes.txt 使用维护者的密钥签名(hashes.txt.asc);
公钥 keys/sakanamaru-gpg.asc,指纹
A2F67D170B5BE4845612642C240979232B4E4CE4。
- GitHub 产物证明——一项独立的额外检查:标签构建还会发布一个
GitHub 产物证明;使用以下方式验证它
gh attestation verify  --repo sakanamaru/DeepSeek-Harness-Toolkit。verify.ps1 不验证证明,且证明不替代 GPG 签名校验——两者相互独立,因此任选其一,或者(更好)两者都运行。
- 内置完整性检查能证明什么——以及不能证明什么:GUI 的“Verify This Install”按钮、启动/首次运行一致性检查以及 doctor 的 Integrity 类别,仅将文件与其旁边随附的 hashes.txt 进行比对——若同时替换 exe 和该清单文件即可通过检查,因此它们证明的是一致性,而非发布者身份。身份/来源仅来自 GPG 签名的 hashes.txt(或 verify.ps1)以及 GitHub 证明。这些检查是只读的(status --detail 也是),且 HTTPS 请求显式启用 TLS 1.2——参见 SECURITY.md。
- 卸载时的 “Wipe all data” 会删除 dsh 数据目录(~/.dsh,包括会话和 API 凭据)——该工具会先自动将其备份到 backup\。
- 删除操作受三重保护:
1. 在 dsh Web 服务运行时被阻止(避免文件锁定)。
2. 启动器根标记(.dsh_launcher_root)必须存在于包文件夹内部——它随发布包一同提供,程序自身从不创建它,被复制到其他位置的散落 exe 会被永久拒绝。
3. 目标目录必须包含 dsh 数据标记(settings.yaml / credentials.yaml / sessions …)。
任何不匹配 → 拒绝删除。
- 本工具仅涉及本地数据;源码中不包含任何凭据或个人信息。
- 备份是尽力而为的文件复制,而非事务快照——为获得最一致的备份,请在备份前停止 dsh。

再分发与致谢(请阅读)

本项目为 MIT 许可证下的开源项目。你可以自由使用、修改和再分发,但必须遵守以下规则:

1. 保留致谢。 应用内(启动横幅 / 关于页面 / 文件属性)及本文档中的 v1 / v2 贡献者致谢和 GitHub 链接不得移除或替换。
2. 保留声明。 “Unofficial” 声明及本 LICENSE 版权声明必须随每一份副本分发。
3. 如实署名。 对于商业或再分发版本,请注明源仓库和原作者;移除致谢将被视为侵权,作者保留提出投诉(包括 DMCA)及采取法律行动的权利。
4. 验证发布版本。 本仓库中的 hashes.txt 记录了官方发布文件的 SHA-256 指纹;任何声称“官方编译”的二进制文件均可据此验证。

许可证

MIT License

致谢

- DeepSeek Harness (dsh)
- Logo:在 ChatGPT(OpenAI)协助下设计,为 v2 重新裁剪
- v1 脚本协助:SOGR-Momono Dango(QwenPaw/DeepseekAPI-V4-Flash-0731)
- v2 重写与打包:DeepSeek DSH(DSH/DeepseekAPI-V4-Flash-0731)
- GitHub:@sakanamaru  https://github.com/sakanamaru

如果这个工具对你有帮助,在仓库右上角点个 ⭐ 意义重大——它能让这个项目持续下去。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群