前言¶
在開發 DeepSeek Harness (DSH) Agent 時,通常需要關注其生命週期狀態,例如 Agent 何時進入空閒、被中斷、需要用戶輸入,或何時退出。如果在後臺運行,開發者很難獲取這些狀態。dsh-push 插件提供了一種機制,將 Agent 的生命週期事件通知推送到外部渠道,方便監控和調試。
是什麼¶
dsh-push 是一個由 kiim-wong 維護的 DSH 插件。它將 Agent 的生命週期事件(如 idle、interrupted、needInput、exit)轉發到 Bark、飛書、企業微信、釘釘、ntfy 或通用 webhook。該插件通過 cordis.patch.yml 掛載,無需修改 DSH 核心代碼或寫入配置文件。
安裝¶
在安裝前,確保已安裝 DSH。根據使用的 DSH Profile 選擇對應的安裝命令。
dsh plugin --profile web add dsh-push
dsh plugin --profile headless add dsh-push
如果需要從 GitHub 安裝並鎖定版本,使用以下命令:
dsh plugin --profile web add github:kiim-wong/dsh-push#<sha>
注意:從 Git 安裝會運行包的 prepare 腳本。首次安裝前,需在目標 Profile 的 pnpm-workspace.yaml 中允許構建:
allowBuilds:
dsh-push: true
配置¶
插件使用 JSON 格式的配置文件。默認路徑爲 $DSH_HOME/dsh-push/config.json。可以通過環境變量 DSH_PUSH_CONFIG 指定其他路徑。
配置文件支持通過環境變量引用,格式爲 $VAR 或 ${VAR}。日誌文件默認寫入配置文件目錄下的 push.log。
每個通知渠道至少需要配置 type(渠道類型)和 destination(目的地)。敏感信息應存儲在配置文件或環境變量中,而非 cordis.patch.yml。
事件與命令¶
插件加載後,會監聽並轉發以下事件類型:
* idle
* interrupted
* needInput
* exit
同時,插件提供了命令行接口。即使在沒有命令服務的 Headless 配置中,事件監聽器也會正常加載。
可用命令如下:
* /push status:查看推送服務狀態
* /push list:列出已配置的渠道
* /push get:獲取特定配置
* /push set:設置配置
* /push enable / /push disable:啓用或禁用特定渠道
* /push test:測試特定渠道
* /push events:列出可用事件
* /push on / /push off:全局啓用或禁用事件監聽
高級用法¶
- 過濾 Idle 事件:通過設置
minDurationSec,可以過濾掉持續時間過短的 idle 事件。 - 包含子代理:默認情況下,子代理的事件會被排除。設置
includeSubagents: true可包含origin: "subagent"的會話頭事件。
注意事項與限制¶
- 投遞策略:通知投遞不支持重試機制。如果投遞失敗,消息將丟失。
- 超時與刷新:每個請求有獨立的超時限制,進程銷燬時使用有界刷新。
- Exit 事件含義:
exit事件表示插件樹正在被銷燬,而不是單個 Web 會話的關閉。 - 內容範圍:通知正文僅包含生命週期摘要,不包含具體的對話內容。
總結¶
dsh-push 爲 DSH Agent 開發者提供了一種標準化的方式來接收生命週期通知。通過配置各類推送渠道,可以實現對 Agent 運行狀態的實時監控。使用時需注意其不支持重試和包含內容限制。