前言¶
在 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