前言¶
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