dsh-toolgate-plus:按會話階段提示探索、編輯與調試

前言

在 DSH 裏跑智能體時,工具調用會自然分成幾類節奏:先讀代碼和搜資料,再改文件或打補丁,最後跑命令、測構建。宿主本身不會根據「最近在幹什麼」在界面上提醒你該不該換思路,也不會在階段變化時給一行可操作的 followup 提示。已有做法多半是人工看對話、自己判斷是否還在探索還是已經進入調試。

下面介紹社區維護的工作流插件 dsh-toolgate-plus(npm 包名 @liuhange/dsh-toolgate-plus,維護者 liuhange789)。它監聽 tools/pre-execute,用最近幾次工具調用推斷當前處於探索、編輯還是調試階段,在階段切換時更新狀態欄並節流推送建議;監聽器始終調用 next(),不改變工具准入決策。

這是什麼

dsh-toolgate-plus 是會話階段感知的 DSH 插件:Host 側 inject: ['agents', 'tools'],記錄工具名與調用序列,階段切換時調用 agent.followup();Client 側在 Web 平臺提供狀態欄階段指示、輸入框上方一行建議,以及設置面板中的自動收縮與靈敏度選項。分類爲工作流;倉庫見 GitHub,目錄頁見 SkillHub。

核心功能

界面與配置

位置 內容
狀態欄左側 當前階段:探索 / 編輯 / 調試
輸入框上方 階段切換建議,單行文本,默認 10 秒後自動消失
插件設置頁 「自動收縮」開關、「靈敏度」三檔(寬鬆 / 標準 / 激進)

配置字段(客戶端經 host.call('getPluginConfig') / host.call('setPluginConfig', patch) 讀寫):

字段 類型 默認值 說明
autoCollapse boolean true 建議行是否 10 秒後自動消失
sensitivity loose / standard / aggressive standard 階段判定靈敏度

自動收縮開啓時,建議行在 10 秒後隱藏;關閉時保留到下一次階段切換或插件卸載。寫入失敗會回滾並顯示內聯提示。

階段判定

每次 tools/pre-execute 記錄工具名,只保留最近 5 次調用(滑動窗口)。超過 5 條時淘汰最早一條,再對整個窗口重新統計。

判定優先級:窗口尾部連續調試調用 > 編輯佔比 > 探索佔比 > 保持當前階段。未達閾值時保持現狀,減少單次調用造成的抖動。

標準檔(窗口長度 5)示例:

階段 判定條件
探索 read/search/list 類工具佔比 > 60%(至少 4/5)
編輯 write/edit/patch 類工具佔比 > 50%(至少 3/5)
調試 bash/test/run 類工具在窗口尾部連續出現 ≥ 2 次

工具名會按分隔符與 camelCase 拆詞再歸類,例如 read_file、WebSearch 歸探索,ApplyPatch 歸編輯,Shell、run_tests 歸調試;TodoWrite、Skill、Agent 等記錄型工具爲 neutral,不參與佔比。無明確詞根的自定義 MCP 工具歸爲 unknown,也不參與佔比。

靈敏度對閾值的影響(窗口長度均爲 5):

參數 寬鬆 標準 激進
探索佔比閾值 > 80% > 60% > 50%
編輯佔比閾值 > 60% > 50% > 40%
連續調試次數 ≥ 4 ≥ 2 ≥ 2

非法靈敏度配置會回退到標準檔並記錄告警。

建議節流與 Host 行爲

  • 首次進入某階段立即推送一次建議,並調用 agent.followup()
  • 同一階段 60 秒內再次進入時,只更新狀態欄,不再推送建議
  • 不同階段各自獨立計時

插件不做面板圖表;tools/pre-execute 監聽器始終 next()。若宿主未在 exec 上注入 agent,agent.followup() 不可用時僅更新狀態欄並記錄 warn,不阻塞工具調用。

安裝與啓用

npm 包名爲 @liuhange/dsh-toolgate-plus,版本 1.0.0(MIT)。優先使用宿主自帶安裝命令:

dsh plugin add @liuhange/dsh-toolgate-plus

工程按 DSH both-mode 約定組織:package.json 中聲明 dsh.bundle.patch 指向 cordis.patch.yml,宿主讀取後加載,不需要手工編輯宿主 patch 文件。Host 依賴 @deepseek-ai/schemastery(peer,>=3.18.0 <4.0.0),由 DSH 宿主提供。

啓用步驟:

  1. 執行上述 dsh plugin add(也可將已構建的工程拷貝到 DSH 插件目錄,例如 Windows 下將目錄複製到 %USERPROFILE%\.dsh\plugins\dsh-toolgate-plus)。
  2. 重啓 DSH,在插件設置頁確認 @liuhange/dsh-toolgate-plus 已啓用。

典型用法

安裝並啓用後,無需單獨啓動腳本:智能體正常調用工具即可。插件在後臺累計最近 5 次工具名並更新階段。

若要減少建議行干擾,在插件設置頁打開「自動收縮」(默認已開)。若階段切換偏早或偏晚,將 sensitivity 設爲 loose、standard 或 aggressive,保存後經 RPC 寫入 Host 配置。

維護者提供的本地校驗命令(用於審閱源碼或自構建時):

npm test
npm run typecheck
npm run build
npm run pack:check

README 記載測試覆蓋階段識別、滑動窗口、滯回、三檔靈敏度、工具名歸類、建議節流,以及 tools/pre-execute 始終 next() 等集成行爲(17 個用例)。

適用場景與注意

適合希望在 DSH Web 客戶端裏看見當前會話階段、並在切換時收到節流後的一行建議(含可選 agent.followup())的智能體開發者。不適合需要真正攔截或改寫工具准入的場景——本插件明確不改動准入決策。

使用前應知邊界:

  • 階段回退僅有滑動窗口滯回與 60 秒節流,無最短駐留時間;快速來回切換時狀態欄圖標仍可能閃動,但建議不會刷屏。
  • 調試判定依賴窗口尾部連續調用;調試命令後立刻讀文件,可能暫不判爲調試階段。
  • 當前僅覆蓋探索、編輯、調試三階段,不含規劃、評審等。
  • Client UI 已通過類型檢查與構建,README 註明未在真實 DSH Web 宿主內做端到端渲染驗證。

DSH 生態理念是「一切皆插件」;SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。插件以當前 dsh 進程權限運行,安裝前請閱讀 倉庫源碼 與 LICENSE,自行確認是否符合環境要求。

結尾

dsh-toolgate-plus 用 tools/pre-execute 上的滑動窗口做探索 / 編輯 / 調試階段感知,在狀態欄與建議行給出反饋,並用 60 秒節流控制 agent.followup() 頻率,同時保持所有工具調用照常放行。

  • 目錄頁:https://www.skillhub.cn/plugins/liuhange789/dsh-toolgate-plus
  • GitHub:https://github.com/liuhange789/dsh-toolgate-plus
羽毛球分组比赛记分
小程序二维码

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

小夜