Phase 2:編譯(Compile)

LLM 讀 原始資料/,產出結構化的 wiki。這是整個系統的核心。

給 Claude 的 Prompt(增量編譯)

請依照「知識庫/工作流程/2-編譯.md」的規則,把新進的原始資料編譯進 wiki。

第一步:列出所有 `原始資料/` 下 frontmatter 為 `status: raw` 的檔案。
若超過 10 個,分批處理(每批 5 個),每批處理完顯示進度。

第二步:對每個 raw 檔案:
  1. 讀完整文章
  2. 寫一份摘要到 `摘要/摘要_<檔名>.md`,使用 `範本/摘要.md` 的格式
  3. 抽出 3〜10 個關鍵概念
  4. 對每個關鍵概念:
     - 若 `概念文章/<概念>.md` 已存在 → 讀進來,加入新資訊,更新 sources 清單
     - 若不存在 → 建立新文章,使用 `範本/概念文章.md` 的格式
     - 文中提到其他概念時用 `概念名` 反向連結
  5. 把原檔的 status 改為 `compiled`,紀錄 `compiled_at: YYYY-MM-DD`

第三步:更新 `索引.md`:
  - 重新統計(原始資料數、概念文章數、衍生輸出數)
  - 重新生成主題地圖(依照 tags 分群)
  - 重新生成概念文章清單(依筆畫排序)
  - 加上本次新增的摘要鏈結

第四步:報告:
  - 處理了哪些檔案
  - 新建了哪些概念文章
  - 更新了哪些既有文章
  - 發現的潛在重複/可合併的概念

編譯原則

  1. 保持來源可追溯:每篇概念文章的 sources frontmatter 必須列出依據的所有原始資料
  2. 不複製,只重構:不要直接抄原文,要重新組織成自己的話。引用時用 markdown 引用塊並標註來源
  3. 概念粒度:一篇文章 = 一個概念。太大就拆,太小就合
  4. 連結優於分類:少用 tag,多用 反向連結
  5. 語言一致:所有概念文章用繁體中文撰寫,技術名詞首次出現時附原文

增量 vs 全量編譯

  • 增量(預設):只處理 status: raw 的檔案。快、便宜,日常使用
  • 全量:要求 LLM 重讀所有 compiled 檔案,重新檢視概念劃分。每月或新增大量資料後跑一次

全量編譯 prompt:

請執行知識庫的全量重編譯:
1. 讀完所有 `原始資料/` 下的檔案(不論 status)
2. 重新檢查 `概念文章/` 的劃分是否合理:
   - 找出可以合併的(A 與 B 講同一件事)
   - 找出該拆分的(單篇文章涵蓋過多概念)
   - 找出孤兒文章(沒被任何文章連結)
3. 提出重編譯計畫,等我確認再執行

編譯後的檢查

LLM 應該自己跑一次 sanity check:

  • 每個新概念文章都被至少一個其他文章或索引連結到?
  • 每篇文章的 sources 都指向真實存在的檔案?
  • 索引.md 的統計數字對得上實際檔案數?
  • 沒有產生重複概念(同名或近義詞各一篇)?