前言¶
在 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。
工作原理¶
插件的工作流程如下:
grep/glob執行完成,觸發工具鉤子。- 判斷路徑是否在觸發範圍內(由 QMD status 解析的集合路徑)。
- 執行 QMD 查詢(限定 collections 並使用 LLM 重排)。
- 結果排隊到
agent.inbox.nextStep。 - 下一個 pre-step 注入模型上下文(
system-reminder風格)。
典型用法¶
配置完成後,插件全自動運行,無需手動調用。
- 讓模型在知識庫目錄內搜索,例如執行
grep 內需。 - 插件檢測到搜索發生在 QMD 集合目錄內,自動補充一次語義檢索。
- 結果以
<system-reminder>的形式出現在下一步上下文中,包含 docid、匹配度、路徑和標題。模型可據此用read讀取正文。
適用場景與注意¶
- 零外部依賴:插件不依賴額外的第三方庫。
- 權限與安全:插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證(MIT)。
- 生態鏈接:
- 插件目錄:https://www.skillhub.cn/plugins/zhangzhenwen1/qmd-autosearch
- GitHub:https://github.com/zhangzhenwen1/qmd-autosearch