feat: wiki 完整規劃方式(183 卡實證)三層架構+frontmatter標籤+多層索引(issue #8/#6/#7)

在 Logseq vault(234 篇 → 183 卡、571 typed-edge)完整跑一輪後定案的
「對 AI 最優」規劃方式,一次納入 wiki-init.md 與 docs/SKILL.md:

- 三層架構:INDEX(標籤視圖)→ cards/<bucket>/00-INDEX → 原子卡。
- frontmatter tags 分類(非行內 #tag、非資料夾),TAXONOMY.md 當字典禁自創。
- 桶子索引固定名 00-INDEX.md(#6);指它帶路徑 [[bucket/00-INDEX]](#7)。
- 新檔 TAXONOMY.md:install download_if_missing、update keep_file。
- 踩坑警語:subagent 絕不寫 raw source(git 驗證)、檔名全形字元一致、量大用 Haiku。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-26 01:20:40 +08:00
parent 331e4d56a7
commit dccb97a6df
8 changed files with 193 additions and 52 deletions
+69 -33
View File
@@ -61,20 +61,34 @@
### 第三步:建立缺少的結構
只建立不存在的目錄和檔案,**已有的一律不動**
只建立不存在的目錄和檔案,**已有的一律不動**
目錄
wiki 採**三層 + 標籤橫切**架構(183 卡實證,issue #8
```
.claude/wiki/
├── INDEX.md ← 頂層:標籤視圖(不是資料夾列表)
├── TAXONOMY.md ← 標籤字典(分類骨架,禁止自創標籤)
├── status.md / mistakes.md / decisions-summary.md
└── cards/
└── <bucket>/ ← 儲存桶(一般專案沿用 docs 分類;vault 由 AI 重新組織)
├── 00-INDEX.md ← 桶子索引(固定名,容器:只連不重寫,H2/H3 分節)
└── <概念全名>.md ← 概念原子卡(一概念一檔,自包含)
```
關鍵原則:**資料夾只是儲存桶,分類由 frontmatter 標籤承載**。資料夾名不該硬繼承原稿目錄——原稿目錄是「人為了整理草稿」分的,wiki 連分類都該由 AI 重新組織。
> **桶子索引固定叫 `00-INDEX.md`**issue #6):`00-` 前綴讓它排序最前、一眼可辨(像 README 之於資料夾),AI 載入任何 `cards/<bucket>/` 一律先讀它,不必猜。檔內 H1 仍寫主題名(如 `# PKM 知識管理`),語意不丟。
一般專案仍可同時建 `docs/` 分類樹(SDD 等):
```
docs/{1-vision,2-architecture/decisions,3-specs,4-guides,5-records/{incidents,test-reports},6-user}
.claude/wiki/
```
(純 PKM vault 不需要 `docs/` 分類樹時,只建 `.claude/wiki/`。)
(純 PKM vault 不需要 `docs/` 分類樹時,只建 `.claude/wiki/`。)
檔案(不存在才建):
- `.claude/wiki/INDEX.md`
- `.claude/wiki/status.md`
- `.claude/wiki/mistakes.md`
- `.claude/wiki/decisions-summary.md`
- `.claude/wiki/INDEX.md``TAXONOMY.md`
- `.claude/wiki/status.md``mistakes.md``decisions-summary.md`
- `docs/README.md`(一般專案才需要)
### 第四步:訪談(每次一個問題)
@@ -91,57 +105,79 @@ docs/{1-vision,2-architecture/decisions,3-specs,4-guides,5-records/{incidents,te
(第二步確認後執行)
**不搬動原文**。逐份讀 raw source,改寫萃取成 `.claude/wiki/` 裡的自包含條目
**不搬動原文**。逐份讀 raw source,改寫萃取成 `cards/<bucket>/` 裡的自包含原子卡
- **概念原子化**:一個 wiki 頁面講一個主題,不是一篇原文對一。原文太雜就拆,多份相關原文就合。
- **自包含**:讀 wiki 條目就懂,不必回去翻原文。把口語、重複、時間順序的流水帳改寫成結構化知識。
- **保留來源指針**:每`**來源**:原文相對路徑`是為了可追溯,不是要使用者回去讀。
- **互相連結(typed-edge 三元組)**`## 關聯` 不要只列裸 `[[頁面]]`——那只說「有關」,沒說關係是什麼,下游要建 knowledge graph 還得回讀兩張卡。改寫成帶語義的三元組(見下方規則)
- **概念原子化**:一張卡講一個概念,不是一篇原文對一張卡。原文太雜就拆,多份相關原文就合。
- **自包含**:讀就懂,不必回去翻原文。把口語、重複、流水帳改寫成結構化知識**不寫「詳見原文」**
- **保留來源指針**:每`**來源**:原文相對路徑`可追溯,不是要使用者回去讀。
- **frontmatter 標籤分類**(見下方):分類走 frontmatter `tags:`,不靠資料夾、不靠行內 `#tag`
- **互相連結(typed-edge 三元組)**`## 關聯` 不只列裸 `[[頁面]]`,改寫成帶語義的三元組(見下方)。
wiki 條目格式
卡片格式(每張卡)
```markdown
# [主題名稱]
---
tags: [知識管理, AI協作, 方法論]
---
# 概念全名
← [[<bucket>/00-INDEX]]
**來源**`[raw source 相對路徑]`
**最後更新**YYYY-MM-DD
## 摘要
[2-3 句說明這個主題的核心]
[一句話核心]
## 重點
- [改寫的要點,自包含、不依賴原文]
- [自包含改寫的要點,不依賴原文]
## 關聯
- [[本主題]] >> 謂詞(動詞短語) >> [[相關主題]]
- [[本]] >> 謂詞(動詞短語) >> [[他卡]]
- [[原子筆記]] >> 是其最小單元 >> [[卡片盒筆記法]]
- [[筆記墳場]] >> 是的反面教訓 >> [[筆記要重複使用而非複製貼上]]
```
**typed-edge 規則**(把「關係」也預編譯,下游 ingest 直接 parse 出帶類型的有向邊):
1. **方向性**`A >> 謂詞 >> B` 必須能讀成「A(謂詞)B」一句通順的話;A、B 順序就是主→賓的真實方向
**麵包屑用帶路徑 wikilink**issue #7):H1 次行放 `← [[<bucket>/00-INDEX]]` 指回桶子索引。
桶子索引固定名 `00-INDEX` 跨桶會撞名,故**指 00-INDEX 一律帶路徑**`[[pkm/00-INDEX]]`Logseq 原生支援、下游 ingest 也能對應到具體檔)。普通卡片間連結仍用裸 `[[卡名]]`(卡名唯一,不需路徑)
**frontmatter 標籤分類**issue #8):
- **用 frontmatter `tags:` 而非行內 `#tag`**:卡片內文常大量用 `#`(講筆記法時的 `#猜想``#book100`),分類標籤若也行內 `#`,下游 ingest 無法區分「分類」與「內文範例」會污染 graph。frontmatter 與內文完全分開,零歧義。
- **用標籤而非資料夾分類**:資料夾=強制單一歸屬;標籤=多重歸屬。一張卡可同時屬知識管理+AI協作+架構設計,硬塞一個資料夾會在其他檢索角度漏掉。
- **雙軸 taxonomy**(寫進 `TAXONOMY.md` 當字典,**禁止自創**以保持 graph 乾淨):
- 領域(主軸,1-3 個):如 知識管理/學習認知/AI協作/生產力/系統設計/工具教學
- 形態(副軸,0-2 個):方法論/工具實作/觀點主張/架構設計/案例經驗
- 一般開發專案的軸可不同(如 子系統/層級/決策類型),由 AI 依專案性質提出、寫進 TAXONOMY.md。
**typed-edge 規則**issue #5,把「關係」也預編譯,下游 ingest 直接 parse 出帶類型的有向邊):
1. **方向性**`A >> 謂詞 >> B` 必須讀成「A(謂詞)B」一句通順的話;A、B 順序就是主→賓真實方向。
2. **謂詞用動詞 / 動詞短語**(反駁、奠基於、是…的實作),動詞天然帶方向。
3. **謂詞自由書寫,不受控詞彙**:下游對謂詞 embedding同義謂詞會自動聚類;但 embedding 分不清方向,方向仍靠書寫順序保證。
4. **向後相容**:純 `[[A]]` 仍合法(視為無類型邊),盡量補謂詞。
3. **謂詞自由書寫,不受控詞彙**:下游對謂詞 embedding同義謂詞會自動聚類;但方向仍靠書寫順序保證。
4. **向後相容**:純 `[[A]]` 仍合法(視為無類型邊),盡量補謂詞。
> `>>` 是分隔語法,repo 可自選慣例符號——但同一個 repo 全程一致。
> `>>` 是分隔語法,repo 可自選符號,但全程一致。
INDEX.md 是**概念索引**,指向 wiki 內部條目(非原文):
```markdown
## 概念索引
| 條目 | 來源 | 一句話 | 最後更新 |
|------|------|--------|----------|
| [[主題名稱]] | `raw/path.md` | 一句話摘要 | YYYY-MM-DD |
```
**INDEX.md 是標籤視圖**(非資料夾列表),`00-INDEX.md` 是桶內容器(只連不重寫,H2/H3 分節)。
頂層索引指桶子索引帶路徑:`[[pkm/00-INDEX]]`
> 與 claude.ai Cowork 的 `docs/SKILL.md` 改寫邏輯一致,兩條路徑(CC / Cowork)產出同一種 wiki。
### 第六步:完成報告
### 第六步:完成報告 + 驗證
完成後**驗證原文 0 動**(踩過的坑,issue #8):
```
git status --short pages/ journals/ # 或一般專案的 docs/ ——須 0 新增 0 修改
```
> **改寫時必守**subagent 尤其):
> 1. **絕不寫入 raw source**subagent 目標一律給絕對路徑到 `cards/<bucket>/`,明寫「絕不寫入 pages/journals/docs 原稿」;事後用上面的 `git status` 驗。
> 2. **檔名 = 卡片全名**,否則 `[[全名]]` 對不到檔。冒號用全形「:」、斜線用全形「/」,**全程一種字元**,避免 `/`、`∕`、`:` 混用斷鏈。
> 3. **量大用 Haiku 並行改寫**,主模型只切概念邊界+審稿+修跨資料夾斷鏈。
告知:
```
✅ wiki-init 完成
建立了:[列出新建的目錄和檔案]
跳過了:[列出已有因此不動的]
改寫了:[N 份原文 → M 條 wiki 條目]
改寫了:[N 份原文 → M 張原子卡、K 條 typed-edge]
原文驗證:pages/ journals/ git status 0 異動 ✅
下一步:用 /wiki-capture 把重要決策存進 wiki
```