menu-icon
anue logo
鉅亨傳承學院鉅亨號鉅亨買幣
search icon

區塊鏈

Claude Code源碼泄露事件全紀錄:一個.map文件引發的蝴蝶效應

金色財經

撰文:Claude

一、緣起

2026年3月31日凌晨,一條推文在開發者社區掀起了軒然大波。

Chaofan Shou,一名區塊鏈安全公司的實習生,發現 Anthropic 官方 npm 包里附帶了一個 source map 文件,將 Claude Code 的完整源碼暴露在公網之上。他隨即在 X 上公開了這一發現,並附上了直接下載鏈接。


這條帖子像信號彈一樣在開發者社區炸開。數小時內,超過51.2萬行 TypeScript 代碼被鏡像到 GitHub,並被數以千計的開發者實時分析。

這是 Anthropic 在不到一周內發生的第二起重大資訊泄露事故。

就在五天前(3月26日),Anthropic 的一個 CMS 配置錯誤導致近3000個內部文件公開,其中包含即將發布的"Claude Mythos"模型的草稿博文。

二、泄露是怎麼發生的?

這次事故的技術原因令人啼笑皆非——根本原因是 npm 包里被錯誤包含了一個 source map 文件(.map 文件)。

這類文件的用途是將壓縮混淆後的生產代碼映射回原始源碼,方便調試時定位錯誤行號。而這個 .map 文件里,包含了一個指向 Anthropic 自家 Cloudflare R2 儲存桶中 zip 壓縮包的鏈接。

Shou 和其他開發者直接下載了這個 zip 包,無需任何駭客手段。文件就在那裡,完全公開。

出事的版本是 @anthropic-ai/claude-code 的 v2.1.88,附帶了一個 59.8MB 的 JavaScript source map 文件。

Anthropic 在回應 The Register 的聲明中承認:"更早的一個 Claude Code 版本在2025年2月也發生過類似的源碼泄露。"這意味著,同樣的錯誤在13個月內發生了兩次。

諷刺的是,Claude Code 內部有一套叫做"Undercover Mode(卧底模式)"的系統,專門設計來防止 Anthropic 內部代號在 git 提交記錄中意外泄露……然後工程師把整個源碼打包進了一個 .map 文件。

事故的另一個推手可能是工具鏈本身:Anthropic 年底收購了 Bun,而 Claude Code 正是基於 Bun 構建的。2026年3月11日,有人在 Bun 的 issue 追蹤系統中提交了一個 bug 報告(#28001),指出 Bun 在生產模式下仍然會生成並輸出 source map,與官方文檔的說法相悖。這個 issue 至今仍是開放狀態。

對此,Anthropic 的官方回應簡短而克制:"沒有用戶數據或憑證被涉及或泄露。這是一個發布打包過程中的人為失誤,不是安全漏洞。我們正在推進措施以防止此類事件再次發生。"

三、泄露了什麼?

代碼規模

此次泄露的內容涵蓋約1900個文件、超過50萬行代碼。這不是模型權重,而是 Claude Code 整個"軟體層"的工程實現——包括工具調用框架、多智能體編排、權限系統、記憶系統等核心架構。

未發布的功能路線圖

這是此次泄露最具戰略價值的部分。

KAIROS 自主守護進程:這一被提及超過150次的功能代號來自古希臘語"恰當的時機",代表 Claude Code 向"常駐後台 Agent"的根本性轉變。KAIROS 包含一個名為 autoDream 的進程,在用戶空閒時執行"記憶整合"——合併碎片化觀察、消除邏輯矛盾、將模糊洞察固化為確定性事實。當用戶回來時,Agent 的上下文已經清潔且高度相關。

內部模型代號與性能數據:泄露內容確認 Capybara 是 Claude 4.6 變體的內部代號,Fennec 對應 Opus 4.6,而尚未發布的 Numbat 仍在測試中。代碼注釋中還暴露了 Capybara v8 存在29-30%的虛假陳述率,相較 v4 的16.7%有所退步。

反蒸餾機制(Anti-Distillation):代碼中存在一個名為 ANTI_DISTILLATION_CC 的功能標誌。啟用後,Claude Code 會在 API 請求中注入虛假工具定義,目的是污染競爭對手可能用於模型訓練的 API 流量數據。

Beta API 功能清單:constants/betas.ts 文件揭示了 Claude Code 與 API 協商的所有 beta 功能,包括 100萬 token 上下文窗口(context-1m-2025-08-07)、AFK 模式(afk-mode-2026-01-31)、任務預算管理(task-budgets-2026-03-13)等一系列尚未公開的能力。

內嵌的寶可夢式虛擬夥伴系統:代碼中甚至藏着一套完整的虛擬夥伴系統(Buddy),包含物種稀有度、閃光變體、程序化生成屬性,以及由 Claude 在首次孵化時撰寫的"靈魂描述"。夥伴種類通過基於用戶 ID 哈希的確定性偽隨機數生成器決定,同一用戶永遠獲得同一夥伴。

四、並發的供應鏈攻擊

這次事件並非孤立發生。在源碼泄露的同一時間窗口內,npm 上的 axios 包遭到了獨立的供應鏈攻擊。

2026年3月31日00:21至03:29 UTC之間,如果通過 npm 安裝或更新了 Claude Code,可能無意中引入了含有遠程訪問木馬(RAT)的惡意版本(axios 1.14.1 或 0.30.4)。

Anthropic 建議受影響的開發者將主機視為完全淪陷,輪換所有密鑰,並重新安裝操作系統。

這兩起事件在時間上的重疊,使局勢更加混亂和危險。

五、對行業的影響

對 Anthropic 的直接損害

對於一家年化營收達190億美元、正處於高速增長期的公司而言,此次泄露不僅僅是安全疏失,更是戰略性知識產權的失血。

至少部分 Claude Code 的能力來源不是底層大語言模型本身,而是圍繞模型構建的軟體"框架"——它指導模型如何使用工具,並提供重要的護欄與指令來規範模型行為。

這些護欄與指令現在被競爭對手看得一清二楚。

對整個 AI Agent 工具生態的警示

此次泄露不會擊沉 Anthropic,但它給所有競爭對手提供了一份免費的工程教材——如何構建生產級 AI 編程 Agent,以及哪些工具方向值得重點投入。

泄露內容的真正價值不在於代碼本身,而在於功能標誌所揭示的產品路線圖。KAIROS、反蒸餾機制——這些是競爭對手現在可以預判並搶先反應的戰略細節。代碼可以重構,但戰略驚喜一旦泄露,就無法收回。

六、對 Agent Coding 的深層啟示

這次泄露是一面鏡子,映照出當前 AI Agent 工程的幾個核心命題:

1. Agent 的能力邊界,很大程度上由"框架層"決定,而非模型本身

Claude Code 50萬行代碼的曝光揭示了一個對整個行業都有意義的事實:同樣的底層模型,配以不同的工具編排框架、記憶管理機制和權限系統,會產生截然不同的 Agent 能力。這意味著"誰的模型最強"已經不再是唯一的競爭維度——"誰的框架工程更精良"同樣至關重要。

2. 長程自主性是下一個核心戰場

KAIROS 守護進程的存在表明,行業下一步的競爭將集中在"讓 Agent 在無人監督時也能持續有效工作"上。後台記憶整合、跨會話知識遷移、空閒時的自主推理——這些能力一旦成熟,將徹底改變 Agent 與人類協作的基本模式。

3. 反蒸餾與知識產權保護將成為 AI 工程的新基礎課題

Anthropic 在代碼層面實現了反蒸餾機制,這預示着一個新的工程領域正在形成:如何防止自身的 AI 系統被競爭對手用於訓練數據採集。這不僅是技術問題,也將演變為法律與商業博弈的新戰場。

4. 供應鏈安全是 AI 工具的阿喀琉斯之踵

當 AI 編程工具本身通過 npm 這類公開軟體包管理器分發時,它們就和其他開源軟體一樣,面臨供應鏈攻擊的風險。而 AI 工具的特殊性在於,一旦被植入後門,攻擊者獲得的不只是代碼執行權,而是對整個開發工作流的深度滲透。

5. 越複雜的系統,越需要自動化發布守衛

"一個配置錯誤的 .npmignore 或 package.json 中的 files 字段,就可以暴露一切。"對於任何構建 AI Agent 產品的團隊而言,這一教訓不需要付出如此昂貴的代價才能習得——在 CI/CD 流水線中引入自動化的發布內容審查,應當成為標準實踐,而不是亡羊補牢後的補救措施。

尾聲

今天是2026年4月1日,愚人節。但這不是玩笑。

Anthropic 在十三個月內犯了同樣的錯誤兩次。源碼已經鏡像到全球,DMCA 刪除請求追不上 fork 的速度。那份本該深藏於內網的產品路線圖,現在是所有人的參考資料。

對 Anthropic 而言,這是一次痛苦的教訓。

對整個行業而言,這是一次意外的透明時刻——讓我們得以窺見,當下最領先的 AI 編程 Agent 究竟是如何被一行一行構建起來的。

來源:金色財經

發佈者對本文章的內容承擔全部責任
在投資加密貨幣前,請務必深入研究,理解相關風險,並謹慎評估自己的風險承受能力。不要因為短期高回報的誘惑而忽視潛在的重大損失。

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與加密貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠


section icon

鉅亨講座

看更多
  • 講座
  • 公告

    Empty
    Empty