依 D22 翻正舊 ignore 政策:本 repo 自己的 SDD 進版控 + 新增 jdd-dual-profile 卷
🔴 修的病:這個框架 repo 自己的 5 份 SDD 全部被 .gitignore 擋在版控之外, 只活在一台硬碟上——clone 不到、雲端 CC 讀不到、沒備份。SDD 是進度真相源, 「框架 repo 沒吃自己的狗糧」。 依據 D22(已翻案):Gitea private 除機敏值外全 push,雲端工人靠 clone,docs 缺=斷糧; 只有 GitHub mirror 才嚴篩,而 docs 整包已在 github-publish-exclude.txt。 .gitignore 改法:整條擋 → 只擋子項(/*)+ 逐個放行真 SDD。 與 template/ 底下逐位元組相同的自裝副本(TEMPLATE-sdd/、SDD-LIFECYCLE.md)續擋。 新增 docs/3-specs/jdd-dual-profile/(status: draft,等 leo confirm 才升 active): JDD(PM 軌 root/journeys/角色權限/站號 sprint)與雙 profile 合成一卷, 33 條 task/6 phase,每條掛服務哪條 Gherkin(G1–G7)。 新增 hook 6 支、改既有 hook 1 支。**0 行實作**。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
# wiki-architecture — Design
|
||||
|
||||
> 狀態:已結案(2026-06-26,KB 端 183 卡實跑壓測全綠,1,029 條三元組、端點 0 缺陷;驗收明細見 tasks.md)
|
||||
> 建立:2026-06-26 | 最後更新:2026-06-26
|
||||
> 負責人:leo(uncle6me-web)
|
||||
|
||||
---
|
||||
|
||||
## 一句話說明
|
||||
|
||||
在「用戶所有檔案一律改寫成 wiki cards」的新架構下,用 **push(CC 行動前必主動看見)vs pull(CC 按需檢索)** 為唯一判準,重新決定 wiki/ 下每個檔的存廢——只有「不看就出事的盲區」獨立 push,其餘知識(含決策、原則)全是 cards、由 INDEX 多角度索引。
|
||||
|
||||
---
|
||||
|
||||
## 背景與問題
|
||||
|
||||
舊架構(1.4.0 前)部分內容「指向原文」,wiki/ 下因此長出一組固定特殊檔(status / mistakes / decisions-summary / TAXONOMY / INDEX),當時把它們當「天經地義的結構」。
|
||||
|
||||
1.4.1 起改成**所有原文一律改寫成 cards**,但**沒有人回頭重新推導這組特殊檔在新架構下還成不成立**。結果:
|
||||
- 「原則 / 願景」(如「不污染用戶根目錄」「目標用戶 low-code」)**無處可記**——decisions-summary 裝「單筆決策」、cards 裝「概念知識」,原則落在縫裡。
|
||||
- 每次想記原則,就糾結「要不要再加一個特殊檔」——這是打補丁,不是設計。
|
||||
|
||||
**根因**:用「是不是特殊知識」當分類判準是錯的維度。正確判準是 retrieval 行為:**CC 做事時,這東西會不會被動看見?**
|
||||
|
||||
---
|
||||
|
||||
## 範圍
|
||||
|
||||
### 包含(In Scope)
|
||||
- 確立 push/pull 判準,重新決定 wiki/ 每個檔的存廢。
|
||||
- 把 decisions-summary 降級為 cards + INDEX 視圖。
|
||||
- 新增 principles 進 push 清單(hook 主動注入)。
|
||||
- INDEX 升級為「多角度視圖」的家:新增角度 = CC 改 INDEX,不必問用戶開檔。
|
||||
- 同步 wiki-init.md / SKILL.md / INDEX 範本 / session-start hook。
|
||||
|
||||
### 不包含(Out of Scope)
|
||||
- 不改 cards 本身的三層+標籤架構(issue #8 的設計不動)。
|
||||
- 不改 TAXONOMY 的字典機制。
|
||||
- 不動 install-layout 的檔案落點(那是另一份 SDD)。
|
||||
- 不強制遷移既有用戶的 decisions-summary 內容(向後相容,見下)。
|
||||
|
||||
---
|
||||
|
||||
## 設計
|
||||
|
||||
### 核心判準:push vs pull
|
||||
|
||||
> **push**:CC 行動前必須主動出現在 context(session 開始就注入)。
|
||||
> **pull**:CC 想到要查、或載入相關卡時才看見。
|
||||
|
||||
判準的邏輯支點——**mistakes 必須 push**:mistakes 防的是「CC 不自覺的盲區」。一個你不知道存在的錯,你不會主動去檢索。靠 CC 自覺去查「自己沒自覺的盲區」是自相矛盾的 → 所以 pull 模式對 mistakes 邏輯上失效,必須 push。
|
||||
|
||||
同理推 principles:「不污染用戶根目錄」這種準繩,不主動注入,CC 設計時很可能**沒想到要服從就做了**(本專案實證:CC 這幾輪反覆忘記 low-code 用戶與不污染原則,正因它們沒被 push)。**原則也是不自覺的盲區** → 必須 push。
|
||||
|
||||
### 每個檔的存廢(依判準推導)
|
||||
|
||||
| 檔案 | push / pull | 邏輯理由 | 命運 |
|
||||
|------|-------------|---------|------|
|
||||
| **status.md** | push | 不是知識,是專案「此刻時態狀態」;不看會重做已完成的事 | **留**(hook 注入) |
|
||||
| **mistakes.md** | push | 防不自覺盲區;pull 邏輯失效(見上) | **留**(hook 注入) |
|
||||
| **principles.md** | push | 原則是會被遺忘的盲區;不注入 CC 設計時不服從(實證) | **新增**(hook 注入) |
|
||||
| **decisions-summary.md** | pull | 「遇設計判斷才查」——CC 面對決策時自然會查既有決策,pull 夠用;決策本身是知識內容=card | **降級**:內容歸 cards,INDEX 提供「決策角度」視圖 |
|
||||
| **TAXONOMY.md** | (元資料) | 是 cards 的分類字典=cards 的前提,邏輯上不可能是 card | **留**(元資料,非 push 非 pull) |
|
||||
| **INDEX.md** | (入口) | 索引本身;升級為多角度視圖的家 | **留並強化** |
|
||||
| **cards/** | pull | 一切知識內容(原文摘要、AI 筆記、lesson、決策、原則內容…)都在這 | 不變 |
|
||||
|
||||
**收斂結論**:只有「不是知識(status、TAXONOMY)」和「索引本身(INDEX)」獨立;**所有知識內容都是 cards**。push 清單=會變的狀態 + 會重犯的錯 + 會忘記的原則(status / mistakes / principles)。
|
||||
|
||||
### push 的實作機制(propose,非待定)
|
||||
|
||||
從 AI 的 context 行為推導,三類 push 的注入形態不同——判準是「**這東西需要全文才能避免出事,還是一行就夠觸發 CC 去查**」:
|
||||
|
||||
| push 項 | 注入形態 | 理由(從 AI 行為推) |
|
||||
|---------|---------|---------------------|
|
||||
| **status** | **全文** | 短、且 CC 必須知道精確的「下一步是什麼」才不重做;摘要會漏掉關鍵的當前 task 編號 |
|
||||
| **principles** | **全文(一行一條)** | 原則本身就該寫成「一行一條」的精煉準繩(不污染根目錄、用戶是 low-code…)。全文注入成本低、且原則是「行動前必服從」的硬約束,不能只給標題讓 CC 自己決定要不要展開——它不會 |
|
||||
| **mistakes** | **標題清單 + 一行症狀,全文按需 pull** | mistakes 可能累積到數十條、含長 context;全文會撐爆。但「標題 + 症狀」一行足以讓 CC 認出「我正要做的事撞到某條」→ 再展開讀全文。這裡 push 的是「觸發認出」,不是「完整內容」 |
|
||||
|
||||
**關鍵**:principles 全文 push、mistakes 摘要 push,差異來自——原則是「短而硬的約束」(全文成本低、漏一條就違反),mistakes 是「長而多的教訓」(全文太貴,但摘要足以觸發檢索)。這個區分本身就是「為 AI 設計」的判斷。
|
||||
|
||||
context 預算保護:principles 應設「條數上限」(如 ≤15 條,超過代表該合併或下放成 card);mistakes 摘要每條限一行。
|
||||
|
||||
### INDEX 作為「多角度視圖」的家
|
||||
|
||||
- INDEX 不再只是「標籤視圖」,而是所有檢索角度的入口:標籤角度、決策角度、(未來)任何角度。
|
||||
- **新增一個角度 = CC 在 INDEX.md 加一節**,不必新增實體特殊檔、不必問用戶。這直接解決「AI 想累積新類別卻要問用戶開檔」的問題。
|
||||
- principles/mistakes 雖獨立 push,但在 INDEX 也該有指標(讓 pull 路徑也找得到)。
|
||||
|
||||
### 原則的歸屬(回答原始提問)
|
||||
|
||||
「不污染用戶根目錄」「目標用戶 low-code」等:
|
||||
- **內容**寫成 principles(push 檔)+ 必要時 card。
|
||||
- CC 思考「怎麼設計」時,因 principles 被 push,行動前就看見,不必主動查。
|
||||
- 累積新原則 = CC 寫進 principles + INDEX 補指標,**永不問用戶開檔**。
|
||||
|
||||
---
|
||||
|
||||
## 技術限制
|
||||
|
||||
- push 注入量受 context 預算限制:不可無腦全文注入 mistakes+principles+status(會撐爆每 session context)。需「摘要 push + 全文按需 pull」。
|
||||
- 向後相容:既有用戶的 decisions-summary.md 已有內容 → 不可刪。降級指「不再是必備特殊檔」,既有的保留為一張「決策彙總卡」或 INDEX 視圖,內容不丟。
|
||||
- bash 3.2 相容(hook 改動)。
|
||||
- 不破壞 issue #8 的 cards 三層+標籤架構。
|
||||
|
||||
---
|
||||
|
||||
## 採集規範升級:內文實體關係 + ## 實體 區塊(issue #11,183 卡實證)
|
||||
|
||||
現行三元組/gloss 做窄了。從 Logseq vault 183 卡落地暴露:三元組只示範「卡對卡」(把既有 `[[雙鏈]]` 加動詞,資訊量沒增加);gloss 只描述卡標題這一個 node,內文實體(graph node)無處放描述。
|
||||
|
||||
| 決策 | 選擇 | 理由 |
|
||||
|------|------|------|
|
||||
| 三元組抓什麼 | **內文實體間關係**(卡對卡只是其中一類)| 知識圖譜價值在內文概念關係(`原子筆記 >> 對立於 >> 傳統筆記`),不是重複雙鏈 |
|
||||
| 內文實體描述放哪 | 卡片新增 **`## 實體`** 區塊:`正規名(同義詞)— 一句描述`,**集中放、不縮排、不重複** | 內文實體也是 graph node,需描述句供下游 embedding normalize(`黃仁勳` vs `Jensen Huang`)。生產者是 AI 不會邊寫邊漏,不需縮排防漏;集中最利下游一實體一 embedding |
|
||||
| `## 關聯` 結構 | 拆兩層:**內文知識關係**(端點裸文字,對應 `## 實體` 詞條)+ **卡片關係**(卡對卡 `[[]]`)| 內文三元組端點用裸文字避免 Logseq 紅色斷鏈;靠字面一致對應實體表 |
|
||||
| 端點對齊 | **升級成「強制自檢動作」**:寫完逐條把 A/B 拿去 `## 實體` 比對,沒完全相同的正規名 → 改詞或補實體表 | comment 實證:光寫規則 Haiku 會略過(端點對不齊 14 條);寫成自檢動作後 14→0。這是 Haiku 量產的盲點,跑 1-2 張看不出、跑 12 張才暴露 |
|
||||
| 謂詞 | **明寫「用動詞、禁名詞」** | 否則 Haiku 寫出 `>> 存儲格式 >>`、`>> 操作體驗 >>` 讀不通的名詞謂詞 |
|
||||
| 實體要描述、謂詞不要 | 實體補 gloss 描述句,謂詞裸詞即可 | 實體同義詞字面差遠需描述拉近;謂詞同義詞(參考/參照)字面本就近,裸詞 embed 自動聚類 |
|
||||
|
||||
**範圍界線**:本升級只談**採集端**(卡片該寫什麼)。「哪些 token 進向量庫、怎麼去重」屬下游 ingest(另立 kbdb-ingest-plugin#1),不混進 skill。
|
||||
**兩路徑同步**:SKILL.md(Cowork)+ wiki-init.md(CC)一致。
|
||||
|
||||
---
|
||||
|
||||
## 驗收標準
|
||||
|
||||
- [ ] push/pull 判準寫進 wiki-init.md 與 SKILL.md,成為 CC/Cowork 共同規則。
|
||||
- [ ] principles 進 push:session-start hook 注入 status + mistakes重點 + principles重點,且總注入量有節制(摘要而非全文)。
|
||||
- [ ] INDEX 範本含「多角度視圖」說明 + 明示「新增角度改 INDEX 不開新檔」。
|
||||
- [ ] decisions-summary 在文件中重新定位為「pull / INDEX 視圖」,既有內容相容保留。
|
||||
- [ ] 一個原則(如「不污染用戶根目錄」)實際寫進 principles,驗證 CC 開 session 會被動看見。
|
||||
- [ ] hook bash -n 過。
|
||||
|
||||
---
|
||||
|
||||
## 相關文件
|
||||
|
||||
- SDD: install-layout(檔案落點,姊妹 SDD)
|
||||
- memory: user-profile-lowcode、internal-docs-not-pushed
|
||||
- 觸發:本專案 CC 反覆遺忘 low-code 用戶與不污染原則 → 暴露「原則無 push 通道」
|
||||
@@ -0,0 +1,83 @@
|
||||
# wiki-architecture — Tasks
|
||||
|
||||
> 權威來源:此檔案是進度真相。動手前標 [🔄],完成立刻標 [x]。
|
||||
|
||||
---
|
||||
|
||||
## Phase 0:審核(前置)
|
||||
|
||||
- [x] 0.1 design.md 經用戶審核通過(push/pull 判準、push 三項形態、INDEX 多角度)
|
||||
|
||||
---
|
||||
|
||||
## Phase 1:規則文件(wiki-init + SKILL)
|
||||
|
||||
> 前置:Phase 0
|
||||
|
||||
- [x] 1.1 wiki-init.md 寫入 push/pull 判準 + 三類 push(status全文/principles全文/mistakes摘要)
|
||||
- 驗收:CC 讀 wiki-init 能判斷一個內容該 push 還 pull
|
||||
- [x] 1.2 wiki-init.md 新增 principles 檔的建立與維護規則(一行一條、條數上限)
|
||||
- [x] 1.3 wiki-init.md decisions-summary 重定位為「pull / INDEX 決策視圖」,既有內容相容
|
||||
- [x] 1.4 SKILL.md(Cowork)同步上述規則,CC/Cowork 一致
|
||||
- 驗收:兩來源檔 push/pull 規則 byte 對齊(除路徑)
|
||||
|
||||
## Phase 2:INDEX 升級為多角度視圖
|
||||
|
||||
> 前置:Phase 1
|
||||
|
||||
- [x] 2.1 INDEX.md 範本:從「標籤視圖」升級為「多角度入口」(標籤/決策/原則…角度)
|
||||
- [x] 2.2 明示「新增角度 = 改 INDEX 一節,不開新檔、不問用戶」
|
||||
- [x] 2.3 principles/mistakes 在 INDEX 留 pull 指標
|
||||
- 驗收:INDEX 範本含多角度說明 + 新增角度的自助規則
|
||||
|
||||
## Phase 3:push 機制(session-start hook)
|
||||
|
||||
> 前置:Phase 1
|
||||
|
||||
- [x] 3.1 session-start-recall.sh 擴充:注入 status 全文 + principles 全文 + mistakes 標題清單
|
||||
- [x] 3.2 context 保護:principles 條數上限檢查、mistakes 只注入標題+一行
|
||||
- [x] 3.3 bash -n + 沙盒測試(三類都有時注入正確、量受控)
|
||||
- 驗收:開 session 三類都被動出現,總量有節制
|
||||
|
||||
## Phase 4:新增 principles 範本 + 種子原則
|
||||
|
||||
> 前置:Phase 1-3
|
||||
|
||||
- [x] 4.1 建 template/system-dev/wiki/principles.md 範本
|
||||
- [x] 4.2 install.sh download + update.sh keep_file(用戶資料,永不覆蓋)
|
||||
- [x] 4.3 種子原則寫入(dev repo 自用 wiki):不污染用戶根目錄、目標用戶 low-code、wiki 主要給 AI 看、內部文件不推
|
||||
- 驗收:開 session 這些原則被動出現在 context
|
||||
|
||||
## Phase 5:版本、文件、提交
|
||||
|
||||
- [x] 5.1 bump(中版號,新增 principles 功能)+ 兩 VERSION 同步
|
||||
- [x] 5.2 CHANGELOG
|
||||
- [x] 5.3 commit + push(已隨 1.10.0~1.11.0 推送)
|
||||
|
||||
---
|
||||
|
||||
## 完成定義
|
||||
- [x] 所有 tasks [x]
|
||||
- [x] design.md 驗收標準全過
|
||||
- [x] 實證:CC 開 session 會被動看見 principles(本 session SessionStart hook 已注入 9 條,成立)
|
||||
|
||||
---
|
||||
|
||||
## 下游驗收(2026-06-26,KB 端 183 卡實跑壓測)
|
||||
|
||||
> 採集規範升級(gloss / `## 實體` / typed-edge / 端點對齊護欄)首次真實 ingest 全量驗證,全綠:
|
||||
|
||||
| 驗收項 | 結果 |
|
||||
|--------|------|
|
||||
| 結構齊全(gloss + 實體 + 兩層各 1 份) | ✅ 183/183 |
|
||||
| 有 gloss | ✅ 183/183 |
|
||||
| 內文三元組總數 | 1,029 條 |
|
||||
| 端點對不齊 / 三段式 | ✅ 0 |
|
||||
| raw source 鐵律(pages/journals 0 異動) | ✅ |
|
||||
| 內文層無誤用 wikilink | ✅ 乾淨 |
|
||||
|
||||
- 放量分三批、驗收驅動:試跑 12 → 補硬自檢 → 0;放量 170 → 殘留 26 → 修正批 15 → 殘留 1 → 手修;全量 0 缺陷。
|
||||
- 印證 issue #11 的「端點硬自檢」護欄(Haiku 量產 14→0)在真實規模成立。
|
||||
- 連帶修了 KB 端 CLAUDE.md 6 處過時路徑(`.claude/wiki/` → `system-dev/wiki/`),即 1.9.3 hook 提示的場景。
|
||||
|
||||
**狀態:結案。** 採集規範 / push 機制 / `## 實體` 都已下游實證,無待驗證項。
|
||||
Reference in New Issue
Block a user