前言¶
DeepSeek Harness(DSH)桌面版里跑 AI 角色时,进程意外退出、网页端口无响应、或登录 cookie 堆积导致打不开,都是日常运维里常见的问题。插件跑在 DSH 进程内部,DSH 一挂,插件自己也救不了自己。社区插件 dsh-keepalive(维护者 XnQM-DEV)把「看门狗」放在 Windows 计划任务里,从固定副本运行,配合可选的 DSH 内宿主半边,做心跳、重启、通知和若干周边维护。下面介绍它的定位、能力与在 Windows 上的安装用法。
这是什么¶
dsh-keepalive 是 DSH 生态下的 admin-security 类插件:目标是让桌面版里的 AI 角色尽量一直在线——DSH 掉了或卡了会自动重启,并可发 QQ 等通知;同时覆盖维护模式、插件配置恢复、每日备份、磁盘清理、登录 cookie 清理等。实现上 零 npm 依赖,只用 DSH 自带的 node.exe;仅支持 Windows(package.json 中 engines.node 为 >=22.5,当前版本 0.1.1,MIT 许可)。
架构分成两半(README 中的表格):
| 运行位置 | 职责 | |
|---|---|---|
| 外面的看门狗(主要) | Windows 计划任务,从 <dataDir>\runtime 的固定副本运行 |
心跳、重启、备份、清理、插件配置恢复 |
| DSH 里的宿主半边(可选) | DSH 内 lib/host.js |
每分钟写心跳;检测「一轮对话很久没动静」;提供状态接口 |
宿主半边只负责报信;不装也能用心跳与端口检查工作。
核心功能¶
以下均来自项目 README,按能力分节说明。
心跳与自动重启¶
- 默认 每 5 分钟 检查一次。
- DSH 进程整个没了 → 立刻重启,通知「掉了」。
- 进程在、但网页端口 连续 3 次不应答 → 重启,通知「卡住了」;恢复后通知「回来了」;连续掉线不会刷屏。
- 读不到进程列表时 什么都不做(避免误杀正常 DSH)。
重启流程:结束 DSH → 清过期登录 cookie → 启动 → 失败再试一次 → 拉起配置的依赖服务(如 QQ 后端)→ 跑自检脚本 → 写重启汇报 → 发通知。默认 3 分钟内不重复重启,一小时内最多 4 次,超过则停手并通知。在 DSH 内部执行 dsh-keepalive restart 时,会把重启交给外面的计划任务,避免子进程结束 DSH 后无法再拉起。
一轮对话卡住(需宿主半边)¶
一轮对话开始后超过 45 分钟 无新动静(例如工具调用卡死)可发通知;默认只通知,可改为直接重启。端口检查发现不了这类情况——网页仍可能能打开。
维护模式与急救¶
手动关 DSH 改配置时可开维护模式:期间不重启、不改插件配置;默认 2 小时后自动失效。急救可一键退出维护、结束卡住的 DSH、清 cookie、重启;急救那次重启 不受 冷却与每小时上限限制。在 DSH 内运行时,急救同样交给计划任务执行。
插件配置守护¶
DSH 有时会把 profile 的 cordis.patch.yml 重置成空壳。插件发现后从同目录 最新的健康备份 恢复(非体积最大的备份),坏文件先另存。
每日备份与磁盘清理¶
备份按配置复制到 目标\年月日\,只保留最近 N 天;支持排除、*.sh 等通配符、改名;文件夹里的链接/联接点跳过。清理只删配置里列出且超过 N 天的文件;DSH 附件库、会话、存储、profile、插件目录 等内置保护,另有 trim.protect 可追加保护路径。
登录 cookie 清理¶
DSH 每次启动会新增 dsh-auth-* cookie 且不清旧值,攒到约 70 个时请求头超 16 KB 可能导致 Web authentication failed。每次重启前自动清旧 cookie(新启动会再发一条,删旧的无副作用)。
通知¶
支持 QQ(OneBot v11:NapCat / SnowLuma / LLOneBot)、通用 webhook、或运行任意命令。推荐 QQ 令牌与 QQ 号放在 qq-bridge-config.json 等外部文件,通过 notify.channels 的 fromFile 读取,不进守护配置文件。
明确做不到的事¶
不能代扫 QQ 码;不能修复 DSH 本体 bug,只能拉起;关机、睡眠、未登录 Windows 时不工作;DSH 更新后若自带 node.exe 路径变了,需改配置 nodePath 再 install。详见 README「做不到的」一节。
安装与启用¶
安装前建议在 GitHub 阅读源码与 MIT 许可证;看门狗会以计划任务运行,重启任务需 管理员权限(install --elevate 会弹 UAC)。
第 1 步:生成配置¶
dsh-keepalive init
会在 C:\Users\你\.dsh\keepalive.config.json 生成配置,并尽量自动填入正在运行的 DSH 主程序位置、已有的 qq-bridge-config.json 等。无全局命令时可用 DSH 自带 node 运行 bin\dsh-keepalive.mjs init,或双击包内 安装守护.cmd(依次 init → doctor → install,无配置才 init)。
第 2 步:检查¶
dsh-keepalive doctor
只读检查 DSH 状态、通知通道、备份项体量、计划任务是否已装。任意命令可加 --dry-run 预览行为,例如:
dsh-keepalive tick --dry-run
dsh-keepalive backup --all --dry-run
dsh-keepalive install --dry-run
第 3 步:安装看门狗¶
dsh-keepalive install --elevate
会先列出计划,输入 y 才执行:复制运行文件到 <dataDir>\runtime;创建计划任务(默认 DSHKeepalive-Tick 每 5 分钟、DSHKeepalive-Restart 按需);在 <dataDir> 生成 进入维护模式.cmd、退出维护模式.cmd、DSH急救.cmd、查看守护状态.cmd(同名非本插件文件不覆盖)。不加 --elevate 会跳过需提权的重启任务。
第 4 步(可选):宿主半边装进 DSH¶
dsh-keepalive link-into-dsh
不运行 pnpm:复制插件到 ~\.dsh\plugins\dsh-keepalive、在 profile 的 node_modules 建链接、登记 package.json(改前备份)。也可用 DSH 插件市场或:
dsh plugin add dsh-keepalive
效果相同;市场安装会在 profile 里跑 pnpm,若介意 pnpm 副作用可用 link-into-dsh。
典型用法¶
| 目的 | 命令或双击 |
|---|---|
| 手动关 DSH 维护 | 进入维护模式.cmd 或 dsh-keepalive maintenance on |
| 维护结束 | 退出维护模式.cmd 或 maintenance off |
| DSH 卡死 | DSH急救.cmd 或 dsh-keepalive rescue |
| 查看守护状态 | 查看守护状态.cmd 或 dsh-keepalive status |
| 试通知 | dsh-keepalive notify-test |
装了宿主半边后,DSH 内可访问 /dsh-keepalive/ 状态页,/dsh-keepalive/status 返回 JSON。日志:<dataDir>\logs\keepalive.log;状态:<dataDir>\state\。
卸载:dsh-keepalive uninstall(或 --purge 删 runtime);宿主:unlink-from-dsh;也可双击 卸载守护.cmd。
适用场景与注意¶
适合 长期开 DSH 桌面版、希望进程异常时自动恢复并收到通知 的 Windows 用户,尤其是同时跑 QQ OneBot 后端、需要备份 sessions/profile、或遇到过 cordis.patch.yml 被清空、cookies 过多打不开的情况。
注意:
- 仅 Windows;计划任务在用户登录后运行,睡眠/关机期间不守护。
- 宿主半边在 DSH 进程内加载;看门狗在计划任务中运行,权限与 DSH 启动方式(是否管理员)有关,安装前确认配置与
--elevate是否符合你的环境。 - 插件不自带密钥;安装、改 profile、建任务前会确认,且不覆盖非本插件生成的同名文件。
- DSH 理念是「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-keepalive 把保活与周边运维从 DSH 进程里拆到 Windows 计划任务,用 heartbeat、限流重启和可选通知,减少「人不在电脑前 DSH 一直挂掉」的情况;配置项与消息模板在 keepalive.config.example.json 中有中文说明。进一步了解可查看目录页与仓库:
- 目录页:https://www.skillhub.cn/plugins/XnQM-DEV/dsh-keepalive
- GitHub:https://github.com/XnQM-DEV/dsh-keepalive