给 DeepSeek Harness 桌面版Windows 用的一层启动保险:启动路径上不加等待,旁边挂一个看门狗…
32.9/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/Su-1003/dsh-guard-boot.git按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-guard-boot(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/18 19:12:58
安全扫描自动 · 静态分析源码v2.7.0⚪ 扫描:无法判定尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。
- · 包内无可扫 JS
- · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/3(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
Windows 上 DeepSeek Harness 的边车启动守卫:启动前做快照,应用起不来时自动回滚。
README
由 DeepSeek 最新模型翻译生成dsh-guard-boot
dsh-guard-boot
给 DeepSeek Harness 桌面版(Windows) 用的一层启动保险:启动路径上不加等待,旁边挂一个看门狗 —— 发现启动失败,自动回滚配置并重新拉起。
简体中文 · English
它不是插件。它完全住在 DSH 外面 —— 不写 profile,不进 bundle 名册,不参与 boot。DSH 崩了它还在。
获取
git clone https://github.com/Su-1003/dsh-guard-boot.git
cd dsh-guard-boot
没有 git 就下 zip 解压,效果一样 —— 它只是个文件夹,没有依赖、不用 npm install。
为什么不在 DSH 里做
因为「守门人不能住在门里」。真实经历:
- 装了一个第三方插件,重启后 GUI 弹「应用无法启动」:web boot: 1 entry did not activate / pending (waiting for service: settingsScope);
- 唯一的自救按钮是「禁用第三方插件」,一点下去 25 个 bundle 全被停用,配置被替换成极简版,事后要手工从备份还原;
- 那个插件之所以拖垮启动,正是因为它自己要求在 boot 时装进 cordis 树。
展开完整文档(README 剩余 1 节)
dsh-guard-boot dsh-guard-boot 给 DeepSeek Harness 桌面版(Windows) 用的一层启动保险:启动路径上不加等待,旁边挂一个看门狗 —— 发现启动失败,自动回滚配置并重新拉起。 简体中文 · English 它不是插件。它完全住在 DSH 外面 —— 不写 profile,不进 bundle 名册,不参与 boot。DSH 崩了它还在。 获取 git clone https://github.com/Su-1003/dsh-guard-boot.git cd dsh-guard-boot 没有 git 就下 zip 解压,效果一样 —— 它只是个文件夹,没有依赖、不用 npm install。 为什么不在 DSH 里做 因为「守门人不能住在门里」。真实经历: - 装了一个第三方插件,重启后 GUI 弹「应用无法启动」:web boot: 1 entry did not activate / pending (waiting for service: settingsScope); - 唯一的自救按钮是「禁用第三方插件」,一点下去 25 个 bundle 全被停用,配置被替换成极简版,事后要手工从备份还原; - 那个插件之所以拖垮启动,正是因为它自己要求在 boot 时装进 cordis 树。 所以这层保险放在进程之外:它读文件、写文件、杀进程,从不被 DSH 加载,也不会被「禁用第三方插件」一键停掉。 它做什么 | 场景 | 看门狗看到什么 | 它做什么 | | 正常启动 | 20 秒内没有新的 crash-.log | 把当前 6 个配置存成 last-good,安静退出 | | 启动被配置/插件拖垮 | 出现新的 crash-.log | 杀进程 → 回滚 6 个文件 → 重新拉起 → 弹窗告知 | | 连快照都写不出来 | 快照得到 0 个文件 | 记一行日志就退出,不碰你的任何文件(fail-open) | | 进程根本没起来 | 进程数为 0 | 不刷新 last-good,防止坏配置被认证成好配置 | | 进程活着但窗口没出现 | 120 秒内没有窗口 | 同样不刷新:卡死的配置不算「跑通」 | 判据只看崩溃日志,不看进程存活:web boot 失败时进程是活得好好的,只有日志是新的。 快照与回滚点 每次从图标启动都先拍一份 pre-boot-<时间戳>(保留最近 5 份,旧的自动删);20 秒内没崩、且窗口真的出现,再把当前配置刷成 last-good。 回滚时另存的 pre-rollback-<时间戳> 与 restore.ps1 留下的 pre-restore-<时间戳> 都保留最近 10 份;logs\ 里超过 90 天的 watchdog-.log 也会自动清掉。 回滚不按时间挑,用的永远是 last-good —— 也就是「上一次启动成功的配置」。这点很关键:失败的那次启动不会刷新它(进程数为 0 时更是直接跳过),所以回滚点不会退化成那份坏配置。 快照里的 6 个文件: | 文件 | 管什么 | | package.json | bundle 名册、依赖 | | pnpm-lock.yaml | 依赖版本锁定 | | pnpm-workspace.yaml | workspace 配置 | | cordis.yml | 启动时由 boot 重写,通常内容极少 | | cordis.patch.yml | 插件配置覆盖层,真正容易坏的那个 | | compatibility.json | 插件 → 支持的 DSH 版本映射,被改坏会让插件判定失真 | 安装 powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 install.ps1 会:找 exe(卸载表 → 已有快捷方式 → 常见路径)→ 写 config.ini → 用当前配置预置一份 last-good → 在桌面建快捷方式。预置要求 6 个受管文件凑齐;缺文件的 profile 不会播种(半份快照可能把你回滚到起不来的配置),这时正常启动一次、让看门狗自己认证即可。 找不到 exe 时显式指定: powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 -ExePath "D:\apps\DeepSeek Harness\DeepSeek Harness.exe" 之后日常用桌面上的 DSH(守护启动) 图标启动;原来的 DeepSeek Harness 图标保持不动,随时可以回退。 快捷方式默认名是 DSH (guarded),想改成自己的名字:-ShortcutName "DSH(守护启动)"。图标默认用 assets/logo.ico,删掉该文件则回退到 exe 自带图标。 配置(config.ini) ExePath=E:\path\to\DeepSeek Harness.exe ProfileName=desktop WaitSeconds=20 ProfileName 对应 %USERPROFILE%\.dsh\profiles\<name>。WaitSeconds 是判定窗口,默认 20 秒。 文件 | 文件 | 作用 | | install.ps1 | 一次性安装:找路径、写配置、预置 last-good(需 6 文件齐全)、建快捷方式 | | start-dsh.vbs | 双击入口。先跑 cookie 体检,再起 exe,最后隐藏起看门狗 | | watchdog.ps1 | 快照、判定、回滚 | | preflight.ps1 | 启动前的 cookie 体检(只在 exe 起来之前读得到那个库) | | test.ps1 | 回归测试:25 组用例、88 条断言,跑一遍约 1 分钟 | | restore.ps1 | 手动把某一份快照恢复到 profile(last-good / 任意 pre-boot- / 绝对路径) | | config.ini | 由 install.ps1 生成,可手改 | | assets/logo.ico | 快捷方式图标(install.ps1 优先用它) | | assets/logo.png | 仓库头像 / 文档用图(assets/make-logo.py 用 Pillow 生成) | 快照目录:%USERPROFILE%\.dsh\boot-snapshots\(last-good\ 一份 + 最多 5 份 pre-boot-\ + 最多 10 份 pre-rollback-\ + 最多 10 份 pre-restore-\,合计约 1 MB)日志目录:logs\(每次启动一份 watchdog-<时间戳>.log,超过 90 天自动清理) 启动耗时 健康启动的日志里会多一行: startup: 12 s (window visible) 它量的是 exe 起到窗口真正出现(MainWindowHandle 非 0)的秒数,最多等 -StartupWatchSeconds(默认 120 秒)。 只认「本次启动」的新实例——旧实例的窗口一直开着,不筛的话每个数字都会是 0。 另外两种取值也是信息: | 日志 | 含义 | | startup: n/a (no fresh instance from this launch) | 这次没有新进程(重复双击、实例已在跑),没东西可量 | | startup: not observed within 120 s (process alive, no window) | 进程活着但窗口一直没出来 —— 卡在启动里了;这份配置不会被认证成 last-good | 认得出哪些失败 不是所有失败都该回滚配置。看门狗读崩溃日志的全文(最多 60 行),先判断病因: | 崩溃日志里看到 | 它做什么 | 退出码 | | Web authentication failed | 不回滚、也不重启,只弹窗给清 cookie 的步骤 —— 坏的是登录状态,回滚只会把好配置换掉 | 2 | | 其它错误(或读不出错误文本) | 备份当前 profile → 回滚 last-good → 经 start-dsh.vbs 重启,新实例同样带守护 | 1 | | 同一个错误连续第 2 次 | 停手:已经回滚过一次还这样,再来一次也不会好,把原因交给人 | 3 | 「同一个错误」用崩溃日志里第一行 Error 文本做指纹(记在 fail-streak.json),只有真正认证成功的那一次才清零 —— 窗口没出现、进程没起来这类「没跑通」不算。 回滚之前,当前那份配置会先另存为 pre-rollback-<时间戳>\ —— 万一 last-good 才是过时的,还有东西可查。 卡死型故障(有进程、没窗口) 进程活着、窗口一直不出来、又没写崩溃日志 —— 这种故障以前完全静默。现在它单独计数(hang-streak.json,与 fail-streak.json 互不干扰): - 第一次:只写日志 HANG: no window again (streak 1) - 连续第二次:弹一次中文提示。文案里会写明也可能只是启动很慢(超过 StartupWatchSeconds 还没出窗口),所以别把它当成确诊 - 真的认证成功一次之后,这个计数才清零 双击了两次图标 看门狗用 watchdog.lock(内容 pid=<进程号>)互斥: - 已有看门狗活着 → 后启动的那个只写一行 SKIP: another watchdog (pid N) is running 就退出,不抢着回滚、不重复重启 - 锁里的 pid 已经死了(上次异常退出留下的)→ 直接接管 - 锁只在进程名前缀是 powershell / pwsh 时才算数,避免 pid 被别的程序复用造成误判 - exit 也会走 finally 释放锁(PS 5.1 实测) 启动前的 cookie 体检 preflight.ps1 由 start-dsh.vbs 在起 exe 之前同步调用 —— 那一瞬间 cookie 库还没被 Chromium 锁住,读得到;DSH 一跑起来就连 FileShare.ReadWrite 也打不开。 - 数的是 dsh-auth- 的条数(优先用 node 读 sqlite,精确计数需要 Node 22+;没有 node 就退回字节扫描,只判量级) - 需要清理时会先备份 Cookies.bak-<时间戳>;读不到 sqlite(没 node / 库拒绝)时兜底整个删掉 Cookies 文件,Chromium 下次启动会重建,代价只是重新登录一次 - 超过 -WarnCount(默认 15)→ 提示,不动手;每天最多提示一次,或条数比上次提示时多涨 10 条以上(logs\preflight-state.json 记着上次的日期与条数) - 超过 -CleanCount(默认 30)→ 弹确认框,点「是」才先备份 Cookies.bak-<时间戳> 再清理 它从不自动清(那会把人踢下线),也不会阻塞启动:任何异常都只是写一行日志。 边界(老实说) - 只救配置层:插件/配置把启动弄坏这一类。exe 损坏、asar 被覆盖、磁盘满、端口被占 —— 回滚配置没用,但它会在日志里写清楚。 - 只在那 20 秒窗口里看一次:运行中闪退、用一半 OOM 崩溃,它不知道。 - 卡死只能提醒,不能自救:进程活着窗口不出来时,它不会杀进程也不会回滚(分不清是卡死还是慢),只在连续第二次弹一次提示让你决定。 - 只认崩溃日志:如果某种失败模式不写 crash-.log,它会误判为健康。日志写了、但里面没有可识别的错误文本时,指纹记成 unknown failure,仍然走回滚。 - 只在从该快捷方式启动时生效:从开始菜单或命令行启动 DSH 不会有保护。 - 重复双击不会污染 last-good:判定只认「启动后 15 秒内新出现的进程」,已经在跑的旧实例不算数,所以"其实没启动成功"的那次不会把配置认证成 good。 - 认得出「认证失败」这种配置救不了的病,见下一节 —— 它不会在同一个坑里无限回滚。 演练 不碰真 profile、不杀真进程: $ps5 = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" & $ps5 -NoProfile -ExecutionPolicy Bypass -File .\watchdog.ps1 -ProfileDir D:\tmp\profile -SnapshotRoot D:\tmp\snaps -CrashLogDir D:\tmp\crashlog -ProcessName nonexistent-xyz -WaitSeconds 1 -KeepProcesses -NoRelaunch -NoNotice -LogDir D:\tmp\logs -SimulateCrash -SimulateCrash 造一份假崩溃日志逼它走回滚分支,-SimulateAuthFail 造认证失败,-SimulateNoWindow 模拟「进程活着但窗口不出来」。 测试 改完 watchdog.ps1 / preflight.ps1 先跑一遍,别靠肉眼: $ps5 = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" & $ps5 -NoProfile -ExecutionPolicy Bypass -File .\test.ps1 - 25 组用例、88 条断言,全过退出码 0,有一条红就 1 - 跑多久:约 1 分钟(实测 57.7 秒)。原因不是代码慢,而是它要起真实进程、每个用例都要等窗口出现或等超时,跟单元测试不是一个量级 —— 所以别放在「随手跑一下」的循环里,改完 watchdog.ps1 / preflight.ps1 / restore.ps1 再跑 - 覆盖:健康认证 / 无窗口卡死(含连续两次)/ 崩溃回滚 / 认证失败 / profile 缺失 fail-open / 修剪 / 历史日志不误判 / 新日志能识别 / 同名日志被重写 / 锁被占用 / 锁已过期 / 抢锁是原子的(CreateNew)/ 卡死计数不被健康路径误清 / 回滚前先释放锁(含日志顺序断言)/ restore.ps1 的恢复、拒绝(DSH 在跑 / 看门狗持锁)、找不到、列表、-Prune / preflight.ps1 的计数、告警节流、涨到阈值再提醒、清理询问同样每日节流、超线后拒绝清理(-NoPopup 下不删任何文件) - 可选参数:-Filter g 只跑名字含 g 的用例,-Keep 保留沙箱供排查,-AssumeNoWindow 强制按「拿不到窗口」处理 - 需要真窗口:88 条里有 5 条(用例 a / g / n3)依赖「假进程能弹出真窗口」。在隐藏窗口的会话里跑(CI、受限终端、后台任务),这 5 条会标 SKIP 而不是 FAIL —— 那是环境不给窗口,不是守护逻辑坏了;结尾会打印 skipped: N 并提示去桌面 PowerShell 复验 卸载 三样东西,删不删都不影响 DSH 能不能启动——它只是个外挂启动器: | 删什么 | 位置 | 删掉会失去什么 | | 桌面快捷方式 | DSH.lnk | 少一个入口;原版 DeepSeek Harness 图标照常可用 | | 本目录 | 你 clone 下来的 dsh-guard-boot\ | 守护本身、脚本、config.ini、logs\ | | 快照目录 | %USERPROFILE%\.dsh\boot-snapshots\ | last-good\、pre-boot-\、pre-rollback-\、pre-restore-\、fail-streak.json、hang-streak.json、watchdog.lock | - 快照目录留着没坏处:满打满算约 1 MB(last-good 1 份 + pre-boot 5 份 + pre-rollback 10 份 + pre-restore 10 份,修剪逻辑见上文)。 - 删掉它也不会让 DSH 出问题,只是以后想「回到某份能启动的配置」就没有料了。 - 删除顺序建议:先删快捷方式(免得以后又双击),再删本目录,快照目录随你。 - 卸载前若 DSH 正在跑,先退出——watchdog.lock 与正在写的日志会拦住删除。 A sidecar boot guard for DeepSeek Harness (desktop, Windows). Double-clicking the launcher starts the app immediately and fires a hidden watchdog alongside it: - 20 s after launch, if no new crash-*.log appeared and the window actually showed up → snapshot the six profile config files as last-good, exit quietly. - 如果出现新的崩溃日志 → 结束应用进程,从 last-good 恢复这些文件,重新启动,弹出对话框。 它刻意放在 DSH 之外:不注册插件,不写入配置档条目,启动时不加载任何东西。以插件形式发布的守护程序,会和它守护的对象一起失效——促成这个工具的那次事故,正是这样发生的。 用 install.ps1 安装,通过 config.ini 配置,删除快捷方式即可卸载。MIT。 许可 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Su-1003/dsh-guard-boot
给 DeepSeek Harness 桌面版Windows 用的一层启动保险:启动路径上不加等待,旁边挂一个看门狗…
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目