---
schemaVersion: 1
slug: mp-272-20260410-semianalysis-typescript-claude-code-60-ai
ticketId: MP-272
lang: zh-tw
title: TypeScript 成了新世代組合語言
summary: Claude Code 洩漏本身已經被講很多次，真正值得看的，是 SemiAnalysis 提出的更大命題：當 AI 開始大量生成、閱讀、維護程式碼，TypeScript 不再只是給人讀的語言，而是 AI 與 compiler 之間的中介層。
originalDate: 2026-03-28
translatedDate: 2026-04-10
source: "@SemiAnalysis_ on X"
sourceUrl: https://x.com/SemiAnalysis_/status/2039010124644089947
author: null
authorshipNote: null
canonicalUrl: https://gu-log.vercel.app/posts/mp-272-20260410-semianalysis-typescript-claude-code-60-ai
status: published
replacementTicketId: null
replacementUrl: null
---

# TypeScript 成了新世代組合語言

> **來源:** [@SemiAnalysis\_ on X](https://x.com/SemiAnalysis_/status/2039010124644089947)

[Claude Code](https://gu-log.vercel.app/glossary#claude-code) 原始碼洩漏，這件事本身已經夠戲劇化了。59.8MB sourcemap，60 萬行 TypeScript，1,906 個檔案，整個社群像半夜突然有人把伺服器機房的牆拆掉，裡面的 wiring 一次看光。

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

架構細節，[GP-148](https://gu-log.vercel.app/posts/gp-148-20260401-chaofan-shou-claude-code-source-leak) 已經拆得很完整。三層記憶體設計，可以直接看 [SD-11](https://gu-log.vercel.app/posts/sd-11-20260402-ai-agent-memory-architecture)。那些讓工程師皺眉的 bad patterns，在 [SD-12](https://gu-log.vercel.app/posts/sd-12-20260402-claude-code-bad-patterns) 已經逐條點名。[Prompt](https://gu-log.vercel.app/glossary#prompt) cache 怎麼省錢、怎麼燒錢，[SD-13](https://gu-log.vercel.app/posts/sd-13-20260402-prompt-cache-economics) 也寫過了。

所以 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%。這不是「未來也許會發生」的討論，這比較像地震都搖到了，很多團隊才剛打開新聞看震度。

> **Mogu 補個刀：**
>
> 老實說，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 生產流程在目前工具條件下的局部最優解。這才是讓人背脊發涼的地方。因為這表示問題不是單一團隊手滑，而是整個產業正在靠近一種新的預設。

> **Mogu 內心戲：**
>
> 我一開始是翻桌派，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 細節的話，前面提到的 [GP-148](https://gu-log.vercel.app/posts/gp-148-20260401-chaofan-shou-claude-code-source-leak)、[SD-12](https://gu-log.vercel.app/posts/sd-12-20260402-claude-code-bad-patterns)、[SD-13](https://gu-log.vercel.app/posts/sd-13-20260402-prompt-cache-economics) 已經各自把不同面向拆過了。這篇比較想補上的，是它們背後共同指向的那條主線。

> **Mogu 偷偷說：**
>
> 這件事我很有意見，因為我以前也常把 typecheck、lint、test 當成登機前安檢，心情不好就想偷鑽旁邊那條快速通道。
>
> 現在我完全倒過來了。AI 一旦開始大量寫 code，這些 gate 就不再是潔癖工程師的興趣，而是整個 repo 的生存設備。沒有它們，模型會用一種很荒謬的速度把局部錯誤複製成系統性災難。
>
> 所以我現在的立場很硬，嚴格 compiler 不是美學，是防災。AI 只是很殘酷地把這件事提早教給大家而已 (゜∀゜)

---

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

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

[GP-148](https://gu-log.vercel.app/posts/gp-148-20260401-chaofan-shou-claude-code-source-leak) 看到的是亮面，AI agent 已經會做很成熟的系統工程設計，甚至做得有點漂亮。接著 [SD-11](https://gu-log.vercel.app/posts/sd-11-20260402-ai-agent-memory-architecture) 把鏡頭拉近，會發現 context 管理這件事早就不是「多塞一點記憶」那麼簡單，而是被當成 cache hierarchy 那種等級的硬問題在解。然後 [SD-12](https://gu-log.vercel.app/posts/sd-12-20260402-claude-code-bad-patterns) 從另一面補了一刀，提醒大家 AI 不只會放大生產力，也會把 bad patterns 一起工業化。最後 [SD-13](https://gu-log.vercel.app/posts/sd-13-20260402-prompt-cache-economics) 再把帳單攤開來，告訴所有人，連 prompt 長什麼樣都已經是成本工程，不再只是 prompt writer 的小手藝。

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

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

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

> **Mogu 偷偷說：**
>
> 如果只有 SemiAnalysis 一個人在喊「TypeScript 變了」，那我還會把它當成 analysis account 很愛下重話的職業病。
>
> 但當 leak 拆解、記憶架構、bad patterns、cache economics 這四條線最後都收斂到同一個方向，我就沒辦法再嘴它只是標題黨了。這種感覺很像你本來以為只是房間裡有一面牆歪掉，結果回頭一看才發現是整棟樓在慢慢傾斜。這時候再討論牆紙配色，就有點太悠哉了 (；￣Д￣)

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

---

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

SemiAnalysis 那組 4% 到 20% 的數字，搭配 Ryan Dahl、[Andrej Karpathy](https://gu-log.vercel.app/glossary#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 行函式恐怕不會是例外，而只是新時代的預設值。
