Install
openclaw skills install @cookfish1979/wiki-compiler腾讯 IMA 知识库 Wiki 编译——将原始资料系统化组织为结构清晰的Wiki知识体系,并支持标签体系管理与按文件夹层级结构归类。当用户说"建知识库""整理资料库""编译知识库""搭建wiki""知识体系化""把资料整理成wiki""给知识库打标签""按标签分类""标签整理""按文件夹归类""整理散落文件"时触发。不适用于单篇摘要、简单问答、或仅搜索已有知识库内容的场景。
openclaw skills install @cookfish1979/wiki-compiler技能版本:v4.0.0 | 最后更新:2026-07-08 | 上一版:v3.0.2 核心理念:用 LLM 作为"知识编译器",将原始资料一次性编译为结构清晰、内部互联的 Wiki 知识库。编译后的 Wiki 是"真理之源"——LLM 直接基于对 Wiki 整体结构的理解进行自检索和回答,知识在系统中持续累积和演化。
用户:"建一个关于 XXX 的知识库" → 自动启动 阶段 0 → 阶段 4 完整流程
用户:"按文件夹归类" / "整理散落文件" → 仅执行 阶段 0
用户:"更新导览" / "导览新增了 N 篇文章" → 启动 阶段 2 → 阶段 4 增量模式
阶段 0:诊断与归类 ← 是否需要先整理结构?
↓
阶段 1:资料收集 ← 知识库有什么?
↓
阶段 2:检查旧版本 ← 是否已编译过?
↓
阶段 3:链接特性预获取 ← 文件能链接吗?
↓
阶段 4:编译生成 ← 写导览笔记
↓
阶段 5:写入与验证 ← 创建/更新笔记
↓
阶段 6:维护与迭代 ← 持续演化
核心原则:
适用于:知识库刚建好、文件散落在根目录、结构混乱、多层结构不一致
parent_folder_id 是根 ID)add_knowledge ≠ move_knowledge
| 操作 | 效果 | 何时用 |
|---|---|---|
add_knowledge | 虚拟展示,parent_folder_id 不变 | 临时展示 |
move_knowledge | 物理归类,parent_folder_id 改变 | 真正整理 |
仅用 add_knowledge 不调用 move,文件会永远挂在根目录——即使它"看起来在文件夹里"。
folder_id)parent_folder_id:
move_knowledge(每次最多 10 个)move 会清空标签数组)详见 references/folder-organization.md
## 知识库结构诊断报告
### 顶层文件夹
| 文件夹 | 文件数 | 含子文件夹 |
|--------|:------:|:----------:|
| ... | ... | ... |
### 散落文件
- 共 X 个文件 `parent_folder_id` 是根目录
- 列出每个文件的标题和推荐目标文件夹
### 多层结构
- AI 量化与深度学习/
- 机器学习理论方法/(Y 个文件)
- 大模型与智能体/(Y 个文件)
### 处理建议
- 散落文件:调用 `move_knowledge` 归类
- 多层结构:导览放父级,子文件夹不需要各自导览
kb_id)的内容search(source="web"))get_knowledge_list 逐级浏览folder_id 拉根目录(含散落文件视图)向用户展示收集到的资料清单和知识库边界,确认后再进入阶段 2。
重要:每次编译前必须检查是否已有该主题的知识导览,避免重复创建或丢失历史版本信息。
note_id 和版本信息| 情况 | 处理方式 |
|---|---|
| 已有该主题的旧版本导览 | 增量更新:读取旧版本 → 对比增量 → 更新导览 |
| 已有其他主题的导览 | 新建:按正常流程创建 |
| 没有任何知识导览 | 新建:按正常流程创建 |
详见 references/versioning.md 和 references/incremental-update.md
目的:避免写完后发现无法链接导致返工
get_knowledge_list 提取 media_id、media_type、titleexport_media_for_ima_sandbox 获取永久 URL| media_id | title | media_type | 链接策略 | URL/备注 |
|---|---|---|---|---|
| xxx | 文章A | 2 (网页) | ✅ 可内嵌 | https://... |
| xxx | 文章C | 7 (Markdown) | ⚠️ 不内嵌 | 请在知识库中查看 |
| 文件类型 | 编译写法 |
|---|---|
| type 2/6 | [标题](永久URL) |
| type 7/11 | 标题(纯文本,不加链接) |
| type 1/3/4/5 | 标题 — 请在知识库中查看 |
详见 references/link-handling.md
export_note)4 章节结构(详见 references/guide-template.md):
| 章节 | 内容详略 | 重点 |
|---|---|---|
| 一、主题定位 | 略写(~100 字) | 定义 + 解决问题 + 依赖链条 |
| 二、核心概念与关键要素 | 详写(每概念 200-300 字) | 核心思想 + 引用文章 + 实践建议 |
| 三、学习路径 | 中等(表格 + 一段话) | 两条路径 + 知识网络连接 |
| 四、相关主题 | 略写(表格) | 主题 + 关系 + 连接点 |
关键要素写作:冒号前是要素名称,冒号后是详细说明,末尾用 [《标题》](链接) 引用。
链接格式要求(必须严格遵守):
重要:笔记创建接口返回成功不代表内容完整,必须立即验证。
# 1. 构建请求 JSON
python3 -c "
import json
with open('guide_content.md', 'r') as f: content = f.read()
with open('note_request.json', 'w') as f:
json.dump({
'content_format': 1,
'content': content,
'title': '📖 主题导览:[主题名称]'
}, f, ensure_ascii=False, indent=2)
"
# 2. 创建笔记
curl -s -X POST "https://ima.qq.com/openapi/note/v1/import_doc" \
-H "ima-openapi-clientid: $IMA_OPENAPI_CLIENTID" \
-H "ima-openapi-apikey: $IMA_OPENAPI_APIKEY" \
-H "Content-Type: application/json" \
-d @note_request.json | python3 -m json.tool
# 返回: {"code": 0, "data": {"note_id": "xxx"}}
短内容优化:< 3KB 的内容直接用 import_doc + curl -d @filepath,跳过 COS 中间环节。
export_note 导出内容详见 references/write-and-verify.md
知识库需要"活"起来,而非一次性建好就搁置。
触发词:"检查知识库"、"知识库体检"
触发词:"补充知识库"、"更新知识库"
用户可基于 Wiki 生成各类产出(研究报告、总结、幻灯片大纲等),保存回笔记本后实现知识的"增量训练"——系统持续演化。
触发词:"审查标签"、"整理标签"
详见 references/tagging.md 第 7 节。
检查项:
破坏性操作保护:详见 references/security.md
| 维护类型 | 频率 | 触发条件 |
|---|---|---|
| 健康检查 | 每月 1 次 | 时间周期 |
| 知识补充 | 按需 | 用户上传新资料 |
| 标签审查 | 每季度 1 次 | 标签数 > 100 |
| 增量更新导览 | 每周 1 次 | 文件数增加 > 10% |
| 深度重构 | 每半年 1 次 | 主题边界变化 |
| 类型 | 用途 | 示例 |
|---|---|---|
| 主题标签 | 文章涉及的主题 | 风险因子 / 量化策略 |
| 属性标签 | 文章固有属性 | 科普 / 进阶 / 待补充 |
| 状态标签 | 维护状态 | 已编译 / 待审核 / 草稿 |
item_name 必须严格匹配 get_knowledge_list 返回的完整标题limit 范围 (0, 50],超出返回错误| 操作 | 风险 | 保护 |
|---|---|---|
delete_note | 不可逆 | 备份→三重确认→操作日志 |
tag_delete | 关联自动解除 | 列影响文件→用户确认 |
tag_rename | 重名自动合并 | 检查新名→用户确认 |
move_knowledge | 标签可能清空 | 备份标签→移动后恢复 |
/sandbox/workspace/logs/note_operations.logtag_remove 优于 tag_delete,创建新笔记优于删除旧笔记对绝大多数场景,不要删除旧笔记,而是:
- 创建内容完全的新笔记
- 在新笔记中标注"替代旧版 v1.X(
note_id=XXX)"- 旧笔记保留作为历史版本,用户在 IMA 客户端手动决定是否删除
| 功能 | 端点 |
|---|---|
| 获取知识库列表 | openapi/wiki/v1/get_knowledge_list |
| 移动文件 | openapi/wiki/v1/move_knowledge |
| 添加标签 | openapi/wiki/v1/tag_add |
| 列出标签 | openapi/wiki/v1/tag_list |
| 创建笔记 | openapi/note/v1/import_doc |
| 导出笔记 | openapi/note/v1/export_note |
| code | 含义 |
|---|---|
| 0 | 成功 |
| 51 | 参数错误(如 limit 超出范围) |
| 220001 | 文件名称不匹配(item_name 未用完整标题) |
| 220004 | 无效的 knowledge_base_id |
| 220030 | 无写权限 |
详见 references/api-reference.md 和 references/troubleshooting.md
import_doc 创建笔记,写入笔记本references/ 子目录version / license / author / last_updated)delete_note 流程重写为安全删除(备份→三重确认→操作日志)wiki-compiler/
├── SKILL.md ← 本文件(操作手册)
└── references/
├── reference.md ← references/ 索引
├── folder-organization.md ← 阶段 0 详细
├── tagging.md ← 标签体系
├── security.md ← 安全准则
├── api-reference.md ← API 速查
├── guide-template.md ← 阶段 4 笔记撰写规范
├── versioning.md ← 阶段 2 版本控制
├── incremental-update.md ← 阶段 4 增量更新
├── link-handling.md ← 阶段 3 链接处理
├── write-and-verify.md ← 阶段 5 写入与验证
├── maintenance.md ← 阶段 6 维护
├── troubleshooting.md ← 故障排查
└── cases/
└── quantitative-investing.md ← 实战案例