維護作業流程

這頁是「怎麼維護與查詢這座 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,只 commit content/
  • source 頁 vs concept 頁:source 保留「誰在哪張 issue/comment 拍板、被哪張修正、code/test 錨點」; 規則穩定後要併回 concept 頁,別讓 wiki 淪為 issue tracker 的鏡像(庫存 ≠ 知識)。

維護=三個操作

1. Ingest(吸收一張 issue/一份 SA/一個決議)— 5 步,不是 2 步

  1. raw/ 原始檔 → 蒸餾成 source 頁(範本見 content/sources/issues/ 既有頁:決策鏈+錨點+「別只看某 comment」的陷阱提醒)。
  2. 更新該頁 updated / sources,補 [[連結]]
  3. 穩定規則併回對應 concept 頁(source 頁留決策鏈當 provenance)。
  4. ★ 到 規則權威去哪查 的「按問題找」表加一列,用使用者實際會問的話—— 這步漏了前面全白做,因為查詢入口是那張表,不是 sources/index。
  5. log.md append 一條:## [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 / updatedtags / created / sources 是建議(結構頁如 indexlog 可略)。

3. 促升 source → concept

當一條規則不再被新 issue 翻動(已 close+驗證),把它從 source 頁併進 concept 頁, 並在 規則權威去哪查 把該問法指到 concept(而非 source)。source 頁保留當 provenance。

查詢=兩種消費者

  • coding agent(mono-repo):問業務規則 → 走 /wiki skill 或 CLAUDE.md 橋接規則, 先讀 規則權威去哪查 → 跟 [[連結]] → 命中就引頁+方法錨點、不 grep; miss 才升 gbrain/GitNexus/grep,事後回填
  • :推 zion-wikimain → 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。

相關