DSH 的插件可以向宿主註冊工具、skill、服務和路由。註冊成功不等於模型會調用它們。一個插件可能在啓動時安靜地註冊了三個工具,其中兩個在過去幾十次會話裏一次都沒被調用過。代碼在,測試過,加載正常,只是沒有任何任務走到那裏。還有一類更隱蔽:插件只包裹了宿主已有的方法,什麼都不註冊,從清單上看它像什麼都沒做,實際上它確實在生效。
consumer_audit 把這件事變成一份可覈對的清單。它讀取活動 profile 的組成行,解析每一行裝的是哪個包,靜態掃描該包的註冊站點,再去 DSH_HOME 下的會話日誌裏數每個已註冊工具和 skill 出現過幾次,最後報告計數爲 0 的那些。
安裝與啓用¶
使用以下命令安裝插件:
dsh plugin --profile <profile> add github:qimen039-code/dsh-consumer-audit
安裝完成後,需要重啓 DSH,工具纔會出現在模型工具表裏。
前置條件與環境:
* 需要安裝 Node 22.15 或更新版本。DSH 的會話日誌採用多幀 zstd 格式存儲,舊版本無法讀取。
* DSH 的 loader 只從活動 profile 自己的 node_modules 解析插件包。放在 profiles/node_modules 下的包不會生效,會導致啓動失敗。
核心功能¶
該插件提供以下能力:
consumer_audit:執行審計檢查。consumer-audit:對應的 skill。
使用方式¶
由於會話日誌是多幀 zstd 格式,模型無法直接用普通文本讀取工具打開。插件提供了專門的證據獲取接口和代碼庫入口。
證據獲取接口:
{"action": "evidence", "name": "some_tool", "limit": 5}
代碼庫調用示例:
import { collect } from "dsh-consumer-audit/collect";
import { ablation } from "dsh-consumer-audit/audit";
報告內容與解讀¶
報告包含 findings(發現的問題)和 notes(說明性信息)。報告不含語義判斷,僅提供觀測數據。
Finding 類型:
* tool_never_invoked:工具已註冊,但在被掃描的日誌中從未被調用。
* skill_never_loaded:盤上有 SKILL.md,但在會話中未被加載。
* prompt_only_capability:只註冊了提示詞。
* row_without_capability:行已掛載、包也解析到了,但什麼都沒註冊。
* duplicate_prompt_section:兩個包註冊了同名的提示詞段。
* package_unresolved:包既不在 profile 裏,也不屬於隨 harness 發行的那批。
* tool_never_delivered:被調用過,但每次返回都帶 isError。
* skill_never_delivered:同上,針對 skill。
注意事項:
* 報告中的 consumed 字段記錄了 attempts / failed / succeeded 三層數據,僅走到“送達”這一層。
* 源碼裏的註冊站點只說明能力被聲明瞭,不說明它能用。
* 調用計數描述的是被掃描的那些日誌。未掃描的 profile、日誌窗口之前的調用都會讀成未使用。
* 第一方包(以 @deepseek-ai/ 開頭)隨 harness 發行,不參與搜索,報告記爲 shipped。
* 包裹既有服務方法的包不註冊新能力,調用計數判斷不了它。
適用場景¶
- 新裝插件後,驗證其是否在會話中被實際調用。
- 懷疑某項功能已編寫但未正確接入。
- 在清理 profile 之前,確認刪除某項能力不會造成影響。
- 自寫插件時,確認哪一部分代碼無人調用。