其他
Wiki 与来源严重漂移或需要全新重建/恢复时:先归档当前知…
当用户想从零重建 wiki、重大变更前归档当前知识、或恢复旧版 wiki 时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 57/100 ×0.15
适用场景
Wiki 与来源严重漂移或需要全新重建/特定
解决思路
- 开始前解析配置:遵循 `llm-wiki/SKILL.md` 中的 Config Resolution Protocol(inline `@name` override → 向上遍历 CWD 查找 `.env` → 全局配置 → 提示设置),得到 `OBSIDIAN_VAULT_PATH` 和可选 QMD 设置如 `QMD_WIKI_COLLECTION`。
- 读取 `.manifest.json` 了解当前状态。
- 确认用户意图并选择三种模式之一:仅归档、归档+重建、恢复。
- 归档存放在 `$OBSIDIAN_VAULT_PATH/_archives/`;每个归档是带时间戳目录,包含当时完整 wiki 状态。
- 写入 `archive-meta.json` 时包含 `archived_at`、`reason`、`total_pages`、`total_sources`、`total_projects`、`vault_path`、`manifest_snapshot` 字段。
- 仅归档模式:创建归档目录 `_archives/YYYY-MM-DDTHH-MM-SSZ/`。
- 仅归档模式:复制所有分类目录、`index.md`、`log.md`、`.manifest.json`、`projects/` 到归档。
- 仅归档模式:写入 `archive-meta.json`,`reason` 为 `snapshot`。
- 仅归档模式:向 `log.md` 追加 `- [TIMESTAMP] ARCHIVE reason="snapshot" pages=87 destination="_archives/2026-04-06T10-30-00Z"`。
- 仅归档模式:如果 `log.md` 被索引且配置了 `QMD_WIKI_COLLECTION`,可选刷新 QMD。
- 仅归档模式:报告 `Archived 87 pages. Current wiki is untouched.`。
- 归档+重建模式第 1 步:按仅归档模式归档当前状态,但 `reason` 为 `rebuild`。
- 归档+重建模式第 2 步:从分类目录(`concepts/`、`entities/`、`skills/` 等)和 `projects/` 目录移除所有内容以清空 live wiki。
- 清空时保留 `_archives/`、`.obsidian/`、`.env`(如果存在于 vault)。
- 清空时将 `index.md` 重置为空模板。
- 清空时将 `log.md` 重置为只包含 rebuild 条目。
- 清空时删除 `.manifest.json`(它会在 ingest 期间重新创建)。
- 重建模式第 3 步:告诉用户 vault 已清空并准备好完整 re-ingest。
- 重建模式第 3 步:用户可运行 `wiki-status` 查看所有源为 `new`。
- 重建模式第 3 步:用户可运行 `claude-history-ingest` 重新处理 Claude 历史。
- 重建模式第 3 步:用户可运行 `codex-history-ingest` 重新处理 Codex 会话历史。
- 重建模式第 3 步:用户可运行 `wiki-ingest` 重新处理文档和其他原始数据。
- 重建模式第 3 步:不要自动运行 ingest;让用户选择重新 ingest 哪些源以及顺序,因为有些源可能不再相关。
- 重建模式第 4 步:向 `log.md` 追加 `- [TIMESTAMP] REBUILD archived_to="_archives/2026-04-06T10-30-00Z" previous_pages=87`。
- 重建模式第 4 步:在清空和记录 live wiki 后刷新 QMD,然后报告 vault 已准备好选择性 re-ingest。
- 恢复模式第 1 步:读取 `_archives/` 目录;对每个归档读取 `archive-meta.json` 并展示可用归档表格:Date、Reason、Pages、Sources。
- 恢复模式第 2 步:问用户要恢复哪个归档,并警告恢复会覆盖当前 live wiki。
- 恢复模式第 3 步:恢复前先归档当前状态,reason 为 `pre-restore`,以免丢失。
- 恢复模式第 4 步:清空 live wiki(同归档+重建模式的清空步骤)。
- 恢复模式第 4 步:将所选归档中的所有内容复制回 live wiki 目录。
- 恢复模式第 4 步:从归档恢复 `index.md`、`log.md`、`.manifest.json`。
- 恢复模式第 4 步:向 `log.md` 追加 `- [TIMESTAMP] RESTORE from="_archives/2026-03-15T08-00-00Z" pages_restored=65`。
- 恢复模式第 5 步:刷新 QMD 后报告恢复了什么,并建议运行 `wiki-lint` 检查恢复状态问题。
- QMD 刷新原则:QMD 是搜索索引,不是真相来源;如果 QMD 刷新失败,不要回滚 archive、rebuild 或 restore 工作,报告失败并保持 markdown vault 不变。
- QMD 刷新守卫:如果 `$QMD_WIKI_COLLECTION` 为空或未设置,跳过该步骤。
- QMD 刷新时机:仅归档模式可选;归档+重建模式在清空 live wiki 后必须刷新;恢复模式在恢复后必须刷新。
- QMD 刷新需要本地 QMD CLI;如果设置了 `$QMD_CLI` 就用它,否则用 `qmd`;如果 CLI 不可用,报告 `QMD skipped: qmd CLI unavailable`。
- QMD CLI 刷新命令:`${QMD_CLI:-qmd} update`。
- 如果输出说新 hash 需要向量,或者恢复替换了 live 页面且 embeddings 可能过时,运行 `${QMD_CLI:-qmd} embed`。
- 验证 wiki collection 反映操作:`${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>`。
- 安全规则:破坏性操作前始终归档,无例外。
- 安全规则:清空 live wiki 前始终与用户确认。
- 安全规则:除非用户明确要求,绝不删除归档;归档是廉价保险。
- 安全规则:`.obsidian/` 目录神圣不可侵犯;archive/rebuild/restore 时绝不要动它,因为它包含用户 Obsidian 设置、插件和主题。
- 安全规则:如果 rebuild 中途中出问题,归档还在;告诉用户可以恢复。
适用边界 · 注意事项
- 当增量修复足以解决 wiki 与来源漂移时,不应使用此破坏性重建/恢复流程。
- 当无法确认用户意图、未解析到 `OBSIDIAN_VAULT_PATH`,或没有可用归档时,不应执行清空或恢复。
- 当不能保证先归档并保留 `.obsidian/` 时,不应执行清空 live wiki。