前言¶
在 DeepSeek Harness(DSH)裏,agent 通常可以等待一段命令或任務完成,但有些工作更適合持續監聽:命令一直在輸出,日誌文件一直在增長,agent 需要在出現關鍵新行時被喚醒。
dshworks/dsh-watch 解決的是這類問題:它爲 DSH agent 提供後臺流監聽,監聽命令輸出或文件新行,並以過濾、批量、字節受限的會話內通知喚醒 agent。插件還附帶無人值守 daemon host,用於把 watch 掛到長期會話中。
這是什麼¶
dshworks/dsh-watch 是 DSH 插件,包名爲 @dshworks/dsh-watch,許可證爲 MIT,要求 Node >= 20。
它的核心能力是:
- 支持
command和file兩種流源 - 監聽命令輸出或文件新行
- 新行以過濾、批量、字節受限的通知到達
- 支持可選 JavaScript regex 過濾
- 每個 watch 是一等 background job(
kind watch) - 可配合
job_list、job_output、job_kill使用 - 支持 wake budget/token bucket 和 event budget(
max_events) - 支持
autoArmprofile 配置和@dshworks/dsh-watch/daemon無人值守宿主
核心功能¶
兩種流源¶
插件支持監聽兩類來源:
command:監聽命令輸出file:監聽文件新行
命令源通過 shell capability 啓動,並繼承會話的 sandbox policy 和環境。文件監聽從當前末尾開始,不投遞既有內容;文件被截斷後會從頭重啓;尚不存在的文件會被持續觀察。
過濾、批量與字節限制¶
新行不會逐行無限制地進入會話。插件支持可選的 JavaScript regex 過濾,只有匹配的行會進入通知。通知本身也是批量、字節受限的,用於控制進入 agent 會話的內容量。
插件還提供一組配置上限,包括每 owner 的 armed-watch cap、notice 字節上限、backlog 預算等。
作爲 background job 管理¶
每個 watch 都是一等 background job,kind 爲 watch。因此可以使用 DSH 標準的 job 管理接口:
job_listjob_outputjob_kill
安裝與啓用¶
安裝命令如下:
dsh plugin --profile web add @dshworks/dsh-watch
dsh plugin 會轉發到 pnpm,因此 pnpm 必須位於 PATH。
典型用法¶
監聽命令輸出¶
下面的示例監聽 npm run dev 的輸出,並只關注包含 error、warn 或 Ready 的行:
watch(source: "command", command: "npm run dev", pattern: "error|warn|Ready", label: "dev")
監聽文件新行¶
下面的示例監聽日誌文件的新行,並只關注 ERROR 或 FATAL:
watch(source: "file", path: "/var/log/app.log", pattern: "ERROR|FATAL")
無人值守運行¶
插件支持在 profile config 中聲明 wakeRefillMs 和 autoArm 的 standing watches,並可使用 @dshworks/dsh-watch/daemon 作爲無人值守宿主。
一個可用的運行方式是:
dsh plugin --profile watcher add @dshworks/dsh-watch
dsh --profile watcher | tee -a watcher.log
適用場景與注意¶
適合需要 agent 在命令輸出或文件新行中出現關鍵信息時醒來的場景,例如開發服務器、日誌、長期運行腳本等。
使用前需要注意:
- 插件以當前 dsh 進程權限運行,命令源還會通過 shell capability 啓動,並繼承會話的 sandbox policy 和環境
- 安裝前應檢查源碼和 MIT 許可證
- 要求 Node >= 20
dsh plugin會轉發到 pnpm,因此 pnpm 必須位於 PATH- 文件監聽從當前末尾開始,不投遞既有內容
- 存在每 owner 的 armed-watch cap、notice 字節上限、backlog 預算等配置上限
鏈接¶
目錄頁:https://www.skillhub.cn/plugins/dshworks/dsh-watch
GitHub:https://github.com/dshworks/dsh-watch