OpenClaw-hot-skills-zh qmd-zh
本地混合搜索 Markdown 笔记和文档。适用于搜索笔记、查找相关内容或从已索引的文档集合中检索文档。
install
source · Clone the upstream repo
git clone https://github.com/L-LesterYu/OpenClaw-hot-skills-zh
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/L-LesterYu/OpenClaw-hot-skills-zh "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/qmd-zh" ~/.claude/skills/l-lesteryu-openclaw-hot-skills-zh-qmd-zh && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/L-LesterYu/OpenClaw-hot-skills-zh "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/qmd-zh" ~/.openclaw/skills/l-lesteryu-openclaw-hot-skills-zh-qmd-zh && rm -rf "$T"
manifest:
skills/qmd-zh/SKILL.mdsource content
qmd - 快速 Markdown 搜索
适用于 Markdown 笔记、文档和知识库的本地搜索引擎。一次索引,快速搜索。
适用场景(触发短语)
- "搜索我的笔记 / 文档 / 知识库"
- "查找相关笔记"
- "从我的文档集合中检索 Markdown 文件"
- "搜索本地 Markdown 文件"
默认行为(重要)
- 优先使用
(BM25)。它通常即时返回结果,应作为默认选择。qmd search - 仅在关键词搜索失败且需要语义相似度匹配时,才使用
(冷启动时可能非常慢)。qmd vsearch - 除非用户明确要求最高质量的混合检索结果且能接受较长运行时间/超时,否则避免使用
。qmd query
前置条件
- Bun >= 1.0.0
- macOS:
(SQLite 扩展)brew install sqlite - 确保 PATH 包含:
$HOME/.bun/bin
安装 Bun(macOS):
brew install oven-sh/bun/bun
安装
bun install -g https://github.com/tobi/qmd
配置
qmd collection add /path/to/notes --name notes --mask "**/*.md" qmd context add qmd://notes "此集合的描述" # 可选 qmd embed # 首次运行以启用向量 + 混合搜索
索引范围
- 专为 Markdown 文档集合设计(通常为
)。**/*.md - 测试表明"杂乱"的 Markdown 也能正常工作:分块基于内容(每个分块约几百个 token),而非严格按标题/结构划分。
- 不是代码搜索的替代品;请使用代码搜索工具来搜索代码仓库/源码树。
搜索模式
(默认):快速关键词匹配(BM25)qmd search
(最后手段):语义相似度搜索(向量)。由于每次运行可能需要在本地加载 LLM(例如 Qwen3-1.7B),通常较慢。qmd vsearch
(一般跳过):混合搜索 + LLM 重排序。通常比qmd query
更慢,且可能超时。vsearch
性能说明
通常即时完成。qmd search
在某些机器上可能需要约 1 分钟,因为查询扩展可能会在每次运行时将本地模型加载到内存中;向量查找本身通常很快。qmd vsearch
在qmd query
之上增加了 LLM 重排序,因此可能更慢且交互使用可靠性更低。vsearch- 如果需要频繁进行语义搜索,建议保持进程/模型处于热启动状态(例如,如果你的环境支持的话,使用长生命周期的 qmd/MCP 服务器模式),而不是每次都冷启动 LLM。
常用命令
qmd search "查询词" # 默认 qmd vsearch "查询词" qmd query "查询词" qmd search "查询词" -c notes # 搜索指定集合 qmd search "查询词" -n 10 # 返回更多结果 qmd search "查询词" --json # JSON 格式输出 qmd search "查询词" --all --files --min-score 0.3
实用选项
:返回结果数量-n <数量>
:限制搜索范围到指定集合-c, --collection <名称>
:返回所有高于阈值的结果--all --min-score <阈值>
/--json
:代理友好的输出格式--files
:返回完整文档内容--full
文档检索
qmd get "path/to/file.md" # 完整文档 qmd get "#docid" # 按搜索结果中的 ID 检索 qmd multi-get "journals/2025-05*.md" qmd multi-get "doc1.md, doc2.md, #abc123" --json
维护
qmd status # 索引健康状态 qmd update # 重新索引已变更的文件 qmd embed # 更新嵌入向量
保持索引最新
自动化索引流程,确保在添加/编辑笔记时搜索结果保持最新。
- 对于关键词搜索(
),通常只需qmd search
(速度很快)。qmd update - 如果你依赖语义/混合搜索(
/vsearch
),可能还需要运行query
,但这可能较慢。qmd embed
定时任务示例(cron):
# 每小时增量更新(保持 BM25 索引最新): 0 * * * * export PATH="$HOME/.bun/bin:$PATH" && qmd update # 可选:每晚更新嵌入向量(可能较慢): 0 5 * * * export PATH="$HOME/.bun/bin:$PATH" && qmd embed
如果你的 Clawdbot/Agent 环境支持内置调度器,可以在那里运行相同的命令,而非使用系统 cron。
模型与缓存
- 使用本地 GGUF 模型;首次运行时会自动下载。
- 默认缓存路径:
(可通过~/.cache/qmd/models/
覆盖)。XDG_CACHE_HOME
与 Clawdbot 记忆搜索的关系
搜索的是你显式索引到集合中的本地文件(笔记/文档)。qmd- Clawdbot 的
搜索的是Agent 记忆(之前交互中保存的事实/上下文)。memory_search - 两者配合使用:
用于"我们之前决定/学到了什么?",memory_search
用于"我的磁盘笔记/文档中有什么相关内容?"。qmd