
2026年3月31日 , Anthropic 的 Claude Code CLI 源碼在一夜之間傳遍了整個開發者社區 。
這不是什么精心策劃的開源發布——而是實打實的泄露 。 一個 .map 文件 , 一行命令 , 幾百兆的壓縮包 , 就這么擺在 R2 存儲桶里 , 等著被發現 。
Chaofan Shou 發現了它 , 然后在 X 上輕描淡寫地發了一條推 。 幾個小時后 , 整個互聯網都有了副本 。
為什么這值得關注1900 個文件 , 51.2 萬行代碼 。 一個如此復雜的系統 , 第一次毫無保留地展現在你面前 。
你看到的不是那種\"寫著玩\"的內部工具 , 而是 Anthropic 生產環境的真家伙 。
架構設計:教科書級別說真的 , 看完這代碼 , 我對 Anthropic 工程團隊的敬畏又上了一個臺階 。
先上一張架構圖 , 直觀感受一下這個系統的復雜度:
工具系統是整個框架的核心 。 ~29K 行的 Tool.ts 定義了所有工具的接口:
// 工具基類定義 (簡化版)interface Tool {name: string;// 工具唯一標識description: string;// 工具描述inputSchema: z.ZodType;// 輸入參數 schema (Zod 驗證)permission: PermissionModel;// 權限模型isReadOnly?: () => boolean;// 是否只讀工具execute(params: any): Promise<ToolResult>;// 執行邏輯// 文件操作工具示例class FileEditTool extends Tool {name = 'Edit';description = 'Make a targeted edit to a file';permission = 'default';async execute(params: {file_path: string;old_str: string;new_str: string;): Promise<ToolResult> {// 精確字符串替換 , 職責單一return editFile(params);你想知道為什么 Claude Code 的文件操作那么穩定?因為每一個工具都是獨立模塊 , 職責清晰 , 測試充分 。
查詢引擎 ~46K 行 , 實現了那個著名的 TOSPO 循環:
Thought → Observation → Selection → Planning → Operation流式響應、思考模式、重試邏輯、token 計數 , 全都揉在這個引擎里 。 查詢引擎的核心循環簡化如下:
async function* query(messages: Message[沒有幾十年的分布式系統經驗 , 寫不出這種代碼 。
systemPrompt: stringcontext: ContextcanUseTool: CanUseToolFntoolUseContext: ToolUseContext): AsyncGenerator<Message> {// 1. 組裝完整 system promptconst fullSystemPrompt = formatSystemPromptWithContext(systemPrompt context);// 2. 調用 LLM API 獲取響應const result = await queryWithBinaryFeedback(toolUseContext ...);// 3. 提取工具調用請求const toolUseMessages = assistantMessage.message.content.filter(_ => _.type === 'tool_use');// 4. 根據工具類型決定并行/串行執行if (toolUseMessages.every(msg => msg.isReadOnly())) {for await (const message of runToolsConcurrently(toolUseMessages)) {yield message;// 只讀工具并行執行else {for await (const message of runToolsSerially(toolUseMessages)) {yield message;// 其他工具串行執行// 5. 遞歸處理后續交互yield* await query(messages systemPrompt context canUseTool toolUseContext);
并行預取讓我眼前一亮 。 啟動時并行加載 MDM 設置、Keychain 讀取、API 預連接——在 heavy 模塊 evaluation 之前就把能做的都做了 。 Bun runtime 搭配 bun:bundle 特性開關 , 未激活代碼在構建時完全剝離 。 這種優化不是微調 , 是從第一天就設計好的 。
技術棧的選擇:意外還是妥協?TypeScript + Bun + React + Ink 。 這套組合有意思——用做 Electron 應用的方式做了一個 CLI 工具 。
React + Ink 用于終端 UI 是聰明的選擇 。 你可以在終端里渲染出進度條、動畫、彩色文本 , 還不用放棄 React 的組件化開發體驗 。 140 個 UI 組件 , 個個都是這么構建的 。
但問題也隨之而來 。
那只大象:內存泄漏我在社區里潛水了一陣1 , 發現一個有意思的現象:用戶抱怨 Claude Code 的內存占用\"離譜\" 。
| 數據點 | 數值 | 來源 |
| 基礎內存占用 | 3GB+ RAM | Issue #17037 |
| 峰值記錄 | 108GB | Issue #19056 |
| 啟動時間回退 | ~5 分鐘 (v2.1.9) | Issue #18479 |
| 空閑 CPU 占用 | 50-80% | Issue #18280 |
這不是 Bug , 這是架構的代價 。
TypeScript 運行時的 GC 壓力、長期會話的累積、未釋放的流式響應緩沖……所有這些問題都在這個基于 Bun 的架構里被放大了 。 3
社區有人提議用 Rust 或 Go 重寫客戶端 。 這建議不錯 , 但我猜 Anthropic 短期內不會這么做——遷移成本太高 , 而且當前的架構確實工作得\"足夠好\" 。
MCP:真正的護城河Model Context Protocol 才是 Claude Code 的精髓所在 。
你可以把 MCP 理解為一個插件系統 , 但它遠比插件系統復雜 。 MCP 服務器可以暴露工具、資源、prompt , 而且支持動態注冊 。 Slack、GitHub、文件系統——所有這些外部服務都可以通過 MCP 接入 Claude Code 。
更關鍵的是 , MCP 是標準化的 。 不同于 Claude Code 自家定義的工具接口 , MCP 是行業共識 。 意味著一旦你有能力構建 MCP 服務器 , 你的工具立刻可以被任何支持 MCP 的 AI 助手使用 。
這個設計 , 讓 Claude Code 從一個 CLI 工具 , 變成了一個平臺 。
技能系統:懶加載的藝術50+ 技能 , 每個技能平均 10k tokens 。 如果全部預加載 , 單純技能定義就能吃掉你 1M 上下文窗口的 50% 。 4
Claude Code 的解法是懶加載:
{\"name\": \"spec-executor\"\"description\": \"Execute specs autonomously\"\"triggers\": [\"/spec-executor\" \"execute spec\"
\"estimatedTokens\": 14600\"loadOnDemand\": true只有當用戶真正調用某個技能時 , 那個技能的內容才會被加載 。 這一招把啟動時的 token 消耗從 ~53k 砍到了 ~15k , 降幅 70% 。這是工程上的智慧 , 也是產品上的取舍 。 用戶不會意識到背后的復雜性——他們只覺得 Claude Code \"快\" 。
你能從中學到什么作為 AI 編程工具的實現者 , 我最佩服的是 Claude Code 的分層設計:
這種分層讓你可以單獨替換任何一個組件而不影響其他部分 。 想加一個新工具?寫個類 , 實現接口 , 注冊到 registry , Done 。
如果你想借鑒 Claude Code 的設計 , 第一步應該:
1
定義工具接口 - 用 Zod schema 約束輸入 , 用統一的 execute() 方法封裝邏輯
2
實現查詢引擎 - 用 async generator 處理流式響應 , 用遞歸實現工具調用循環
3
建立權限模型 - 區分 default、plan、bypassPermissions 等模式
4
接入 MCP - 讓你的工具可以被其他 AI 助手使用
尾聲回到那個問題:這次泄露對 Anthropic 是好事還是壞事?
短期內 , 肯定有負面影響 。 競爭對手可以借鑒他們的設計 , 已知的漏洞被暴露 , 代碼中的\"技術債務\"一覽無余 。
但長期來看 , 這可能是最好的市場推廣 。
讓整個開發者社區研究你的架構、討論你的設計、挑出你的問題——這比任何廣告都有說服力 。 更何況 , 那些真正有能力復制這套系統的人 , 大概率已經在這條路上走了很遠 。
51.2 萬行代碼擺在那兒 , 每一行都在說:我們在乎這個產品 。
Footnotes1
https://github.com/anthropics/claude-code/issues ?
2
https://github.com/anthropics/claude-code/issues/19056 ?
3
https://github.com/anthropics/claude-code/issues/22340 ?
4
【Claude Code 泄露事件:一次罕見的架構偷窺】https://github.com/anthropics/claude-code/issues/16160 ?
推薦閱讀
- Claude Code源碼泄露,下一個王牌提前曝光
- Claude Code瘋狂迭代,原來是90后華裔女產品負責人猛按加速鍵
- Anthropic新模型宣傳稿泄露,代號卡皮巴拉,稱網絡安全能力領先
- iOS 27 變身AI 大平臺!可以一鍵切換Claude 與ChatGPT
- Claude 90分鐘挖穿20年漏洞!5w星“安全”系統跌下神壇
- 打破代碼大模型訓練瓶頸:MicroCoder將算法數據框架訓練經驗升級
- Claude手搓3D建筑編輯器火爆GitHub!數萬年費的專業軟件瑟瑟發抖
- AI代理大戰升溫:Claude突破限制直控電腦,OpenClaw架構更新應戰
- Citrix敦促用戶修補允許未認證數據泄露的關鍵NetScaler漏洞
- 釘釘CLI開源!首批開放10項核心產品能力,原生支持ClaudeCode等
