dsh-skill-indexer:本地 SKILL.md 的兩級意圖檢索插件

DSH 的插件化架構允許開發者通過 Host Bundle 擴展能力。當本地積累了多個 SKILL.md 文件時,Agent 面對自然語言指令往往難以精準定位。dsh-skill-indexer 解決這個問題,它是一個 DSH host bundle 插件,通過建立兩級索引,讓 Agent 用一句話意圖從本機所有 SKILL.md 裏召回對的技能。

核心功能

該插件通過以下機制實現本地技能的檢索與路由:

  • 兩級召回索引:掃描 ~/.workbuddy/skills 與 $DSH_HOME/skills,解析 SKILL.md 的 frontmatter(YAML 子集),抽取關鍵詞並歸納大類,生成 skills-index.json。
  • 一句話意圖路由:L1 大類打分(關鍵詞覆蓋 × IDF),L2 類內技能排序(詞表包含 keywords/triggers/name,trigger 命中權重更高)。
  • 三態回退:命中(hit)、低置信(low,回退全庫 top-k)、未命中(miss)三種狀態,默認閾值 θ1=0.35、θ2=0.12。
  • 技術特性:純本地運行,零第三方運行時依賴,只讀源目錄,支持哈希增量更新。

安裝

通過官方命令安裝:

dsh plugin --profile web add github:NattoCB/dsh-skill-indexer

安裝後,DSH host 啓動時會自動建立索引。

典型用法

命令行交互

在 DSH host 中,可以通過命令行控制索引與查詢:

# 重建索引
/skill-index scan

# 意圖召回
/skill-index query 把這週的ETF拉出來畫個圖

# 查看分類
/skill-index categories

# 查看狀態
/skill-index status

代碼工具調用

Agent 側可以直接調用模型工具:

skill_index(query="把這個PDF轉成markdown")

工具返回包含 state(hit/low/miss)、intent、categories、hits 和 text 的結果,其中 text 可直接作爲上下文注入。

配置說明

通過 cordis.patch.yml 的 config 段配置,關鍵項如下:

Key Default Meaning
roots [](缺省掃描兩個路徑) 掃描根目錄,默認爲 ~/.workbuddy/skills 和 $DSH_HOME/skills。
theta1 0.35 命中閾值,max_c ≥ θ1 判定爲 hit。
theta2 0.12 未命中閾值,max_c < θ2 判定爲 miss。
dataDir $DSH_HOME/skill-indexer 存儲索引文件 skills-index.json 和日誌 usage.log 的目錄。
categoriesYaml '' 人工大類覆蓋文件路徑,優先級高於內置詞表。

適用場景與注意

  • 中文分詞特性:中文關鍵詞按「連續中文串」抽取,長串會粘住短詞(如「當面對高槓杆」會粘住「高槓杆」),短查詢召回可能偏弱。
  • 詞表覆蓋:內置大類詞表(10 類)是 MVP 覆蓋。跨機部署或特定語料場景下,建議在目標語料上做 θ1/θ2 網格標定並增補詞表。
  • 運行環境:插件以 DSH 進程權限運行,不改動技能源目錄,索引文件僅寫入 dataDir。無常駐進程、無 HTTP 服務、無 UI、無 embedding/GraphRAG。
羽毛球分组比赛记分
小程序二维码

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

小夜