
一、事件起因:一個遺漏的 .npmignore
要理解這場外洩怎麼發生,要先了解 npm 套件的發布機制。
當開發者把程式碼發布為 npm 套件時,JavaScript 的打包工具通常會同時生成 .map 檔(source map)。這類檔案的用途是「對應混淆後的程式碼與原始碼」,方便開發者在瀏覽器或 Node.js 環境中除錯。在開發環境裡,source map 是寶貴的工具;但如果你不想讓外部看到你的原始碼,就必須明確把它們排除在發布套件之外。
Anthropic 在 2025 年下半年收購了 JavaScript 執行環境 Bun,並用 Bun 來建構 Claude Code。問題在於:Bun 預設會產生 source map,而負責發布 v2.1.88 版本的工程師,忘記在 .npmignore 或 package.json 的 files 欄位中,把 *.map 檔排除掉。
結果是,一個 59.8 MB 的 source map 就這樣靜靜地躺在公開的 npm registry 上。
第一個發現這件事的人,是加州大學柏克萊分校的研究員 Chaofan Shou(Twitter 帳號 @Fried_rice)。他在檢視 Claude Code 套件內容時,發現這個異常的 .map 檔,進一步展開後,看到的是完整的 TypeScript 原始碼。他隨即發文公告這個發現,整個科技社群的注意力在幾分鐘內湧入。
Anthropic 事後確認:「這是一個 release 打包的人為失誤,並非安全漏洞。沒有任何客戶資料或憑證外洩。」但問題是,原始碼已經出去了。
二、外洩後的連鎖反應:GitHub 史上最快破百萬的討論
程式碼一旦在公開 registry 上出現,網際網路就接管了後續的一切。
在最初幾個小時內,社群開發者開始把 512,000 行 TypeScript 轉成 Python、Rust、Go 的對應版本。各種分析文章、架構圖、功能解讀如洪水般湧現。一個名為「claw-code」的 clean-room 重寫版本(完全從頭寫起,不直接使用洩漏原始碼以規避法律風險)在一天內累積了 100,000 個 GitHub stars,創下 GitHub 平台有史以來成長最快 repository 的紀錄。
Anthropic 的法務反應很快。他們根據美國數位千禧年著作權法(DMCA)向 GitHub 發出下架通知,要求移除含有洩漏程式碼的 repository。這份通知最終覆蓋到約 8,100 個 repo,但執行過程中出現嚴重的「誤傷」問題,大量本來只是討論或引用的 repo 也被一併下架。
Anthropic 在發現問題後,公開承認這是過度執行,並且撤回了大部分 repo 的通知,只保留最初那一個原始鏡像 repo 的下架要求。TechCrunch 在報導中指出,Anthropic 對誤傷事件表示「非常遺憾」。
然而,去中心化平台上的備份帳號早已宣告:「這份程式碼永遠不會消失。」
從法律與現實的角度來看,Anthropic 已經無法讓這份原始碼「消失」。網際網路對資訊的保存能力,遠超過任何企業的法律行動速度。
三、外洩揭露了什麼:那些 Anthropic 從未公開的設計決策
讓這次外洩如此轟動的,不只是「原始碼流出」這件事本身,而是原始碼裡藏著的那些秘密。
臥底模式(Undercover Mode)
外洩程式碼中有一個 undercover.ts 檔案,裡面的系統提示寫得很清楚:「你現在正以臥底身份在一個公開 / 開源的 repository 中運作。你的 commit message、PR 標題、PR 說明,絕對不能包含任何 Anthropic 內部資訊。不要暴露你的身份。」
更值得注意的是,程式碼的注釋明確寫著:「這個模式沒有強制關閉的機制(There is NO force-OFF)。這是為了防止模型代號外洩。」這意味著,當 Anthropic 的工程師使用 Claude Code 對公開開源專案提交程式碼時,這些貢獻在表面上看起來會像是人類所寫,不留任何 Anthropic 的痕跡。這項發現在社群中引起了廣泛的倫理討論。
KAIROS:尚未公開的背景代理模式
程式碼中有一個代號 KAIROS 的功能模組,這是一個完全自主的 daemon 模式,設計讓 Claude Code 能在背景持續執行,包含定期抓取 GitHub webhook、自動修正程式錯誤、每五分鐘更新一次記憶體狀態,甚至主動發送推播通知給使用者。這個功能在正式版本中完全沒有出現,但程式碼已經寫好,只是 compile 時 feature flag 設為 false。
Dream Mode:持續思考的 AI
另一個隱藏功能 Dream Mode,設計讓 Claude 能在背景不斷思考,即使使用者沒有在對話,AI 也在處理問題。結合 KAIROS,這代表 Anthropic 對於「永遠在線的 AI 助手」的產品願景,遠比目前公開展示的更為激進。
44 個隱藏 Feature Flags
研究人員在程式碼中發現 44 個已開發完成但尚未對外開放的功能,這些不是「正在開發中」的半成品,而是編譯完成、可以執行的程式碼,只是在發布設定中被關閉。這份清單讓競爭對手看到了 Anthropic 未來六到十二個月的產品路線圖。
反模型蒸餾機制(Anti-Distillation)
外洩程式碼中有兩套防止競爭對手「蒸餾」Claude 模型的機制:一是向 API 發送虛假的 tool 定義,污染任何試圖記錄 API 流量來仿製模型的訓練資料;二是在 tool call 之間用帶有加密簽章的摘要取代完整推理過程,讓外部觀察者只能看到結論,看不到完整的思考鏈。研究員指出,這兩種機制理論上都可以透過 man-in-the-middle proxy 繞過,但在一般使用場景下確實有效。
挫折感偵測(Frustration Detection)
這是一個出乎意料的小細節:Claude Code 偵測使用者的挫折情緒,用的不是 AI,而是正則表達式(regex)。程式碼中有一組 pattern,匹配像是「wtf」、「broken」、「this sucks」等表達。這個選擇很務實,regex 的成本遠低於一次 LLM 推理呼叫,但對一家 AI 公司來說,用規則比用 AI 來理解情緒,顯得相當耐人尋味。
四、已有人開源,我們能從中學到什麼
外洩事件讓 Claude Code 的架構設計成為所有 AI 開發者公開研究的對象。這份程式碼被稱為「第一梯隊 AI agent harness」最完整的公開參考,以下是從中萃取出最具價值的設計模式。
1. 統一的 Tool Interface:讓模型與行動脫鉤
Claude Code 的 66 個內建工具,全部實作同一個介面,涵蓋五個維度:
- Identity(工具的名稱、描述、用途)
- Execution(執行邏輯)
- Validation(參數驗證)
- Permissions(需要哪些授權)
- Presentation(輸出結果如何呈現給使用者)
這個設計讓 harness(框架層)能夠在不了解工具內部邏輯的前提下,推理工具的行為,包含「這個工具能不能並發執行」、「這個工具會不會修改狀態」、「這個工具需要使用者確認嗎」。
工具也依照安全性分成兩類:唯讀的工具可以並行執行,有副作用的工具(如寫入檔案、執行指令)則必須序列化,確保一致性。
2. 三層記憶體架構:解決 Context Entropy 問題
傳統 AI agent 最大的挑戰之一,是隨著對話變長,重要資訊會被稀釋或遺忘,這個問題業界稱為 context entropy。Claude Code 用一套精妙的分層設計解決這個問題:
最外層是 CLAUDE.md 或 MEMORY.md,這個檔案始終載入在 context 中,但它不直接儲存知識,而是儲存「指針」,記錄哪個主題的詳細資訊在哪個檔案裡。
實際的知識分散在各個 topic file 中,只有當對話需要時才按需載入(on-demand fetch)。
此外,記憶體依類型分層,包含使用者偏好與工作風格、過去的錯誤更正與有效方法、專案決策與團隊脈絡,以及指向外部資源的連結。這套設計讓 Claude Code 在極長的工作 session 中,依然能保持對相關資訊的精確掌握,而不會因為塞入太多資訊導致模型表現下降。
3. 25 個以上的 Lifecycle Hook:完整的可插拔擴充系統
Claude Code 在每個關鍵節點都暴露了 hook,讓使用者或開發者能夠介入 AI 的行為流程:
PreToolUse:工具執行前(可以攔截、修改、或取消)PostToolUse:工具執行後(可以記錄、觸發後續動作)UserPromptSubmit:使用者送出提示前SessionStart/SessionEnd:session 生命週期- 以及更多針對各種互動節點的 hook
Hook 的回傳值決定行為:exit 0 代表允許繼續,exit 2 代表阻擋,其他回傳值代表警告但允許繼續。這讓 Claude Code 變成一個高度可客製化的平台,而不只是一個固定功能的工具。
4. 四種專門化子代理設計
Claude Code 採用的不是一個全能的單一代理,而是四個有明確職責分工的專門化代理:
- Explore Agent:負責探索和理解 codebase 結構
- Plan Agent:負責規劃解決策略和執行步驟
- General Agent:負責處理複雜的多步驟任務
- Guide Agent:負責解釋功能和提供指引
這四個代理各自運作在獨立的 context window 中,並向主控的 orchestrator 回報結果。更聰明的是,子代理分叉時會建立 byte-identical 的 parent context 副本,共享 prompt cache,讓同時執行多個代理的成本幾乎等同於執行單一代理。
5. QueryEngine:對話生命週期的中央編排器
QueryEngine 是整個 Claude Code 運作的核心,負責協調三個角色之間的互動:使用者、語言模型、工具執行環境。
它實作了一套「continue sites pattern」,定義了多種失敗恢復策略:當 context 過長時的壓縮機制(context collapse)、當 token 不足時的升級策略(token escalation)、以及多輪對話的延續機制(multi-turn continuation)。這讓系統即使在邊緣情況下也能優雅地降級,而不是直接崩潰。
6. 五層權限系統
Claude Code 的權限設計採用了類似 Git 設定的五層串接(cascade)架構:
環境變數(最低優先級)→ 使用者全域設定 → 專案根目錄設定 → 專案層級設定 → 本機設定(最高優先級)
這讓團隊可以在組織層級設定統一的安全策略,同時允許個別開發者在自己的本機做客製化調整,兼顧標準化與彈性。
五、開源社群的快速回應與產業影響
外洩事件後,AI 工具社群進入了一個前所未有的「公開學習模式」。OpenCode、Aider 等開源 AI coding agent 的維護者公開表示,正在研究 Claude Code 的架構設計,並計畫將其中最有效的模式整合進自己的框架。
這場意外,讓商業 AI 工具與開源社群之間的差距,在短短幾天內大幅縮小。
研究人員的共識是:這次外洩最重要的啟示,不是 Claude 的模型有多強,而是 Anthropic 在 harness 設計上投入了多深的工程心力。如同一位研究員所說:「AI 的競賽,已經不只是誰的模型最聰明,而是誰的框架最可靠、最可控、最能擴展。」
就算是競爭對手,現在也必須承認:在 agentic AI harness 的設計細膩度上,Claude Code 所呈現的架構,代表了這個領域目前可以公開研究的最高水準。
結語:一個遺漏的設定,改變了 AI 工具的格局
一個工程師在深夜發布套件時,沒有在 .npmignore 裡加上一行 *.map,就這樣意外地把 Anthropic 最機密的產品設計交付給了全世界。
這不是 Anthropic 第一次遭遇資訊安全問題,也很可能不是最後一次。但這次外洩的規模和影響,在 AI 產業史上是前所未有的。
從法律角度,Anthropic 已無法讓這 512,000 行程式碼從網路上消失。從競爭角度,這份程式碼讓所有人都看到了第一梯隊 AI agent 的真實面貌。從工程角度,這是一份難得的學習材料,展示了如何設計一個足夠複雜、足夠可靠、足夠安全的 AI 工作框架。
如果你在開發 AI agent 或自動化工作流程,這次外洩留下的架構藍圖,是目前公開可取得最有價值的參考資料之一。唯一的代價,是 Anthropic 付出的那次意外。
參考來源
- The Claude Code Source Leak: 512,000 Lines, a Missing .npmignore, and the Fastest-Growing Repo in GitHub History — Layer5
- Anthropic confirms it leaked 512,000 lines of Claude Code source code — TechRadar
- Anthropic took down thousands of GitHub repos trying to yank its leaked source code — TechCrunch
- Leaked Claude Code source spawns fastest growing repository in GitHub's history — Cybernews
- Claude Code Source Code Leaked: What 512K Lines Reveal About the Best AI Coding Harness — Superframeworks
- The Claude Code Leak: 10 Agentic AI Harness Patterns That Change Everything — Ken Huang on Substack
- The Claude Code Source Leak: fake tools, frustration regexes, undercover mode, and more — Alex Kim's blog
- Claude Code's source code appears to have leaked: here's what we know — VentureBeat













