关于 wiki-rebuild
wiki-rebuild 是用于归档、重建或恢复 Obsidian wiki 的技能。清除现有内容前须获得用户确认,并保留归档与 Obsidian 设置。
主要功能
- 01归档 wiki 快照
- 02清空 vault 后重建
- 03从选定归档恢复
- 04保留 Obsidian 设置
- 05刷新已配置的 QMD 索引
适用场景
- 01在更改前保存快照
- 02为重新摄取准备 wiki
- 03恢复先前的 wiki 状态
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ar9av/ obsidian-wiki --skill wiki-rebuild安装后在 Claude Code 中输入/wiki-rebuild确认已加载。
详细介绍
Wiki 重建 — 归档、重建、恢复
你正在对 Wiki 执行破坏性操作。务必先归档,并始终在继续前向用户确认。
开始之前
- 解析配置 — 遵循
llm-wiki/SKILL.md中的配置解析协议(内联@name覆盖 → 沿 CWD 向上查找.env→ 全局配置 → 提示设置)。由此获取OBSIDIAN_VAULT_PATH以及可选的 QMD 设置,例如QMD_WIKI_COLLECTION - 阅读
.manifest.json以了解当前状态 - 确认用户的意图。 此技能支持三种模式:
- 仅归档 — 快照当前 Wiki,不进行重建
- 归档 + 重建 — 创建快照,然后从头重新处理所有来源
- 恢复 — 还原之前的归档
归档系统
归档保存在 $OBSIDIAN_VAULT_PATH/_archives/。每个归档都是一个带时间戳的目录,其中包含该时刻 Wiki 状态的完整副本。
$OBSIDIAN_VAULT_PATH/
├── _archives/
│ ├── 2026-04-01T10-30-00Z/
│ │ ├── archive-meta.json
│ │ ├── concepts/
│ │ ├── entities/
│ │ ├── skills/
│ │ ├── references/
│ │ ├── synthesis/
│ │ ├── journal/
│ │ ├── projects/
│ │ ├── index.md
│ │ ├── log.md
│ │ └── .manifest.json
│ └── 2026-03-15T08-00-00Z/
│ └── ...
├── concepts/ ← live wiki
├── entities/
└── ...
archive-meta.json
{
"archived_at": "2026-04-06T10:30:00Z",
"reason": "rebuild",
"total_pages": 87,
"total_sources": 42,
"total_projects": 6,
"vault_path": "$OBSIDIAN_VAULT_PATH",
"manifest_snapshot": ".manifest.json"
}
模式 1:仅归档
当用户想要为当前状态创建快照,但不进行重建时使用。
步骤:
- 创建归档目录:
_archives/YYYY-MM-DDTHH-MM-SSZ/ - 将所有类别目录、
index.md、log.md、.manifest.json和projects/复制到归档中 - 写入
archive-meta.json,其中的原因设为"snapshot" - 在
log.md中追加:- [TIMESTAMP] ARCHIVE reason="snapshot" pages=87 destination="_archives/2026-04-06T10-30-00Z" - 如果
log.md已编入索引且已配置QMD_WIKI_COLLECTION,可选择刷新 QMD(参见“实时 Wiki 变更后的 QMD 刷新”)。 - 报告:“已归档 87 个页面。当前 Wiki 未受影响。”
模式 2:归档 + 重建
当用户想要从头开始时使用。完整流程如下:
步骤 1:归档当前状态
与上面的模式 1 相同,但原因设为 "rebuild"。
步骤 2:清除实时 Wiki
删除类别目录(concepts/、entities/、skills/ 等)以及 projects/ 目录中的所有内容。保留:
_archives/(显然要保留).obsidian/(Obsidian 配置).env(如果知识库中存在)
将 index.md 重置为空模板。将 log.md 重置为仅包含重建条目。删除 .manifest.json(导入过程中会重新创建)。
步骤 3:重建
告知用户知识库已清空,随时可以完整重新导入。用户现在可以运行:
wiki-status— 查看所有来源均显示为“新”claude-history-ingest— 重新处理 Claude 历史记录codex-history-ingest— 重新处理 Codex 会话历史记录wiki-ingest— 重新处理文档及其他任何原始数据
这些操作会在执行过程中重新构建清单。
重要: 不要自动自行运行导入操作。应由用户选择要重新导入的内容及其顺序。某些来源可能已不再相关。
步骤 4:记录重建
在 log.md 中追加:
- [TIMESTAMP] REBUILD archived_to="_archives/2026-04-06T10-30-00Z" previous_pages=87
清空并记录实时 Wiki 后刷新 QMD(参见“实时 Wiki 变更后的 QMD 刷新”),然后告知用户知识库已准备好,可使用所选的重新导入技能。
模式 3:从归档恢复
当用户想要恢复到之前的状态时使用。
步骤 1:列出可用归档
读取 _archives/ 目录。对于每个归档,读取 archive-meta.json 并展示:
## Available Archives
| Date | Reason | Pages | Sources |
|---|---|---|---|
| 2026-04-06 10:30 | rebuild | 87 | 42 |
| 2026-03-15 08:00 | snapshot | 65 | 31 |
步骤 2:确认要恢复的归档
询问用户想要恢复哪个归档。提醒用户,恢复操作会覆盖当前实时 Wiki。
步骤 3:先归档当前状态
恢复之前,先归档当前状态(原因:"pre-restore"),以免丢失任何内容。
步骤 4:恢复
- 清除实时 Wiki(与模式 2 的步骤 2 相同)
- 将所选归档中的所有内容复制回实时 Wiki 目录
- 从归档中恢复
index.md、log.md和.manifest.json - 在
log.md中追加:- [TIMESTAMP] RESTORE from="_archives/2026-03-15T08-00-00Z" pages_restored=65
步骤 5:报告
恢复后刷新 QMD(参见“实时 Wiki 变更后的 QMD 刷新”),然后告知用户恢复了哪些内容,并建议运行 wiki-lint 检查恢复后的状态是否存在问题。
实时 Wiki 变更后的 QMD 刷新
QMD 是搜索索引,不是事实来源。如果 QMD 刷新失败,不要回滚归档、重建或恢复操作;报告失败,并保持 Markdown 知识库完好无损。
防护条件:如果 $QMD_WIKI_COLLECTION 为空或未设置,请跳过此步骤。
运行时机:
| 模式 | 刷新 QMD? | 原因 |
|---|---|---|
| 仅归档 | 可选 | 除 log.md 外,实时 Wiki 内容没有变化;如果 log.md 已编入索引且 QMD 已配置,则刷新。 |
| 归档 + 重建 | 清空实时 Wiki 后必须刷新 | QMD 必须忘记已删除的页面,否则会返回过时的搜索结果。后续摄取技能会在重新处理来源时再次刷新。 |
| 恢复 | 恢复后必须刷新 | 实时 Wiki 已替换为归档内容,因此 QMD 必须与恢复后的状态一致。 |
目前,此刷新需要本地 QMD CLI。如果已设置 $QMD_CLI,则使用它;否则使用 qmd。如果 CLI 不可用,请报告 QMD skipped: qmd CLI unavailable。
执行 CLI 刷新:
${QMD_CLI:-qmd} update
如果输出提示新哈希需要向量,或者恢复操作替换了实时页面且嵌入可能已过时,请运行:
${QMD_CLI:-qmd} embed
验证 Wiki 集合已反映此操作:
${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"
对于恢复操作,如果归档中有已知页面路径,还需验证一个已恢复的页面:
${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<restored-page>.md" -l 5
在最终报告中,将 QMD 刷新记录为以下其中一项:
QMD refreshed: update + embed + verifiedQMD refreshed: update only + verifiedQMD skipped: QMD_WIKI_COLLECTION unsetQMD skipped: archive-only live content unchangedQMD skipped: qmd CLI unavailableQMD failed: <short error summary>
安全规则
- 执行破坏性操作前,始终先归档。 没有例外。
- 清空实时 Wiki 前,始终先征求用户确认。
- 除非用户明确要求,否则绝不删除归档。 归档是低成本的保险措施。
.obsidian/目录神圣不可侵犯。 归档/重建/恢复期间绝不要触碰它——其中包含用户的 Obsidian 设置、插件和主题。- 如果重建过程中出了问题,归档还在。告诉用户可以恢复。