SuperAPI AI 工具集

memory-router

智能体与模型

查看项目

更新于 10-15 11:24

技能介绍

用途

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 5
  • qmd query -c clawd-memory "<Q>" -n 5
  • 同时直接检查 ~/clawd/MEMORY.md 中的 TODO/决策

如果 B:

  • qmd query -c openclaw-config "<Q>" -n 5
  • qmd query -c skills "<Q>" -n 5
  • qmd query -c clawd-memory "<Q>" -n 3(用于 runbook/文档)

如果 C:

  • qmd query -c projects "<Q>" -n 5
  • qmd 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)