dsh-tool-monitor:訂閱現有 DSH 後臺 Job 的事件

在 DeepSeek Harness (DSH) 中,後臺 Job 通常只在任務結束時通知 Agent。對於長期運行的後端服務,錯誤可能在退出前就已經發生。這個插件補充了運行中事件通道。

定位與功能

dsh-tool-monitor 是一個由 yoke233 維護的插件,類別爲聯網工具。它允許訂閱已經運行的 Bash 或 PowerShell Job,並在後臺服務出錯時立即向 Agent 投遞事件。該插件不啓動第二個業務進程,保留原始 job_output。

核心功能包括:
* 訂閱已經運行的流式後臺 Job。
* 保留原始 job_output,不啓動第二個業務進程。
* 惰性啓用 tee,避免對 Job 進行不必要的輪詢。
* 支持使用 JavaScript 正則表達式過濾輸出。
* 支持區分大小寫與超時設置。
* 兼容官方 job_* 工具。

安裝與啓用

安裝插件到指定的 profile:

dsh plugin --profile web add github:yoke233/dsh-tool-monitor

安裝完成後,啓動或重啓該 profile:

dsh --profile web

典型用法

先正常啓動一個後臺服務:

pwsh(command: "npm run dev", run_in_background: true)

終端通常返回 Job ID,例如 → pwsh-1。

再讓 job_monitor 訂閱這個 Job:

{
  "job_id": "pwsh-1",
  "description": "監聽後端錯誤",
  "pattern": "error|fatal|exception"
}

終端返回 Monitor 的 Job ID,例如 → monitor-1。

此時,monitor-1 只訂閱 pwsh-1 的輸出。一旦匹配到指定的正則表達式,插件會向所屬 Agent 投遞會話事件;原服務始終只運行一份。

工作原理

插件擴展了 DSH 的 JobRegistry(兼容官方 LocalJobRegistry),複用所有權隔離、等待、取消、完成通知等語義。

  • 惰性讀取:Monitor 通過惰性啓用 tee 機制讀取數據,未被訂閱的 Job 保持官方讀取路徑。
  • 生命週期:Monitor 本身也是一個普通 Job。
    • job_list 同時顯示目標 Job 和 Monitor。
    • job_output 分別讀取目標 Job 的原始輸出和 Monitor 的匹配輸出。
    • job_kill monitor-1 只停止訂閱,不會終止目標 Job。
    • 目標 Job 結束時,關聯 Monitor 自動結束並刷新最後一條不完整輸出行。

工具參數

參數 必填 說明
job_id 是 已有流式後臺 Job 的 id,通常來自帶 run_in_background: true 的 bash 或 pwsh
description 是 顯示在 Monitor 通知中的簡短說明
pattern 否 JavaScript 正則表達式,逐完整輸出行匹配
case_sensitive 否 是否區分大小寫,默認 false
timeout_ms 否 訂閱時限;默認持續到目標 Job 結束

兼容性與邊界

  • 輸出格式:支持 Bash 的 LF 與 PowerShell 的 CRLF 輸出。
  • Job 類型:只支持公開流式 readOutput() 的後臺 Job;不支持非流式後臺 Job。
  • 會話隔離:不能跨會話監聽其他 Agent 的 Job,所有權校驗仍由 DSH Registry 執行。
  • 持久化:Job 和 Monitor 都是 Host 進程內狀態,不跨 DSH Host 重啓持久化。
  • 歷史 Job:插件安裝前創建的歷史 Job 不可補掛監聽。
  • 緩衝區:緩衝區按 UTF-8 字節設置上限,發生丟棄時 job_output 會顯示明確提示。

總結

dsh-tool-monitor 提供了一種輕量級的方案,用於在 DSH Agent 環境中實時捕獲後臺服務的錯誤。通過複用官方 Job 生態,它在不改變原有業務進程邏輯的前提下,增加了運行時監控能力。

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

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

小夜