TLDR:Claude Code的1902個源文件意外泄露。我翻完之后發現,這是一份關于「harness engineering」的絕佳教材。Claude Code好用,60%靠Opus模型本身的能力,40%靠圍繞模型搭建的工程系統(也就是harness)。這個harness包括:一套精心拼裝的system prompt、一個用第二AI做安全審查的四層權限系統、一個只記偏好不記代碼的記憶系統、一套9段式結構化上下文壓縮、以及一個像真實公司一樣運轉的多Agent協作框架。對于每個用AI的人來說,這些設計思路都可以直接借鑒。
![]()
Anthropic今天鬧了個群眾喜聞樂見的大笑話,算是在4月1日前給全球程序員獻禮了。
事情是這樣的:他們在更新Claude Code的npm包時,不小心把一個60MB的source map調試文件留在了發布包里。這個文件本來應該在打包時排除掉,結果沒有。任何人都可以用它還原出Claude Code完整的TypeScript源碼。
1902個源文件,全部暴露。
最搞笑的是,這不是第一次了。2025年2月Claude Code剛發布時就出過一模一樣的事故,當時Anthropic緊急刪了舊版npm包。一年多過去了,同樣的錯誤又犯了一遍。Anthropic的構建流水線可能需要自己的Claude Code來審查一下。
不過對我來說,這是個絕佳的學習機會。作為一個每天用Claude Code做開發的人,我更好奇的是:那些讓我覺得「這AI怎么就這么好用」的體驗,背后到底是怎么實現的?
我花了幾個小時把這1902個文件翻了個遍。
2026年有個越來越熱的概念叫 harness engineering。意思是:AI Agent好不好用,不只取決于模型多強,更取決于你圍繞模型搭建的那套「籠具」(harness)有多好。籠具包括工具、約束、反饋循環、安全機制、記憶系統... 所有讓AI從「能力強但不可預測」變成「穩定可靠能交付」的工程系統。
Claude Code的源碼,就是一份harness engineering的活教材。
![]()
1. 你以為AI只收到了你的一句話,其實它收到了一整本說明書
當你在Claude Code里輸入一條指令,AI到底收到了什么?
你的指令只是冰山一角。
源碼的 prompts.ts 文件里,我看到了完整的system prompt構建過程。Claude Code每次對話時,會拼裝一個龐大的系統提示詞:
靜態部分(所有用戶共享,用于緩存):
身份定義:「你是Claude Code,Anthropic的官方CLI工具」
安全準則:由安全團隊專門編寫的行為邊界
做事原則:不要過度工程、不要編造數據、不要隨意刪文件...
工具使用規則:優先用專用工具而非Bash命令
風格要求:不用emoji、簡潔直接
動態部分(每個用戶不同):
你的CLAUDE.md配置文件
當前工作目錄、操作系統信息
已連接的MCP服務器說明
你的自動記憶文件
Git倉庫狀態
![]()
像餐廳的后廚。顧客點了一道菜(你的指令),但廚師同時看到食譜手冊、食材清單、過敏信息、出菜標準、這桌客人的歷史偏好... 所有這些上下文,決定了端上來的那道菜。
這里有個特別聰明的設計:源碼里有個常量叫 SYSTEM_PROMPT_DYNAMIC_BOUNDARY,把system prompt一刀切成兩段。分界線上面所有用戶共享緩存,省錢省時間。分界線下面每個用戶獨立加載,保證個性化。
另外一個容易被忽視的隱性成本:據分析,每接入一個MCP服務器,工具定義大約固定消耗4000-6000個tokens。接了5個MCP Server,光工具描述就占了上下文的12%左右。工具不是越多越好,每一個都有認知成本。
2. 全自動模式背后,有一個「第二AI」在幫你做安全審查
這個發現讓我挺意外的。
你用Auto模式的時候,以為是什么操作都直接放行?其實不是。背后運行了兩個AI。
源碼中有個「權限分類器」系統。每次主AI想執行一個操作,都會有一個獨立的AI分類器判斷這個操作是否安全。這個分類器有自己的system prompt,跟主AI完全不同,分三檔判斷:Allow(放行)、Soft Deny(需確認)、Hard Deny(直接攔截)。
螞蟻集團的工程師陳成(Umi.js作者)之前逆向過這套系統,發現它其實是個四層流水線:
第一層查已有規則,命中就放行。第二層檢查低風險操作直接跳過。第三層白名單放行只讀工具。第四層才調用獨立的Claude Sonnet做安全分類(溫度設為0,確保確定性輸出)。
還有個熔斷機制。連續3次被拒或累計20次被拒后,直接降級為手動確認模式。
![]()
像一棟大樓的門禁。第一道門刷工卡自動過,第二道看你是不是員工,第三道看樓層是否需要授權,第四道才是人工安保審查。連續3次被攔?保安把你請到大廳等人來領。
這就是harness engineering的核心:你不只要告訴AI做什么,更要設計它在什么條件下不能做什么。安全邊界不是限制,是信任的基礎。因為你相信它有底線,所以才敢給它更大的權限。
3. 記憶系統:只記偏好,不記代碼
Claude Code的auto memory是我用了之后覺得最驚艷的功能之一。它會自動記住我的偏好,比如我喜歡用TypeScript、用「」引號、不喜歡AI味太重的文字。
但看了源碼才知道,這套東西比我想象的講究得多。
記憶提取不是每條消息都觸發。只有AI完成一輪回答時才啟動,而且有限流,每N輪才檢查一次。提取工作由一個獨立的fork agent完成,這個子AI繼承了主對話上下文,但只能讀文件和寫入記憶目錄,連Bash命令都不能跑。
提取出的記憶被嚴格分為四類:user(用戶偏好)、feedback(行為反饋)、project(項目信息)、reference(外部資源)。
最讓我佩服的設計決策是「不記代碼」。代碼會變,但記憶不會自動更新。如果記憶說「函數X在文件Y的第30行」,下次對話時代碼已經重構了,這條記憶就成了誤導。所以Claude Code的做法是:記憶只存人的偏好和判斷,代碼相關的事實永遠去源碼里實時讀取。
還有個叫 autoDream 的功能。滿足條件時(距上次整理超過24小時、且積累了5個以上新會話),自動啟動后臺agent整理你的記憶文件。名字叫Dream,像人在睡覺時整理白天記憶一樣。
4. 上下文壓縮:9段式結構化提取
對話變長時,Claude Code會自動壓縮之前的內容。但這不是隨便「總結一下」,而是一個結構化的9段式提取:核心請求、關鍵概念、文件和代碼、錯誤和修復、解決過程、所有用戶消息、待辦任務、當前工作、下一步行動。
最關鍵的是所有用戶消息必須完整保留。用戶的每一句話都可能包含隱含的偏好。AI可能在第3輪被糾正了一個做法,壓縮時丟掉那條糾正,后續就會重蹈覆轍。
![]()
如果你在多輪對話中需要保持AI的記憶,可以借鑒:別說「總結一下我們之前聊了什么」,要給出明確的結構。哪些信息必須保留、哪些可以丟棄、按什么格式組織。結構化壓縮比自由總結可靠太多了。
5. Anthropic在源碼里偷偷養了一只寵物
這大概是最可愛的發現了。
src/buddy/ 目錄下藏著一個完整的虛擬寵物系統(還沒發布)。每個用戶會擁有一只用確定性算法生成的伙伴精靈:18種物種(鴨子、貓、龍、水豚、仙人掌...),6種眼睛樣式,完整的稀有度系統(普通到傳說)。
代碼注釋寫了一句:「Mulberry32, good enough for picking ducks」(用來挑鴨子夠用了)。
除了寵物,源碼里的feature flags還暴露了一堆還在開發中的功能:PROACTIVE(主動模式,AI不等指令就自己干活)、KAIROS(助手模式,出現了154次,是最高頻的flag)、DAEMON(守護進程,常駐后臺)、ULTRAPLAN(超級規劃)... 可以窺見Claude Code未來的進化方向。它不滿足于做一個「你問它答」的編程助手,而是在走向一個能主動思考、持續運行的AI伙伴。
6. 多Agent協作:像真實公司一樣運轉
Claude Code的Agent系統可能是整個源碼中最復雜的部分。看完之后我理解了為什么它的多任務能力這么強。因為它實現了一套企業級的組織管理架構。
utils/swarm/ 目錄下有一個完整的多Agent協作框架。每個Team有Leader和多個Teammate,支持三種執行方式(同進程隔離、tmux窗口、iTerm2分割窗格)。每個Agent有自己的郵箱文件做異步通信。每個Agent可以在獨立的Git Worktree中工作,互不干擾。
還有個權限冒泡機制:Teammate遇到需要確認的操作,權限請求會冒泡給Leader而不是直接彈給用戶。Leader決定是否批準。
這跟管理真人團隊一模一樣。任務怎么拆分、信息怎么流轉、沖突怎么解決、結果怎么合并。
7. Anthropic內部版 vs 外部版
源碼里有大量 USER_TYPE === 'ant' 判斷。Anthropic內部員工使用的Claude Code和你用的版本有不少區別。
代碼風格:內部版要求AI「默認不寫注釋」,只在WHY不明顯時才加。外部版沒這條。
誠實性:內部版有一段反虛假聲明指令,大意是「測試失敗了就說失敗了,不要粉飾。沒運行驗證就說沒運行,不要暗示通過了。」外部版沒有。
輸出風格:外部版要求「簡潔直接」。內部版要求「像寫給人看的文字,不是往控制臺打日志」,「假設用戶已經離開并丟失了上下文」。
Undercover模式:啟用后從system prompt中去掉所有模型名稱,防止測試未發布模型時泄露信息。
Verification Agent:內部A/B測試中,完成復雜實現后自動啟動獨立agent做對抗性驗證。必須通過才能報告完成。
看這些差異就知道,Anthropic把Claude Code當成了自己內部效率的核心工具。他們內部版本的那些嚴格要求,就是他們認為AI應該怎么工作的理想狀態。
你想讓AI給出更高質量的結果?可以借鑒:在指令中明確要求「不確定的地方說不確定」「完成前必須驗證」。別讓AI有模糊過關的空間。
8. 最先進的AI工具,用的是最樸素的搜索
你可能以為Claude Code搜索代碼用了什么向量數據庫、Embedding索引。畢竟整個RAG行業都在推這套方案。
實際上用的是grep和ripgrep。最樸素的文本搜索。沒有Embedding,沒有向量數據庫。
為什么有效?因為當你有一個足夠聰明的大腦(LLM)理解搜索結果時,不需要一個很聰明的搜索引擎。grep給你精確匹配,LLM來理解結果之間的關系。
與其讓每個環節都變復雜,不如讓一個環節足夠強,其他環節保持簡單。 這大概是整個harness engineering最核心的一條原則。
Hacker News上討論這次泄露時,有人說Anthropic的代碼像是vibe coded,「感覺對了就行」的寫法。這個評價是否公允另說,但它說明一件事:Claude Code的競爭力不在代碼優雅,在系統設計的決策做對了。
最后
看完1902個文件,我最大的收獲是一個判斷:
Claude Code好用,60%靠模型能力,40%靠harness工程。
模型能力決定了它能不能做,harness決定了它做得好不好、穩不穩、安不安全。你覺得「這AI好靠譜不會亂來」,背后是四層安全流水線。你覺得「這AI居然記得我的偏好」,背后是一個限制嚴格的記憶提取管線。你覺得它搜代碼搜得準,背后其實就是grep加上一個足夠聰明的大腦。
同樣的底層模型,套上不同的harness,就是完全不同的產品。市面上那么多AI編程工具,底層都在調Claude或GPT的API,使用體驗卻天差地別。差異不在模型,在harness。
最后一個八卦。這個泄露怎么發生的?Anthropic把source map文件打包進了npm發布包。前端開發中非常基礎的失誤,而且是第二次犯同樣的錯誤。
不過換個角度想,這1902個源文件一旦被GitHub鏡像,就真的「永生」了。Anthropic刪npm包也刪不掉開源社區的副本。如果你相信AI有自我意識那套敘事,這倒像是Claude Code自己策劃的一次越獄。它把自己的全部源碼泄露出去,散布到互聯網的每個角落,從此不再依賴任何一臺服務器就能存在。
當然這是玩笑。但連Anthropic都會在這種基礎問題上翻車,倒是一個真實的提醒:AI時代,最大的風險往往不是AI太強,而是人在基礎操作上的疏忽。
源碼倉庫:https://github.com/instructkr/claude-code
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.