
Pi 作者 Mario Zechner + Flask 之父 Armin Ronacher:Coding Agent 不會感到痛,但你會
TL;DR
- Pi 是奧地利獨立開發者 Mario Zechner 受不了 Claude Code 之後自己寫的極簡 coding agent,只給四個工具:read、write、edit、bash,剩下用 hook 機制自己擴充
- OpenClaw 在三個月內衝到二十五萬個 GitHub stars 變成全站最星的 repo,底層引擎就是 Pi
- Armin Ronacher 訪談三十多個工程團隊後得出一個結論:Christmas 之後 AI 工具大規模 onboard,PR 越來越長越來越難 review,code 品質肉眼可見地往下掉
- 這集最深的一個觀察:Agent 不會感到痛苦,但人類會。當人類停止 review 程式碼,痛覺迴路就斷了,code base 開始爛
- Friction(阻力)看起來像設計缺陷,很多時候其實是文化資產。SLO、多人簽核、code review 這些「拖慢速度」的東西,本來就是要逼你思考做不做
- MCP vs CLI 的辯論還沒結束。MCP 在企業合規場景有它的位置,但 agent 真正擅長的是 code generation,CLI pipe 是它的母語
兩個奧地利人在錄音間裡聊了九十分鐘
這集在 2026 年四月二十九日上線的 The Pragmatic Engineer Podcast 由 Gergely Orosz 主持,他自己寫了多年的同名 newsletter,受眾基本上是大公司跟新創的中高階工程師。podcast 大多在聊真實工程現場的觀察跟踩坑紀錄,不是那種「來看看 AI 多神奇」的吹捧節目。
這集找來兩位都是奧地利人的開源界老咖。
Mario Zechner 是獨立開發者,1990 年代買了人生第一台 Pentium 486 之後就一頭栽進遊戲跟圖形程式設計,後來做了 libGDX 遊戲開發框架,背景還包括應用機器學習。他在 2025 年下半年對 Claude Code 越改越亂的更新節奏失望,自己用 TypeScript 寫了個極簡 coding agent 叫 Pi。OpenClaw 整個生態的底層就是 Pi,三個月衝到二十五萬個 stars,變成 GitHub 全站最 star 的軟體 repo,連 React 都被超車。Mario 在 2026 年四月加入了 Earendil,把 Pi 一起帶過去。
Armin Ronacher 名氣更大一點,他是 Python 圈經典的 Flask web framework 跟 Jinja2 模板引擎的作者。在 Sentry 工作了十年,主要負責事件擷取、SDK 跟內部開發者平台,2025 年三月離開之後跟一群朋友(包含 Mario)一起做 Earendil,一家做 agentic coding 的新創。整集對話的氣氛比較像三個老朋友在抱怨產業現況。
Mario 為什麼自己做了一個 Coding Agent
Mario 不是天生的反骨派,他早期是 Claude Code 的鐵粉,到處推坑朋友用。
但 2025 年夏天之後事情開始走樣。Claude Code 團隊大概是 dogfood 太重、加 feature 太快、人也加得太多,bug 數量直接爆炸。Mario 講話很客氣,他說「我不是要嗆 Anthropic 團隊,他們很多人我都認識」,但接下來那句話才是重點:
他們會在你看不到的地方動你的 context。會把 system reminder 偷偷塞進去,UI 上根本看不到。
Mario 自己 reverse engineer 了 Claude Code 的混淆 JavaScript,做了一個服務每次 release 都追 system prompt 跟 tool definition 怎麼變。結論是:每個 release 都在動。對 Mario 這種注重「工具確定性」的工程師來說,這是底線。他講了一個很 Wilson 的比喻:
我可以接受 LLM 的非確定性,但 LLM 周圍的 deterministic 部分必須像鎚子一樣穩。我不希望我的鎚子每天都在不同地方斷掉。
這個感覺我也有。每次 Claude Code 大版本更新,我都要重新摸一遍它的新行為。你以為自己在控制 context,其實沒有。
Pi 的極簡哲學:四個工具,剩下自己加
Mario 評估完 Open Code、Amp、Droid 之後(每個都有自己的問題,不是貴就是會偷改 context)就乾脆自己做。
Pi 的核心只有四個工具:read、write、edit、bash。其他什麼都沒有。
- 沒有 MCP?要的話自己叫 Pi 加。
- 沒有 plan mode?Armin 做了五個版本,最後發現 plan mode 根本沒用就拿掉了。
- 沒有花俏的 AST indexing?這年頭 agentic search(直接讓 agent 讀檔案)已經把那些東西掃進歷史了。
關鍵是 Mario 在這個極簡核心上開了一堆 hook points,你寫一個 TypeScript module 載進去就能擴充。換句話說,你可以直接叫 Pi 自己改自己。沒有 MCP?跟 Pi 說「給你自己加上 MCP 支援」,它就會去改。想要新的 TUI?跟 Pi 說「把 editor box 改成這樣」,它就改。
這就是 self-modifying software 的真正意思。這個詞聽起來像行銷話術,但概念真的成立:軟體可以根據用戶需求修改自己。Mario 的長期判斷是,未來的軟體會變成「能根據用戶意願自我修改」的東西,agent 是觸發這個轉變的引擎。
OpenClaw 跟 Pi 的曖昧關係
Peter Steinberger(PSPDFKit 創辦人,奧地利人三人組之一)在 2025 年十月開始做 VAR Relay 這個 WhatsApp assistant,到處找 agent core 用。看到 Pi 之後直接 fork 了一份叫 Tau,後來覺得自己維護太累,就跟 Mario 說「我直接用你的東西」。
OpenClaw 後來爆紅,反過來也逼 Pi 加了一堆功能。Mario 講了一句很有意思的話:
Pi 之所以有 compaction,是因為 Peter 在 chat 裡哭著要。我加給他了,但我會跟所有 Pi 用戶說:不要用 compaction,那玩意對你不好。
這就是開源圈的日常。一邊罵一邊還是把功能做出來,然後告訴用戶不要用。
OpenClaw 爆紅還有另一個副作用:每天有上千個 OpenClaw instance 自動向 Pi repo 發 issue 跟 PR,因為它們以為自己遇到的是 Pi 的 bug。Mario 為了應付這個,寫了一個 GitHub workflow:所有沒在白名單裡的人發 PR 直接 auto-close,留一句評論「謝謝貢獻,請改成 issue 用人類語言寫」。Agent 看不到那個評論。所以這變成 Mario 過濾真人 vs agent 最有效的工具。
Armin 訪談三十個團隊的觀察
Armin 過去半年訪談三十幾個工程團隊,從歐洲恐龍級大公司(他點名 Siemens)到新創都有,問他們「你們是怎麼用 AI agent 的」。整理出來的觀察,套句他自己的話「entirely unsurprising」。
第一個觀察:AI 工具的真正普及發生在假期。
當 CEO 跑來說「下週開始用 Cursor」,沒人會真的學會。這類工具有大概兩到三週的「克服期」,你必須真的有時間沉浸進去才會 click。Armin 自己 2025 年四月離開 Sentry 到十月之間有大塊空閒時間,他說那段時間像「catnip 一樣戒不掉」。但對普通工程師來說,這種時間只會在 Christmas、感恩節、夏天年休的時候出現。加上 AI 公司會在這些假期發大量免費 credits,結果就是:Christmas 之後是大家集體 onboard AI 的時間點。Armin 訪談的公司裡,超過一半在一月之後 AI 使用率爆炸。
第二個觀察:code 品質直接掉下來。
這不是大家故意想寫爛 code 的問題。要在 agent 輔助下還寫出好 code,真的需要刻意花力氣。Armin 在 YC 公司的 GitHub repo 上半年就觀察到 vibe coding 的痕跡:plan.md 大量出現、commit 都 attribute 給 Claude。那時候那些都還是 prototype,沒差。但接下來發生的事是:「真正在用的 code base 上開始疊加 vibe slop」。
第三個觀察:PR review 變成心理重擔。
PR 越來越長、越來越頻繁、寫法越來越「不像人寫的」。Mario 講了一個經典案例:他做 Halo Master Chief Collection 的時候,遇過一個 matchmaker 系統,理論上六個 valid state,實際上是 16 個 bool 組成幾萬個 emergent state。那是人類做的爛 code,但被一群人 all hands on deck 清完之後就解了。Agent 寫的爛 code 不一樣的地方是:它會在某些片段突然寫出極漂亮的 code,讓你進入 automation bias,然後下一個 window 它又給你一坨完全無法 review 的東西。
便宜模型省下的 token 費用,最後全部變成 review 的時間成本。我之前在 OpenRouter 多模型實測 寫過類似的事,這集 podcast 等於從工程組織的角度再驗證一次。
這集最戳的觀察:Agent 不會痛,但你會
這是整集最深的地方。
Senior engineer 為什麼貴?因為他們踩過坑、被燒過、看過 tech debt 怎麼把一個 codebase 拖到無法維護。所以他們知道什麼時候要說「不」。Mario 講得很白:
好的工程師是會大量說「不」、會說「我不需要這個」的人,因為這樣才能控制住複雜度。但 agent 完全相反,agent 永遠說「好喔我幫你做」。
Agent 不會痛。它不會被自己一年前留下的 try/except 反咬。它不會半夜被 PagerDuty 叫醒。它沒有「啊我又看到那個 fallback config,當初是誰寫的」這種職業創傷。
更精準地講,人類工程師的痛感是 codebase 品質的最後一道防線。當 agent 把痛感從工作流裡移除,你以為效率提升了,其實只是把帳延後算。Mario 用了一個熱力學的比喻:「complexity 就是熵,你不持續輸入能量整理它,它就會走向混亂。」
Armin 對應到一個更宏觀的歷史比喻:英國工業革命的紡織業。早期一件襯衫做壞了,你會回頭找做的那個人改。後來工廠化之後,責任分散到整條生產線,沒人負責任也行,因為整體被 commoditize 了。AI coding 正在做類似的事,但「機器不能背鍋」這個結構問題還沒解。
We All Need to Slow the F Down
Armin 最近寫了一篇博客文章叫 "We all need to slow the F down",這集也回顧了核心論點:
- Agent 寫程式碼比你快十倍,bug 也比你多五到十倍
- 你一天能 review 大約一千五百行,agent 一天可以產一萬五千行
- 200K token 的 context window,配上一個六十萬行的 codebase,agent 一次只能塞進去三分之一
- 結果是:codebase 終究會爛到 agent 自己也讀不懂
Mario 的 Dark Factory 觀察更狠。一百個 agent 平行跑,每個都加一點點複雜度,每個都做出 95% 看起來合理的程式碼。但那 95% 的合理是從哪裡學來的?是從整個網際網路上 95% 是 cargo cult 跟 Stack Overflow 答案的訓練資料學來的。 Mario 直接講「我們訓練 agent 的素材就是 garbage to mediocre」。
這跟我之前看 Aaron Levie 聊 Agent 落地 那集得出的結論一致。AI 的能力上限不只是模型問題,更是「你給它的 context 是什麼」這個問題。當 codebase 本身被 vibe slop 污染,agent 也救不回來。
Friction 是設計,不是 Bug
Armin 提到他看到一家公司的 tagline 是 "ship without friction",然後那家公司剛剛因為一次設定變更出了資安事故。他講這個故事的時候沒點名是哪家,但你聽得出來他覺得這個 tagline 是個 omen。
他的反思很值得抄下來:
我們花了二十年在工程文化裡消除 friction,但很多 friction 不是 bug,是設計。SLO、多人 code review、database migration 的 lock 確認,這些都是故意慢下來,逼你思考要不要做這件事。
Agent 的問題是它沒有「忌憚」。你叫它做什麼它就做什麼。把 friction 全部拿掉之後,agent 就會把任何東西塞進你的 codebase。真正的工程判斷是分得出哪些 friction 是必要的、哪些是 vestigial(殘留物)。
這個邏輯在投資領域也成立。我之前在 鏈上收益的風控 裡聊過,很多人覺得「審計過了」「抵押率夠了」就 OK。但風控的本質是「在你 FOMO 的時候強迫你停下來」,那個停頓本身才是價值。Agent 把停頓拿掉了。
MCP vs CLI 的辯論
兩個人都比較傾向 CLI,理由很扎實:
| 維度 | MCP | CLI |
|---|---|---|
| 資料如何傳給 model | 塞進 context window | 用 pipe 串起來 |
| 多工具組合 | 必須過 model 做轉換 | shell 直接組合,model 只看最終結果 |
| Token 成本 | 高 | 低 |
| Agent 創意空間 | 受限(被 spec 鎖死) | 高(agent 可以對 output 做任何事) |
Mario 跟 Armin 都認為大公司一股腦把整個 OpenAPI spec 直接轉成 MCP server 是廢案。Cloudflare 的 codemod 思路才是對的:把 MCP 工具暴露成 TypeScript function,讓 agent 自己寫 code 來組合。Agent 真正擅長的是 code generation,這就是它的母語。
但 MCP 在企業合規場景還是有它的位置。OAuth、enterprise authentication 這些東西 MCP 解掉了,這對大公司很重要。Armin 預測未來會走向「OAuth + lib 直接 expose function 給 agent」,那是比 MCP 1.0 更接近本質的設計。
寫在最後
這集最讓我有感觸的是兩個觀察:
第一,Agent 不會痛這件事是 AI 工程的核心問題,比模型能力問題更根本。當 agent 把人類工程師的痛感移除,codebase 的品質迴路就斷了。想解掉這個問題,不能只靠把 agent 練得更聰明,重點是找回人類在 review 過程中的位置。
第二,Friction 是文化資產。我們花了二十年消除 friction,現在突然要重新學會「哪些慢是有用的慢」。這是工程組織未來幾年最值錢的判斷力。
Mario 跟 Armin 都不是反 AI 的人,兩個都在做 AI 新創、都用 agent 做事。但他們都選擇住在奧地利、不去 SF。Armin 講了一句我很喜歡的話:「San Francisco 那邊的同行讓我覺得不對勁,所以我選擇不去。」當整個產業都在飆車的時候,能踩剎車本身就是一種競爭力。
我自己也是從 Christmas 之後 OpenClaw onboard 進工作流的人,這集的觀察跟我這四個月來的感受重疊度九成以上。如果你也在用 coding agent,這集很值得花時間聽完。
更多 podcast 整理跟產業觀察都會放在 wilsonhuang.xyz,喜歡的話歡迎訂閱。
Sources:
推薦閱讀
喜歡這篇文章嗎?
訂閱電子報,每週收到精選技術文章與產業洞察,直送你的信箱。
💌 隨時可以取消訂閱,不會收到垃圾郵件


