Obsidian 双链维基知识库维护
适用场景
工作区符合以下结构(如 MyAIKnowledgeBase 类知识库,Obsidian 库可直接打开):
<workspace>/
├── raw/ # 原始资料(PDF 等),只读,绝不修改/移动/删除
├── wiki/ # AI 生成的维基页面,AI 全权维护
├── outputs/ # 临时输出
├── log.md # 操作日志(每次操作后追加简要日志)
└── .workbuddy/memory/USER.md # 知识库规则(双链接格式、页面结构、[待确认] 标注等)
先读 USER.md(或等价规则文件)确认本库的具体规则,再动手。规则缺失时采用本技能默认约定(见下)。
场景 → 执行映射(识别用户意图)
| 用户输入特征 | 执行流程 |
|---|---|
| "raw 里新增了论文/PDF,建维基/做摘要页"(最常见) | §小批量或大批量工作流全流程 |
| "生成完整维基 / 全量重建" | 全量:全部文献 + 概念词条 + index |
| "检查/修复双链接 / 有没有孤儿页面" | 只跑 check_links + fix_links,不建新页 |
| "更新 index / 总目录" | 重写 index.md 并校验 |
| "新建/补充概念词条 XX" | 建词条页 + 回链相关文献 + 校验 |
| "把 XX 年份/名称改掉" | fix_links.py --rename 全局修链 |
| "统计/健康报告/找某主题文献"(只读) | 读 index + check_links 汇报,不改文件 |
| "改摘要页风格/长度" | 按反馈编辑指定页面 |
用户想知道自己该怎么提问时,把话术示例指给 references/usage-guide.md。
核心约定
- 双链接:页面关联一律用
[[页面全名]];链接目标必须与实际文件名逐字符一致(含引号、括号、年份) - 命名:中文文献
标题(第一作者 年份);英文Title (Authors Year);年份以论文首页实际发表年为准 - 页面结构:文献摘要页 = 基本信息表 + 摘要 + 背景 + 方法 + 结论表 + 意义 + 相关链接 + 引用格式;概念词条页 = 定义 + 证据表 + 相关链接。完整模板见
references/page-templates.md - 双向关联:每个文献页链接 ≥2 个概念词条 + ≥3 篇相关文献;概念词条回链文献;index.md 收录全部页面
- 质量:客观改写原文,不编造;不确定处标
[待确认];不复制原文大段文字
工作流
小批量(≤5 篇新文献)
- 读
USER.md与wiki/index.md,盘点已有页面 - 提取 PDF 首页元数据,确定规范页面名:
bash python <skill>/scripts/extract_pdf_metadata.py --raw <raw_dir> --out <out_dir>
提取失败链路:pdfplumber → pymupdf → 渲染 PNG 后用 Read 视觉识别(扫描版/CID 乱码) - 按
references/page-templates.md模板逐篇写页面;缺的概念词条一并建 - 更新 index.md;按规则追加 log.md
- 校验并修复:
bash python <skill>/scripts/check_links.py --wiki <wiki_dir> python <skill>/scripts/fix_links.py --wiki <wiki_dir> --auto-normalize
终态必须 0 悬空、0 孤儿
大批量(≥10 篇)——并行编排
按 references/orchestration.md 执行:先建规范页面名注册表 → 按主题分批派并行子代理(prompt 内含完整模板 + 全量注册表,子代理看不到当前会话)→ 汇总 RENAME 建议脚本化改名 → 补概念页 → 重写 index → 终验 → log.md。
关键脚本:
| 脚本 | 用途 |
|---|---|
scripts/extract_pdf_metadata.py |
批量提取 PDF 首页元数据(三级兜底:pdfplumber/pymupdf/渲染成图) |
scripts/check_links.py |
悬空链接 + 孤儿页面校验(非零退出码可用于门禁) |
scripts/fix_links.py |
--rename "旧\|新" 改名并全局修复链接;--auto-normalize 按引号/空格无关匹配修悬空;--delink 去链 |
脚本运行环境
脚本依赖 pdfplumber + pymupdf(仅元数据提取需要)。优先使用已有 venv;不存在时:
python -m venv <venv_dir> && <venv_dir>/Scripts/pip install pdfplumber pymupdf
check_links.py / fix_links.py 仅用标准库,任意 Python 3 可直接运行。
硬性红线
- raw/ 只读:绝不修改、移动、重命名、删除原始资料
- 重复文件判定后只在 raw/ 外加注说明,不动原文件
- 终验不通过(存在悬空/孤儿)不得宣布完成
- 每次实质性操作后向 log.md 追加日志