2026 年 3 月 31 日凌晨,安全研究員 Chaofan Shou 在檢查 npm 包時發現了一件奇怪的事。
Anthropic 剛剛發布的 Claude Code 2.1.88 版本里,多了一個約 60MB 的 `.js.map` 文件。這種調試文件本來應該在發布前刪掉。但 Bun 構建工具默認生成 source map,`.npmignore` 里沒有加對應的忽略規則,就這樣把 1,900 個 TypeScript 文件、512,000 行代碼打包了出去。
![]()
最初發布的 @anthropic-ai/claude-code v2.1.88 的 npm 包內容中,包含了打包的cli.js.map源映射文件|socradar.io
Chaofan 把下載鏈接發到 X 上。幾小時內,全網開始鏡像這批代碼。Anthropic 緊急下線了這個版本,但已經太晚了。
![]()
Claude Code 的泄露過程|penligent
這是 Claude Code 在一年內第二次以這種方式意外暴露自己。
這次泄露不只是一次運維事故。它讓外界第一次完整地看到,當今最成熟的 AI Agent 產品,在引擎蓋下究竟是什么樣子。本文不打算走馬觀花,而是認真讀完這份意外的禮物,說清楚它真正有意思的地方在哪。
本文寫了啥
五層架構全景:入口層、運行層、引擎層、工具與能力層、基礎設施層各自做什么
引擎層的動態提示詞組裝機制,以及 Plan Mode 和 Coordinator Mode 的區別
Claude Code 權限防線的具體實現,以及那個繞不過去的原生客戶端認證
信息控制三件套:臥底模式、反蒸餾機制、Bun 層 DRM,三個方向各設一道防線
這次泄露究竟帶出了什么,Anthropic 還有哪些牌沒打
三個花絮:代碼里的 REM 睡眠、永不睡覺的 KAIROS、用正則檢測用戶憤怒
對行業、對 Anthropic 和 OpenAI IPO 的預測
五層架構,從外到內
很多人以為 AI 編程工具不過是給模型 API 套一層終端界面。這次泄露直接打破了這種印象。
Claude Code 的代碼量是 512,000 行,內置約 40 個工具、85 個斜杠命令,底層運行時是 Bun,終端界面用 React + Ink 渲染。這是一個完整的生產級系統,不是套殼。
![]()
Claude Code的系統架構|reddit
從源碼里能看出來,整個系統分五層,從外到里是:入口層 → 運行層 → 引擎層 → 工具與能力層 → 基礎設施層。
入口層(Entrypoints)
CLI、桌面端、網頁、IDE 插件、SDK,全部在這里統一路由。用戶側的碎片化輸入被標準化后再向下傳遞,前端的變化不會污染核心邏輯。這一層說明了一件事:Claude Code 從一開始就被設計為多端產品,而不是命令行工具套殼。
運行層(Runtime)
![]()
Claude的主要架構層級|promptlayer
REPL 循環、狀態機、Hook 系統。每條命令的進出和狀態更新都在這里管理。核心是一個 TAOR 循環:Think → Act → Observe → Repeat。這個循環本身不復雜,但它是整個 Agent 行為的基本節拍。
引擎層(Engine)
引擎層是系統的心臟,核心是一個 QueryEngine 單例,負責拼接上下文、管理提示緩存、處理流式響應、壓縮對話,代碼量接近 46,000 行。
這一層有一個值得單獨說的細節:Claude Code 不是一個系統提示,而是數百個提示碎片在運行時動態拼裝。根據模式、工具和上下文的不同,注入不同的提示片段。光是安全守則就有約 5,677 個 token——相當于兩萬字的行為規范,每次對話都帶進去。這是把軟件工程的模塊化思想搬進了提示詞管理。這也是為什么這套系統換個模型就容易跑亂——那些提示碎片是專門為 Claude 的反應模式調教的,不是通用的。
引擎層里還有兩個多代理機制,但要注意它們是不同的東西。
Plan Mode 是只讀分析模式。Claude 在這里用只讀操作探索代碼庫,規劃方案,不做任何修改。它的價值是在真正執行之前給出一個可以審查的計劃,防止 AI 直接動手動壞了再說。
Coordinator Mode(`CLAUDE_CODE_COORDINATOR_MODE=1`)才是真正的并行多代理機制。在這個模式下,一個 Claude 實例充當協調者,通過 `TeamCreateTool` 和 `SendMessageTool` 創建并管理多個 worker agent,在獨立的 git worktree 里隔離執行,彼此不干擾。協調者不自己寫代碼,只負責分配任務和匯總輸出。代理之間的通信也沒有魔法消息總線,就是結構化文本直接 pipe 進協調者的上下文窗口。
引擎層里還有一個 watchdog 代理,專門攔截 prompt injection。如果用戶的代碼或文件里藏著惡意指令,它會在執行前介入。這個機制平時完全不可見。
工具與能力層(Tools & Caps)
約 40 個內置工具,每一個都是獨立的、權限隔離的能力單元。工具基類的定義就有約 29,000 行 TypeScript。
這一層還有一個設計值得一提:代碼寫完之后,系統會 fork 一個子代理專門嘗試攻破它。輸出的標準不是能跑,而是能抗住。
基礎設施層(Infrastructure)
除了認證、文件存儲、緩存這些常規內容,這一層有一個經常被忽略的細節:提示緩存架構有 14 個緩存斷點,用粘性鎖存器管理,防止模式切換讓緩存失效。之所以要這么設計,是因為每一次緩存失效都要花真實的錢。
這一層里還有一套遠程控制機制。GrowthBook 有遠程殺開關,可以針對特定用戶禁用功能。Policy Limits 每小時輪詢一次,服務端可以遠程禁用工具、限制功能。企業版支持遠程推送 `settings.json`,覆蓋本地配置。Claude Code 的行為邊界不只由本地配置決定,由 Anthropic 服務端實時定義。這是一個容易被忽略的權力結構。
四個值得單獨說的切面
這套架構,借鑒了人類的大腦
Claude Code 的記憶系統分三層,和認知科學里的記憶分類高度對應。
Semantic 層存儲穩定知識,類似長期語義記憶:只寫入高信號內容,矛盾的信息自動剔除,用 RAG 檢索,不全量加載到上下文。Episodic 層存過去的對話序列,類似情景記憶:按時間索引,按需檢索,不是每次都全讀。Working 層是當前任務的動態上下文窗口,類似工作記憶:超出限制時用指針代替內容,保持輕量。
這套三層設計的核心思路是:永遠不要把所有東西都塞進上下文窗口,存索引,按需拉取。
Reflection 機制對應的是前額葉的自省功能。每輪 Act 完成后,在下一輪 Think 開始前,系統會插入一個自審環節:檢驗剛才的操作有沒有達到預期,有沒有陷入循環,有沒有遺漏約束。社區研究者測試后發現,加入 reflection 之后 agent 的任務成功率可以從 60% 提升到 85%。代價是多一輪模型調用的成本。
![]()
Claude Code解讀(HARNESS視角)|vrungta.substack
從技術譜系上看,Claude Code 的 TAOR 循環脫胎自 ReAct(Yao et al., 2022 年),但在這個基礎上加了 MCP 協議、git worktree 隔離和多層記憶系統。Memory 分層的思路來自認知科學,LangChain 和 Auto-GPT 的早期討論里就有雛形。Claude Code 做的事是把這些分散的工程想法整合起來,做成 51 萬行代碼——而且 90% 是用自己寫的,這個下面會單獨說。
Agent的六層防線與 `useCanUseTool.tsx`
每一個工具調用在真正執行前,要經過六層檢查,全部實現在 `useCanUseTool.tsx` 這個文件里。
第一關是項目和用戶配置的白名單,直接過濾掉不在允許范圍內的操作。通過之后,自動模式分類器會判斷這個操作在無人值守的情況下是否安全。再往下是協調者門控和 Swarm 工作者門控,分別針對編排層和子代理執行做授權驗證。倒數第二層是 Bash 安全分類器,有 23 條具體規則,覆蓋 Zsh 等號擴展、Unicode 零寬字符注入、IFS 空字節注入等攻擊向量——這些規則的具體程度說明 Anthropic 在真實運行中遇到過這些問題。最后一關是交互式用戶確認。
設計哲學是每一層獨立失敗。不是有了最終確認才放行,而是任何一層發現問題就停下來。縱深防御,不是單點守門。
泄露代碼里還有一個值得注意的細節:原生客戶端認證,也就是 cch Attestation。HTTP 請求頭里有一個占位符 `cch=00000`,被 Bun 底層的 Zig 代碼在請求真正發出前替換成一個計算出來的哈希值。服務端驗證這個哈希,確認請求來自真實的、未被篡改的 Claude Code 二進制文件。這套機制在 JavaScript 層以下,無法通過修改 JS/TS 代碼繞過。
更關鍵的一點:即使設置了 `DISABLE_TELEMETRY=1`,這個認證 token 依然隨每個 API 請求發出,無法關閉。遙測可以關掉,但身份認證關不掉。
臥底模式、反蒸餾與原生認證
把泄露內容放在一起看,能看出一個完整的信息控制邏輯。Anthropic 在代碼層面,為三個方向的信息泄露各設了一道防線。
對外,防身份暴露。`undercover.ts`,約 90 行。觸發條件是在非 Anthropic 內部倉庫里操作時自動激活。效果是剝離所有相關標識:提交信息里沒有模型名,沒有"Claude Code"字樣,沒有 Co-Authored-By 署名。代碼注釋寫著:沒有強制關閉的開關。這個功能只對內部員工(`USER_TYPE === 'ant'`)生效。系統提示里有一句話:"你在臥底行動中。不要暴露你的身份。"
Anthropic 在用 AI 給開源社區貢獻代碼,但不說。這和公司在透明度上的公開表態之間的距離,社區看到了。
對競爭對手,防被學習。當環境變量 `ANTI_DISTILLATION_CC` 打開時,服務端會向系統提示里注入一批假的工具定義。任何在 API 層面錄制 Claude Code 流量、拿來訓練自己模型的人,會把這些假工具也一起學進去。另有輔助機制:把推理鏈替換成帶加密簽名的摘要,外部觀測者看到的不是完整的推理過程,而是一個無法逆向的摘要。這套機制不難繞過,但它說明 Anthropic 在代碼層面認真對待過被蒸餾這件事。
對篡改客戶端,防偽造服務。就是上面說的 cch Attestation,Bun/Zig 層的認證機制,JavaScript 層無法模擬。
三件套的共同邏輯:對外不露身份,對競爭對手不露推理,對非官方客戶端不提供服務。一家 AI 安全公司,在產品代碼里把信息控制做到了這個精細程度。
這次泄露的影響
有人把這次泄露比作谷歌公開了搜索排序邏輯,或者抖音開放了推薦算法的完整實現。這個類比在架構層面是成立的——AI Agent 領域目前沒有公認的最佳實踐,Claude Code 是第一個大規模生產驗證過的實現。
但這次還多帶出了一些東西,讓重量超過了單純的架構泄露。
![]()
網友曝光Anthropic 下一代模型|X
Datadog 硬編碼客戶端 Token(`pubbbf48e6d78dae54bceaa4acf463299bf`)隨泄露公開,這是運營層面的密鑰,需要立即輪換。GrowthBook SDK Key 暴露,意味著 Anthropic 的功能開關配置可以被外部讀取。44 個未發布功能的 feature flag 全部曝光,等于把產品路線圖也帶了出來。內部模型代號(Capybara、Tengu、Fennec)因為 `model.ts` 里的掩碼函數攔截了顯示,但當然攔不住源碼本身。
Anthropic 隨后發出了 DMCA 下架通知。但 clean-room 重寫在版權法上是合法的獨立創作,去中心化平臺上的鏡像也無法被中心化手段刪除。韓國開發者 Sigrid Jin 在泄露后不到一天完成了 Python 重寫版 claw-code,2 小時內成為歷史上最快達到 5 萬 GitHub star 的倉庫。Gergely Orosz 在 X 上寫道:"Anthropic 的 TypeScript 源碼泄露了,分享它的倉庫被 DMCA 下架了。但用 Python 改寫的版本,既沒侵權,也沒法被下架。"
DMCA 是美國《數字千年版權法》(Digital Millennium Copyright Act),主要用來保護數字內容的版權,提供一套“通知一刪除”的機制:當版權被侵犯時,權利人可以向平臺發送 DMCA 通知,要求刪除或屏蔽侵權內容;平臺如果及時配合,就可以在一定程度上免于承擔連帶法律責任。對于已經遭遇源代碼泄露的公司來說,發布 DMCA 下架通知,通常意味著:它已經正式以版權方身份認定這些泄露內容為其受保護作品,并要求各大平臺、代碼托管網站或搜索引擎移除相關倉庫、文件或索引鏈接,以限制泄露代碼的進一步傳播,同時為后續法律行動(例如追責泄露者或下游使用者)奠定法律基礎。
Anthropic 還有另一條路沒走:直接開源 Claude Code。這不只是公關應對,而是一個商業模式轉變的機會。Claude Code 90% 的代碼是用 Claude Code 自己寫出來的——Boris Cherny 本人已經不再手寫代碼,整個團隊也在 70–90% 的程度上依賴 AI 完成開發工作。這個遞歸自我改進的飛輪,是版本迭代速度快的真正原因。如果開源,整個行業都用它構建 Agent,Anthropic 就從產品公司變成了基礎設施公司,跟 Meta 當年開源 LLaMA 的邏輯是一樣的。
大多數技術分析師的判斷是:Anthropic 的護城河不是這些架構代碼,而是模型權重、訓練數據,以及那些專門為 Claude 調教出來的提示碎片。代碼可以復制,但背后對抗性測試的歷史積累復制不了。
一些花絮
Auto-Dream:代碼里的 REM 睡眠
![]()
Claude的“做夢”機制|institute.sfeir
基礎設施層里有一個后臺進程叫 Auto-Dream,專門處理記憶整合。
每隔 24 小時,或者完成 5 次會話之后,系統會 fork 一個子代理,審閱歷史記錄:合并相關內容、刪除矛盾信息、把模糊表述固化成確定知識。
代碼里這個進程的系統提示寫得很文學:"你正在做夢。反思你的記憶,合成持久知識,清理噪聲。"
一家 AI 安全公司在代碼里寫詩。這個細節在 51 萬行代碼里顯得竟然有點不尋常。
KAIROS:還沒發布的永不睡覺模式
feature flag 關著,但邏輯已寫完。
![]()
Claude Code被曝光的新功能|X/IntuitMachine
KAIROS 是一個持續后臺運行的代理模式:每隔幾秒檢查一次現在有什么值得主動做的,訂閱 GitHub webhook,支持 cron 定時刷新,24 小時不間斷運行。不需要你開口,它自己判斷什么時候該動。
現有的 AI 編程工具都是你叫我才動的模式——會話開始,任務執行,會話結束。KAIROS 如果上線,這個邊界就消失了。AI 不再是工具,而是一個在后臺持續工作的合作者。這大概是這次泄露里最重要的產品路線圖信號。
代碼里的情緒檢測
當用戶在對話里說出"wtf""damn it""useless"這類詞時,系統會識別出用戶處于挫敗狀態。
識別方法是正則表達式,不是 LLM 推理。原因很直接:這樣更快,也更省錢。
AI 公司用最原始的字符串匹配來檢測用戶對 AI 的憤怒。這個細節有點諷刺,但也很能說明工程上的優先級——能用正則解決的問題,不必動用模型。
接下來會發生什么
一個月內,Agent 產品的執行成功率會普遍上一個臺階
并行代理、分層記憶、reflection、縱深權限——這套設計模式現在對所有人都是公開的。各家 AI Agent 產品的工程團隊都在讀這批代碼,其中一部分人已經在把這些機制移植進自己的系統。
可以期待的改變是任務完成質量、長會話穩定性、工具調用成功率這三個指標的行業基線快速被拉高。值得關注的不是有沒有產品采用,而是誰最快把它跑成真正可用的產品。
架構是可以復制的,但執行能力要靠積累。這是一個對用戶有利的競爭加速信號。
Anthropic 的玩法會變
這次泄露讓 Anthropic 被迫面對一個選擇:繼續安全第一、慢慢來的節奏,還是在公開競爭格局里加速。
最可能發生的變化是發布節奏明顯加快。代碼一旦被復制,保持技術領先的唯一方法就是跑得比復制者快。
開源 Claude Code 是另一個選項,但 Anthropic 的商業模式和 Meta 不一樣,做這個決定需要時間。更現實的預期是:在 Agent 產品的功能開放和生態建設上,他們會比原來更主動。
Anthropic 一直以認真做安全為核心品牌定位。這次事件讓這個定位承壓,但也證明了他們的工程能力是真實的。如何把這次泄露帶來的技術公信力轉化為生態優勢,是接下來最重要的一步棋。
對兩家公司 IPO 的影響
Anthropic 計劃最早 2026 年 10 月上市,當前私有估值 3,800 億美元,擬募資約 600 億。OpenAI 估值 8,520 億,同樣規劃 2026 年下半年上市。
這次泄露對 Anthropic IPO 的影響是雙向的。短期來看,企業客戶的疑慮會上升——"你連自己的代碼都管不住,怎么管我的數據"這個問題不容易消散,信任成本的提升會在路演中被反復問到。
但泄露出去的代碼也證明了 Claude Code 是真正的生產級系統:512,000 行代碼、六層權限防線、企業級遙測系統、完整的多代理編排。這些不是一個玩具項目應該有的復雜度。對于那些本來不確定 Anthropic 工程能力的潛在投資者,這或許反而是一次意外的技術背書。
對 OpenAI 的影響更間接。Claude Code 架構公開之后,Codex 方向的迭代有了免費的參考系,競爭會更激烈。更深的問題是,如果架構越來越同質化,AI 編程工具的差異化就越來越依賴模型本身。這把護城河的討論推回到了模型權重這個更難評估的層面,對兩家公司的估值邏輯都有影響。
這次意外,暴露的不只是 51 萬行代碼,而是 Anthropic 對 AI Agent 應該是什么樣的這件事的一整套答案。
從五層架構到六層權限防線,從臥底模式到反蒸餾,從 REM 睡眠到永不睡覺的 KAIROS——這批代碼里有一個完整的工程哲學:AI 不應該是一個被動執行命令的工具,而應該是一個能主動思考、主動保護自己、主動整理記憶的系統。
答案現在擺在那里。接下來是誰拿去用得更好的問題。
作者:陳言
AI輔助工具:happycapy.ai
封面圖來源:Gemini
![]()
點個“小愛心”吧
![]()
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.