Compounding Engineering(複利式工程)

CLAUDE.md(專案手冊) 當持續累積的學習系統——每次 Claude 犯錯就加一條規則,下次就不會再犯。錯誤不再是錯誤,而是未來品質的本金

起源

  • 概念命名:Dan Shipper(Every CEO)
  • Boris Cherny 採用:把 Anthropic 內部 CLAUDE.md 維護法歸納成此名(Boris Cherny 在 X 上稱:“Boris calls it their version of Compounding Engineering”
  • 核心比喻:軟體工程的複利——每次學習都加總到下一次的起點,時間越久優勢越大

機制

Claude 出錯
    ↓
工程師發現
    ↓
加一條規則進 CLAUDE.md
    ↓
下次 Claude 不犯同錯
    ↓
時間越久,CLAUDE.md 越精確 → Claude 越聰明 → 出錯越少

這跟「人類工程師每次犯錯都記在 wiki」一樣,只是這份 wiki 是機器讀的,自動套用到所有未來 session。

三個關鍵實踐

1. 寫「為什麼」而非「不能做什麼」

Boris 的建議:不要寫「不要用 var」,要寫「不要用 var,因為我們的 lint 規則會擋,而且所有現有 code 都用 const/let」。

寫原因 → Claude 能類推;只寫禁令 → 邊界稍偏就破功。

2. 全團隊共同維護

“Anytime we see Claude do something incorrectly we add it to the CLAUDE.md, so Claude knows not to do it next time.” — Boris

繁中:「每次看到 Claude 做錯事,我們就加一條進 CLAUDE.md,這樣下次 Claude 就知道不要再犯。」

Anthropic 團隊每週更新 CLAUDE.md 多次。每個工程師發現的錯都加進去,所有人共享。約 2,500 tokens、上百條規則。

3. @.claude 自動學習(最強的一環)

在 GitHub PR review 裡 tag @.claudeClaude Code 的 GitHub Action 自動把這條 review 寫進 CLAUDE.md,作為 PR 的一部分 commit 進去。

範例

// PR comment:
nit: use a string literal, not ts enum

@claude add to CLAUDE.md to never use enums,
always prefer literal unions

→ Claude 自動 commit:“Prefer type over interface; never use enum (use string literal unions instead)“

設定方式

$ /install-github-action

裝完之後 PR comment 裡 @.claude 就會觸發。

4. 「結束時順便更新」(Boris 後續版本)

Boris 在 Jan 31 thread 補充另一個招式:每次糾正 Claude 後加一句:

“Update your CLAUDE.md so you don’t make that mistake again.”

繁中:「更新你的 CLAUDE.md,這樣你下次就不會再犯這個錯。」

→ Claude 自己寫規則進去。Boris 評論:

“Claude is eerily good at writing rules for itself.”

繁中:「Claude 寫規則給自己看時,準到讓人發毛。」

為什麼會「複利」

時間點CLAUDE.md 規模Claude 出錯率
第 1 週10 條規則
第 1 個月50 條
半年後200+ 條低(只在「沒人遇過的新場景」)
1 年後知識化石化接近專家工程師水準

新團隊與用了半年的團隊,犯錯率天差地別——但起點 CLAUDE.md 都是空的。差別在於有沒有持續加料。

CLAUDE.md 4 層機制 的關係

兩個概念互補:

CLAUDE.md 4 層機制Compounding Engineering
問題規則放哪一層?規則怎麼累積?
時間軸一次性配置持續演化
答案L1/L2/L3/L4 分層飛輪 + @.claude

合在一起:先用 4 層機制設好骨架,再用 Compounding Engineering 填血肉。

對 PAM 的應用

PAM 已有 ExamSystem/CLAUDE.md(2400+ 行)。可以加:

  1. 裝 Claude Code GitHub Action/install-github-action)→ PR review 直接 @.claude
  2. 建立糾錯模板:每次 Claude 寫錯 SQL(如 string concat)→ PR 評論:「`@claude add to CLAUDE.md: PAM 系統禁用 SQL string concatenation,一律用 EF Core / 參數化查詢」
  3. 每月 review CLAUDE.md:超過 5,000 tokens 就拆 L3 子目錄(如 Migrations/CLAUDE.md
  4. 建立反例檔{repo}/.claude/anti-patterns.md 列出所有 Claude 曾經犯的錯與正確做法

反模式

  • 只寫禁令、不寫原因 → Claude 邊界外的場景就破功
  • 只有 1 個人加 → 變成個人 todo 而非團隊知識
  • 加完就不 review → 規則互相矛盾、過時規則持續干擾
  • 規則寫得太特定 → 換個檔案就不適用,等於沒加

相關概念

強連結(原文明確提及)

推斷連結(LLM 認為相關,待確認)

深入閱讀

← 回到 wiki