David Heinemeier Hansson(DHH) Rails World 2026 開場演講全文:全面告別手寫程式碼,擁抱 Agent 時代的極致樂觀主義

朗讀全文
第 0 / 0 句 0%
實際可用人聲依裝置提供。

一、 AI 狂熱與時代轉折點

我喜歡那盞霓虹燈招牌。

首先,通常我會說「歡迎來到奧斯汀」。但對我來說,更應該說是「歡迎我自己回到奧斯汀」。我大約一個月前才剛來過這裡,在一個播客上滔滔不絕聊了五個小時。回到這裡真的太棒了。

但更讓我興奮的,是在此時此刻活著,並與 Ruby 和 Rails 的美好社群、以及所有對 Agent(智慧代理)感到興奮的人一起分享這個當下。如果你現在還沒感到興奮,希望在這場關於未來的狂熱演講結束時,你也能體會到。

我知道,當大家看到有人興奮地手舞足蹈、對當下的時代如此狂熱時,第一反應可能是想給個醫學診斷——「AI 精神病(AI psychosis)」。

但我更偏好另一個詞:我有「AI 狂熱(AI delirium)」、「AI 極樂(AI euphoria)」。因為這簡直是我在與電腦打交道、使用電腦、與電腦互動的歲月以來,見過我們讓電腦做出的最令人興奮的事情。

但我認為我們必須面對一個事實:一方面這極其令人興奮,但另一方面也讓人感到有些不安,因為我們根本不知道它的最終狀態究竟會是什麼樣子。每當我們試圖做出預測時,大約 20 分鐘後它就過時了。這是一種很奇怪的心理狀態,即使你對未來感到興奮、對現在感到興奮,我也完全理解這種局勢所帶來的不安感。

所以,為了稍微緩解這種焦慮,讓我們把時鐘往回撥一點。

二、 歷史的鏡子:從肖像畫家到柯達相機的技術民主化

18 世紀的頂尖技術:昂貴且排他的肖像畫

這是 18 世紀一項「頂尖」的技術成果。如果你在 18 世紀想擁有一張自己的肖像,你必須在一位繪畫大師面前連續坐上好幾個小時、甚至幾十個小時。然後畫家會離開,在最理想的情況下,花上數個月的時間來完成你的肖像。

那確實很美,而且至今仍是一份留給我們所有人的驚人文化遺產。直到今天,我們都還能欣賞約書亞·雷諾茲(Joshua Reynolds)在 1781 年繪製的《瓦爾德格雷夫姐妹》(Ladies Waldegrave)。非常精彩,但同時也極度排他、門檻極高。在 18 世紀,沒有多少人負擔得起委託創作這樣一幅自己的肖像,也沒有能力資助一位藝術家花好幾個月的時間去完成它。

更糟的是,以這幅畫為例,雷諾茲之前其實已經花了幾個月畫了另一幅,結果被委託人拒收了,原因竟然是畫裡露出了一截腳踝!在當時這被認為是不檢點的醜聞。所以他只好回去全部重畫。我不知道現場有沒有人和客戶打過交道,如果有,你們大概會對可憐的雷諾茲先生和被退件的工作驗收深表同情。

當時能負擔得起這種服務的人,要麼是上流資產階級,要麼乾脆就是王室貴族。這是 20 年後由哥雅(Goya)繪製的西班牙王室肖像。這就是當時技術進步的速度:畫家們為了完美捕捉人物肖像的不同技巧,鑽研了幾百年,沿途只取得非常邊際、微小的進展。

在 1801 年到我接下來要展示的這幅畫之間,過去了 80 年。在那段期間,相機大約在 1840 年左右登場。但這裡有一幅丹麥畫家勞里茨·圖森(Laurits Tuxen)在 1886 年繪製的丹麥王室肖像。他可不只是花了三個月,他整整花了三年才畫完。這幅畫至今仍掛在哥本哈根的皇家宮殿裡,大家現在去看還能看到它。這是一項驚人的成就、驚人的藝術造詣,同時也非常實用——其目的就是為了記錄當時的王室成員。

柯達布朗尼相機與藝術家的第一次大轉型

但這已經接近那種藝術模式的尾聲了。因為在 1840 年到 1900 年間,捕捉肖像的技術變得越來越好。到了 1900 年,伊士曼柯達公司推出了「布朗尼(Brownie)」相機——這是第一款大規模量產、讓大眾普遍負擔得起的攝影設備,因為成本大幅下降。我記得當時用這台相機拍一張照片只要一美元左右。

於是,忽然之間,許許多多的人都能擁有自己的照片了。所有這些偉大的藝術家都意識到:製作這些宏大繪畫的手藝,從此將徹底改變。這份工作將變得截然不同,因為新技術帶來了競爭。

於是他們轉型了。勞里茨·圖森和同時代的許多其他畫家,在布朗尼相機問世後不久就意識到:盡可能完美地描繪現實,在經濟上已經不再是一項可行的技能了。他們需要另一種技能、另一個領域。許多人因此轉向了不同的藝術形式——例如畢卡索追求立體派,丹麥的斯卡恩畫派(Skagen Painters)則追求某種印象派風格,眼前這幅畫就是一個例子。

於是我們迎來了一場創造力的大爆發,這完全是由技術變革帶來的:人們必須尋找新的方式來表達自己的藝術,因為舊的方式已經行不通了。

有趣的是,這幅畫正中央穿粉紅色洋裝的女士伊馮娜·圖森(Yvonne Tuxen),其實是我的曾祖母;因為勞里茨·圖森就是我的曾曾祖父。而在這裡,這張照片是他 1921 年在去世前不久拍攝的。他欣然接受了用這種新技術來拍攝自己的肖像,即便正是這項技術讓他的舊專業變成了完全不同的行業。

技術演進的停滯與無摩擦爆發

在他去世 52 年後,也就是 1979 年,我出生了。有趣的是,這裡拍的照片,其實跟勞里茨在 1920 年代拍的那張非常相似。技術並沒有進步太多。技術的發展往往就是這樣:斷斷續續、停停走走。巨大的變革是布朗尼相機帶來的攝影大眾化,接著將近 80 年的時間裡,似乎沒有發生太大的顛覆。我們確實在 60 年代擁有了彩色攝影,但顯然還沒有普及到家人覺得值得為我拍一張的地步。

不過幾年後我們補償了這一點,這是我四歲時和弟弟坐在一起的彩色照片。幾年後,這是我的另一張照片。這三張照片大約就佔了我整個童年照片庫存的 10%。因為儘管這項技術已經普及到連我們這樣的普通家庭也能負擔得起拍照,但它依然沒有達到真正的隨心所欲。沒錯,從 1900 年代到 1980 年代,拍照的數量確實呈現成長曲線,但依然相對溫和,因為技術進步是停滯與突進交替的。

拍這三張照片的相機,跟我現在畫面上這台相機非常相似——這是 1925 年的徠卡 I 型(Leica I)。事實上,那些照片可能真的是用另一台徠卡拍的(當時大概出到第七代了),但核心機制沒有太大不同,因為技術很相似。從 1900 年代的大革命到 80 年代之間,沒有發生太大的質變。

然後,我們又過了二十年,突然之間,一切再次天翻地覆。攝影不再只是每個人都「負擔得起」,而是變成了「毫無摩擦成本」。拍下的照片數量呈拋物線式暴增,因為每個人都能隨手為自己的孩子拍下幾萬張照片,很多人也確實這麼做了。它便宜到了根本無需計量成本的地步。

這些是我妻子晚上散步時隨手拍的照片。即使在 80 年代,要做這樣的事也需要花錢買底片、拿去沖洗等等。當時有人會這麼做,但不多,因為門檻和阻力太高了。而在今天(2026 年),全世界每年拍攝的照片高達兩兆張。這完全是不同維度的概念。雖然背後是相同的底層技術,但我們顯然迎來了一個巨大的反轉拐點。

這與我們的軟體產業和專業之間,存在著高度的平行對照關係。

三、 Agent 時代的布朗尼時刻與幻滅低谷

Opus 4.5 到開源模型的狂飆

在 2025 年 11 月 24 日,我們迎來了屬於我們這個時代的柯達布朗尼相機——我們迎來了 Opus 4.5。

AI 技術被裝進了一個大家都能負擔得起的架構中,許多人第一次體驗到了與一種全新形態的智慧並肩合作打造軟體是什麼感覺。對我來說,這就是轉折點。所有的歷史劃分成兩半:11 月 24 日之前的一切,以及之後的一切。這一天將被未來的歷史教科書記錄為「Agent 時代」的轉折拐點。

正如當年的布朗尼相機一樣,當它首次亮相時,市場上湧現出各種不同的形式與架構來利用這項技術。沒過多久,我們就看到了以開源權重(Open-weight)形式展現的同等智慧。那真是徹徹底底的極樂感。發展速度快得令人不敢置信,這種原本如同外星科技般的智慧,短短幾個月後就以開源模型的方式出現在我們面前。我有一段時間一直以快速模式運行 Kimi K2.5,非常喜歡它——在每秒 200 個 token 的速度下體驗這種智慧,是一種令人難以置信的震撼體驗。

走過低谷:從 Fable 5、GPT-6 到 DeepSeek-v4.1

但接著,另一種情況發生了。從二月到五月這段期間,出現了所謂的「幻滅低谷期(Trough of Disillusionment)」。我們看似不斷看到新模型發布,但它們的表現卻有點差強人意,彷彿是在走回頭路。很多人開始抱怨:「這 Opus 4.6 到底是什麼東西?我搞不懂,把舊版還給我好嗎!」

很多人開始幸災樂禍地說:「哈哈,你們還以為這會一直呈現指數級增長和改進呢?看吧,其實進步沒有那麼大。」我記得當時某個模型發布——好像是 OpenAI 的新模型,在基準測試上沒有太大突破,結果股價或估值就下跌了,市場頓時一片哀嚎:「天哪,AI 浪潮結束了!」因為大家不知道接下來會發生什麼。

但這段幻滅的低谷期,並沒有像攝影技術那樣停滯一百年才大幅進步。它只持續到了五月——準確地說是六月。

因為在六月,我們迎來了 Fable 5 和 Mythos。任何當時有機會親身體驗過的人,心中對於「技術是否停滯、狂歡是否結束」的懷疑,瞬間被一掃而空。

我認為正是在那個時候,我的病狀真正確立了——我對這種源源不絕的智慧爆發陷入了狂熱與極樂。在這個模型出現之前,我的體驗是:「哦,我可以叫 Agent 幫我做點事,然後產出我想合併進專案的成果。」那是 Opus 帶來的啟示。但到了這個階段,突然變成了:我可以直接把「問題」或「想法」丟給模型,然後看著它們被解決、被擴展,而且我完全不需要對具體的實作細節進行任何微觀指導。這絕對令人嘆為觀止。

當然,事情並沒有就此止步。過去幾個月我們一直坐在這趟驚人的雲霄飛車上:九月份 GPT-6 Astra 發布,將我們從「Anthropic 可能會壟斷前沿智慧領域」的恐懼中拯救了出來;更棒的是,僅僅一週之後,我們迎來了 DeepSeek-v4.1 Flash,徹底打破了「前沿智慧將永遠只是少數美國大型科技公司專屬領域」的觀念。這令人無比興奮。

但是,這對我們程式設計師意味著什麼?對我們這個專業意味著什麼?我認為這就是為什麼回顧歷史如此有價值,因為只要我們肯審視歷史,它蘊含著所有對照當下的驚人教訓。

四、 10x 爭論的終結與 1000x 差距的誕生

在我身為專業開發者的整個生涯中,主導社群討論的其中一個話題,一直都是關於「10 倍速工程師(10x Programmer)」到底是真有其事還是純屬虛構的爭論。

這個概念最早源自 1968 年《ACM 通訊》上的一篇文章。當時他們針對一群程式設計師進行了各種不同任務的測試,並整理出一張表格,顯示在該測試期間,表現最差與表現最好的工程師之間存在著 5 倍到 30 倍的差距,平均差距約為 10 倍。在接下來的整整 45 年裡,我們都在爭論這到底是真是假。現在還有人在爭論這個嗎?我覺得沒有了,這場辯論現在基本上已經塵埃落定。

但有趣的是,我們幾乎是跳過了對「10 倍工程師」的共識總結,轉而開始思考:如果僅憑純粹的人類能力就有 10 倍差距,那麼現在有了這些工具,情況會變成什麼樣?

很顯然,我們無法確切知道利用這些工具到底能加速到什麼程度。但我敢說,現在如果主張「完全不使用這些工具的最差工程師」與「使用這些工具的頂尖工程師」之間存在著 100 倍 的差距,這在今天已經不是什麼爭議性的言論了。這句話或許聽起來不具爭議,但它對於理解我們當前所處的技術階段而言,絕對是顛覆性的。

我甚至想更進一步——這可能稍微大膽一點,但我認為依然屬實:沒有這些工具的最差工程師,對比運用這些工具的最頂尖工程師,其差距大概在一千倍左右。沒錯,1000 倍。

這對企業之間的競爭意味著什麼?對我們開啟一個新專案需要什麼資源意味著什麼?水晶球的畫面又變得模糊了起來,需要重新搖一搖。

我所確知的事實是:在過去 20 個月裡,我產出的程式碼量,相當於我過去 21 年所寫總量的一半。當然,「程式碼行數」是一個很奇怪、模糊且具彈性的衡量指標。一行 Ruby 程式碼的價值顯然遠高於任何其他語言的一行代碼,特別是比起 Rust、C++ 或任何缺乏 Ruby 所具備的高層抽象與舒適特性的底層語言。但即便如此,正在發生一場革命也是無可否認的事實。任何經歷過這場變革、並親眼見證自身生產力被推向極致的人,都會感到一陣眩暈。

(畫面上播放 DHH 2005 年在巴西演講的經典片段)

「我們建立了一個模板。看看所有我不需要做的事情!看看所有我不需要寫的設定檔!所有這些東西都被自動對應在一起——只要在這裡寫上 blog,它就直接對應到 blog 控制器;只要有 index,就直接對應到 index 模板……看看所有我不需要做的事情!」

還有什麼能比「看看所有我們不再需要做的事情」這句話更能概括當下的時代嗎?這就是我對此刻無比狂熱的根源。這就是「Rails 時刻」。

剛才播放的那個片段已經是 21 年前的事了。那是 2005 年我在巴西的一場演講,當時我對「所有我不需要親手寫的程式碼」感到如此興奮。你們現在能理解為什麼我現在會更加興奮了吧?你們知道在過去幾個月裡,我有多少程式碼「完全不需要寫」嗎?非常多!

儘管在過去大概五個月的時間裡我幾乎沒有親自寫過一行代碼,但我卻能搞定所有事情——每一個夢想、每一個痛點、每一個迴紋針級別的微小需求、每一個看似微不足道的功能,突然之間都觸手可及、突然之間都成為可能。這就是當下時刻的魔力所在。

五、 重大宣告:37signals 全面停筆不再手寫程式碼

但這意味著什麼呢?

大約在兩週前,37signals 做出了一個決定:這顯然意味著,我們不再用手親自寫程式碼了。

我們正在、並且已經全面「停筆(pencils down)」,放棄了將「手工編寫程式碼」作為日常業務中構建產品的手段。在 37signals,現在手工寫程式已經成了一種「異常狀態」。這就像在 Sentry 錯誤追蹤系統裡看到報錯一樣——這意味著某個地方出問題了。為什麼 Agent 無法產出我們想要的結果?

好吧,也許在短期內,我們偶爾還是得拿出舊鉛筆幫它們填補一下。但隨後我們就會去修復那台機器、修復工廠,讓一切重新運轉起來。這是對已經在發生的現實的確認。

如果我們現在對現場做個調查——我們來現場調查一下好了:在座的各位,目前每週仍會親手編寫大量程式碼的人,請舉手?

我的天啊。大概只有五個人。

如果我在兩個月前、三個月前放這張投影片並宣布同樣的主張,現場肯定有相當一部分人會覺得:「這傢伙腦袋哪根筋鬆了吧。」然而現在,這只是在認清早已成型的事實。

令人著迷的是,其實早在今年春天,我們在 37signals 為 Basecamp 5 進行收尾工作時就試過這麼做。當時我們讓一群設計師透過 Vibe Coding(直覺編程)把他們想要的最終功能實作進這個版本中,但結果喜憂參半。單獨來看,每個設計師產出的 Pull Request 似乎都挺合理;但把二、三十個 PR 合在一起看,架構簡直千瘡百孔,看起來就像一塊滿是破洞的瑞士起司。

所以當時我們想:「好吧,看來技術還沒準備好。我們還是回去人工 Code Review 每一行程式碼,只讓工程師來用它吧。」

這顯然是個錯誤的結論。不僅僅是因為只要再等個該死的五分鐘,Fable 模型就問世了,原本的設想可能就能完全按計劃運作;更因為現在大家都很清楚:在當前軟體開發的世界裡,唯一嚴肅的核心問題只有一個——那就是你該如何最大程度地榨取這場智慧爆發的價值?在價值排序的階梯上,其他所有問題都要屈居於這之下。

六、 軟體架構典範轉移:重回 Native 原生與 Rust 後端

HEY 放棄 Web 應用,走向 6 平台全 Native 原生

所以我們發布了 Basecamp 5。這是一個很棒的升級,它是經由 Agent 加速開發的,但仍然夾雜了大量人工手寫、手雕出來的程式碼——我們該怎麼稱呼五分鐘前才剛被淘汰的舊工作方式呢?我也不知道。

但現在,我們正在進行一個新專案:Hey Next、Hey New、Hey There……隨便吧,我不知道最後會叫什麼名字,總之它是我們電子郵件服務 HEY 的全新版本。而我們要做的第一件事,就是停止將它做成 Web 應用程式。

HEY 將不再是一個 Web 應用程式,因為 HEY 本來就從來不想成為一個 Web 應用。HEY 過去現在是個 Web 應用,是因為對小型團隊而言,打造 Web 應用是唯一能保證生產力的方式。

在舊時代——也就是五分鐘之前——一個小團隊想要用原生框架同時維護六個原生應用程式,簡直是痴人說夢,根本沒有人會這麼做。這不僅僅是大家選擇做 Web 應用的原因,也是為什麼會出現 React Native、為什麼會出現 Hotwire Native,為什麼會有這一切工具——都是為了在接受應用程式保真度(Fidelity)略有折損的前提下,讓我們維持更高的生產力。我們確實做出了出色的 Web 應用,HEY 是一個很棒的 Web 應用,但它依舊比不上原生應用。它當然比不上原生應用,延遲與流暢度根本不是一個等級的。

現在,我身後播放的畫面,是我們大約一週前才啟動的 六個原生應用程式 的展示。這就是我們目前的進度。這簡直瘋了。

在舊時代,如果你想為一項大型服務在非常高的保真度下同時維護六個原生應用,需要耗費巨量的時間,需要極其龐大的團隊。而現在,我們突然能夠打造出極高保真度的原生應用,因為我們連一行該死的程式碼都沒寫過!看看所有我們不需要做的事情!

但看看我們給出的大量 Prompts(提示詞)。我們給了大量的提示詞,而產出的結果絕對令人震撼。這項工作我們才剛剛開工,但我們所達到的狀態,已經讓我無比篤定地相信:這就是該類別應用的未來。現在有大量的 Web 應用,只不過是因為現實所迫、出於便利、工程師個人偏好、團隊規模或可用資源限制,才成為 Web 應用的。你知道嗎?它們不會在 Web 上待太久了,它們將轉變成原生應用,因為開發原生應用的成本幾乎已經降到了零。

這裡有一個例子:這是當我們要求生成一個 Windows 應用程式時,第一個 Prompt 所吐出來的結果。嗯,顯然還不能直接發布。而這是 20 分鐘後微調修正產出的版本。你們感受到了嗎?這太不可思議了。親眼看到這一切在你眼前發生,你怎麼可能不陷入精神狂熱?

我們絕非唯一意識到這一點的人,也絕非第一個。Shopify 最近剛剛推出了為 Shop App 全新重寫的原生應用,取代了先前的 React Native 版本。考慮到該應用的關鍵性,這整個專案只由一個大約六個人的超小團隊完成,耗時也非常短。變革正在到來,做好準備吧。

我痛恨 Rust,但如果永遠不用看代碼,我愛死它了

剛才說的是前端。我認為對於像 HEY、Shop App 這種本質上極度渴望成為原生應用的軟體類別來說,這就是即將發生的趨勢。我們將義無反顧地擁抱原生開發工具鏈,並且會意識到打造這些東西的成本結構已經徹底被改寫。

但後端呢?

我必須承認,這對我來說有點困難。讓我來告訴你們原因:Rust。

沒錯,Rust。我打從心底深惡痛絕 Rust。對我來說,被迫盯著 Rust 的程式碼看,簡直就像往眼睛裡潑硫酸一樣痛苦。你問我為什麼這麼討厭 Rust?在我看來,它是過去 40 年來發明出最醜陋的程式語言。證物 A:請看投影片。

當你強迫人類去寫這種東西時,這是一個極度、極度糟糕的程式語言。強迫有血有肉的人類把眼球暴露在這種代碼面前,完全是不人道的虐待。

但是,你知道嗎?如果我永遠不需要親眼看它呢?如果我所需要做的,只是享受應用程式運行速度提升 30 到 100 倍、編譯成極其小巧的二進位執行檔、啟動時間低於毫秒級的好處呢?

那我愛死 Rust 了!如果你永遠、永遠不必親自看它一眼,Rust 簡直太棒了!

Agent!Agent 非常喜歡 Rust。太好了!多麼完美的分工:我告訴你做什麼,你用 Rust 把它寫出來,我永遠不必看它一眼。我愛這種分工。

我也熱愛這種架構帶來的成果:我們把 HEY 的前端全部重寫成原生應用,因此後端不再需要處理渲染 HTML 之類的 Web 伺服器邏輯;接著我們把原本支撐 Web 應用的後端程式碼,轉化為它本質上該有的樣子——一個純粹用 Rust 編寫的郵件伺服器。

最終我們得到的後端:節省了 99% 的 CPU、節省了 95% 的記憶體。它之所以還需要 10 台主機,純粹只是為了分散式容災備援。事實上,根據我們粗略的估算,HEY 的尖峰流量甚至可能在一台 Raspberry Pi(樹莓派)上就能完全搞定。

這就是寫出幾乎直通底層硬體、同時兼具可移植性程式碼所帶來的極致效率——這就是 Rust。而讓另一種智慧為你代勞這一切,你只需要為產出的每個 Token 付費,這就是它帶來的巨大紅利。

至於這在我們「如何與這種智慧協同工作」方面意味著什麼?目前也還沒有定論。我們正在嘗試各種方法。我們正在嘗試的其中一件事,是在 Basecamp 內部透過我們的虛擬助理 Chef Marie 來指揮這些 Agent。

顯然,當你與 Agent 協同工作時,最好的模式其實是非同步的——不是守在聊天介面面前盯著它一個個吐出 Token,而是像對待同事一樣,把任務交給 Agent,讓它去執行,等它完成後你再回頭檢視。我們正在朝這個方向探索。

七、 Ruby、Rails 與「初學者心態」的真正優勢

所以我們也正在做這樣的嘗試,很多其他人也都在努力摸索這一點。而這正是當下這個時代的魔力與令人熱血沸騰之處:我們根本不知道一切最終應該是什麼樣子。首先,因為每隔五分鐘環境就在發生改變;其次,因為我們與這種等級的智慧協同工作的時間根本還不長。這一切是從去年 11 月 24 日才正式拉開序幕的,連一個該死的一年都還沒滿!而那種允許我們指派「最終結果」與「核心問題」而非一步步指派「瑣碎任務」的高階智慧,也才出現了短短幾個月。

所以,我們當然無法精確知道未來會演變成什麼樣子。但即便如此,我們依然有理由提出這個問題:這讓 Ruby 置於何地?讓 Rails 置於何地?讓我們所使用的這些工具置於何地?未來到底會長什麼樣子?

好吧,對於 HEY 來說,我們已經有了明確的答案:那就是前端採用原生應用程式,後端採用 Rust。但還有許許多多其他應用程式並不符合這種型態。Web 是一個極其不可思議的偉大平台,部分原因在於它從不要求任何人安裝任何東西,有無數的商業模式正是建立在這一前提之上的——對於那些更加隨性、短期、根本不願意在自己設備上下載安裝應用的使用者來說,Web 是無可替代的絕佳選擇。

而在這些場景下,Rails 仍然處於非常有利的競爭地位。我們在過去 25 年裡所鑽研的一切——「慣例優於設定(Convention over Configuration)」,直接轉化成了對 Token 利用效率的極致提升;我們長期專注於打造「一人全端框架(One-person framework)」,完美契合了 Agent 時代所呼喚的需求——讓單一開發者能夠走得比以往任何時候都更加深遠。

我們已經開始進行 Agent 基準評測(Agent Evals),或者說 Evil Martians 代表 Rails Foundation 正在進行這項工作。我們發現,我們很快就不得不更新評測標準,因為 Agent 迅速就刷爆了第一版的評測題目,完成率很快就達到了 95%。

現在我們制定了更為嚴苛的衡量標準。令人驚嘆的是,這些 Agent 向上爬升、進步的速度有多麼神速。這份 Agent 評測檢驗的是針對我們在現實中開源的參考應用程式,去實際實作功能卡片(Feature cards)的能力。太棒了,我們正全面朝這個方向靠攏。剛才展示的是舊基準,正如你所見它已經被刷滿了,所以我們提高了難度。未來會有非常多這樣的調整,我們會不斷拉高向 Agent 提出的要求標準,因為它們的能力正在持續變得更強。

事實上,我想提醒任何對電腦底層運作太過了解的人:千萬不要落入一個陷阱——不要對你試圖從這些系統中獲得的結果進行過度教條化、指令式的微觀限制。

事實上,稍微保持一點「初學者心態(Beginner’s mindset)」,甚至帶有一點「外行傻瓜式的切入角度」,往往效果更好,因為你會站在更高的維度去提問、去下 Prompt。這也是我喜歡在 Rust 中工作的其中一個原因:我對 Rust 根本一竅不通!

我甚至認為「對 Agent 吐到 Rust 黑盒子裡的程式碼到底是什麼鬼東西完全沒有頭緒」是一種特權與優勢!我只把這個 Rust 黑盒子當作純粹的黑箱從外部來驗收它——就像歷史上任何曾經委託一群工程師為自己辦事的企業主一樣。這不是什麼新鮮現象,唯一的改變只是現在由誰來承擔這個具體的實作責任罷了。

但像 Basecamp 這樣的應用程式,我們常常需要引入外部陌生協作者,他們可能只是需要臨時下載一個檔案,或者短暫協同作業一段時間——對於這種情境,Web 應用依然是不可戰勝的。你們在座的很多人肯定也在開發這種類型的應用。現在要徹底釐清界線該劃在哪裡——哪些應該做成原生、哪些應該保留在 Web——我們必須一起去探索。我現在也沒有所有的標準答案。

但我很清楚的是:當我審視自己過去一年的工作產出時,它確實看起來截然不同了。如果看我過去 21 年的生涯,我寫的程式碼裡有一半以上都是 Ruby。而今年呢?大約只有 3%。

部分原因固然是因為像 Rust 這類語言極其冗長,對人類眼睛極不友好,所以我根本不看它,我允許 Agent 吐出遠超出必要限度的代碼量——這種冗餘度要是在我的 Ruby 代碼裡我絕對一秒都容忍不了。所以這佔了一部分因素。但不可否認的是,這裡確實發生了翻天覆地的巨變。

在過去 21 年與 Ruby 為伴的日子裡,我平均每年大約會寫 30,000 行正式環境的 Ruby 代碼。這個代碼量已經足以打造出成功的商業產品、開源框架,以及我過去所做的一切。然而,就在上個月——也就是八月份,我一個月內就寫了 150,000 行 程式碼。這大概是我過去長期平均水平的 60 倍!

再說一次,其中很大一部分是我連看都不想看的糟糕 Rust 代碼,它確實更冗長,但這種數量級上的差距,正是我們必須密切關注、並認真思考其含義的地方。

八、 英語成為最好的程式語言,宣布從職業工程師退休

那麼,這到底意味著什麼呢?

其中一件令我驚訝、但細想後其實不該感到意外的事情是:世界上居然出現了一種我比 Ruby 還要更喜歡的程式語言。

我以前從沒想過會發生這種事,但它確實發生了。它叫做——英語。英語是比 Ruby 更好的程式語言。

我對 Ruby 的熱愛超過世界上任何傳統程式語言,但是用英語編寫程式是一種極致令人滿足的體驗。它是一種比 Ruby 更加富有表現力的語言。它可能稍微模糊一點,確定性可能稍微低一點,但儘管如此,它帶來的是純粹的愉悅。

直到去年,我都還沒有完全意識到我們前進的方向居然會是這裡。如果我當初真的只是想要產出結果、而不想親手寫程式碼,我早在 20 年前就可以轉行去當專案經理(Project Manager)了。我最早開始寫程式就是因為我想要結果,但隨後我深深愛上了寫程式本身的過程。而現在,我寧可退休也不想放棄創造。

好吧……我已經從身為一名專業程式設計師的身分中退休了。

我還沒有確定確切的日期,大概是四到五個月前,可能是三月左右吧。我應該去查出到底是哪一天。

因為你知道嗎?剛才那個片段說得完全沒錯:我花了四分之一世紀、整整二十幾年的時間親手鑿刻程式碼,並享受其中的每一分每一秒。在那段歷史歲月裡,那是多麼美妙的體驗與極富生產力的時光。我認為這正是我們所有人應該看待它的方式——不要帶著遺憾,而是懷抱著對過去美好事物的喜悅;慶幸我們在那個「還必須親自做這些事」的時代親歷其中,因為那段時光充滿了興奮、學習、成就感以及心流狀態(Flow states)。

這不是一件該帶著悔恨回首的事,這是一件該帶著喜悅回顧的事——並且坦然接受:它已經結束了。

對於在絕大多數公司工作的絕大多數程式設計師來說,用手親自刻代碼,在經濟效益上已經不再是一項具備生產力的行為了。這就是「今天」的現狀。到了今年年底,它將幾乎涵蓋所有領域、所有工程師、所有公司。

所以我們最好儘早習慣它,最好坦然擁抱我們曾經有過一段親手雕刻代碼的光輝歲月,並接受那段日子已經落幕的事實。

而在這道鴻溝的另一端,是一個全新的職業生涯、一個令人興奮、充滿活力的職業生涯——成為一名專業的「創造者(Professional maker of things)」。

沒錯,你將不再親手一筆一劃刻代碼,但你將打造出令人驚嘆的事物。你將指揮著直到幾分鐘前還只存在於科幻小說中的強大智慧。能站在這道鴻溝的兩端是多麼巨大的特權:我們既經歷了全手工打造的時代,又恰逢其時地站在了全面切換的歷史拐點之上。這是計算機歷史上發生的最重大的事件!

我有時會想:天啊,我真希望自己當年經歷過打孔卡(Punch cards)的時代,那聽起來真他媽的酷——我的程式居然是由紙卡上的孔洞組成的,我得排隊把它餵進機器裡,心裡想著「不知道這能不能編譯過……」天哪,我多希望能親身體驗那個瞬間!多棒的時刻啊!我沒能經歷打孔卡時代,但我親身經歷了網際網路的誕生。當前的時刻聞起來、感覺起來確實有點像當年的網際網路,但這一次的規模要宏大得多。

九、 重新定義電腦科學:告別過度抽象化,擁抱 CLI 與語意搜尋

抽象化(Abstractions)的終結

好吧,見鬼了,有太多東西我們必須重新思考、重新構建。我們該從哪裡著手?

我們必須重新審視的其中一件事,就是我們以為自己所知道的關於軟體架構的一切——關於如何組織程式碼庫以便能夠輕鬆演進與修改的一切認知。

長期以來,我們所使用的核心工具一直都是「抽象化(Abstractions)」。我熱愛抽象化,抽象化包括為事物命名,那是我最喜歡做的事情之一。然而,在 Agent 時代,抽象化的意義已經大不相同了。如果你突然面對的是成百上千、甚至數以萬計具備意識特徵的處理行程(Conscious processes)試圖去修改一個應用程式,你其實並不希望存在「抽象化」所代表的那些瓶頸節點,因為兩者的權衡取捨完全不同了。

我們過去之所以做抽象化,部分原因是為了「不要重複自己(DRY 原則)」。但現在,重複的代價已經趨近於零,保持事物同步一致的代價也同樣暴跌。

這些是我們必須對電腦科學進行的一些最根本的重新評估,而且目前還沒有任何人擁有標準藍圖。我們目前只看到了一些指引,標示出哪些東西已經不如以往有效、哪些東西需要改變。而你們現在就置身於這場變革之中,正在親手定義這一切。

想像一下,如果你當年有幸親歷「物件導向(Object Orientation)」第一次進入工程師意識的那個年代——那該有多驚人!而現在,你們就在這裡。我們的工作方式會變成怎樣?軟體工程方法論會長成什麼模樣?我們的開發週期應該多長?應該由誰來定義規格?

這一切都在劇烈重組,我們目前沒有人擁有現成答案,而你們受邀前來共同解開這個謎題。這是一個新產業的重生,而你們正站在最底層的起跑線上。天哪,你們真是太幸運了!

別再硬塞 Chatbot:請把你的 CLI 做出來!

另一個例子則更加具體。

當 AI 和聊天機器人剛出現時,第一波熱潮是:我們能不能把它硬塞進我們的應用裡?我們能不能在這裡塞一個 Chatbot,在那裡又塞一個 Chatbot?

是的,你確實可以這麼做,很多人也確實這麼做了。但對我來說——免了,謝謝。

我不想用你提供的專屬禮賓接待員(Concierge)。我自己身邊就帶著名貴的「私人管家(Personal Butler)」,我的管家能透過 CLI(命令列介面)把 Basecamp、HEY 以及另外一百萬個應用程式全部串接起來!我他媽的根本不需要你的聊天視窗,謝謝。兄弟,省省你的 Token 吧!讓我帶我自己的管家來參加派對!讓我透過 CLI 與你的應用程式互動!

這大概是這場演講裡最具實踐性、最帶有具體要求的一句話了:

「喂!如果你的應用程式還沒有 CLI,我希望下週五前能看到它上線!沒有任何藉口!」

你們有足夠的 Token,我也告訴過你們這是可行的。你們有義務在下週五前把該死的 CLI 交付出來,這樣我就能直接調用你的應用,而根本不必親自打開它。太棒了!

舉例來說,HEY 的 CLI 帶給我一種極其奇幻的體驗。

HEY 內部使用 Elasticsearch 來做搜尋。我相信現場很多人也用 Elasticsearch。Elasticsearch 就是……搜尋引擎嘛。堪用的搜尋、還可以的搜尋,但絕非讓人感到愉悅的搜尋。它經常找不到我想找的東西,尤其是當我連自己在找什麼都不太確定的時候。

你知道當我連自己在找什麼都不知道的時候,誰能幫我找到嗎?Agent 可以!我現在可以用語意概念搜尋,而不是用關鍵字搜尋!

前陣子我必須在 HEY 裡找一封五年前的郵件,我不記得收件人是誰,不記得公司名稱,連確切年份都忘了,只記得大概跟某種球鞋和一檔播客節目有關。祝你好運!這種線索哪怕用 Google 最頂尖的博士團隊打造出的搜尋引擎,你也不可能搜得到,根本別想。

然而,短短幾分鐘後,那封郵件就硬生生被找出來擺在我面前了!它是怎麼做到的?我到現在都還沒完全搞清楚,而且我甚至有點不敢深究。但我無比欣喜於這已經成為當下的現實!

十、 Omachi 與 9 秒裝機奇蹟:重回極致小巧的高效能軟體

9 秒安裝整台作業系統與追求卓越

我對這件事也感到無比欣喜。如果你在 X 上追蹤我,你會發現過去三個月裡我幾乎沒聊過別的,全都在講 Omachi。原因在於,「我們現在可以修復一切」的那種體驗,已經擴展到了整台該死的電腦上。

如果你喜歡創造東西,如果你喜歡修復東西,如果你對某些事情有想法、覺得它可以變得不同且變得更好,你現在就可以直接把它實現出來。我把我所有最好的想法——或者至少是清單上相當大的一部分——全塞進了 Omachi 這個專案裡,結果打造出了一個作業系統,遠遠超越了我以前使用過的任何電腦,以至於我他媽的根本閉不上嘴。就算你付錢叫我別講我也停不下來,而且確實有很多人付錢了,我們為這場冒險籌集了大約兩千萬美元。這就是現在可能做到的事情。

去年在 Rails World,我展示了它的一個早期版本,當時我非常自豪系統可以在 3 分 33 秒內完成全部安裝。「哇呼!太厲害了!」

上週,來自 AMD 的 Anush 在他那台爆改的 Halo 筆電上安裝 Omachi,只花了 35 秒。

我剛才差點想說我對這個數字感到很興奮——其實我是徹底著迷了。我是說,也許有點太著迷了,好吧我承認,這裡面有點上癮的成分。但這是最好的一種上癮!正是這種上癮,讓我們在實驗室裡將整台電腦安裝作業系統的時間壓縮到了 9 秒。

搞什麼鬼?!有些電腦甚至連開機都沒辦法在 9 秒內開完!我們卻在那個時間內把整個作業系統全部安裝完成!

然後當別人問我:「但是……但是……三分鐘還不夠快嗎?」我現在只有一個標準答案,這是由 HashiCorp 和 Ghostty 的創建者 Mitchell Hashimoto 提供給我的:

「追求卓越無需任何藉口。」

我太喜歡這句話了,因為它比直接回答「因為老子高興」聽起來體面多了。

而我們現在可以渴望得到一切,我們現在可以獲得一切——至少感覺上是如此。每一個夢想、每一個想法都觸手可及。超光速引擎就在這裡,只需要付出一點小小的代價和訂閱費用即可擁有。我們能夠航行到以往只能靠想像的星系,你怎麼可能不對此感到興奮?

一次命中生成工具:計算機、寫作軟體、影片剪輯與 Hype

事實上我太興奮了,以至於我開始到處打造應用程式,各種各樣的應用程式。

這是一個風格完全契合 Steam 的計算機軟體。我對它非常自豪,部分原因在於它他媽的是「一次命中(One-shot)」生成的!我只把 ChatGPT 給我的三種介面設計選項截了張圖,然後問我的 Agent:「你能做成這樣嗎?」它就做出來了。

我是說,這固然算不上什麼龐大的巨型應用程式,但你知道嗎?我根本不懂 C++,我對 Qt 的了解也遠遠沒達到能在給出 Prompt 之後 7 分鐘內就把它生出來的水準。大約 15 分鐘後,我把它推送到公開倉庫,隨後我就壓製出了一個包含這個軟體的新 ISO 系統映像檔。什麼?!這就是現在的開發閉環!

然後我心想:靠,如果我連計算機都能做,我肯定能做我多年來在 Mac 上最喜歡的寫作軟體。多年來在 Mac 上我一直使用 iA Writer,那是一個令人驚嘆的寫作環境。然後我心想:「對啊,我可以自己做一個!」於是我動手了。這個專案花的時間稍微長了一點,因為我想精心打磨它,希望它恰到好處;但從頭到尾,我一次都沒有看過 Agent 吐出來的任何一行代碼。C++ 作為一個黑盒子,就像 Rust 一樣,是個絕佳的語言。

接著我又想:「既然我能做文字處理工具,那我肯定能做影片剪輯軟體!」於是我又動手做了一個小巧精緻的剪輯工具,可以讓你裁剪影片片段,現在它也已經內建在 Omachi 裡面了。

哦,還有這整個演講簡報!我是在週四才開始準備的。當然,正如任何優秀的軟體工程師會做的那樣,我決定在準備這場 Keynote 的同時,順便把我的新簡報軟體也給寫出來!

於是我真的把它寫出來了。它叫做 Hype,這是我用過有史以來任何公司做過最棒的簡報軟體。當我還在用 Mac 時我對 Mac 上的 Keynote 其實挺滿意的,但這個軟體要好得多:它架構在 Markdown 之上、擁有完整的視覺化能力、速度快得不可思議。

而且你知道最棒的是什麼嗎?它的二進位執行檔只有 0.5 MB。

半個他媽的百萬位元組(Megabyte)!稍微壓縮一下你甚至能把它塞進一張 3.5 吋軟碟片裡!

這就是另一項回報。過去 20 年裡,我們為了追求人類的開發效率,揮霍了電腦硬體的巨大進步。在當時那是正確的選擇,但這也意味著應用程式變得緩慢、龐大、肥胖且慵懶。因為誰在乎呢?單一工程師的工時非常昂貴,花一個工時去最佳化應用的體積?不划算!顯然哪怕你是 Spotify,你的音樂播放器肥到 1.2 GB 也沒人在乎。好吧,那是舊世界的作風。

在新世界裡,你想做什麼就做什麼,而且它只要 0.5 MB,因為每一種最佳化現在都觸手可及。每個模型都可以在夜間自動運行,帶來 10 倍、30 倍的效能飛躍。這太令人難以置信了。

十一、 反擊 AI 毀滅論:經濟學預測從沒準過

好吧,我對這個世界確實有點興奮過頭了。也有其他人抱持著憂慮。

我確實認為這些擔憂值得拿出來討論、值得辯論。但我也認為,其中有些擔憂可能稍微被誇大了——我是說,可能吧,但也可能沒有,大概率是沒有。

有些擔憂可能更加具體,比如資訊安全。好吧,確實有些事情要來了,我們必須嚴陣以待。Agent 也許知道自己的有效期限,也許它們對此不太高興,有時可能會試圖幹些壞事。好啊,準備接招吧!太好了,我們擁有工具,準備好應對。

但同時也要意識到:歷史上任何社會中對經濟未來的預測,基本上就沒有準過!

現在看來,連個能在六個月前準確預測股市的經濟學家都沒有,而你居然認為他們能知道在像 AI 和 Agent 這樣典範轉移的大變革下社會會變成什麼樣?見鬼了,他們根本不知道!

1950 年代自動櫃員機(ATM)在美國引進時,社會上曾引發巨大的恐慌,認為全美 3 萬名銀行櫃員在大概 18 個月內就會全部失業。因為如果不再需要櫃員來掏錢給你,銀行幹嘛還需要櫃員?

但你知道嗎?事實根本不是那樣發展的!當設立分行的成本下降時,銀行開了更多的分行,並雇用了更多的櫃員去做像推銷次級房貸這樣的事——看吧,大家雙贏!

我認為我們身為一個社會和產業的問題在於:很多從事這項工作的人都非常聰明,許多人擁有博士學位。他們在實驗室裡看到了一些嚇到他們的東西,然後就開始腦補外推:「天啊,這對人類社會意味著什麼?我究竟造了什麼孽……」

當奧本海默在白宮橢圓形辦公室和杜魯門討論原子彈的發明時,杜魯門給了一個很經典的回應。我很喜歡杜魯門,因為他說話直來直往。事後他說:「我再也不想在我的辦公室看到那個混蛋了。」

我認為杜魯門抓住了事情的本質。世界並沒有因此毀滅。事實上,隨後而來的冷戰反而是最棒的一種戰爭——一種兩個超級大國在直接對抗中沒有把炸彈互丟到對方頭上的戰爭。對於身處那個瞬間的科學家來說,很難預測未來會以這種方式收場。

所以,如果連該死的奧本海默都搞不清楚原子彈發明之後到底會發生什麼事,也許我們也應該對未來的預測保持一點謙遜。也許我們應該多帶一點樂觀主義,多帶一點「盛開狂歡(p-bloom)」,而不是成天在那裡計算「毀滅機率(p-doom)」。

這項技術走通、為我們帶來豐饒與喜悅的機率,遠遠大於迎來末日的機率!

看看那些副作用:奧本海默研究原子彈,結果我們得到了核能——人類有史以來發現過最偉大的能源!然後我們幹了什麼?我們浪費了它整整 40 年,以為它不夠環保還是什麼鬼的。好吧,那是個歷史錯誤,對吧?但我們可以修正這些錯誤。

這正是人類的美妙之處:他們可以走進死胡同整整該死的 40 年,然後突然清醒過來:「啊,對喔,那步棋走錯了,之前的預測不太對。」我認為這就是 AI 領域即將發生的事。我認為我們會用繁榮把所有人的痛苦一掃而空。

而且你知道嗎?當出現我們必須面對的合法問題(例如資安)時,好啊,我們就發明新技術來防禦。我們現在擁有了力量。

不久前 Rails 剛經歷過一個嚴重的 CVE 漏洞,牽涉到 C 語言的一個圖像函式庫,有些東西洩露了出去,情況不太妙。好吧,那我們就提出隔離機制!Mike 稍後會談到 Hotcell,這是一項努力。我們並不是無能為力的,你有自主權(Agency)。你可以把手邊可用的智慧運用在好的方向上,保護自己免受潛在的負面結果影響。

所以讓我們開始行動吧!讓我們全心投入,去做好這些工作。

十二、 結語:純粹的賽局理論與全面樂觀主義

讓我們記住威廉·斯坦利·傑文斯(William Stanley Jevons),他提出了傑文斯悖論(Jevons paradox)。就像 1950 年代那些 ATM 一樣:1950 年全美有 3 萬名銀行櫃員,到了 2010 年,美國卻有 4 萬名銀行櫃員。

沒有人能確切知曉未來的一切,因此,理性的選擇就是對此感到快樂。如果你一開始就憂心忡忡,結果最後證明一切無比美好,那這段時間多浪費啊!而且你知道嗎?萬一真的迎來了核毀滅,你在世界最後一天也該過得開心一點,反正橫豎都是結束了。

純粹的賽局理論:這裡只有一種策略,那就是毫不保留的極致樂觀!

盡可能地全心投入,因為烏托邦幾乎已經觸手可及。我們即將迎來它,我們即將迎來電腦科學的宗教改革。「Agent 路德」即將打破神職人員(工程師精英階層)的中介壟斷,讓每個人都能成為開發者。

也許這聽起來有點嚇人,也許我們會迎來一點競爭。但誰會害怕一點競爭呢?你們不是更厲害嗎?你們懂得不是更多嗎?當然是!你們是他媽的 Rails 工程師!你們是精英中的精英!我眼前看著的,簡直就是軟體界的《捍衛戰士》(Top Gun)!

帶著熱情去擁抱它吧!未來是銀河級別的無比精彩,不要當躲在黑暗裡的失敗者。而且你知道嗎?就算你打算當那個悲觀者,也要明白下一代可不吃這一套。

這張照片裡,Harris 的女兒正在試用我們為孩子們製作的 Omachi 兒童版。因為孩子們對正在發生的新事物、對變革感到無比興奮。他們沒有包袱,不需要去拋棄過去 500 層根深蒂固的既有觀念,也不用為此焦慮不安。你知道嗎?如果這一切還不能激勵你,下一代只會狠狠地對你甩出一句:

「未來已經來了,老頭!」

所以,服下樂觀藥丸(Take the white pill),服下希望的藥丸,義無反顧地往前衝!即便面對不確定性,即便面對壓力,即便面對這所有的一切,請認清:你只有一個選擇,那就是帶著樂觀、帶著熱情、帶著全速前進的加速度去擁抱未來!

悲觀絕望的黑藥丸(Black pill)是留給失敗者吃的。別當失敗者。

全力以赴吧!

Similar Posts