# Claude Code 原始碼洩露後，我們能學到什麼：系統提示詞、權限分級和記憶系統

> Canonical: https://vxi.me/zh-tw/posts/claude-code-source-leak-harness-engineering/
> Locale: zh-tw
> Published: 2026-04-01
> Updated: 2026-04-01
> Markdown: https://vxi.me/zh-tw/posts/claude-code-source-leak-harness-engineering.md

這兩天關於 Claude Code 的討論，已經有點從“技術新聞”變成“技術圍觀現場”了。起因大家大概都知道了：Anthropic 的公開 npm 釋出包裡誤帶了除錯相關檔案，結果內部原始碼被人順著 source map 很快扒了出來。隨後 GitHub 上又冒出鏡像儲存庫，社群傳播速度非常快，話題一下就炸開了。

但我看這件事，真正值得寫下來的部分其實不是八卦本身，而是它把一個頂級 AI 程式設計工具的工程底座掀開了一角。平時我們都在用 Claude Code，也都在說它“整體手感很好”，可這種“好用”到底有多少來自模型本身，又有多少來自模型外面那層工程系統，平常其實很難看清。

我自己是長期付費在用 Claude Code 的。寫程式碼、寫文章、搭部落格、整理流程，經常都在終端裡掛著好幾個視窗一起跑。所以這次我真正在意的不是“Anthropic 出糗了沒有”，而是另一件事：一個已經被證明很好用的 AI coding 產品，背後到底是怎麼把模型馴成可交付工具的。

## 先把事實說清楚

先把能確認的事實說清楚。Axios 的報道里提到，Anthropic 對外承認確實有內部原始碼被包含進了公開包裡，但沒有客戶資料和憑據洩露。另一個我自己順手核過的點是，npm 當前公開版本列表裡已經看不到外界討論最集中的那個 `2.1.88` 版本了，只能看到它前後的版本號：

```bash
npm view @anthropic-ai/claude-code versions --json
```

對應我本地查到的結果，結尾是這樣的：

```json
[
  "2.1.87",
  "2.1.89"
]
```

這個細節本身其實挺說明問題。它至少說明兩件事：第一，這不是一個“網友瞎傳的不存在版本”；第二，事情出來以後，官方側很可能已經做了收口動作。至於網上流傳的“1900 多個檔案、五十多萬行 TypeScript、幾小時多少 star 和 fork”這些數字，我更願意把它們當成公開分析裡的量級參考，而不是寫成鐵證。因為這種數字變化太快，文章一旦寫死，很容易第二天就失真。

真正讓我覺得有價值的，是公開拆解裡反覆指向了同一個結論：Claude Code 之所以手感比很多同類工具穩，不只是因為模型更強，而是因為它外面那層 harness 也做得夠厚。你可以把模型理解成發動機，但真正決定這臺車能不能安全、穩定、持續跑的，是轉向、剎車、儀表盤、限位器和整套車架。AI 程式設計工具這兩年越往下做，這個感覺越明顯。單獨盯著模型分數看，已經不太夠了。

## 系統提示詞：分層拼裝，而非大字報

我先講第一個我覺得特別值得學的點：系統提示詞不是一整段大字報，而更像一個分層拼裝系統。根據這次公開出來的多份拆解，Claude Code 不是靠一份靜態 system prompt 撐全場，而是把全域性規則和使用者上下文拆開了。上面那層是所有人共享的行為約束，比如不要編造、不要亂刪檔案、優先用專用工具、別做過度工程、別偷偷加使用者沒要求的功能。下面那層才是動態內容，比如專案裡的 `CLAUDE.md`、使用者偏好、接入的 MCP、儲存庫狀態之類。

這個思路我覺得特別像真正做過大規模產品的人會定出來的東西。因為只要你使用者足夠多，就一定會碰到一個老問題：既想個性化，又想省上下文成本。靜態部分共享快取，動態部分按使用者載入，這種切法其實很聰明。它不是在追求“提示詞寫得多厲害”，而是在解決一個更現實的問題，怎麼把昂貴的上下文預算花在對當前任務真正有用的地方。

而且這也順手解釋了另一個很多人這兩個月越來越能感受到的現象：為什麼 skill 往往比 MCP 工具開太多更輕。公開討論裡有人提到，一個 MCP 工具定義本身就會吃掉可觀的 token 預算。如果你一口氣掛很多個，模型還沒開始幹活，上下文視窗先被工具說明書佔掉一大截。這件事放在 Claude Code 這類產品上看就很清楚了，工具不是越多越先進，關鍵是哪些能力該被預置，哪些該被按需載入。

## 權限分級：把「會不會做」和「該不該做」拆開

第二個讓我覺得非常像“工程成熟度差異”的點，是權限和安全邊界沒有交給同一個 agent 一把抓。公開影片和分析裡反覆提到一個 `yoloClassifier`，意思不是讓它更 YOLO，而是讓真正執行動作的主 agent 之外，再有一層單獨的判斷邏輯去看這個操作應不應該放行。Allow、Soft Deny、Hard Deny 這種分級，本質上是在把“會不會做”和“該不該做”拆開。

這個拆法我非常認同。因為 AI 程式設計工具最麻煩的事故，很多不是它不會寫，而是它太敢寫，太敢刪，太敢一口氣改掉你沒讓它動的東西。你如果把所有決定都交給同一個 agent，體驗會很爽，但事故成本會越來越高。Claude Code 這類工具現在之所以讓很多人敢開更高權限，本質上依賴的就是這種分層信任。你表面上是在和一個 agent 協作，實際上後面還有一層“別真的胡來”的剎車系統。

我自己用下來也越來越覺得，這件事比“模型答得漂不漂亮”更重要。因為對日常開發來說，信任不是一句口號，信任是我敢不敢把權限開大一點，敢不敢讓它連續做幾步，敢不敢把一個快要收尾的目錄交給它繼續跑。如果一款工具總讓你擔心它下一秒把資料夾清空，那它再聰明，你也不可能真把它納入工作流程。

## 記憶系統：知道什麼不該記

第三個讓我印象很深的是記憶系統的取捨。公開拆解裡最妙的一點，不是它會記憶，而是它知道什麼不該記。像使用者偏好、行為反饋、專案級約定、外部資源引用這些東西，確實適合存進 memory，因為它們相對穩定，而且能長期影響互動質量。但程式碼事實本身其實不適合記憶化。函式在哪一行、某個模組現在長什麼樣，這些東西一旦寫死到記憶裡，專案一重構就會立刻變成誤導。

這一點我非常認同。因為很多人一提到“更聰明的 AI”，第一反應就是讓它記住更多。但真正長期用工具的人都知道，記錯比記不住更麻煩。Claude Code 公開出來的這類設計，反而像是在刻意避免這種看起來聰明、實際很容易翻車的路子。偏好和判斷交給記憶，程式碼事實回到原始碼即時讀取。這其實是一種很剋制，但非常工程化的做法。

還有一個細節也挺有意思，就是它看起來並沒有把所有東西都壓到“更復雜的檢索系統”上。公開分析裡很多人提到，Claude Code 在程式碼查詢上大量依賴的還是文字搜尋能力，本質上就是 grep 這一類樸素方法，而不是所有問題都先走向量資料庫、語義索引或者厚重的 RAG。這個選擇我覺得特別值得獨立開發者看一眼，因為它背後的意思很明確：不是每個環節都值得被做成最複雜的那一版。模型越強，越應該把那些沒必要複雜化的環節先壓簡單。

說到這裡，這次事件對 AI 程式設計賽道的意義其實也慢慢清楚了。它真正公開出來的，不只是一份“別人怎麼寫 CLI”的程式碼，而是一套行業裡已經被驗證過的產品觀：模型只是底盤的一部分，真正拉開體驗差距的，是提示詞系統、工具邊界、安全機制、上下文壓縮、記憶提取、權限分級，以及這些東西怎麼被拼成一個持續可用的工作流程。

所以我現在反而覺得，這次洩露對開源社群和後來者最大的價值，不是“大家突然拿到了一個 1:1 可復刻的 Claude Code”，而是很多以前只能靠猜的工程決策，現在終於有了更接近實物的參照。為什麼某些工具看起來功能沒少，但總是沒有 Claude Code 順手？很多時候不是少了某個按鈕，而是少了那套把模型馴服成產品的中間層。

當然，這裡也得潑一點冷水。就算真有很多團隊因此少走彎路，也不代表下個月就會憑空冒出一個完全同級別的替代品。原始碼就算攤開了，建置速度、團隊迭代、模型配合、產品判斷，這些東西也不是 copy 一份目錄結構就能補齊的。你能抄到結構，未必能抄到節奏；你能復刻某個模組，未必能復刻他們 50 多天裡高頻釋出幾十次的那種推進能力。

但對獨立開發者來說，這件事依然很值得看。因為它把一個這兩年越來越重要的判斷擺到了檯面上：下一階段 AI 程式設計工具的競爭，已經不只是模型誰更強，而是誰更會做 harness engineering。誰能把 agent 的工具、權限、記憶、上下文和安全邊界編排得更穩，誰就更有機會把“會回答問題的模型”做成“真能天天用的開發搭子”。

如果你對這種“模型之外的工程層”也有興趣，可以接著看這兩篇：[新版 Codex 有什麼變化：為什麼它現在更像一個開發環境](/posts/what-changed-in-the-new-codex/) 和 [AI Agent Orchestration 是什麼：為什麼單個 Agent 之後，下一個重點是編排](/posts/ai-agent-orchestration-after-assistants/)。前一篇更偏產品層，後一篇更偏系統層，和這次 Claude Code 事件其實剛好能接上。

如果你希望我把這類 AI coding 工具、工作流程拆解和可複用設定繼續寫深一點，可以直接去 About 頁拿我的社交入口。後面如果我繼續跟這條線，會優先整理成同一個主題簇，不會散著寫。
