DSH Idle Watchdog:空閒會話催辦與外部 Prompt API

前言

在 DSH web 裏跑長任務時,會話常會無聲停住:模型按計劃收尾、工具調用失敗、限流打斷一輪,或 agent 留下「是否繼續」而你人不在。手工刷新或切回每個會話成本高。若還要讓 cron、CI webhook 或監控腳本往指定會話裏塞一條消息,通常得自己接會話與恢復邏輯。DSH Idle Watchdog(dsh-idle-watchdog)是 maintainer lucagiftzek 發佈的 web profile 插件,歸類爲聯網工具,做兩件事:對你勾選的空閒會話按規則自動 follow-up,以及提供帶密鑰的 HTTP 接口,向任意會話投遞 prompt。

這是什麼

DeepSeek Harness(DSH)社區插件,npm 包名 dsh-idle-watchdog,當前資料中版本爲 1.2.0,MIT 許可證。面向 DSH web profile,依賴 Node 22.5 及以上,並要求 DSH 構建具備 agents、settings 與 webServer 服務;package.json 中聲明 DSH 引擎 >=0.1.1-rc.1,配置存儲說明覆蓋 DSH 0.1.5 與 0.2.x 等版本差異。

核心功能

空閒催辦(Idle nudges)

對你 opt-in 的會話進行監視。當靜默超過設定的 idle 窗口、且該會話 agent 處於 idle(正在執行的 turn 不會被打斷)時,watchdog 在同一會話裏 POST 一條 follow-up prompt,單次 idle 週期內最多到 maxNudges 上限;你回覆後會重置預算。冷會話(未加載)不會因 idle 被喚醒;只有 API 路徑可按配置 resume。

可選行爲(1.1 起,默認保持舊行爲):skipWhenGoalActive(goal 輪次進行中不催)、onlyAfterError(僅在上次人類消息後出現 agent 報錯時催)、按次倍增的 backoffFactor / backoffMaxMinutes、quietHours(僅延遲 idle 催辦,不阻斷外部 API)。達到上限時可發一條摺疊通知(notifyOnCap),然後等待你介入。

外部 Prompt API

單一、需共享密鑰的 HTTP 端點,供腳本、cron、webhook 或其它機器向指定會話寫入消息;可按 chat id、id 前綴或精確標題匹配。配置允許時,可通過 DSH 自帶 resume 路徑喚醒未加載會話。

示例(來自 README):

POST /dsh-idle-watchdog/api/prompt
  { "chat": "nightly report", "message": "The sweep finished. Summarize failures and propose fixes." }
-> 202 { "ok": true, "chat": "session-4c1760...", "via": "title", "resumed": false }

密鑰優先級:環境變量 DSH_IDLE_WATCHDOG_SECRET → 文件 ~/.dsh/idle-watchdog/api-secret(可用 DSH_IDLE_WATCHDOG_SECRET_FILE 改路徑)→ 設置項 api.secret;未設置密鑰時 API 失敗關閉(fail closed)。默認 api.rateLimitPerMinute 爲 30(按源 IP)。

安裝與啓用

下面介紹官方安裝方式。插件聲明 dsh.bundle,安裝後會出現在 dsh.profile.bundles 中;服務端 half 僅在啓動時掛載,需重啓 dsh web。

從 npm 安裝:

dsh plugin --profile web add dsh-idle-watchdog

或從 GitHub 安裝:

dsh plugin --profile web add github:lucagiftzek/DSH-Idle-Watchdog

重啓 dsh web 後,重新加載 Web UI。在 Settings → Idle Watchdog 中勾選要監視的會話並保存。瀏覽器端可熱更新;服務端需重啓。也可用本地 checkout 的 link: 路徑安裝(README 中有 dsh plugin --profile web add link:/absolute/path/to/DSH-Idle-Watchdog 說明)。

配置位置因 DSH 版本而異:0.1.5 及更早可在 ~/.dsh/settings.yaml 的 dsh-idle-watchdog 命名空間手改;0.1.7 / 0.2.x 及更新多在 ~/.dsh/profiles/web/cordis.patch.yml 的 idle-watchdog 行;無 settings 服務時落盤 ~/.dsh/idle-watchdog/settings.json。Settings 裏的 Status 卡片與 /status 可查看下次催辦時間與當前存儲後端(settingsStore)。

常用默認值(可在 UI 或 YAML 調整):idleMinutes 20、maxNudges 3、tickSeconds 30、enabled true;主開關打開後仍須 per-chat opt-in。

典型用法

1、安裝並重啓 dsh web,在 Idle Watchdog 裏爲長任務會話開啓監視,按需改 idleMinutes、maxNudges 與 defaultPrompt。

2、若希望夜間不打擾,開啓 quietHours 並設置 IANA 時區(例如 Europe/Berlin)與起止 HH:MM。

3、爲外部系統集成 API:在 Settings 保存 secret(寫入 ~/.dsh/idle-watchdog/api-secret),腳本側讀取:

IW_SECRET=${DSH_IDLE_WATCHDOG_SECRET:-$(cat ~/.dsh/idle-watchdog/api-secret)}

再對運行中的 dsh web 主機調用 POST /dsh-idle-watchdog/api/prompt,body 含 chat 與 message。

4、需要 YAML 片段時,README 給出示例(含 backoffFactor、quietHours、chats 列表等),可與 UI 對照使用。

運行態與審計:~/.dsh/idle-watchdog/state.json 持久化狀態;~/.dsh/idle-watchdog/activity.jsonl 爲滾動審計(512 KiB)。

適用場景與注意

適合:長時間 autonomous 會話、希望 agent 在 plan 結束或錯誤後自動續跑;需要 webhook / 定時任務向 DSH 會話注入結果摘要或下一步指令,而不自建 session plumbing。

注意:插件在 dsh 進程權限下運行,安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。API secret 需妥善保管;rate limit 與 fail-closed 設計意在降低誤暴露風險,仍不應把端點暴露到不可信網絡而無額外防護。DSH 插件生態遵循「一切皆插件」思路;社區目錄站點與 DeepSeek / 幻方無官方從屬關係,本文信息以倉庫 README 與 npm 包元數據爲準。

結尾

經過上面的步驟,Idle Watchdog 把「會話靜默」和「機器寫會話」兩條線收進一個 web profile 插件:UI 裏 opt-in 與調參,腳本里一條 authenticated POST。目錄頁:https://www.skillhub.cn/plugins/lucagiftzek/DSH-Idle-Watchdog;倉庫:https://github.com/lucagiftzek/DSH-Idle-Watchdog。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜