qmd-autosearch:當模型執行 grep/glob 時自動補充 QMD 語義檢索

前言

在 DeepSeek Harness(DSH)的開發中,讓模型在知識庫目錄內進行搜索是常見需求。通常我們會使用 grep 或 glob 等工具。但這些工具主要基於文件名和路徑匹配,缺乏語義層面的理解。當模型搜索一個概念時,可能只匹配到文件名包含該詞的文檔,而忽略了語義相關的文檔。qmd-autosearch 插件解決的就是這個問題。

它是什麼

qmd-autosearch 是一個 DSH 插件,由 zhangzhenwen1 維護。它的核心作用是在模型在知識庫目錄執行 grep / glob 搜索時,自動補充一次 QMD 語義檢索結果,並把結果注入模型上下文。

核心功能

  • 自動觸發:無需手動調用,模型在 QMD 集合對應的目錄內執行頂層調用即觸發。
  • 語義補搜:使用 lex + vec 查詢,並經服務端 LLM 重排,結果限定在配置的 collections 中。
  • 智能查詢詞:優先使用最近的用戶消息作爲語義主查詢;若消息過短或無關,則回退使用 grep pattern。
  • 異步注入:結果排隊到 agent.inbox.nextStep,在下一個 pre-step 注入模型上下文,不阻塞當前工具調用。
  • 防重複:同一 agent 內,相同(工具、路徑、pattern)簽名只補搜一次。
  • 容錯:QMD 服務不可用或無結果時靜默跳過,不影響原流程。

安裝與啓用

使用以下命令安裝插件:

dsh plugin --profile web add qmd-autosearch

配置

插件需要在配置中指定 QMD 服務地址和搜索範圍。

  • qmdUrl(必填):QMD MCP 服務地址,如 http://localhost:6179/mcp。
  • collections(必填):QMD 集合名列表。
  • limit(默認 5):注入結果條數上限。
  • minScore(默認 25):最低匹配度過濾。
  • triggerRoots(默認自動):觸發判斷的文件系統根路徑列表。

未配置 qmdUrl 或 collections 時,插件會禁用並輸出 warn 日誌。

前置條件

使用前需滿足以下條件:

  • 運行中的 QMD MCP 服務(qmd mcp --http --port 6179)。
  • 至少一個已建立的 collection。

工作原理

插件的工作流程如下:

  1. grep / glob 執行完成,觸發工具鉤子。
  2. 判斷路徑是否在觸發範圍內(由 QMD status 解析的集合路徑)。
  3. 執行 QMD 查詢(限定 collections 並使用 LLM 重排)。
  4. 結果排隊到 agent.inbox.nextStep。
  5. 下一個 pre-step 注入模型上下文(system-reminder 風格)。

典型用法

配置完成後,插件全自動運行,無需手動調用。

  1. 讓模型在知識庫目錄內搜索,例如執行 grep 內需。
  2. 插件檢測到搜索發生在 QMD 集合目錄內,自動補充一次語義檢索。
  3. 結果以 <system-reminder> 的形式出現在下一步上下文中,包含 docid、匹配度、路徑和標題。模型可據此用 read 讀取正文。

適用場景與注意

  • 零外部依賴:插件不依賴額外的第三方庫。
  • 權限與安全:插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證(MIT)。
  • 生態鏈接:
    • 插件目錄:https://www.skillhub.cn/plugins/zhangzhenwen1/qmd-autosearch
    • GitHub:https://github.com/zhangzhenwen1/qmd-autosearch
羽毛球分组比赛记分
小程序二维码

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

小夜