Install
openclaw skills install @18874771327/knowledge-qaopenclaw skills install @18874771327/knowledge-qa本技能支持多知识库架构,每个知识库对应一个独立的 DashVector Collection。用户可在同一工作目录下创建多个互不干扰的知识库(如"MySQLNotes"、"JavaNotes"等)。
核心特性:
用户需在系统上安装 Python 3.8 或更高版本,以及以下依赖:
pip install pdfplumber python-docx requests
用户用 WorkBuddy 打开一个工作目录,在该目录下管理所有知识库。
工作空间 (WorkBuddy 打开的目录)
│
├── MySQLNotes/ ← 知识库 A → Collection: MySQLNotes
│ ├── raw_docs/
│ │ ├── mysql/ ← 分区: mysql
│ │ └── default/
│ ├── config.json ← 独立配置(不同的 DashVector Collection)
│ ├── indexed_files.json
│ └── README.md
│
├── JavaNotes/ ← 知识库 B → Collection: JavaNotes
│ ├── raw_docs/
│ │ ├── java基础/ ← 分区: java_
│ │ └── default/
│ ├── config.json
│ └── README.md
│
└── scripts/ ← (由技能提供,用户不可见)
├── init_knowledge_base.py
├── upload_to_vector.py
├── query_knowledge_base.py
└── partition_list.py
映射关系:
触发词: "创建知识库"、"初始化一个知识库"、"新建知识库"
用户告诉 AI 要创建的知识库名称,以及是否在当前工作目录下创建。
python <技能路径>/scripts/init_knowledge_base.py <知识库名称> --path <工作目录>
AI 自动执行脚本,在工作目录下创建以下结构:
知识库名称/
├── raw_docs/
│ └── default/
├── config.json ← 模板文件,用户需填写阿里云凭证
├── indexed_files.json
└── README.md
告知用户打开 config.json,填入:
dashvector.api_keydashvector.endpointdashvector.collection_name(建议与知识库名一致)bailian.api_key凭证获取地址:
触发词: "上传知识库"、"有新文件了"、"帮我索引文件"
用户必须指定知识库名称(如"MySQLNotes")。AI 在工作目录下查找对应的知识库文件夹。
python <技能路径>/scripts/upload_to_vector.py --kb-path <知识库路径>
脚本自动:
raw_docs/ 下所有文件indexed_files.json)indexed_files.json| 文件位置 | 分区名 |
|---|---|
raw_docs/文档.pdf | default |
raw_docs/mysql/文档.pdf | mysql |
raw_docs/MySQL实战/文档.pdf | mysql_(小写、非字母数字转下划线) |
触发词: "基于知识库回答"、"查一下知识库"、"帮我写报告"
用户必须指定知识库名称(如"基于 MySQLNotes 知识库")。 可选指定分区(如"基于 MySQLNotes 的 mysql 和 oracle 分区")。
python <技能路径>/scripts/query_knowledge_base.py "<问题>" --kb-path "<知识库路径>" --partition <分区名>
示例(单分区):
python scripts/query_knowledge_base.py "InnoDB 有哪些特性" --kb-path "MySQLNotes" --partition mysql
示例(多分区):
python scripts/query_knowledge_base.py "MySQL 和 Oracle 有什么区别" --kb-path "MySQLNotes" --partition mysql,oracle
示例(全分区):
python scripts/query_knowledge_base.py "介绍一下这个知识库" --kb-path "MySQLNotes"
多分区查询说明: DashVector 查询 API 的 partition 参数只接受字符串(不支持数组),脚本通过串行多次查询实现多分区,每个分区独立查询后合并结果,按相似度排序。
根据检索结果中的 source 字段,用 read_file / pdf / docx 加载相关章节。
使用 Web Search 搜索实时信息或知识库未覆盖的背景知识。
报告格式规范:
# [报告标题]
> 生成时间:[YYYY-MM-DD HH:mm]
> 知识库:[知识库名称]
> 来源:[x] 篇相关文档 + 网络补充
## 摘要
[简要概述]
## 一、[章节标题]
[内容...]
## 参考来源
- [文件名] - 分区: [分区名]
报告保存路径: <工作目录>/<知识库名称>/reports/report_[时间戳]_[主题].md
使用 visualizer:interactive 工具生成交互式思维导图:
导图保存路径: <工作目录>/<知识库名称>/mindmaps/mindmap_[时间戳]_[主题].html
visualizer:interactive 展示思维导图触发词: "有哪些分区"、"分区列表"、"查看分区"
python <技能路径>/scripts/partition_list.py --kb-path <知识库路径>
| 格式 | 读取方式 |
|---|---|
.md | 直接 read_file |
.pdf | pdf skill |
.docx / .doc | docx skill |
| 脚本 | 用途 | 关键参数 |
|---|---|---|
init_knowledge_base.py | 创建新知识库 | <名称> --path <工作目录> |
upload_to_vector.py | 上传/索引文件 | --kb-path <知识库路径> |
query_knowledge_base.py | 多分区查询 | <问题> --kb-path --partition |
partition_list.py | 查看分区状态 | --kb-path |
所有脚本均支持 自动发现知识库:不传 --kb-path 时,自动在当前目录或父目录中查找第一个包含 raw_docs/ + config.json 的文件夹。
config.jsonraw_docs 目录放入文档partition 必须放在请求体顶层partition 参数只接受字符串,多分区通过串行查询实现