dsh-pain-point-check:兩次實驗不收斂就強制注入三問的 dsh 守衛插件

前言

寫過智能體循環的人都會遇到同一種情況:模型進入「解題狀態」後失去元認知,反覆用同一方向攻擊同一個問題。設計出偏向當前假設的實驗(確認偏誤)、不肯換方向(沉沒成本)、急着給故事收尾(敘事閉環)。官方的 repeat-tool-reminder 是建議性的,只是提醒模型它重複了完全相同的調用,提醒本身沒有強制力。

dsh-pain-point-check 走的是另一條路:否決式(veto)守衛。同一問題兩次實驗未收斂後,插件注入三問,在模型於回覆文本中回答三問之前,拒絕所有非調查類工具調用,並阻止同方向重試。下面介紹這個插件的定位、原理和啓用步驟。

這是什麼

dsh-pain-point-check 是一個面向 DeepSeek Harness(dsh)的強制式 pain-point-check 守衛插件,由 ICCuse 維護,許可證爲 MIT,當前版本 0.1.0,尚未發佈到 npm,需要直接從 GitHub 倉庫安裝。

它解決的是一個具體問題:讓智能體在連續失敗後被迫回到卡點本身。門控會強制模型在下一槍之前先回答卡點相關問題,把負面結果變成信息,而不是被直接跳過。這也符合 dsh「一切皆插件」的擴展方式——守衛邏輯不侵入主循環,以插件形式掛載。

工作原理

插件通過四個 hook 協作完成門控:

  1. tools/result:按 agent 統計當前問題的實驗次數,計入失敗(報錯)調用與連續相同調用。
  2. agent/pre-step:真實用戶插入(新問題)時重置計數器;門控待決時,在下一步追加三問檢查塊。
  3. tools/pre-execute:門控待決時拒絕所有非調查類調用。allowlist 內的工具仍可調用,包括 read、read_image、glob、grep、web_search、ask_user_question、skill、todo_write——調查和求助不被阻斷。
  4. session/event:從模型回覆文本中識別三問回答(卡點=… 排除=… 性價比=…,也接受英文標記),識別到即解除門控。

注入的三問是:

  • 該卡點是否仍是最關鍵問題?
  • 上一次負面結果實際排除了什麼?
  • 哪條路徑性價比最高(不一定最便宜)?

其中第二問是關鍵:如果模型說不出負面結果排除了什麼,它就沒有可證僞的假設,檢查文本會要求它先寫出一個假設,而不是再開一槍。

安裝與啓用

包尚未發佈到 npm,直接從倉庫安裝:

npm install github:ICCuse/dsh-pain-point-check
# 或:pnpm add github:ICCuse/dsh-pain-point-check

安裝後在 profile 組合中掛載。以 web profile 爲例,在 ~/.dsh/profiles/web/cordis.patch.yml 中添加一行:

- id: pain-point-check
  name: 'dsh-pain-point-check'
  config:
    failureThreshold: 2
    repeatThreshold: 2

重啓 harness(dsh web)後,守衛對每個會話生效。

配置

可用配置項如下:

字段 默認值 含義
failureThreshold 2 累計多少次失敗調用後觸發門控
repeatThreshold 2 連續多少次相同調用後觸發門控
allowlist 調查類工具集合 門控待決期間仍可調用的工具

兩個閾值必須爲 >= 1 的整數,配置錯誤會在插件加載時直接拋出,不會帶病運行。

插件聲明瞭兩個 peerDependencies:@deepseek-ai/cordis ^4.0.1 和 @deepseek-ai/schemastery ^3.18.1。

開發與測試

lib/ 目錄已預構建(由 DeepSeek Harness monorepo 工具鏈構建),可以直接安裝使用。如果要跑測試:

npm install
npm test

測試套件對腳本化 mock adapter 驅動真實的 agent loop,無網絡依賴,覆蓋觸發、拒絕、allowlist、解除、部分回答、重置與配置校驗。

適用場景與注意

適合的場景:調試、排查、實驗類長任務——模型容易在同一個方向上反覆開火的地方。如果你的工作流裏模型經常連續提交相似的失敗實驗,這個門控能把它拉回卡點本身。如果只是偶發的重複調用,官方建議性的 repeat-tool-reminder 可能已經夠用,兩者的取捨在於你是否需要強制力。

幾點注意:

  1. 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼並確認許可證(MIT)符合你的使用要求。
  2. 門控待決期間,allowlist 中的調查類工具不受影響,模型仍可以讀文件、搜索、向你提問。
  3. 閾值默認爲 2,意味着兩次失敗或兩次相同調用就會觸發;如果任務本身試錯頻繁,可以按需調高。
  4. 包未發佈到 npm,版本演進以 GitHub 倉庫爲準。

這個插件的價值在於把「負面結果」從被跳過的噪聲變成被消化的信息。目錄頁見 https://www.skillhub.cn/plugins/ICCuse/dsh-pain-point-check ,源碼見 https://github.com/ICCuse/dsh-pain-point-check 。

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

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

小夜