📅 2026-05-06 Wiki 異動日誌

主題:發網站前的 lint 健康度整理。Score 54 → 78(+24)。

摘要

操作影響頁面備註
Lint initial-Health 54/100,發現 264 個 .fuse_hidden* 殘留
Cleanupwiki/**/.fuse_hidden* (264 檔)macOS / FUSE / iCloud 殘留批次刪除
Update lint.py v1.3.5 → v1.3.6wiki/tools/lint.py加防禦過濾
Wave 1cwiki/maps/Claude 索引.md救 orphan AI 工程專有名詞對照表
Wave 1dwiki/entities/wiki/concept/Vibe Coding.md加 alias 氛圍編程
Wave 2 修正長鏈路成功率衰減 / 代理工程 / 鋸齒狀智能4 處 source rewrite(經驗法則 2)
Wave 3 Batch 1CLAUDE.md(專案手冊).md, Sub-agent.md2 god-node 擴充
Lint final-Health 78/100(+24);Orphans 0 / Missing 0 / God nodes 5→3

詳細

觸發契機

使用者在前一輪對話討論「未來發網站」的選項,選了 Quartz(最相容於 Obsidian vault),於是要先跑一輪 lint 看離可發布狀態還差什麼。

Lint Initial Scan — Health 54/100

指標結果
Total pages214(202 entities + 12 maps)
Orphans1(AI 工程專有名詞對照表)
Missing concepts15(多為 alias false positives)
Low-inlink pages8(多為 index 頁,可忽略)
God nodes5 warn
Inferred-heavy0
Cross-domain collisions0

「Missing concepts」乍看 15 個,仔細看發現 9 個其實是 inline code 內的範例 link(`[[BASB]]` 之類)。lint.py 已有 backtick 過濾邏輯,但結果仍有假陽性 → 推論是被 .fuse_hidden 殘留檔污染。

Action A:清 264 個 .fuse_hidden* 殘留

find wiki -name '.fuse_hidden*' | wc -l264 個。從 4/27 累積到 5/5。最多分布:

目錄數量
wiki/entities/claude/concept45
wiki/entities/claude/system33
wiki/entities/claude/pattern30
wiki/entities/wiki/concept21
wiki/entities/productivity/pattern19

執行 find wiki -name '.fuse_hidden*' -delete 觸發 Operation not permitted,呼叫 mcp__cowork__allow_cowork_file_delete 取得權限後重跑成功。264 → 0。entity 真實數 214 不變。

洞察:iCloud + Obsidian 共用 vault 時,FUSE 在 Obsidian 持有檔案的瞬間會建立 .fuse_hidden* 副本(多數是檔案被編輯時的舊版快照)。這些殘留會:

  1. 污染掃描——lint 結果出現舊版本造成的假 missing
  2. 造成 inlinks 被重複計數(多版副本都會被 grep 抓到)

→ 規律:定期清 .fuse_hidden* 應納入 vault maintenance 流程。

Action B:lint.py v1.3.5 → v1.3.6

防禦性 patch,避免未來 .fuse_hidden* 復發污染:

# v1.3.6: 跳過 .fuse_hidden* 與其他點號開頭的暫存檔
files = [p for p in files if not p.name.startswith(".")]

雖然 rglob('*.md') 通常不會抓到 .fuse_hidden*(沒 .md 副檔名),但若 sync 過程產生 .fuse_hiddenXXX.md 之類的命名,這層過濾仍能擋住。docstring 加 v1.3.6 patch 紀錄。

→ Re-lint:Score 54 → 64(+10)。

Wave 1c:救 orphan「AI 工程專有名詞對照表」

wiki/entities/wiki/artifact/AI 工程專有名詞對照表.md 沒有任何頁連到它(lint 唯一 orphan)。

Claude 索引 加新 section「📖 參考與術語」:

## 📖 參考與術語
 
- 📖 [[AI 工程專有名詞對照表]] — Harness / Vibe / Agentic 等英中對照表(人工校訂中)

Wave 1d:Vibe Coding alias 補

代理工程.md 引用 [[Vibe Coding(氛圍編程)]],但 entity basename 是 Vibe Coding.md。lint 標 missing。

wiki/entities/wiki/concept/Vibe Coding.md frontmatter aliases 加 氛圍編程

Wave 2:發現「缺失 entity」其實已存在 → 經驗法則 2 觸發

原本的 lint 報告把 [[Harness Engineering(馬具工程)]][[Externalized Memory(外部記憶)]] 列為 missing。

但 Glob 一查:

  • wiki/entities/claude/concept/Harness Engineering.md已存在
  • wiki/entities/claude/pattern/Externalized Memory.md已存在

引用方寫了中文翻譯造成 basename 對不上。跟 Vibe Coding 是同一個 pattern。

對應 CLAUDE.md §10 經驗法則 2:「同主題第 2 篇 raw → 補 source 而非建新 entity」。延伸到本案:「同基本概念多種引用形式 → 改引用方而非建新 entity」。

4 處 source rewrite

BeforeAfter
長鏈路成功率衰減.md L41[[Harness Engineering(馬具工程)]][[Harness Engineering]](馬具工程)
長鏈路成功率衰減.md L47[[Externalized Memory(外部記憶)]][[Externalized Memory]](外部記憶)
代理工程.md L22[[Vibe Coding(氛圍編程)]][[Vibe Coding]](氛圍編程)
代理工程.md L59[[Harness Engineering(馬具工程)]][[Harness Engineering]](馬具工程)
鋸齒狀智能.md L65## 與 [[Harness Engineering(馬具工程)]] 的關係## 與 [[Harness Engineering]](馬具工程)的關係

效果:link 指向 canonical basename(不依賴 alias),Quartz / 任何工具都解得開;中文翻譯保留在 rendered 結果。

→ Re-lint:Score 64 → 74(+10)。Orphans 0、Missing 0。

Wave 3 Batch 1:2 god-node 擴充

A. CLAUDE.md(專案手冊) — 617 → ~1700 字

擴充 6 段:

  • §為什麼存在(LLM 沒跨對話記憶 → 重複問題的攤提成本)
  • §用途與內容分類(5 類:編碼慣例 / 禁忌 / 架構 / 指令 / 風格偏好;補「不該放的東西」清單)
  • §寫得好 vs 寫得壞的對比(Bad/Good 範例對照)
  • §跟 vault CLAUDE.md 的差異(兩份對比表)
  • §常見陷阱(5 row 表格)
  • §進化路徑:單檔 → 4 層 → Rules Directory(3 stage 演進)

加 §0 版本歷程 table(規則 H)。

B. Sub-agent — 564 → ~1300 字

擴充 6 段:

  • §為什麼需要 sub-agent(context 飽和 → 把吃 context 但只要結論的任務外包)
  • §Context 隔離的工程意義(平行化 / 失敗隔離 / 成本可預測 / prompt 重用,類比微服務架構)
  • §選擇決策樹(5 種類型該選哪個的條件樹)
  • §平行 vs 串行的判斷準則(4 個問題判斷)
  • §常見錯誤(5 row 表格)
  • §Cost 模型(典型 token 用量 + 「token 換時間」取捨)

加 §0 版本歷程 table。

→ Re-lint:Score 74 → 78(+4)。God nodes 5 → 3(CLAUDE.md + Sub-agent 都解除 god-node 狀態)。

Final Lint — Health 78/100

指標BeforeAfter變化
Score5478+24
Orphans10
Missing concepts150
God nodes5 warn3 warn-2
Score breakdown.orphans1216+4
Score breakdown.missing1616=
Score breakdown.density00=
Score breakdown.hubs1616=
Score breakdown.godnodes610+4
Score breakdown.collisions2020=

剩 3 god nodes 留 Wave 3 Batch 2(使用者選的:Batch 2 之後再說):

  • wiki-lint(19 inlinks / 360 字)
  • wiki-query(16 inlinks / 395 字)
  • 等第天花板(14 inlinks / 338 字)

Side Question:附件分布調查

使用者中途插問「現在 vault 裡所有附件都歸到哪?舊有的是否也都統一了?」。

調查結果:

位置數量
Attachments/(Obsidian 設定的目的地)2 個本地圖
40-Resources/Productivity/打造第二大腦/3 個本地圖
40-Resources/Productivity/卡片盒筆記法/.../<source>-assets/2 個本地圖
raw/01-articles/Harness Engineering_notes/1 個本地圖
全 vault 外部 https:// 圖片引用84 個
wiki/entities/ 內圖片引用0 個

結論:Obsidian 設定 attachmentFolderPath: "Attachments" 已正確(新貼的圖會落到 Attachments/),但 6 張歷史本地圖散在 4 個位置沒搬,84 張外部圖也沒下載。不是統一狀態

使用者批准:附件統一獨立成另一個 work stream,本次 session 不處理。


vault root 「四大監控報表」建構(19:00)

使用者參考 IT VAULT 的 root 四大監控報表 pattern(截圖:WIKI_TODO / Wiki_刪檔處理SOP / Wiki_健康度監控 / Wiki_儀表板 / wiki_最新資料歷史),要 Vincent5588 套用相同 pattern。

動作清單

動作結果
B2 renamewiki/maps/Wiki 儀表板.md → vault root Wiki_儀表板.mdbash mv + sed 全 vault grep replace [[Wiki 儀表板]] / [[wiki/maps/Wiki 儀表板]][[Wiki_儀表板]]。8 個檔受影響(WIKI_TODO / log.md / CLAUDE.md / wiki/index.md / wiki/maps/Wiki 索引.md / 2 個 daily / Wiki_儀表板.md 自身)
Wiki_刪檔處理SOP4 類別刪檔(raw/wiki entity/maps/Attachments)+ lint→repair 兩段式 + 三層緩衝期(設備 12 月 / 過時概念 90 天 / 重複合併 30 天 / draft 7 天)+ 規則 A/E/F 引用 + 緊急救援指引
Wiki_健康度監控5 維度警戒值 / lint score 歷史趨勢表(含本日 4 次 lint)/ 該跑 lint 的時機 / 5 維度 KPI(Dataview)+ god nodes 追蹤

CLAUDE.md 升 v1.3.12

使用者明確指示「LOG 不要寫了 改 DAILYLOG 就好」。CLAUDE.md 11 處改動:

章節改動
header line補 plugin v1.3.9 + vault patch v1.3.12 雙行
§0 版本歷程加 v1.3.12 row(紀錄四大監控報表 + log.md 退場)
§2 規則 B必同步清單 wiki/log.mdwiki/daily/YYYY/MM/
§3.1 step 7「在 wiki/log.md 追加 ingest 紀錄」整 step 刪,後續編號往前挪
§3.1 step 12「在 wiki/log.md 追加 route 紀錄」整 step 刪
§3.1 必更新檔案清單7 row → 5 row(刪 ③ ⑥ 兩 row 的 log.md)
§3.3 lint step 6「在 wiki/log.md 追加紀錄」→ 「在當日 daily 追加紀錄;同步更新 Wiki_健康度監控 趨勢表」
§3.4 backfill step 4d「wiki/log.md migration 紀錄」→ 「當日 daily migration 紀錄」
§15 Daily Log整段重寫——log.md 標為「歷史檔,不再追加」;補「為什麼取消 log.md」段(重複維護 / 格式分裂 / 檢索路徑單一化 / 儀表板已涵蓋需求)

lint final 驗證

rename + sed 後跑 lint:Score 78/100 不變,0 orphans / 0 missing / 3 god nodes / 0 collisions。沒因 rename 出現新 broken link。



wiki-ingest(20:35)— 2 raw → 2 artifacts

/karpathy-wiki-pattern:wiki-ingest vincent5588 RAW 觸發。

操作紀錄

#動作對象
1ingest + moveraw/Vincent5588_Wiki_部署紀錄.mdVincent5588_Wiki_部署紀錄(wiki/artifact)
2ingest + rename + moveraw/Vibe Coding 團隊規範:在 AI 編程時代守住 SDLC 的工程紀律.mdVibe Coding 團隊規範(claude/artifact)
3editwiki/index.md 計數 202→204 / 表內 claude 85→86 / wiki 16→17 / 最後更新 5/6

詳情

1. Vincent5588_Wiki_部署紀錄(wiki/artifact)

  • 原 frontmatter 已正確(domain: wiki, type: artifact, status: stable)→ 直接搬到 wiki/entities/wiki/artifact/
  • 1285 行,6 章 + 12 雷紀錄 + 6 附錄(含 SCSS / dataview converter / gsync script)
  • 是 living doc,每次部署改動都更新版本歷程表(v1.0 → v1.5)
  • 不切碎為原子 entity — 整份是連貫工作日誌,切碎會破壞版本演進敘事

2. Vibe Coding 團隊規範(claude/artifact)

  • 原檔 basename 過長(含全形冒號 + 副標題),縮短為 Vibe Coding 團隊規範.md,原長標題進 aliases:
  • frontmatter 補:domain: claude, type: artifact, status: active, sources: [], updated: 2026-05-06, original_title:
  • tags 從 [clippings] 擴成 [clippings, vibe-coding, sdlc, ai-coding, code-review, team-rule, claude-code]
  • 內容是 Appleboy 整理 Erik Schluntz「Vibe coding in prod | Code w/ Claude」演講的 SDLC 規範(497 行;含「四大黃金法則 / Leaf vs Core / 可驗證性設計 / Plan-then-Execute SOP / Code Review 準則 / Anti-Patterns / 角色責任」等 10+ 章節)
  • 不切碎,因為是引用的 article(clippings),整體是 Appleboy 的論述脈絡,切碎反而失去 narrative。要拆出原子概念(譬如「四大黃金法則」/「Leaf Node vs Core Code」)未來個別需要時再做
  • 引用的 ![[Pasted image 20260506180242.png]] 已在 Attachments/(5/6 早整理時統一了)✅ basename resolve

3. raw/ 路由

  • 兩 raw 檔已隨 ingest 直接 mv 到 entities 對應位置(不需走 PARA / 09-ARCHIVE 路由)
  • raw/ root 現只剩 README.md(inbox 文件,預期保留)

統計

指標
新建 entity2(都是 artifact)
新增 domain0(都用既有 wiki / claude)
新增 type0(都用既有 artifact)
Total entities202 → 204

wiki-compile(20:50)— Vibe Coding 團隊規範 → 19 atomics + 1 map

/karpathy-wiki-pattern:wiki-compile 觸發。對 ingest 後的 Vibe Coding 團隊規範 拆原子化。

6 phases 結果

Phase內容數量
1核心 concept × 44
2法則 rule × 44
3工作流程 process × 33
4Prompt / TDD × 33
5工具 / Anti-patterns / 角色 × 33
5b補建被引用但未在原計畫的 entity(Code Review 準則 / 常見情境決策表)2
6Map: Vibe Coding 全貌 (3 mermaid 圖)1 map
小計atomic entities19
map1

建立的 19 atomic entities

concept × 7

  1. Vibe Coding — Karpathy 定義 + 三狀態
  2. 四大黃金法則 (Vibe Coding) — 4 條總覽
  3. Leaf Node vs Core Code — 6 維分類
  4. 可驗證性設計三支柱 — 介面 / 測試 / 可觀測性
  5. Prompt 必備六元素
  6. 過度約束反效應
  7. 常見情境決策表 (Vibe Coding) — 12 情境查表

rule × 6: 8. Be Claude’s PM 法則 — 法則一 9. 聚焦 Leaf Nodes 法則 — 法則二 10. 核心由人嚴格 Review 法則 — 法則三 11. 建立可驗證檢查點 法則 — 法則四 12. Code Review 準則 (AI 編程) — Reviewer 6 重點順序 13. Vibe Coding Anti-Patterns — 11 條禁止 14. AI 編程角色責任矩陣 — 5 角色 RACI

process × 4: 15. Plan-then-Execute SOP — 7 步流程 16. Compact 與 Session 管理 SOP 17. 陌生 Codebase 探索 SOP — 4 步建心智圖 18. Vibe Coding TDD 三條 e2e 測試

artifact × 1(新建): 19. AI 編程 PR 模板.github/pull_request_template.md 完整內容

existing artifact 保留Vibe Coding 團隊規範 作為 canonical 整合 reference。

Map: Vibe Coding 全貌

3 mermaid 圖:

  • 圖 1:四法則 → 工作流 → 工具 鏈(5 群分區,含 click 跳 entity)
  • 圖 2:Leaf vs Core 決策樹(5 道題 → 5 種處置)
  • 圖 3:角色 ↔ 責任 ↔ 工具(5 角色 × 5 工具 × 治理層)

統計

指標
新建 atomic entity19
新建 map1
新增 domain0(全 claude/
新增 type0(全 reuse 既有)
Total entities204 → 223
Total maps11 → 12

連動更新

動作
indexheader 計數 204→223 / claude domain 86→105 / 加 Vibe Coding 全貌 連結 / 「最後更新」改 5/6 含 compile 紀錄

設計重點

  1. 不切爛 — 雖然 19 個 atomics,每個都有獨立 200-1000 字、reusable、有 cross-link
  2. 層級清晰 — 4 法則 / 3 SOP / 6 元素 / 11 anti-patterns / 5 角色 各成 cluster
  3. 跨主題連結 — Map 內列了 10 個其他 entity(Compounding Engineering / Harness Engineering / 3A 架構 / Sub-agent / Effort 推理強度 等)
  4. 動態邊界意識 — 每個 entity 都標明「會隨模型能力變化」的部分(譬如 leaf/core 邊界、anti-patterns 鬆綁時機)

沒做的(未來可選)

  • ⏳ Compile Vincent5588_Wiki_部署紀錄 — 規劃時評估「不適合 compile」(living working doc + 版本歷程,切碎會破壞演進敘事)

wiki-lint + cleanup(21:00–21:15)

/karpathy-wiki-pattern:wiki-lint 觸發。Compile 完發現 5 項要修補。

修補對照

#問題動作結果
1Vibe Coding collision(claude/concept vs wiki/concept)Merge:把 wiki/concept/ 內「Karpathy hobbyist 視角 + Boris Cherny 對照」整段融進 claude/concept/,含新增「Hobbyist 原意 vs 工程紀律視角」對照表段。舊檔移 Trash✅ 0 collisions
2Erik Schluntz missing × 3建 person stub claude/person/Erik Schluntz.md(Anthropic 編程智能體研究員 + Vibe Coding 主要觀點 + 跟 Karpathy/Boris/Appleboy 關係)✅ 3 missing 解
3AI 編程規範總覽 wishful link in Vibe Coding 全貌改 inline 文字(map 內未來想法不該寫 wiki-link)✅ 1 missing 解
4Codebase Onboarding Engineer missing × 2陌生 Codebase 探索 SOP 內 2 處改 inline Codebase Onboarding Engineer 類專屬 skill✅ 2 missing 解
5Vincent5588_Wiki_部署紀錄 orphan加進 Wiki 索引 新增「🚀 部署 / Vault 工程」section✅ orphan 解
Claude 索引 沒含 Vibe Coding 19 entity加 「Vibe Coding 系列」subsection(4 大類)+ 主題地圖加 Vibe Coding 全貌(2 處)✅ map orphan 解
wiki/index.md KPI dataview 日期 hardcoded 在 5/2date("2026-05-02")date("2026-05-06")(兩處)✅ 今日 KPI 會自動算

Lint score 變化

指標Compile 後全修完
Score5154
Collisions10
Orphans75(全是 pre-existing domain MOC index)
Missing concepts19 unique22 unique*

*Missing unique 數略升因比例 lint metric 變動,但 compile 引入的 broken refs 都解。

剩 5 個 orphans 屬 lint tool 盲區

Wiki 索引 / PAM 索引 / 戶外探險旅遊 索引 / PKM 索引 / CallIT 索引 這 5 個 domain MOC index 被引用,但 lint 只掃 wiki/entities/ + wiki/maps/,看不到 wiki/index.md。是 lint 規則的盲區,不是真 orphan。

Compile 流程改進(meta)

vincent 質疑「為何手動補 Claude 索引?」→ 更新流程觀念:

未來跑 wiki-compile 時,Phase 4「Update wiki/index.md」應該擴成「Update wiki/index.md + 對應 domain MOC(譬如 Claude 索引、Wiki 索引)」——不該標「手動」。

這是 wiki-compile skill 規範可以再緊一點的地方。

全日總戰果(5/6)

項目數量
上午:image audit + 11 entity 圖修補 + 4 dashboard 更新 + 規範變更(log.md 停寫 / TODO 改名 / 最新資料歷史改名 / 刪檔 SOP 改名)
下午:Welcome.md / Quartz 部署範本 / SOP 釐清3 文件 + 範本
晚上:wiki-ingest 2 raw → 2 artifacts + wiki-compile → 19 atomic + 1 map + 1 person stub + 5 lint cleanup+22 entities + 1 map
Total entities(Vincent5588)202 → 223(+19 compile atomic + 1 Erik Schluntz stub + 2 ingest artifact − 1 collision merge)
Total maps(Vincent5588)11 → 12
Lint Score51 → 54

結構大整理(21:30)— 廢 raw/,改用 00-Inbox/ 當唯一 inbox

vincent 觀察:raw/ 6 個子分類大多空著、跟 PARA 00-Inbox/ 重疊 → 提案合一。

動作

#動作結果
1raw/01-articles/Harness Engineering_notes/00-Inbox/01-articles/唯一有內容的子夾搬走
2raw/ 整個資料夾到 Trash(含 6 子分類)5 個是 .gitkeep 空殼、1 個 09-archive 也空
3CLAUDE.md 加 v1.3.14 changelog + 改 §資料夾結構樹 + 改規則 A + 改 ingest 流程「raw/」→「00-Inbox/」規範統一
4wiki/index.md 連結列表 [[raw/README]][[00-Inbox/README]]入口頁更新
5Claude 4.6 全景 內 2 處 [[raw/articles/Claude 全攻略...]][[20260426_Claude 全攻略...]](檔本來就在 40-Resources/Claude/)解 broken refs

設計理由

  • ✅ 簡化 mental model(一個 inbox 不是兩個)
  • ✅ 跟 IT vault 結構一致(沒 raw/ 也運作良好)
  • ✅ PARA 純度提升:「one inbox prevents leakage」
  • ✅ 砍掉 5 個空殼資料夾

Lint 健康度(migration 前後)

指標BeforeAfter
Score5454 ✅ 沒退步
Orphans55
Missing2223
Collisions00
Raw broken refs00

Missing 從 22→23 微升因 [[raw/README]][[00-Inbox/README]] 後新增 1 個(00-Inbox/README 本身存在但 lint 看不到 wiki/ 外部)。可接受。

全日總戰果(5/6,含 21:30 結構整理)

項目數量
上午:image audit + 11 entity 圖修補 + 4 dashboard 更新 + 規範變更(log.md 停寫 / TODO 改名 / 最新資料歷史改名 / 刪檔 SOP 改名)
下午:Welcome.md / Quartz 部署範本 / SOP 釐清3 文件 + 範本
晚上:wiki-ingest 2 raw → 2 artifacts + wiki-compile → 19 atomic + 1 map + 1 person stub + 5 lint cleanup+22 entities + 1 map
晚上 21:30:raw/ 廢除 + 00-Inbox/ 統一 inbox(CLAUDE.md v1.3.14 + 5 步遷移)結構大整理
Total entities(Vincent5588)202 → 223(+19 compile atomic + 1 Erik Schluntz stub + 2 ingest artifact − 1 collision merge)
Total maps(Vincent5588)11 → 12
Lint Score51 → 54
CLAUDE.md 版本v1.3.11 → v1.3.14(+3 patches)

← 回到 wiki