关于 wiki-stage-commit
wiki-stage-commit 用于审核 Obsidian wiki 暂存区中由 LLM 编写的页面,再将其加入正式 wiki。它支持逐项审核或批量处理,并通过版本校验发现并发更改。
主要功能
- 01列出暂存文件及摘要
- 02交互式接受或拒绝审核
- 03批量接受或拒绝模式
- 04提升前进行版本校验
- 05手动合并补丁文件
适用场景
- 01页面进入正式 wiki 前进行审核
- 02批量接受或拒绝暂存文件
- 03合并暂存补丁而不覆盖目标页面
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ar9av/ obsidian-wiki --skill wiki-stage-commit安装后在 Claude Code 中输入/wiki-stage-commit确认已加载。
详细介绍
Wiki 阶段提交 — 将暂存内容提升为正式内容
你正在审核由 LLM 撰写、暂存在 _staging/ 中、等待人工批准后再加入正式 Wiki 的页面。只有当库配置中的 WIKI_STAGED_WRITES=true 时,这项技能才有用。
开始之前
- 解析配置 — 按照
llm-wiki/SKILL.md中的 Config Resolution Protocol 操作。这样可以获取OBSIDIAN_VAULT_PATH和WIKI_STAGED_WRITES。 - 如果未设置
WIKI_STAGED_WRITES或其值为false,请告知用户:"暂存写入模式未启用。请在.env中设置WIKI_STAGED_WRITES=true以使用此功能。"然后停止。 - 读取
_staging/目录清单。
调用形式
/wiki-stage-commit # interactive review: show each file and ask accept/reject
/wiki-stage-commit --all # accept all staged files without per-file review
/wiki-stage-commit --reject-all # reject all staged files (move to _raw/ for manual editing)
/wiki-stage-commit --list # list staged files with summary, no changes
步骤 1:清点暂存文件
清单由 CLI 负责;不要自行遍历 _staging/:
obsidian-wiki staging list --json
每个条目包含:
| 字段 | 含义 |
|---|---|
staged_path | 暂存文件相对于库的路径 |
live_path | 文件将被放置的位置(.patch.md 指向以其命名的页面) |
kind | new、update 或 patch |
staged_revision | 暂存文件当前内容的哈希值 |
live_revision | 正式页面内容的哈希值;如果尚无正式页面,则为 null |
staged_mtime | 暂存时间 |
对于向用户展示的每个文件,都要保留 staged_revision 和 live_revision。 这些值能确保步骤 3 拒绝覆盖 Agent 的并发写入,而不是悄悄将其覆盖。
报告清单:
Staged files: 4 new pages, 2 updates
New pages:
_staging/concepts/attention-mechanism.md (staged 2026-09-08)
_staging/entities/andrej-karpathy.md (staged 2026-09-08)
Updates:
_staging/concepts/transformer-architecture.md (target: concepts/transformer-architecture.md)
Patches:
_staging/skills/prompt-engineering.patch.md (target: skills/prompt-engineering.md)
如果列表为空,请报告:"没有暂存内容。所有写入均已提交,或尚未生成暂存写入内容。"
步骤 2:逐个文件审核(交互模式)
依次处理每个暂存文件(先处理新页面,再处理更新):
对于新页面:
显示摘要:
--- New page: concepts/attention-mechanism.md ---
Title: Attention Mechanism
Tags: #ml #architecture
Summary: Core building block of transformers — computes weighted sum of values based on query-key similarity.
Tier: supporting
Confidence: 0.72
Sources: papers/attention.pdf
[Preview first 20 lines of body]
...
Accept [a], Reject [r], Skip [s], Preview full [p]?
对于补丁文件:
显示结构化差异:
--- Update: concepts/transformer-architecture.md ---
Source: _staging/concepts/transformer-architecture.patch.md
Proposed additions (+):
+ Transformers outperform RNNs on tasks requiring long-range dependencies. ^[inferred]
+ New source: papers/survey-2026.pdf
Proposed deletions (-):
- The attention mechanism was first described in [Bahdanau 2015]. (to be replaced by updated claim)
⚠️ Conflict check: live_revision no longer matches what was staged against. Review carefully.
Accept [a], Reject [r], Skip [s], Preview full diff [p]?
如果设置了 --all 标志,则跳过询问并接受每个文件。
如果设置了 --reject-all 标志,则跳过询问并拒绝每个文件。
如果设置了 --list 标志,则在打印清单后停止(步骤 1)。
步骤 3:执行决定
移动操作均为机械操作,由 CLI 原子性地完成。传入步骤 1 中的版本号,以便在决定基于过时信息时明确报错。
接受新页面
obsidian-wiki staging promote <staged_path> \
--expect-staged <staged_revision> --expect-new
如果自你列出文件后出现了正式页面,--expect-new 会拒绝操作——其他人抢先创建了该页面。
接受更新
obsidian-wiki staging promote <staged_path> \
--expect-staged <staged_revision> --expect-live <live_revision>
拒绝文件
obsidian-wiki staging discard <staged_path>
文件会被移至 _raw/rejected-<category>-<page>.md,供人工编辑。同一页面先前遭拒的文件绝不会被覆盖;第二个文件会改用 -2 后缀。
接受补丁
promote 会拒绝 .patch.md 文件,因为将易读的差异合并到周边文本可能已发生变化的页面中,需要判断,而不是简单重命名。请自行处理:
- 阅读目标页面和补丁。
- 以合并方式应用
+新增内容和-删除内容——绝不要整体覆盖页面。 - 更新目标页面 frontmatter 中的
updated字段。 - 运行
obsidian-wiki staging discard <patch staged_path>,将补丁从队列中移除。
CLI 报告冲突时
如果退出代码为 9,且 stderr 中显示 conflict: ...,表示暂存文件或正式文件在你列出清单后发生了变化。没有任何文件被移动。不要盲目使用最新版本号重试——重新运行 staging list,向用户展示发生的变化,然后再次询问。此项检查的目的正是确保:用户批准的内容已不再是即将写入的内容。
index.md 会由暂存页面的摄取操作更新,因此提升操作不会修改它。每次调用都会由 CLI 向 log.md 写入一条 STAGE_COMMIT 记录。
步骤 4:更新跟踪文件
CLI 会自行向 log.md 追加 STAGE_COMMIT 记录。处理完所有暂存文件后,更新索引和热缓存,确保已提升的页面显示出来:
obsidian-wiki memory sync --takeaways "Committed N staged pages; rejected M."
(不使用 --verb:日志记录已由 staging promote 写入。)绝不要手动编辑 index.md、log.md 或 hot.md——该命令会加锁,防止并行写入者丢失你的更新。
步骤 5:报告
Stage commit complete.
✅ Accepted (N):
concepts/attention-mechanism.md → now live
entities/andrej-karpathy.md → now live
concepts/transformer-architecture.md → updated (patch applied)
❌ Rejected (M):
skills/fine-tuning-llms.md → moved to _raw/rejected-skills-fine-tuning-llms.md
⏭️ Skipped (K):
references/attention-is-all-you-need.md → still in _staging/
Staging queue: K files remaining
备注
- 暂存文件使用与正式页面相同的页面模板——它们已准备好合并,只待批准
- 补丁文件使用便于人阅读的差异格式:以
+开头的行表示新增内容,以-开头的行表示删除内容。staging promote会拒绝处理这些文件——请自行合并(步骤 3) index.md和log.md在导入时始终会立即更新(它们是低风险的跟踪文件)——只有分类页面会经过暂存- 文件移动由
obsidian_wiki/staging.py负责;此技能提供判断,而非文件处理 - Obsidian 的关系图视图不会跟踪
_staging/目录——页面只有在提升后才会出现在知识库中