用途
Memory Router 是一个团队统一知识检索技能,要求所有团队智能体(小a/ops/code/quant/data/finance/research/market/pm/content/law)在回答以下类型问题前,必须通过标准化流程检索本地知识库:
- 系统配置、架构、部署
- 历史决策、TODO、进度
- Skill 用法与触发条件
- 项目状态与交付件
- 人物、日期、数字
主要能力
该技能基于 QMD 工具,提供以下功能:
- 混合搜索:
qmd query "<question>",结合 BM25 + 向量 + 重排序,适用于大多数查询 - 结构化查询:
qmd query $'lex: keyword\nvec: semantic',需要精确关键词和语义结果时使用 - BM25 关键词:
qmd search "<exact term>",精确词/文件名/配置键查找 - 向量相似度:
qmd vsearch "<concept>",概念/模糊相似查询 - 获取文档:
qmd get path/to/file.md:42 -l 30,搜索定位文件后读取特定行 - 多文档获取:
qmd multi-get "reports/*.md",批量获取多个文件 - 集合过滤:
qmd query -c skills "<question>",限制搜索到单个集合 - 完整输出:
qmd query --full "<question>",获取完整文档内容 - JSON 输出:
qmd query --json "<question>",机器可读输出 - 列出文件:
qmd ls skills,浏览集合中已索引内容 - 状态:
qmd status,健康检查 - 更新索引:
qmd update,文件变更后重新索引 - 嵌入向量:
qmd embed,为新/变更文件生成嵌入 - 上下文注释:
qmd context list,查看集合描述/使用提示 - MCP 服务器:
qmd mcp,作为 MCP 工具暴露给 IDE/智能体集成
使用方式
路由算法
输入:用户问题 Q
步骤 1 — 分类
- A = "先前决策 / TODO / 人物 / 日期 / 发生了什么"
- B = "系统配置 / 操作方法 / Skill 用法 / 架构"
- C = "项目状态 / 交付件 / PRD"
- D = "外部事实 / 实时数据"(回退到网络)
步骤 2 — 检索(执行所有适用项,而非仅一项)
如果 A:
qmd query -c daily-memory "<Q>" -n 5qmd query -c clawd-memory "<Q>" -n 5- 同时直接检查
~/clawd/MEMORY.md中的 TODO/决策
如果 B:
qmd query -c openclaw-config "<Q>" -n 5qmd query -c skills "<Q>" -n 5qmd query -c clawd-memory "<Q>" -n 3(用于 runbook/文档)
如果 C:
qmd query -c projects "<Q>" -n 5qmd query -c reports "<Q>" -n 3
如果 D:
qmd query "<Q>" -n 5(所有集合,无过滤)- 如果召回率低 → web_fetch / browser
步骤 3 — 引用 每个回答必须包含 1-3 个来源引用:
- 文件路径:
~/clawd/docs/memory-router.md:15 - QMD URI:
qmd://skills/geo-agent/SKILL.md - 或:"Source: qmd query -c projects 'content factory status'"
智能体集成(强制 AGENTS.md 部分)
每个智能体的 AGENTS.md 必须包含:
## 知识库 / Memory Router(强制)
- 你在回答任何「配置/流程/历史/怎么做」类问题前,**必须先检索本地知识库**:
1) 优先 QMD:`qmd query "<问题>"`(必要时加 `--collection openclaw-config|projects|skills|reports|clawd-memory`)
2) 涉及待办/决策/人/日期 → 再查工作区记忆文件(`~/clawd/memory/YYYY-MM-DD.md` 与 `~/clawd/MEMORY.md`)
- 输出时至少引用 1-3 个来源(文件路径或 `qmd://...` URI)。
健康监控
每日 Cron(推荐):
# qmd-health: run daily at 08:00
qmd status | grep -E "Total|Vectors|Pending|Updated"
qmd update
每周嵌入刷新:
# qmd-embed: run weekly Sunday 03:00
qmd embed
qmd status
需跟踪的健康指标:
- 覆盖率:Vectors / Total(目标:>90%)
- Pending:每周嵌入后应 <100
- 集合新鲜度:活跃集合的 Updated 时间戳应 <24h
- 查询延迟:混合查询应 <2s
故障排除
- qmd embed 挂起:检查 node-llama-cpp 是否在编译(首次运行)。等待约 10 分钟。
- CUDA 错误:在纯 CPU 服务器上正常。QMD 自动回退到 CPU。
- 未找到 Ollama:QMD 使用 node-llama-cpp,而非 Ollama。忽略 Ollama 相关引用。
- 召回率低:尝试 --full 标志,或使用 qmd search(BM25)进行精确词查找。
- 文件缺失:运行 qmd update 重新索引,然后 qmd embed 生成新向量。
脚本:memory_router.sh
用于自动将上下文注入智能体提示:
#!/bin/bash
# Usage: ./memory_router.sh "question" [collection]
QUERY="$1"
COLLECTION="${2:-}"
if [ -n "$COLLECTION" ]; then
qmd query -c "$COLLECTION" "$QUERY" -n 5 --line-numbers
else
qmd query "$QUERY" -n 5 --line-numbers
fi
集合(当前)
- clawd-memory:
~/clawd/**/*.md(1603 个文件),用于记忆、文档、报告、runbook - daily-memory:
~/clawd/memory/*.md(44 个文件),用于每日工作日志 - team:
~/.openclaw/agents/**/*.json(860 个文件),用于智能体配置、模型、认证 - openclaw-config:
~/.openclaw/**/*.json(1031 个文件),用于 OpenClaw 系统配置 - projects:
~/clawd/projects/**/*.md(100 个文件),用于项目 PRD、交付件 - skills:
~/clawd/skills/**/SKILL.md(468 个文件),用于所有技能文档 - reports:
~/clawd/reports/*.md(2 个文件),用于研究与评审报告
适用场景
适用于团队内多个智能体需要统一知识检索流程的场景,确保回答基于本地知识库并附带来源引用,提升回答准确性和可追溯性。
限制
- 依赖 QMD 工具及本地知识库文件结构
- 需要定期运行索引更新和嵌入生成以保持数据新鲜
- 首次运行可能因 node-llama-cpp 编译而耗时较长
- 纯 CPU 服务器上可能出现 CUDA 错误(自动回退到 CPU)
- 外部事实/实时数据需回退到网络获取
最后更新:2026-03-03 维护者:小a (CEO)