dsh-limit-timeout:限制 DSH Agent 單次工具調用等待時長

前言

在 DSH(DeepSeek Harness)的工程實踐中,工具調用通常通過 timeoutMs 或 job_output 的 timeout_ms 參數控制等待時間。這些參數由模型填寫,若模型未指定或填寫的值過大,部署側通常缺乏細粒度的兜底機制,可能導致長時間阻塞或資源佔用。

插件簡介

dsh-limit-timeout 是一個由 azazo1 維護的管理安全類插件,用於在 DSH agent 單次工具調用執行前攔截並檢查等待時長。

該插件在 tools/pre-execute 階段介入,覆蓋模型可控的等待參數。當調用請求超過配置的上限時,插件會拒絕該次調用,記錄日誌,並提供三條替代方案供模型參考(降低等待時間、改用後臺執行、申請提升)。

安裝與啓用

安裝前請確保 DSH 引擎版本滿足要求:@deepseek-ai/dsh-* 需要大於或等於 0.2.0-rc.1 且小於 0.3.0。

Web 端安裝需指定 web profile:

dsh plugin --profile web add azazo1/dsh-limit-timeout

安裝完成後,重啓 dsh web 以刷新頁面。

桌面端不支持通過命令行直接安裝(命令行會拒絕 --profile desktop 參數)。需在應用內的插件管理器中填寫包名 azazo1/dsh-limit-timeout 進行安裝,隨後重啓桌面端應用。

配置說明

設置入口位於 Settings > 等待上限。該頁面爲草稿式編輯,改動不會立即生效,需點擊“保存”或“放棄更改”。

保存操作爲原子寫入,若配置衝突(如默認上限高於硬天花板),保存會被拒絕。

設置包含以下字段:

字段 默認值 說明
全局默認等待上限 (defaultLimitMs) 120000 單次調用可聲明的最大等待時間,覆蓋 timeoutMs 與 timeout_ms
硬天花板 (hardLimitMs) 1800000 即使批准了提升,實際等待也不會超過此值;調低它會收回已批准的提升
允許模型申請提升 (allowEscalation) 開 開啓後模型可通過 request_wait_extension 申請提升,由部署側審批
要求顯式聲明等待時長 (requireExplicitJobWaitMs) 關 開啓後 job_output 的 wait: true 必須同時給出 timeout_ms
屏蔽重複調用提醒 (suppressRepeatToolReminders) 關 開啓後 repeat-tool-reminder 注入的提醒不再進入模型請求

支持的時間格式包括:120000(毫秒)、500ms、90s、2m、1h。未編輯時,保存後與放棄更改後都會還原成合適的單位寫法。

運行時行爲

  • 攔截與拒絕:插件在 tools/pre-execute 階段攔截調用。放行時繼續進入下游策略(權限、沙箱)判斷;超限時直接短路成錯誤結果,調用不會真正執行。
  • 拒絕日誌:每次拒絕都會以 info 級別記入 Host 日誌,包含工具名、調用 ID、當前上限與提升狀態。
  • 提升機制:申請走 DSH 原生審批通道,批准後僅對當前進程內的會話生效。提升不寫入會話日誌,因此不可回放,也不能跨進程保留。
  • 重複提醒:通過 agent/pre-step 過濾 repeat-tool-reminder 注入的消息。此功能僅改變模型看到的內容,不影響會話日誌與歷史回放,被過濾的條數記入 debug 日誌。

適用場景與邊界

  • 邊界檢查:該插件僅覆蓋模型可控的等待參數(timeoutMs、timeout_ms)。工具自身的部署超時(如 web_fetch 的 fetchTimeoutMs)不受本插件約束。
  • job_output 行爲:當 job_output 僅寫 wait: true 而不寫 timeout_ms 時,等待時長由 dsh-tool-jobs 的 waitTimeoutMs 決定,默認配置下不受本插件約束。需嚴格限制時可開啓“要求顯式聲明等待時長”。
  • 安全提示:插件以當前 DSH 進程權限運行,安裝前建議檢查源碼與許可證(MIT)。

開發

插件基於 TypeScript 開發,源碼位於 src/ 目錄,構建產物位於 lib/ 目錄。

常用開發命令如下:

just install
just typecheck
just build
just test
just verify

結尾

該插件爲 DSH 生態提供了一種在部署側控制工具調用時延的手段。通過設置全局上限與硬天花板,結合模型申請提升機制,可以在保障系統穩定性的同時,給予模型靈活的執行空間。

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

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

小夜