mcpField
W
wiki-rebuild

wiki-rebuild

github.com/ar9av生产力3.6k3.2k 次安装1 天前更新
代码仓库

关于 wiki-rebuild

wiki-rebuild 是用于归档、重建或恢复 Obsidian wiki 的技能。清除现有内容前须获得用户确认,并保留归档与 Obsidian 设置。

主要功能

  1. 01归档 wiki 快照
  2. 02清空 vault 后重建
  3. 03从选定归档恢复
  4. 04保留 Obsidian 设置
  5. 05刷新已配置的 QMD 索引

适用场景

  1. 01在更改前保存快照
  2. 02为重新摄取准备 wiki
  3. 03恢复先前的 wiki 状态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ar9av/obsidian-wiki --skill wiki-rebuild

安装后在 Claude Code 中输入/wiki-rebuild确认已加载。

详细介绍

Wiki 重建 — 归档、重建、恢复

你正在对 Wiki 执行破坏性操作。务必先归档,并始终在继续前向用户确认。

开始之前

  1. 解析配置 — 遵循 llm-wiki/SKILL.md 中的配置解析协议(内联 @name 覆盖 → 沿 CWD 向上查找 .env → 全局配置 → 提示设置)。由此获取 OBSIDIAN_VAULT_PATH 以及可选的 QMD 设置,例如 QMD_WIKI_COLLECTION
  2. 阅读 .manifest.json 以了解当前状态
  3. 确认用户的意图。 此技能支持三种模式:
    • 仅归档 — 快照当前 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:仅归档

当用户想要为当前状态创建快照,但不进行重建时使用。

步骤:
  1. 创建归档目录:_archives/YYYY-MM-DDTHH-MM-SSZ/
  2. 将所有类别目录、index.md、log.md、.manifest.json 和 projects/ 复制到归档中
  3. 写入 archive-meta.json,其中的原因设为 "snapshot"
  4. 在 log.md 中追加:
    - [TIMESTAMP] ARCHIVE reason="snapshot" pages=87 destination="_archives/2026-04-06T10-30-00Z"
    
  5. 如果 log.md 已编入索引且已配置 QMD_WIKI_COLLECTION,可选择刷新 QMD(参见“实时 Wiki 变更后的 QMD 刷新”)。
  6. 报告:“已归档 87 个页面。当前 Wiki 未受影响。”

模式 2:归档 + 重建

当用户想要从头开始时使用。完整流程如下:

步骤 1:归档当前状态

与上面的模式 1 相同,但原因设为 "rebuild"。

步骤 2:清除实时 Wiki

删除类别目录(concepts/、entities/、skills/ 等)以及 projects/ 目录中的所有内容。保留:

  • _archives/(显然要保留)
  • .obsidian/(Obsidian 配置)
  • .env(如果知识库中存在)

将 index.md 重置为空模板。将 log.md 重置为仅包含重建条目。删除 .manifest.json(导入过程中会重新创建)。

步骤 3:重建

告知用户知识库已清空,随时可以完整重新导入。用户现在可以运行:

  1. wiki-status — 查看所有来源均显示为“新”
  2. claude-history-ingest — 重新处理 Claude 历史记录
  3. codex-history-ingest — 重新处理 Codex 会话历史记录
  4. 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:恢复
  1. 清除实时 Wiki(与模式 2 的步骤 2 相同)
  2. 将所选归档中的所有内容复制回实时 Wiki 目录
  3. 从归档中恢复 index.md、log.md 和 .manifest.json
  4. 在 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 + verified
  • QMD refreshed: update only + verified
  • QMD skipped: QMD_WIKI_COLLECTION unset
  • QMD skipped: archive-only live content unchanged
  • QMD skipped: qmd CLI unavailable
  • QMD failed: <short error summary>

安全规则

  1. 执行破坏性操作前,始终先归档。 没有例外。
  2. 清空实时 Wiki 前,始终先征求用户确认。
  3. 除非用户明确要求,否则绝不删除归档。 归档是低成本的保险措施。
  4. .obsidian/ 目录神圣不可侵犯。 归档/重建/恢复期间绝不要触碰它——其中包含用户的 Obsidian 设置、插件和主题。
  5. 如果重建过程中出了问题,归档还在。告诉用户可以恢复。

评论

支持 Markdown