← 返回列表
需源码安装
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 如果这个工具对你有帮助,在仓库右上角点个 ⭐ 意义重大——它能让这个项目持续下去。
扫码进群