維護作業流程
這頁是「怎麼維護與查詢這座 wiki」的操作手冊(meta,不是業務規則)。
規則本身在各 content/ 頁;schema 與三個操作的權威定義在本 repo 根的 CLAUDE.md。
資料怎麼擺(三層)
raw/github/issues/*.json 第1層 不可變原始檔,只被萃取;不進 git(.gitignore raw/)
│ 蒸餾
content/sources/*.md source 頁:決策鏈+錨點(provenance,不是權威)
│ 穩定規則再併回
content/concepts/*.md concept 頁:可複用業務知識(規則的家,唯一權威)
│ 登錄問法
content/規則權威去哪查.md 「按問題找」入口(agent/人查詢的起點)
content/query-results/*.md 查詢捷徑(miss 後回填長出來的)
raw/不進 git:GH issue 原始 JSON 是可再生的暫存料,留本機當 staging,只 commitcontent/。- source 頁 vs concept 頁:source 保留「誰在哪張 issue/comment 拍板、被哪張修正、code/test 錨點」; 規則穩定後要併回 concept 頁,別讓 wiki 淪為 issue tracker 的鏡像(庫存 ≠ 知識)。
維護=三個操作
1. Ingest(吸收一張 issue/一份 SA/一個決議)— 5 步,不是 2 步
raw/原始檔 → 蒸餾成 source 頁(範本見content/sources/issues/既有頁:決策鏈+錨點+「別只看某 comment」的陷阱提醒)。- 更新該頁
updated/sources,補[[連結]]。 - 穩定規則併回對應 concept 頁(source 頁留決策鏈當 provenance)。
- ★ 到 規則權威去哪查 的「按問題找」表加一列,用使用者實際會問的話—— 這步漏了前面全白做,因為查詢入口是那張表,不是 sources/index。
log.mdappend 一條:## [YYYY-MM-DD] ingest | 說明。
2. Lint(每次 ingest 後)
cd zion-wiki && python tools/wiki-lint.py --wiki content --repo ../memorySeatManagement-mono-repo
- FAIL(斷
[[連結]]、缺 frontmatter、updated非法日期)→ 修完才收工。 - WARN 是保鮮訊號:孤兒頁(沒人連=從入口到不了)、引用的 code 檔已不存在(方法改名/移走→更新錨點)。
- 必填欄位 lint 只強制
title/type/updated;tags/created/sources是建議(結構頁如index、log可略)。
3. 促升 source → concept
當一條規則不再被新 issue 翻動(已 close+驗證),把它從 source 頁併進 concept 頁, 並在 規則權威去哪查 把該問法指到 concept(而非 source)。source 頁保留當 provenance。
查詢=兩種消費者
- coding agent(mono-repo):問業務規則 → 走
/wikiskill 或CLAUDE.md橋接規則, 先讀 規則權威去哪查 → 跟[[連結]]→ 命中就引頁+方法錨點、不 grep; miss 才升 gbrain/GitNexus/grep,事後回填。 - 人:推
zion-wiki的main→ GitHub Actions 部署zion-wiki.pages.dev(Quartz,有 backlinks/graph 可點);或直接讀content/。 - 複利點:唯一讓 wiki 越用越強的動作=「miss → 回填一頁 query-result」。miss 不回填=永遠兩道工。
自動偵測「該不該更新 wiki」(Stop hook)
mono-repo 裝了一支 Stop hook(.claude/hooks/wiki-ingest-detector.py,設定在
.claude/settings.local.json)。每輪回覆後它判斷是否為一次 wiki miss:
問了業務規則、卻用 grep/gbrain/gitnexus/explore 回答、又沒讀 wiki、也沒回填。
- 觀察模式(現行 v0):命中就 append 進
.claude/wiki-ingest-queue.md(佇列), 不打斷、不自動寫 wiki。定期 drain 佇列:照上面 Ingest 步驟蒸餾成頁+補問法+lint。 - 升級成互動式提醒:把 detector 命中分支改成
exit 2+ stderr(見 script 檔尾 NOTE), Stop hook 就會 block 並把提醒注入回同一輪、要 agent 當場回填(stop_hook_active旗標防無限重觸)。 - 為什麼不一開始就自動寫:自動寫每輪易產出庫存垃圾、汙染唯一權威;蒸餾品質=價值,這步保持有 gate。