前言¶
在 DeepSeek Harness(DSH)裏,模型能調用什麼,取決於會話啓動時上下文裏掛載了哪些技能、插件和 MCP。目錄外的能力對模型等於不存在,用戶往往得先記住包名再操作。另一方面,插件描述多爲英文,用中文說「自動審批」「免確認」時,僅靠包名很難召回。技能在文件系統、插件在 profile、MCP 在另一份配置,也沒有統一檢索入口。
dsh-capability-router(維護者 difaandailisi,GitHub 倉庫 difaandailisi/dsh-capability-router)把三類能力收成一張本機目錄,提供一個只讀工具,按自然語言意圖匹配並返回帶命中理由的候選。純本地、零依賴,不聯網、不調 LLM、不自動安裝第三方包。當前版本 0.1.2,許可證 MIT;分類上屬於 DSH 社區目錄中的工作流類插件,與 DeepSeek / 幻方無官方從屬關係。
它解決什麼問題¶
README 歸納了三類具體痛點:
- 看不見就想不到:未進入上下文的能力無法被模型想到,用戶要先記住名字。
- 中文查詢零召回:只記包名時,中文意圖與英文描述對不上。
- 三類割裂:技能、插件、MCP 分散在不同配置與路徑,缺少統一按意圖查詢的入口。
本插件用「需求 → 詞元擴展 → 三類目錄打分 → 候選 + 理由」的流程應對上述問題;打分規則對名稱、標籤、分類、描述分別加權,且同字段最多計兩次,避免長描述靠詞多取勝。
核心功能¶
目錄採集來源¶
- 技能:讀取
SKILL.mdfrontmatter。 - 插件:讀取 profile 中的
package.json及包內description、keywords。 - MCP:讀取
mcp.json與mcp-known-tools.json。
模型側工具¶
暴露工具 capability_route,參數包括自然語言需求 need,可選 limit(默認條數)與 kind(例如只篩 plugin)。返回結果包含候選條目、分數,以及可轉述的命中理由(名稱、標籤等字段爲何加分),並註明條目所在位置(例如 desktop profile)。
引導注入¶
除工具外,插件可向系統提示詞注入一段引導,說明當用戶說的是需求而不是工具名時,應先調用本工具——這是讓檢索被主動用到的設計之一。
與 WorkBuddy 共用引擎¶
lib/catalog.js 爲純函數、零依賴,可被其他宿主(如 WorkBuddy 技能目錄下的軟鏈與薄 CLI)複用同一套採集與打分邏輯,避免多份實現漂移。
安裝與啓用¶
DSH 引擎要求見 package.json:dsh 爲 >=0.2.1-0 <0.3.0,Node >=20。
方式一:bundle(進 dsh.profile.bundles,啓動時裝配)¶
dsh plugin --profile web add dsh-capability-router
bundle 層變更後需要重啓 DSH 進程。
方式二:本地開發¶
軟鏈進 profile 後,在本地路徑安裝並手工加熱掛載行:
npm install /path/to/dsh-capability-router --legacy-peer-deps
在 profile 的 cordis.patch.yml 末尾追加:
- insert:
- id: capability-router
name: dsh-capability-router
patch 層由 HMR 監視,改完即生效,無需重啓。
典型用法¶
模型調用示例(參數與返回格式來自 README):
capability_route(need: "任務完成時通知我", limit?: 5, kind?: "plugin")
返回示例形態如下(分數與理由由引擎計算,模型可直接轉述 reasons):
檢索「自動審批 不用我每次點同意」→ 1 條(catalog 181 條,更新時間 ...)
1. [plugin] dsh-auto-review — 12 分
名稱命中「review、auto」+6;標籤命中「approval、review、auto」+4
位置:desktop profile
配置¶
在 patch 條目中通過 config 覆蓋;注意 patch 會整體替換 config,需把要保留的鍵全部重述:
- id: capability-router
name: dsh-capability-router
config:
ttlMs: 300000 # 目錄緩存時長,默認 5 分鐘
limit: 5 # 默認返回條數
injectPrompt: true # 是否注入引導段落
extraSkillRoots: # 額外技能根目錄,支持 ~;會遞歸找其中的 skills/ 子目錄
- ~/.workbuddy/skills
sources:
skills: true
plugins: true
mcp: true
extraSkillRoots 用於本機 DSH 未放技能、而技能在其它工具目錄的場景,掛入後可在同一目錄裏統一檢索。
設計取捨與侷限¶
README 說明:目錄規模爲幾十到幾百條時,中文 2-gram 加意圖詞典的召回已夠用,且每條命中可解釋、無額外模型調用;未採用向量檢索作爲主路徑。召回質量依賴技能/插件描述是否寫好觸發語義;只覆蓋本機已裝能力,不含遠端市場索引;中文長句可能有噪音,短需求效果更好。工具只給出安裝相關命令,不自動執行安裝——裝插件等於運行第三方代碼,安裝前應自行審閱源碼與許可證;插件在 DSH 進程權限下運行,與 DSH 其它插件相同。
與同生態項目的差異(摘自 README 對比表):dsh-need-finder 面向精選插件列表;dsh-skills-anywhere 側重技能;dsh-cap-manager 做管理面板;dsh-vet 做安裝前安全審計——本倉庫只做檢索,與 vet 等互補。
結尾¶
若你經常在本機已裝的技能、DSH 插件和 MCP 之間用中文描述需求、又不願死記包名,dsh-capability-router 提供統一的只讀意圖檢索與可解釋命中理由。社區目錄頁:skillhub.cn/plugins/difaandailisi/dsh-capability-router;源碼與完整說明:github.com/difaandailisi/dsh-capability-router。