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
羽毛球分组比赛记分
小程序二维码

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

小夜