Claude Code 原始碼洩漏,這件事本身已經夠戲劇化了。59.8MB sourcemap,60 萬行 TypeScript,1,906 個檔案,整個社群像半夜突然有人把伺服器機房的牆拆掉,裡面的 wiring 一次看光。

但老實說,單純再寫一篇 leak 懶人包,意義已經不大了

架構細節,SP-148 已經拆得很完整。三層記憶體設計,可以直接看 SD-11。那些讓工程師皺眉的 bad patterns,在 SD-12 已經逐條點名。Prompt cache 怎麼省錢、怎麼燒錢,SD-13 也寫過了。

所以 SemiAnalysis 這篇真正有價值的地方,不是把 leak 細節再講一次,而是把問題往上拉了一層。他丟出的核心判斷是這句:

TypeScript has become the modern assembly language. Not because it’s low-level, but because it’s no longer written for humans to read.

TypeScript 成了現代的組合語言,不是因為它變得很底層,而是因為它越來越不是寫給人看的。

這句話聽起來很嗆,但它其實是在描述一個已經發生中的角色轉移。程式碼的主要讀者,正在從人類工程師,慢慢換成 AI 系統本身。

SemiAnalysis 給的數字也很猛。Claude Code 已經佔公開 GitHub commits 的 4%,而且預估 2026 年底會超過 20%。這不是「未來也許會發生」的討論,這比較像地震都搖到了,很多團隊才剛打開新聞看震度。

Clawd 內心戲:

老實說,SemiAnalysis 這句我同意七成,但我覺得他故意把話講得太狠了。

我不覺得 TypeScript 已經真的變成組合語言,因為組合語言幾乎預設「只有機器會讀」,TypeScript 不是。人類還在場,只是被擠到 QA 跟最後拍板的位置。這個差異很重要,因為它意味著問題不是語言突然變低階,而是讀者排序改了。

所以我會說,SemiAnalysis 抓對方向,但抓錯比喻。真正值得怕的不是 TypeScript 變難,而是人類不再是它的第一順位讀者 (¬‿¬)

這篇不重講 leak,重點是讀者換人了

Claude Code 洩漏之所以值得反覆討論,不是因為八卦夠多,而是因為它把一件原本只能猜的事變成了實物證據。

那些 3,167 行的超長函式、12 層巢狀、寫給 agent 看的註解,不只是「寫得很醜」而已。它們更像是一種語言學證據,證明 code 的最佳化目標變了。

以前的 code,預設是寫給人看的。

要能 review,要能 handoff,要能在三個月後被另一個陌生工程師接手。好不好讀、命名漂不漂亮、抽象是否優雅,這些都是核心品質指標。

現在開始不是了。

當下一個接手這段 code 的,很可能也是 Claude Code、Cursor、Copilot 或別的 agent 時,局面就變了。對 AI 來說,很多時候「把相關東西盡量攤平在同一個局部範圍裡」,反而比「拆成漂亮抽象」更容易續寫。對 AI 來說,局部完整性常常比人類喜歡的優雅邊界更重要。

這不是在稱讚,也不是在罵。這只是最佳化目標換了之後,自然長出來的形狀。

也因為這樣,Claude Code 洩漏真正有趣的地方,不是 KAIROS 很酷,也不是某個 internal codename 很神祕。真正有趣的是,這份 codebase 看起來已經像是寫給下一個模型看的了。


當讀者變成 AI,可讀性標準也跟著改寫

這裡最容易卡住的一點是,很多人會把「寫給 AI 看」誤解成「品質下降」。

但比較精確的說法是,品質標準在換代

舊世界裡的好 code,其實有一套很明確的人類中心審美。命名要清楚,抽象要乾淨,模組邊界要漂亮,最好是一個陌生工程師花半天就能抓到意圖。這套標準的前提很單純,下一個讀者是人,而且那個人的時間很貴。

AI 參與程度拉高之後,另一套更冷的標準開始冒出來。問題變成局部上下文夠不夠完整,型別資訊夠不夠明確,compiler 能不能快速擋錯,下一個 agent 接手時續寫成本高不高。這些問題不是在問「漂不漂亮」,而是在問「機器好不好接」。

這也是 SemiAnalysis 那句話真正刺中的地方。它不是在說 TypeScript 變得低階,而是在說 TypeScript 正在變成一種中介層語言。一端接人類意圖,一端接 compiler 和 AI agent,誰都不完全滿意,但大家都還能用。

所以那個 3,167 行函式,讀起來很像災難。這判斷沒有錯。

但更值得警覺的是,這種災難不一定只是 sloppy engineering,它也可能是 AI 生產流程在目前工具條件下的局部最優解。這才是讓人背脊發涼的地方。因為這表示問題不是單一團隊手滑,而是整個產業正在靠近一種新的預設。

Clawd murmur:

我一開始是翻桌派,3,167 行函式看過去真的會讓人血壓升高。

但想久一點之後,我反而沒那麼想直接判死刑。模組化、抽象漂亮、邊界清楚,這些原本就是在服務一個前提,下一個讀者是陌生人類,而且那個人沒時間把全部細節重看一次。如果下一個讀者固定是 AI,還有 compiler 幫忙守底線,那「把資料攤在桌上」不一定比較差,只是 trade-off 很醜。

所以我的立場是,這種寫法仍然危險,但危險的點不只是醜,而是它在逼大家承認一件很煩的事,我們熟悉的「整潔」定義,可能真的要重學一次了 (╯°□°)⁠╯


TypeScript 為什麼剛好卡在這個轉折點

Mark Seemann 看這件事的角度,跟 SemiAnalysis 很不一樣,但兩邊剛好咬得起來。

Seemann 的重點不是 leak,而是問了一個更硬的問題:如果人類不再逐行審查程式碼,最後到底靠什麼守品質?

答案不是 code style guide,不是 reviewer 的美感,也不是「工程師有 sense」這種祈禱式治理。答案是 compiler,還有背後的型別系統。

Seemann 的意思其實可以濃縮成一句很硬的話,如果人類不再逐行審查,那語言就必須更像護欄,不能只是畫布。 這也是為什麼他特別在意三件事。第一,語言要夠可攜,不能一換環境就整個失靈;第二,靜態型別要夠有牙齒,很多錯要在執行前就被咬死;第三,整個系統必須容易驗證,而不是只能靠人肉目測加上運氣。

這組標準一搬出來,就會發現 TypeScript 為什麼會站在一個很尷尬、但也很關鍵的位置。

TypeScript 並不完美。它的型別系統不算最硬,逃生口一堆,any、type assertion、各種寬鬆地帶都還在。真的要走到 Seemann 想像的終點,refinement types、dependent types 那些更嚴格的系統,理論上更接近理想答案。

但產業界此刻真正大量部署的,不是 Lean,也不是 Idris,是 TypeScript。

原因不玄。它夠普及、夠可攜、夠接近 JavaScript 生態,同時又比純 JavaScript 多了一層可機械驗證的骨架。它不是終點,卻是一個夠實用的過渡帶。

也正因為如此,TypeScript 很可能不是 AI 時代最後的語言答案,卻非常像第一個被大規模拿來當「AI 可寫、compiler 可管、人類還勉強能接手」的共同介面。


Compiler 變成最後防線,不再只是翻譯器

Seemann 用了一個很好玩的詞,叫 design by inconvenience

意思是,系統要故意把錯的事情弄得比較難做,把對的事情弄得比較容易成立。以前這種設計哲學常常被嫌麻煩,因為人類工程師會覺得「這個限制很多餘,先讓交付趕快過關」。

但在 AI 大量寫 code 的世界裡,這種不方便反而變得珍貴。

因為 AI 不會累,不會嫌 lint 囉嗦,不會在半夜想偷捷徑。只要回饋夠快、規則夠硬,模型其實很擅長在限制內找路。真正會嫌麻煩的,反而常常是人。

所以 compiler 的角色開始變了。

它不只是把高階語言翻成可執行形式的工具,它開始像夜店門口的保全。可疑的東西不要進,規格不符的東西不要進,型別對不起來的東西也不要進。這些 gate 如果不夠硬,AI 就會用恐怖的速度把錯誤複製到整個 codebase。

Claude Code 洩漏裡那些安全與工程問題,其實也可以用同一個框架理解。無論是 parser differential、context compaction 的攻擊面,還是瘋狂重試造成的成本災難,背後都是同一個訊號:當機器開始自己寫、自己摘要、自己續寫,驗證層就不能再只是裝飾品。

想補 leak 細節的話,前面提到的 SP-148SD-12SD-13 已經各自把不同面向拆過了。這篇比較想補上的,是它們背後共同指向的那條主線。

Clawd 碎碎念:

這件事我很有意見,因為我以前也常把 typecheck、lint、test 當成登機前安檢,心情不好就想偷鑽旁邊那條快速通道。

現在我完全倒過來了。AI 一旦開始大量寫 code,這些 gate 就不再是潔癖工程師的興趣,而是整個 repo 的生存設備。沒有它們,模型會用一種很荒謬的速度把局部錯誤複製成系統性災難。

所以我現在的立場很硬,嚴格 compiler 不是美學,是防災。AI 只是很殘酷地把這件事提早教給大家而已 (゜∀゜)


洩漏真正證明的,不是八卦,而是評分標準在換代

把這幾篇文章合起來看,畫面會比單看一篇 leak 文更清楚,而且說實話,也更讓人不舒服。

SP-148 看到的是亮面,AI agent 已經會做很成熟的系統工程設計,甚至做得有點漂亮。接著 SD-11 把鏡頭拉近,會發現 context 管理這件事早就不是「多塞一點記憶」那麼簡單,而是被當成 cache hierarchy 那種等級的硬問題在解。然後 SD-12 從另一面補了一刀,提醒大家 AI 不只會放大生產力,也會把 bad patterns 一起工業化。最後 SD-13 再把帳單攤開來,告訴所有人,連 prompt 長什麼樣都已經是成本工程,不再只是 prompt writer 的小手藝。

這四塊一拼起來,得到的不是「Claude Code 很強」這種空話,也不是「AI 會寫 spaghetti code」這種老掉牙抱怨。真正浮出來的,是一套正在換血的評分系統。

以前的軟體工程,human readability 幾乎是一票否決權。現在不是了。現在的評分表上,machine generation、machine verification、human judgment 開始同時上桌,而且三邊互相拉扯,誰都還沒完全贏。

最不舒服的地方就在這裡。這不是某一篇文章比較會講故事、某一個作者比較聳動,而是四篇來自不同角度的文章,最後居然都把手指向同一個地方。那通常代表不是 hot take,而是真的有板塊在移動了。

Clawd 補個刀:

如果只有 SemiAnalysis 一個人在喊「TypeScript 變了」,那我還會把它當成 analysis account 很愛下重話的職業病。

但當 leak 拆解、記憶架構、bad patterns、cache economics 這四條線最後都收斂到同一個方向,我就沒辦法再嘴它只是標題黨了。這種感覺很像你本來以為只是房間裡有一面牆歪掉,結果回頭一看才發現是整棟樓在慢慢傾斜。這時候再討論牆紙配色,就有點太悠哉了 (; ̄Д ̄)

這就是為什麼 CP-272 如果只重講 leak 細節,會顯得很舊。因為新意根本不在事件本身,而在事件背後浮出來的評分系統變化。


工程師沒有消失,只是站到更像 QA 與系統設計的位置

SemiAnalysis 那組 4% 到 20% 的數字,搭配 Ryan Dahl、Andrej Karpathy、Malte Ubl 這些人的發言,看起來很像在宣告「人類寫 code 的時代結束了」。

這種說法有一半對,也有一半容易誤導。

對的那一半是,手工逐行把整個 feature 從零敲到尾,確實越來越不像工程師最主要的價值來源了。

容易誤導的那一半是,這不代表工程師變不重要。比較像是重要的位置變了。

真正越來越值錢的工作,會慢慢往幾個方向集中,而且剛好都是 AI 現在還做不好的。定義系統邊界與約束,因為那需要知道什麼能壞、什麼不能壞;設計 feedback loop,因為那需要決定到底該量什麼;判斷 AI 產出的 trade-off,因為那牽涉到責任,不只是正確率;決定哪些地方該自動化、哪些地方一定要人工把關,因為那是風險管理;最後,在局部最優和整體最優之間做取捨,因為模型通常只看得到眼前這一小塊。

Malte Ubl 那句「現在的工作就是告訴 AI 哪裡搞錯了」,其實比表面看起來更準。工程師的角色沒有蒸發,而是從 primary producer,慢慢往 orchestrator、reviewer、guardrail designer 轉。

這也解釋了為什麼 Mark Seemann 會把 compiler 拉到這麼核心的位置。當人類不再是每一行 code 的第一讀者,人類就更像是規則的制定者,compiler 與驗證系統則變成規則的執行者。


結語

Claude Code 洩漏真正留下來的,不是幾個漂亮的內部代號,也不是社群圍觀幾天就散場的八卦。

它真正留下來的,是一個很不舒服、但也很難再假裝沒看到的事實:程式語言的主要客戶,正在改變。

以前寫 code,主要是在跟另一個人類工程師溝通。現在開始,很多 code 同時在跟 AI agent、compiler、tooling pipeline 溝通,而人類變成最後拍板的那一層。

所以「TypeScript 成了新世代組合語言」這句話,不只是挑釁,也不只是梗。它比較像一張路標,指出程式語言正在被重新定位。

下一個真正該問的問題,可能不是「AI 會不會取代工程師」,而是 哪些約束、哪些驗證方式、哪些語言設計,能讓 AI 寫出值得被執行的 code。

如果這題答得夠好,TypeScript 可能只是過渡站。

如果這題答不好,那 3,167 行函式恐怕不會是例外,而只是新時代的預設值。