Files
EnterpriseArchitect/docs/agent-kb-retrieval-guide.md
vincent dc00661a34 BIZ-17: QMD和Wiki工具链测试报告与检索指南
- docs/qmd-verification-report.md: QMD功能验证(技能可用,CLI需修复Node.js原生模块兼容性)
- docs/wiki-toolchain-test-report.md: Wiki 5工具完整测试(4通过/1需注意前置条件)
- docs/agent-kb-retrieval-guide.md: Agent知识库检索决策指南(含工具选择/查询构造/缺口上报)
- scripts/wiki-lint-check.sh: Wiki质量自动化检查脚本

Co-authored-by: multica-agent <github@multica.ai>
2026-06-22 20:20:59 +08:00

207 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Agent 知识库检索指南
> **版本**: v1.0
> **维护**: 严维序 (opengineer)
> **日期**: 2026-06-22
---
## 一、检索工具选择决策树
```
需要检索知识库?
├── 精确查找已知页面 → wiki_get(lookup="页面路径")
├── 搜索未知内容
│ ├── 关键词明确 → wiki_search(query="关键词")
│ ├── 语义模糊 → wiki_search(query="自然语言问题")
│ └── 需要文档全文 → qmd query / qmd search
├── 需要深度分析(跨文档) → wiki_search + wiki_get 组合
├── 质量检查 → wiki_lint()
└── 系统状态确认 → wiki_status()
```
---
## 二、工具对比速查表
| 维度 | wiki_search | wiki_get | qmd (CLI) |
|------|-------------|----------|-----------|
| **用途** | 模糊搜索/发现 | 精确读取 | 全文/语义搜索 |
| **查询类型** | 标题+路径+正文 | 精确路径或 ID | lex/vec/hyde 多类型 |
| **返回内容** | 匹配片段+元数据 | 完整页面内容 | 排序结果+评分 |
| **速度** | 快 | 最快 | 依赖索引(首次慢) |
| **适用场景** | "有没有关于 X 的文档" | "打开 X 页面" | "找所有涉及 Y 的内容" |
| **依赖** | 无(OpenClaw 内置) | 无(OpenClaw 内置) | QMD 服务(需运行) |
| **搜索范围** | Wiki vault | Wiki vault | 注册的 markdown 目录 |
---
## 三、查询语句构造示例
### wiki_search
**简单关键词搜索**:
```
wiki_search(query="nginx 配置")
```
**多词精确搜索**:
```
wiki_search(query="deployment pipeline CI/CD")
```
**语义问题搜索**:
```
wiki_search(query="如何配置 nginx 反向代理")
```
**限制结果数量**:
```
wiki_search(query="监控告警", maxResults=5)
```
### wiki_get
**按页面标题查找**:
```
wiki_get(lookup="服务器清单")
```
**按文件路径查找**:
```
wiki_get(lookup="docs/deployment-guide")
```
**分页读取大文件**:
```
wiki_get(lookup="长文档", fromLine=1, lineCount=50)
```
### qmd (CLI)
**关键词搜索**:
```bash
qmd search "nginx logrotate configuration"
```
**语义搜索**:
```bash
qmd query "如何解决 nginx 日志轮转失败的问题"
```
**结构化搜索 (JSON)**:
```bash
qmd query --json --explain "nginx logrotate error"
```
**多类型组合**:
```bash
qmd query $'lex: nginx logrotate\nvec: how to fix log rotation failure'
```
---
## 四、结果处理流程
```
搜索结果
├── 有匹配结果
│ ├── 1-3 个结果 → wiki_get 逐个读取完整内容
│ ├── 4-10 个结果 → 按评分排序,取前 3 个读取
│ └── 10+ 个结果 → 收窄搜索词重新搜索
├── 无结果
│ ├── 尝试同义词/相关词重新搜索
│ ├── 尝试 qmd 搜索(如果 wiki_search 无结果)
│ └── 仍无结果 → 触发知识缺口上报
└── 结果不相关
└── 调整查询词 → 重新搜索 → 仍不相关 → 上报缺口
```
---
## 五、知识缺口上报机制
### 触发条件
1. `wiki_search``qmd` 均无匹配结果
2. 搜索结果与需求明显不相关
3. 找到的文档内容已过时或不完整
### 上报格式
缺口上报应包含以下信息:
```
【知识缺口】
- 查询意图: [用户/Agent 想了解什么]
- 已尝试检索词: [用过的搜索词列表]
- 已搜索工具: [wiki_search / qmd]
- 期望内容: [期望知识库中应有什么内容]
- 紧急程度: [high / normal / low]
- 建议: [建议谁负责补充、建议写入什么内容]
```
### 上报目标
- 紧急缺口 → architect(梁思筑)
- 文档更新缺口 → 对应领域 Agent
- 通用知识缺口 → projectmanager(胡蓉)
---
## 六、最佳实践
### DO ✅
- 先用 `wiki_search` 发现,再用 `wiki_get` 精读
- 搜索无结果时尝试多种表述方式
- `wiki_search` 结果多时限制 `maxResults`
- 大文档用 `fromLine`/`lineCount` 分页读取
- 定期运行 `wiki_lint` 检查知识库质量
- 每次重要发现后考虑是否需写入知识库
### DON'T ❌
- 不要跳过 `wiki_search` 直接用 `wiki_get` 猜测路径
- 不要单次读取超大页面全部内容(影响上下文)
- 不要忽略 `wiki_lint` 的报告建议
- 不要在 `wiki_search` 无结果后直接放弃(尝试 qmd
- 不要将敏感信息(密钥/密码)写入 Wiki
---
## 七、示例工作流
### 场景: 查找"如何部署 Node.js 服务"
```
1. wiki_search(query="Node.js 部署")
→ 返回 2 个匹配: "服务部署规范", "Node.js 开发指南"
2. wiki_get(lookup="服务部署规范")
→ 读取完整内容,找到 systemd 配置部分
3. wiki_get(lookup="Node.js 开发指南", fromLine=30, lineCount=20)
→ 补充读取环境变量和启动参数配置
4. 整合信息 → 回答 Agent 问题
```
### 场景: 知识库中无结果
```
1. wiki_search(query="淘宝 API 对接")
→ No results
2. qmd query "淘宝 API"
→ No results
3. 上报知识缺口:
【知识缺口】
- 查询意图: 淘宝电商 API 对接文档
- 已尝试: wiki_search("淘宝 API 对接"), qmd query "淘宝 API"
- 期望内容: 淘宝开放平台 API 对接指南
- 紧急程度: normal
- 建议: 联系 taobaospecialist (陆云帆) 补充
```