dsh-failbook:給 DeepSeek Harness 加一個失敗賬本

前言

在 DSH 這類智能體運行時裏,工具調用失敗並不罕見。更麻煩的是,失敗原因可能並不變,只是參數換了,模型還會繼續重試。

dsh-failbook 針對這個問題做了一層記錄與攔截:把工具調用失敗寫進賬本,按失敗原因聚類,並在同一失敗簽名反覆出現時注入建議性提醒。它不替代工具執行,也不修改工具結果,只在失敗發生時提供可見的記錄和下一輪請求裏的上下文。

這是什麼

dsh-failbook 是一個 DeepSeek Harness(DSH)插件,用於記錄工具調用失敗、按失敗簽名聚類,並在重複失敗時進行失敗感知重試攔截。插件包含 Web UI 設置面板,MIT 許可,零配置開箱即用。

倉庫地址在 G1en-114/dsh-failbook

核心功能

下面是它已確認提供的主要能力:

  1. 自動記錄工具調用失敗
    包括結構化錯誤、非零退出碼、沙箱拒絕、常見錯誤文本。

  2. 失敗簽名聚類
    同一失敗原因會被歸到同一個桶,不會只因參數不同而散落成多個條目。

  3. 跨會話持久化
    通過官方 ctx.storageDomain 存儲,可跨會話持久化;沒有該服務時自動降級爲內存賬本。

  4. 失敗感知重試攔截
    同一簽名在近窗口內失敗達到閾值時,注入建議性提醒。

  5. Web UI 面板
    設置頁提供失敗賬本面板,可查看 Top 失敗簽名、次數、近窗口、最近時間,並支持靜音、單刪和清空。

  6. 靜音與排除
    誤報桶可以一鍵靜音,也可以通過 excludeTools / patterns 做更細的控制。

  7. 保守檢測
    設計原則是寧可漏判,不要誤判,只認確鑿的失敗標記。

安裝與啓用

安裝命令:

dsh plugin --profile web add "github:G1en-114/dsh-failbook#main"

這條命令會把插件加入 web profile 的 DSH 配置。

如果不使用安裝命令,也可以手動編輯配置目錄中的 cordis.patch.yml,插入以下內容:

- insert:
    - id: failbook
      name: dsh-failbook
      config:
        enabled: true

重啓 dsh web 後,打開:

設置 → 失敗賬本

可以看到失敗賬本面板。

典型配置

插件默認啓用。已確認的默認配置包括:

enabled: true
retryGuardThreshold: 2
reminderCooldownSec: 300
reminderLocale: "zh"
exitFailureMin: 2
excludeTools:
  - todo_write
maxBuckets: 1000

其中幾個關鍵項:

  • enabled:總開關。
  • retryGuardThreshold:近窗口內同一簽名失敗達到該次數後觸發提醒。
  • reminderCooldownSec:同一桶兩次提醒之間的最小冷卻時間。
  • reminderLocale:提醒文案語言,示例中可用 "en"
  • exitFailureMin:退出碼達到該值時才記爲失敗。
  • excludeTools:不追蹤的工具列表。
  • maxBuckets:賬本桶數量上限,超出後按最近使用淘汰。

如果想讓攔截更激進,可以改成:

- insert:
    - id: failbook
      name: dsh-failbook
      config:
        exitFailureMin: 1
        retryGuardThreshold: 1
        reminderLocale: "en"

這個示例把退出碼 1 也納入失敗判斷,並把觸發提醒的閾值降到 1 次。

運行方式與邊界

dsh-failbook 的提醒通過 additionalContexts 注入。它不修改工具結果,也不打斷工具執行管線,只在模型下一輪請求時提供可見的上下文。

它還有幾條比較明確的安全邊界:

  • Web API 僅迴環地址可訪問。
  • 賬本只保存截斷後的預覽。
  • 完整命令輸出不會離開宿主。
  • 沒有 ctx.storageDomain 服務時,會自動降級爲進程內 / 內存賬本。降級後記錄與攔截功能不變,但重啓會清空。

開發與驗證

倉庫提供了本地開發與驗證命令:

npm install
npm test
npm run test:integration
npm run build

其中 npm test 用於運行測試,npm run test:integration 用於集成驗證,npm run build 用於構建。

package.json 中可見依賴包括:

"@deepseek-ai/schemastery": "^3.18.1",
"zod": "^4.4.3"

資料中 peerDependencies 不完整,本文不據此補充完整依賴列表。

適用場景與注意

它適合這類使用場景:

  • 使用 DSH Web 配置,希望看到失敗記錄面板。
  • 希望把工具失敗從臨時日誌變成可查詢的賬本。
  • 希望減少模型在同類錯誤上反覆重試。
  • 需要對某些工具或錯誤模式做靜音和排除。

使用前需要注意:

  • 插件運行在 DSH 宿主側,並以當前 dsh 進程權限運行。
  • 安裝前應檢查源碼、依賴和許可證。
  • 許可證爲 MIT。
  • 如果你依賴跨會話持久化,需要確認當前環境是否提供 ctx.storageDomain;沒有該服務時會退化爲內存賬本。

結尾

dsh-failbook 的價值在於把“工具失敗”變成可追蹤、可聚合、可提醒的賬本記錄。它不改變 DSH 的執行模型,而是在失敗發生之後提供一層結構化的反饋。

相關鏈接:

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

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

小夜