国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

凌晨三點寫代碼、10個 Agent 同時跑!ClawdBot 創(chuàng)始人自曝 AI 上癮史:Claude Code 入坑,Codex 成主力

0
分享至


整理 | 褚杏娟

Clawdbot(現(xiàn)名:Moltbot)火了到國內(nèi),社交平臺上到處都是部署教學(xué)、使用教學(xué)和使用展示。國內(nèi)的騰訊云、阿里云等也相繼宣布上線 Clawdbot 云端極簡部署及全套云服務(wù),釘釘也在 Github 上開源了 Moltbot 接入方式。

項目背后的創(chuàng)始人 Peter Steinberger 也紅極一時,他的構(gòu)建方式成為很多人的學(xué)習(xí)對象。Peter 之前就是一位非常出色的開發(fā)者,打造了一個被用在超過十億臺設(shè)備上的 PDF 框架。后來他經(jīng)歷了嚴重的職業(yè)倦怠,賣掉股份,整整三年從科技圈消失。今年,他回來了,而他現(xiàn)在的構(gòu)建方式、正在做的事情,已經(jīng)和傳統(tǒng)軟件開發(fā)完全不同。

Peter 近期在“The Pragmatic Engineer”節(jié)目中,用近兩個小時的時間分享了他的開發(fā)經(jīng)歷。他解釋了,為什么他現(xiàn)在發(fā)布的代碼,大部分自己都不再逐行閱讀,而這其實并沒什么大不了;他具體是如何打造了 ClawdBot 這個看起來就像 Siri 未來版本的個人助手的;他如何利用“閉環(huán)原則”,高效進行 AI 編程;為什么代碼評審已經(jīng)過時,PR 應(yīng)該改名叫 Prompt Request 等,他還分享了很多關(guān)于軟件工程工作流在未來幾年可能發(fā)生的變化。

Peter 可以稱得上是“AI 重塑開發(fā)方式”的最佳實踐者之一。

我們整理翻譯了這期干貨滿滿的對話,并在不改變原意基礎(chǔ)上進行了刪減,以饗讀者。

怎么入行的?

主持人:這次終于線下見到你了,太棒了。

Peter:是啊,差點還搞砸了。

主持人:怎么回事?是忘了時間嗎?你經(jīng)常這樣嗎?

Peter:其實不太常見。只是最近這個時間點比較特殊,因為我最近的項目 ClawdBot 突然火了。說實話,有點睡不夠了。但這種感覺也很有意思,我從來沒經(jīng)歷過一個社區(qū)在這么短時間內(nèi)爆發(fā)。真的非常好玩。

主持人:在聊 ClawdBot 之前,我們先把時間拉回去。你做的 PSPDFKit,據(jù)說被用在超過十億臺設(shè)備上,基本上你看到一個 PDF 被渲染,很可能背后就是它。那在更早之前,你是怎么進入技術(shù)行業(yè)的?

Peter:天哪,這得從很早說起了。我來自奧地利一個小地方,一直比較內(nèi)向,經(jīng)常被欺負。那時候,夏天總會有客人來家里,其中有個電腦迷,我迷上了他的機器,天天盯著這臺機器研究,最后求媽媽給我買了一臺。從那以后,我就徹底陷進去了。

主持人:那時候你還在讀中學(xué)?

Peter:差不多吧,大概十四歲。我最早做的事情之一,是從學(xué)?!绊槨绷艘粡埨?DOS 游戲的軟盤,然后自己寫了個拷貝保護,好拿去賣。加載一次要兩分鐘,但我當(dāng)時覺得這事特別酷。當(dāng)然也打了很多游戲,不過對我來說,做東西本身就像在玩游戲。說實話,現(xiàn)在做事帶來的成就感,比通關(guān)游戲還爽。

一開始我看的是類似 Windows 的 bash 腳本,然后做網(wǎng)站,寫一點 JavaScript,雖然完全不知道自己在干嘛。真正系統(tǒng)性地學(xué)“怎么構(gòu)建東西”,是上大學(xué)之后。我從沒見過我父親,家里也很窮,所以我一直要打工,學(xué)費生活費都得自己賺。別人放假的時候,我就在公司全職上班。

我第一份正式工作在維也納,本來只打算干一個月,結(jié)果他們留了我六個月,后來我在那家公司工作了大概五年。第一天他們給了我一本厚厚的書,上面寫著“Microsoft MFC”,到現(xiàn)在我做夢還會被嚇醒。我當(dāng)時心想,這也太糟了。

后來我干脆悄悄用 .NET,也沒跟他們說。過了幾個月我才攤牌,說我順便做了點“技術(shù)?,F(xiàn)代化”。反正木已成舟,他們居然也一直留著我,大概因為事情確實做成了。我實際上還挺喜歡.NET 2.0 的泛型,不過應(yīng)用啟動慢得要命,第一次跑基本要等很久,老 Windows 用戶應(yīng)該都懂。

主持人:那你后來是怎么接觸到 iOS,又是怎么想到做 PSPDFKit 的?

Peter:那是后面的事了。上大學(xué)時,有個朋友給我看了 iPhone。我就摸了一分鐘,立刻決定要弄一臺。那一刻真的像被雷劈了一樣,完全不一樣,完全是另一個層級的體驗。但當(dāng)時我其實還沒想過要給它做應(yīng)用。

主持人:那大概是 2009、2010 年左右?

Peter:差不多。后來有一次,我在地鐵上用一個交友網(wǎng)站,用的是 iPhone OS 2。我打了一大段很走心的消息,剛點發(fā)送后車進隧道了,JavaScript 禁用了發(fā)送按鈕,然后直接報錯。那時候沒有復(fù)制粘貼、沒有截圖、頁面還不能滾動,那段話就這么沒了。我當(dāng)時氣炸了,覺得這簡直不可接受?;氐郊椅揖桶涯莻€網(wǎng)站黑了,用正則去解析 HTML。

現(xiàn)在看當(dāng)然完全不該這么干,后來我硬做了一個 App。我用的是 iPhone OS 3 的 Beta 版,Core Data 也是 Beta,還用改過的 GCC,把 blocks 編譯器移植進來。各種 Beta 技術(shù)一鍋燉,我自己其實也不知道在干嘛,折騰了很久才跑起來。我給那家公司寫信說我做了個 App,問他們怎么看,沒人理我,我就直接丟到 App Store 上架了。

主持人:這就是那個交友 App 的客戶端?

Peter:對,本質(zhì)上就是把 HTML 當(dāng) API 用,純解析頁面。

主持人:現(xiàn)在看挺野的,但在當(dāng)年確實沒人這么干。

Peter:我定價五美元,第一個月就賺了一萬美元。當(dāng)時我完全不知道流程有多復(fù)雜,Apple 的系統(tǒng)也很原始。我甚至把收款賬戶填成了我爺爺?shù)?。有一天我爺爺打電話問我,說怎么 Apple 給他打了一大筆錢,我跟他說“這是我的,你千萬別動”。

后來有一次我在夜店里,看到有人在用我的 App,我特別驕傲,差點沖過去跟他說這是我做的,最后還是忍住了。沒多久,我就跟工作了五年的公司說,我要全力做這個項目。老板當(dāng)面嘲笑我,說這是個一時的風(fēng)口,肯定不長久。那一刻我心里就憋了一口氣:總有一天,我要做一家比你們值錢的公司。結(jié)果這花了我八年的時間。

我有點成癮性格,一旦投入就停不下來。我瘋狂打磨這個 App,高速學(xué)習(xí),也是那段時間我開始用 Twitter,那些對我職業(yè)發(fā)展影響巨大。

后來有一天凌晨三點,我在派對上喝得有點多,然后接到了一個電話,對方說他是 Apple 的 John,說我的應(yīng)用有問題,有人舉報不當(dāng)圖片。電話掛了,我的 App 也就此下架。我剛辭了工作,心態(tài)直接炸裂,開始接零散的活兒。

在舊金山的一家酒吧里,我被介紹為“奧地利最好的 iOS 開發(fā)者之一”。就這樣,我拿到了美國的工作機會,搬過去待了一陣子。后來去了 Nokia Developer Days,那真是史前時代了。

在那里,有人找我,說他們在東歐做了一個雜志閱讀 App,經(jīng)常崩潰。那會兒 iPad 剛出來,Steve Jobs 說它是出版業(yè)的救世主,大家都在做雜志 App。我一聽覺得這是個不錯的短期項目,就接了。我一打開代碼,整個人都懵了。那是我見過最糟糕的 iOS 代碼,整個項目只有一個文件,幾千行。

主持人:還是 Objective-C?

Peter:對,是 Objective-C,而且他們把 Windows 當(dāng)成 Tab 來用。我都不知道這能行。我很驚訝這居然能用,但感覺像個紙牌屋。我試著“外科手術(shù)式”地修補問題,但基本上是動一處、壞一片。最后我好不容易把它穩(wěn)住了,就跟他們說,“這太瘋狂了,我要重寫”。

他們原本預(yù)計要半年,我說我一個月就能搞定,最后花了兩個月,也不算差太遠。接下來我就一直在解決各種 PDF 相關(guān)的技術(shù)問題。這個領(lǐng)域談不上多性感,但每個領(lǐng)域里都能找到真正有挑戰(zhàn)的點。比如一個 C 語言調(diào)用渲染 PDF 可能要 30MB,但整個系統(tǒng)只有 64MB,如果你不夠小心、不夠聰明,系統(tǒng)隨時就把你干掉。

我那段時間完全沉迷在“把它做到極致”這件事上,比如屏幕旋轉(zhuǎn)時頁面的動畫效果,這種細節(jié)我會反復(fù)打磨,花了遠超合理的時間。所以原本一個月的活,最后干了兩個月,但結(jié)果是好的。之后我又跟他們合作了一段時間。

后來有個朋友給我發(fā)消息,說他在做一個雜志應(yīng)用,PDF 那塊特別難。我跟他說,我剛好做過,對方就問我能不能把代碼給他,我說可以。先把那套雜志 App 里和 PDF 有關(guān)的部分抽出來,確認對方也沒意見。

然后我突然想到,既然有人需要,為什么不試著賣給更多人?我用一個 WordPress 模板,硬改成能跑在 GitHub Pages 上。然后用 fastlane 流程最后得到一個 Dropbox 鏈接,里面有源代碼。當(dāng)天晚上我就發(fā)了條推文。一周之內(nèi),有三個人買了,大概兩百美元。

在當(dāng)時對我來說,這已經(jīng)很不可思議了。不只是有人付錢,還有十封郵件在抱怨,說他們也想買,但這個產(chǎn)品還沒有他們想要的功能。比如有人問,為什么不能選中文本?幾個月后我才真正意識到,這功能到底有多難。

主持人:PDF 里的文本選擇。

Peter:對,尤其是這個。你知道那句話嗎:公司是由年輕人建立的,因為他們不知道有多難。我當(dāng)時完全沒概念,后來才發(fā)現(xiàn)這簡直是瘋了一樣復(fù)雜。

直到現(xiàn)在,前幾周還有人給我寫郵件,說他們在做 PDF 相關(guān)的事情,想找我?guī)兔ΑN一径紩匾痪洌翰缓靡馑?,我已?jīng)把這輩子該懂的 PDF 知識都學(xué)完了,遠遠超過一個正常人該承受的量,祝你好運。

不過當(dāng)時,這個項目真的起飛了。我一邊等簽證,一邊繼續(xù)維護。買的人越來越多。那是夏天,我躺在湖邊曬太陽,郵箱里突然又進來一封郵件,說又有人買了,六百美元、八百美元。隨著功能變多,我不斷漲價。

等我真的去舊金山那家公司上班時,這個項目賺的錢,已經(jīng)超過我在那里拿的工資了。但我那時的想法還是:我得去那家公司看看,于是還是去了。

主持人:也就是說你搬到了 San Francisco。

Peter:對,而且很有意思的是,那家公司后來也讓我用自己的框架幫他們做東西。創(chuàng)業(yè)公司當(dāng)然不可能只干八小時,我的本職工作很忙,個人項目也一樣,睡的自然越來越少。

三個月后,我的經(jīng)理 Sabine 把我叫過去,問我一句話:“Peter,你還好嗎?”公司給了我一個選擇:要么繼續(xù)在這家公司工作,把個人項目停掉;要么反過來。他給我一周時間決定,而且因為簽證問題,如果不留下,就得離境。這個決定其實一點都不難。我很清楚,我想做自己的事情。

主持人:那時候你已經(jīng)看出來了,這是一個真正的生意,至少能給你帶來和美國工作差不多的收入。

Peter:我從來不是被錢驅(qū)動的。

主持人:那你真正的驅(qū)動力是什么?

Peter:我想做那種讓別人覺得“太棒了”的東西。我特別迷戀細節(jié),迷戀那些小小的驚喜感。并不是因為這個領(lǐng)域沒有競爭,相反,競爭很多。但我心里一直憋著一股勁:我要做一個像 Apple 自己會做出來的產(chǎn)品,充滿關(guān)懷、打磨、克制,還有那些行業(yè)里很多人已經(jīng)不在乎的細節(jié)。

所以哪怕有競爭對手功能更多、做得更早,我的產(chǎn)品依然更成功。因為開發(fā)者試過之后,都會覺得我的用起來最好。我一直覺得,產(chǎn)品的“感覺”比功能列表重要得多。我們?yōu)槭裁促I Apple?不是因為它功能最多,而是因為它用起來就是更舒服。

從賣組件到創(chuàng)建公司

主持人:那你是怎么從“一個人在賣 PDF 組件”,走到開始招人的?你什么時候意識到這件事可以做得更大?

Peter:我回到維也納之后,決定徹底 all in,開始和一些自由職業(yè)者合作。說實話,我招人其實招得太晚了,完全可以更早邁出這一步,但這一步真的很難。

從那時起,這個產(chǎn)品開始有了自己的生命。我職業(yè)生涯里差不多有 13 年都在打磨這個名字奇怪的產(chǎn)品。名字我一直沒改,當(dāng)初想名字只花了幾分鐘,就叫 PSPDFKit。后來改過一次,但說實話,要不是不得不改,我可能還是不會動。

主持人:名字確實有點繞,但非常獨特。

Peter:如果你寫 Objective-C,你就會覺得這個名字很合理,因為它本質(zhì)上就是個命名空間。我的營銷策略也一直很簡單:我只關(guān)心開發(fā)者。雖然最終拍板的是管理層,但只要我能說服公司里的工程師,他們就會替我去內(nèi)部推廣、游說。

我們從來不做冷郵件,也不搞侵略式銷售。所有客戶都是自然找上門的。我們只做三件事:把產(chǎn)品做好、寫真正有價值的技術(shù)博客,以及參加大量開發(fā)者大會。對我來說,最重要的是讓大家明白,這個產(chǎn)品背后的人是真的懂技術(shù)、也真的熱愛這件事。而這一點,會直接體現(xiàn)在產(chǎn)品里。

主持人:PSPDFKit 底層用的是什么技術(shù)?最早是 Objective-C 嗎?后來轉(zhuǎn)成 Swift?有沒有用到 C 之類的?

Peter:一開始確實是 Objective-C,后來逐步覆蓋到所有平臺。真正一次大的轉(zhuǎn)折,是我們把 Apple 自帶的渲染器換掉了,那個東西當(dāng)時問題很多,之后改成了一個大型的 C++ 渲染器,后來所有平臺基本都共用這一套核心。

我們在 Web 這塊也做得非常早,是最早一批跑在 WebAssembly 上的 PDF 框架之一。當(dāng)時我做了一件現(xiàn)在看來還挺聰明的事:在一切剛開始的時候,我們做了一個性能基準測試。后來這個 benchmark 被 Google、Microsoft、Apple 等公司拿去用,成了他們內(nèi)部的參考指標之一。結(jié)果就是,這些大公司為了跑得比我們快,反過來不斷把他們的渲染器優(yōu)化得更快,而測試用的內(nèi)容,其實就是我們自己的渲染場景。

創(chuàng)業(yè)后,分享公司的“核心秘密”

主持人:厲害。隨著公司規(guī)模變大,我對 PSPDFKit 的一個深刻印象是,你們寫了大量博客。記得有一篇文章,講的是團隊怎么運作:每個功能都要從 proposal 開始,因為 API 很大、用戶很多,所以你們非常保守;還有類似 Boy Scout Rule 那樣的重構(gòu)原則。團隊從十幾個人發(fā)展到幾十個人,這種文化是怎么建立起來的?

Peter:我賣股份的時候,公司大概七十人,現(xiàn)在已經(jīng)接近兩百人了。一開始我就很清楚,在維也納不可能招到我需要的所有人,所以我們從一開始就是 remote first,后來又變成了一種混合模式,反而更復(fù)雜。

很多東西都是邊走邊學(xué)。我從來沒有“我要當(dāng) CEO”的執(zhí)念,我一直在寫代碼,我會找合適的人來幫我做公司的其他部分。業(yè)務(wù)我能做,也做得還可以,但我真的不喜歡那種企業(yè)銷售電話,你得去琢磨一個“魔法數(shù)字”,看對方可能愿意付多少錢。這就是企業(yè)銷售,真的很折磨。但說到底,這種模式可能是唯一行得通的。

主持人:你是說企業(yè)銷售本身?

Peter:對。

主持人:很多開發(fā)者去廠商官網(wǎng),看不到價格,只看到“聯(lián)系我們”或者“預(yù)約演示”,都會很不爽。為什么一定要這樣?

Peter:原因很簡單,我們會看你的公司情況,然后大概判斷你能接受的價格,再定一個數(shù)。聽起來確實很糟糕,但當(dāng)你的產(chǎn)品沒辦法簡單拆成一個統(tǒng)一定價時,這是現(xiàn)實。

一個自由職業(yè)者,和一家財富五百強公司,用法完全不同,獲得的價值也完全不同。如果統(tǒng)一收費,要么把小客戶擋在門外,要么讓大客戶覺得價格可疑。價格定低了,大公司采購流程都走不起來;定高了,小團隊直接流失。所以這個過程看起來不公平,但在某些產(chǎn)品上,反而是最公平的方式。

軟件大致可以分成四個象限:容易或困難,有趣或無聊。我們處在“又難又無聊”的那一塊。

如果只構(gòu)建每個開發(fā)者都想構(gòu)建的東西,賣起來一定很難。賣給開發(fā)者本來就難,如果一個東西既簡單又有趣,那基本沒戲。但如果是那種“我真不想碰,而且還特別難”的,反而是個好位置。我找到了這樣一個細分領(lǐng)域,里面有無限多復(fù)雜問題可以解決。

主持人:那解析 PDF 到底難在哪?有規(guī)范啊,我是工程師,照著規(guī)范做不就行了?

Peter:舉個最簡單的例子。PDF 里有鏈接,比如目錄,點一下跳到某一頁。我一開始的假設(shè)是,可能有一兩百個鏈接。我就按這個規(guī)模設(shè)計了整個數(shù)據(jù)模型。后來來了一個付費很高的客戶,說他們的 PDF 打開要四分鐘,我一看是一份五萬頁的文本圣經(jīng),每一頁上有上百個鏈接。

主持人:那就是五十萬個鏈接。

Peter:對,我的模型直接爆炸了。假設(shè)差了三個數(shù)量級。但這時候你已經(jīng)是一個成熟產(chǎn)品了,還有穩(wěn)定的 API。你要怎么徹底重構(gòu)內(nèi)部,又不破壞所有用戶?所有東西都得改成 lazy loading。以前加載 100 個對象沒問題,現(xiàn)在不行了。我花了整整兩個月重寫內(nèi)部結(jié)構(gòu),同時還要保證對外 API 看起來還是“簡單的”。用戶不需要知道哪些是立即加載的、哪些是延遲加載的,引用關(guān)系也必須保持一致。

主持人:這些引用必須還能連得上。

Peter:對。我其實非常喜歡做支持,這也是公司能成功的重要原因之一。如果你提一個工單,結(jié)果 CEO 直接回你,還幫你解決問題,那感覺是完全不一樣的。

我一直有個策略:支持一定要快。五分鐘內(nèi)回,和兩天后回,體驗差別巨大。這個問題就是其中一個例子,我花了兩個月把它徹底解決,最后跑得非常順,那種滿足感真的很強。

主持人:那時候你自己還寫很多代碼,對吧?雖然團隊已經(jīng)很大了,但你仍然會深入細節(jié)。

Peter:當(dāng)然。我有一支非常棒的團隊,有些模塊我參與得更多。移動端一直是我最上心的部分,但我也會深度參與技術(shù)、市場和業(yè)務(wù)。業(yè)務(wù)上我有 Jonathan 幫忙,市場和銷售也有很優(yōu)秀的人。其實,持續(xù)寫博客、寫你是怎么解決這些復(fù)雜問題的,會幫你吸引同樣想解決復(fù)雜問題的人。

主持人:這是我對 PSPDFKit 最深的印象之一。你們的博客不只是營銷,而是真的好看。說實話,我并不做 PDF,但如果要說起 PDF 框架,第一個想到的就是 PSPDFKit,因為只有你們會寫這么有意思的技術(shù)文章。

主持人:你現(xiàn)在回頭看,會不會也覺得奇怪,為什么更多公司不這么做?還是說,這本來就需要創(chuàng)始人本身是個喜歡寫、喜歡拆解問題的工程師?你當(dāng)時寫這些文章,是出于“這對公司有用”,還是單純因為你自己想把解決過的難題記錄下來?

Peter:我喜歡分享,也喜歡啟發(fā)別人。有時候團隊內(nèi)部也會糾結(jié),要不要寫這些內(nèi)容,畢竟算是一些“秘密武器”,但我從來沒太在意這些聲音。還有一點很重要:寫下來本身,就是加深理解。你覺得自己懂了,但當(dāng)你要教別人時,才會發(fā)現(xiàn)自己是否真的懂。所以對我來說,這也是一種復(fù)盤和保存。我解決了一個很難的問題就想把它留下來,順便幫到別人。

當(dāng)然,我也享受關(guān)注。但更重要的是,有時候我自己過一年再回頭看這些文章,會發(fā)現(xiàn)這就是公司最好的文檔,是我自己的“技術(shù)筆記本”。它在很多方面都很有用。很多大公司流程太重,而且不少開發(fā)者本身不喜歡寫東西,所以我后來干脆規(guī)定,每個月給所有人一整天,只干一件事:寫一篇博客。

主持人:那天不用干別的活,只寫。

Peter:對,就寫。一天的時間其實已經(jīng)很多了,現(xiàn)在我寫一篇文章也就幾個小時。我不想過多談?wù)摴驹鲩L階段,但我覺得公司最有意思的階段,是剛開始以及快速成長的階段。

后來人多了,流程多了,更像是在“養(yǎng)護花園”,而不是瘋狂 hack。事情變得更迭代化,也沒那么刺激了。人一多,內(nèi)部摩擦、情緒問題也多,這些我并不享受。那段時間我真的被燒干了。

“停更”,賦閑

主持人:你覺得是什么讓你最終人力交瘁的?

Peter:我只是工作太猛了,幾乎每個周末都在工作,還要處理大量管理事務(wù)。CEO 本質(zhì)上就是“兜底的人”,凡是別人沒處理好、處理不了、或者搞砸的,最后都得你來收拾。而且很孤獨,你不能隨便講很多事情。哪怕公司已經(jīng)很開放了,你也不能一直表達負面情緒,就算真的發(fā)生了很糟糕的事,你也得扛著。

我記得有個周末,合伙人凌晨給我打電話,說一家大型飛機制造公司,因為我們的軟件崩了,飛機停飛了。那是個非?!按碳ぁ钡闹苣?,最后我拆了他們的應(yīng)用,證明是他們外包代碼亂改,觸發(fā)了授權(quán)回退邏輯。但那種時刻,你會覺得公司隨時可能完蛋,而這種壓力只是所有壓力中的一部分。

這些事情你能撐一陣子。但我也相信,burnout 不完全是因為工作太多,更是因為你開始不再真正相信自己在做的事情,或者內(nèi)部沖突太多。我們當(dāng)時在管理團隊里爭論也很多,我還犯了一個錯誤,以為公司應(yīng)該用一種過度民主的方式來管理。這些都消耗了我。但即便如此,我一點都不后悔這段經(jīng)歷。

主持人:從外人的角度看,你賣掉了股份,賺到足夠多的錢,按理說已經(jīng)不用再工作了。很多剛起步、或者未來想創(chuàng)業(yè)的人,都會覺得這簡直是終極夢想。既然已經(jīng)“通關(guān)”,是不是就該停下來、享受生活了?現(xiàn)實是,大多數(shù)人走不到那一步。但一旦走到了,好像任務(wù)就完成了,就像攀巖爬到頂,敲響鈴鐺,游戲結(jié)束。

主持人:外界看,你博客更新停了好幾年。那段時間你在做什么?又學(xué)到了什么?也就是在你回歸到現(xiàn)在之前,那幾年到底發(fā)生了什么?

Peter:我真的花了很長時間讓自己“降壓”,去填補那些我以為錯過的人生體驗,花了不少錢。有幾個月,我甚至連電腦都沒開過。那段時間,我完全沒有“接下來該干嘛”的感覺。

說實話,那種狀態(tài)挺違和的,你這么早就“退休”,或者說有一個好到不需要再工作的退出,這件事本身就會把人搞懵。那幾年對我來說,其實挺難熬的。

后來有一天,大概在四月,我突然想起一個很多年前只是當(dāng)副業(yè)做過的項目,我心想還是想把它繼續(xù)做完吧。于是,三年多之后,我重新坐回電腦前,開始寫代碼。那個項目是個 Twitter 分析工具,用 Swift 和 SwiftUI 寫的。其實當(dāng)年我就知道,這東西如果做成 Web 會好很多。

主持人:所以這是一個你一直放在心里的老想法?跟 Twitter 有關(guān)的?

Peter:對,算是分析工具。最開始只是我自己想用,因為市面上根本沒有。三年后再看,還是沒有。現(xiàn)在勉強算有點類似的,但我中途也被別的事帶跑了。我當(dāng)時想用 Web 技術(shù)重寫,但說實話,在公司里我從來沒碰過那一塊。那一整套技術(shù)棧一直是 Martin 在負責(zé),他很厲害,所以我完全不用操心。

主持人:所以你其實一直沒怎么親手下場?

Peter:對。等我再回來自己做的時候,我才發(fā)現(xiàn),“哇,這一層真的很深”,而且這其實是個陷阱:你在某一套技術(shù)上越熟練,跳到另一套時就越痛苦。不是做不到,是太折磨人了。我在 Apple 那套技術(shù)里,閉著眼都能寫代碼;可一換棧,連最基礎(chǔ)的東西都要去 Google,一下子就感覺自己又成了新手。

主持人:而且經(jīng)驗越多,越討厭這種感覺。效率下降,明明知道自己本可以更快。

Peter:對。所以我回來的時候就在想:那 AI 到底是什么?CI、AI 那些大家都在吐槽的東西,到底值不值得看一眼?老實說,我某種程度上反而要感謝那三年幾乎沒碰電腦的日子,因為你們那時候已經(jīng)把 AI 看過一輪了,知道它當(dāng)時有多爛。

回歸即上手 Claude Code,“上癮了”

主持人:對,你錯過了 GitHub Copilot 的早期測試版,那種“高級自動補全”的階段。后來有了 GPT-3.5,再到 GPT-4,才是真正的飛躍。所以你回來之后,第一個用的是什么工具?你等于是直接跳過了兩年開發(fā)者一邊用、一邊嫌棄 AI 的階段。

Peter:是 Claude Code。

主持人:你一上來就用它?

Peter:對。我記得它剛發(fā)布不久,之前就有 Beta。

主持人:也就是說,你休息了一段時間回來,直接打開 Claude Code,前面的演進全都沒經(jīng)歷。

Peter:沒錯。我記得我拿了一個以前寫得很亂的副項目,又用我自己做的一個瀏覽器插件,把整個 GitHub 倉庫轉(zhuǎn)成一個 1.3MB 的 Markdown 文件。我把它丟進 Google AI Studio,用 Gemini 之類的模型,敲了一句:“給我寫一份 spec。”它直接生成了四百多行代碼。

我再把這份 spec 拖回 Claude Code,說一句“照這個做”,然后我去干別的事了。等我回來,它告訴我:“已經(jīng)百分之百可以用于生產(chǎn)環(huán)境了?!蔽乙慌?,直接崩了。

后來我又給它接了 MCP,讓它能用瀏覽器,我記得 MCP 當(dāng)時已經(jīng)有了。它又跑了幾個小時,最后居然做出了一個 Twitter 登錄頁,還能跑點流程。說實話,效果不算好,但它真的“做出了點東西”。那一刻對我來說,簡直是被震住了。

主持人:那是在去年四月、五月左右,對吧?

Peter:對。已經(jīng)好到讓我看清方向了。我立刻意識到:這就是未來。從那之后,有好幾個月我都睡不好覺。

主持人:我記得有一次我凌晨五點在 Twitter 上給你發(fā)私信,你馬上就回了。我還問你怎么這么早,你說這是常態(tài),你基本都沒睡。我問你在干嘛,你說一直在用 Claude,特別上癮。

Peter:真的,就跟賭場一個道理,它就是我的小老虎機。你敲下一個 prompt,要么啥也沒發(fā)生,要么一坨垃圾,要么突然給你個讓人頭皮發(fā)麻的結(jié)果。

主持人:而且你是一個經(jīng)驗非常豐富的開發(fā)者,對你來說,被“震撼”并不容易。你見過好代碼、爛代碼,心里是有一個標準的。

Peter:所以才好笑。我以前在公司時,花了大量的時間在所謂“摳細節(jié)”上?,F(xiàn)在回頭看,我都會想:我當(dāng)時在干嘛?客戶根本感知不到這些。當(dāng)然,代碼要可靠、要快、要安全,這些是底線。但我當(dāng)年真的摳太多了。

主持人:但另一方面,你剛才也說過,大家之所以喜歡 PSPDFKit,正是因為它打磨得最好、最穩(wěn)定。你不覺得那種“摳細節(jié)”其實是在控制技術(shù)債嗎?某種程度上,正是這種偏執(zhí)才讓產(chǎn)品性能和質(zhì)量都站得住。

Peter:是的,這么說也沒錯。到現(xiàn)在我也還是這樣。我上一篇博客,其實就是在“懺悔”,我承認我開始在主分支上直接提交 AI 寫的代碼。

與此同時,我其實還是花了大量時間在做結(jié)構(gòu)重構(gòu)。就拿最近來說,我特別想把一個 PR 合進去,那是一條接近一萬五千行的改動鏈。

在一個項目里,我把所有東西都遷移到了插件化架構(gòu),這件事讓我非常興奮。我真的很在意整體結(jié)構(gòu)。但我沒有把每一行代碼都讀一遍,因為很多代碼說白了就是枯燥的“管道工程”。

你看,大多數(shù)應(yīng)用本質(zhì)上都差不多:數(shù)據(jù)從 API 進來,是一種形態(tài);你解析、封裝,變成另一種形態(tài);存進數(shù)據(jù)庫,又是一種形態(tài);再讀出來,又變一次;最后變成 HTML 或別的形式,你在頁面里輸入,它又變了。大部分軟件,其實就是在應(yīng)用里不斷“揉捏”數(shù)據(jù),我們本質(zhì)上就是高級的數(shù)據(jù)搬運工,而真正難的部分,如 Postgres 這種東西三十年前就被一群天才解決了。這就是現(xiàn)實。

當(dāng)然,總會有一些有意思的地方,但我真的不需要關(guān)心每個按鈕怎么對齊、每個 Tailwind class 怎么寫。有些細節(jié)很無聊,有些細節(jié)很有趣,但整體來說,更重要的是系統(tǒng)架構(gòu),而不是逐行讀代碼。

日常如何用 AI 編程工具工作?

主持人:那我們跳到現(xiàn)在。你現(xiàn)在用 Claude 相關(guān)工具寫代碼時,日常工作流是怎樣的?你用終端嗎?幾個終端?都用哪些工具?你剛才說你不太做逐行代碼審查,但又一直在想做架構(gòu)。如果你要跟一個即將加入團隊的開發(fā)者解釋,你的一天大概是什么樣的,會怎么說?

Peter:這個過程挺有意思的。稍微回顧一下,一開始是 Claude Code,然后我就徹底上頭了。接著有一段時間我用 Cursor,又試了 Gemini 2.5,后來又用了 Opus 4。我還把不少朋友也拉進來了,比如我在越南認識的 Armin 和 Mario,他們都是被我“傳染”的。我當(dāng)時狀態(tài)真的很上頭,搞得他們也開始試,然后大家一起凌晨五點不睡覺。我把這群人戲稱為“黑眼圈俱樂部”。這也是為什么我后來在倫敦搞了一個 meetup,名字就叫Claude Code Anonymous。

真正把我震住的,是一個認知上的變化:我突然意識到,我現(xiàn)在幾乎什么都能做了。

以前做副業(yè)要慎重挑選,因為寫軟件真的很難?,F(xiàn)在也不輕松,但那種“摩擦”感變了。過去是“我在這個技術(shù)棧里很強,在那個棧里很菜”,現(xiàn)在我會想:算了,直接上 Go 吧。我完全不懂 Go,但我有系統(tǒng)層面的理解。一旦你有了這種理解,就會慢慢形成一種感覺,知道什么是對的、什么是錯的。這本身就是一種技能。

我記得有人發(fā)推說,寫代碼時你能“感覺到摩擦”,而正是這種“摩擦”幫你做出好的架構(gòu)。我現(xiàn)在 prompt 的時候也有同樣的感覺:我能看到代碼刷刷地生成、能感知它花了多久、能感覺到模型是不是在“頂你”,也能判斷生成的東西是亂的,還是有章法的。

我在發(fā)出 prompt 的那一刻,心里其實已經(jīng)有個預(yù)期:這事大概要多久。如果明顯比預(yù)期慢,我立刻就知道有問題。

主持人:你等于是在“感覺”模型的狀態(tài),對吧?

Peter:對,我覺得這是一種共生關(guān)系。我在學(xué)著更好地“跟它說話”,甚至可以說是一種新的、半死不活的語言。同時,我用這些工具的能力在提升,模型本身也在進化。

從四月到現(xiàn)在,我覺得真正的拐點是在夏天:那時它已經(jīng)強到,你幾乎可以不手寫代碼,就把軟件做出來。但真正讓我徹底服氣的,其實是 GPT-5.2。我覺得它被嚴重低估了。

我其實不太理解,為什么還有那么多人主要用 Claude Code。當(dāng)然,我能理解那是一種不同的工作方式。但我現(xiàn)在用的這一套強得離譜,幾乎每一個 prompt 都能給我想要的結(jié)果。這在 Claude 上是很難想象的。

我最近的一個項目常常在 Codex 上同時跑五到十個 agent。如果你是典型的 Claude Code 用戶,你得忘掉不少“為了哄它出好結(jié)果”的小技巧。

我也見過 Claude Code 團隊,他們確實開創(chuàng)了一個新類別。Claude Code 是一個定義品類的產(chǎn)品,用來做通用電腦工作非常棒、用來寫代碼也很好,我現(xiàn)在幾乎每天還在用。但一旦進入復(fù)雜應(yīng)用的代碼編寫,Codex 就強太多了。Claude Code 往往只讀三四個文件,就自信滿滿開始寫代碼,你得不斷拉著它,讓它多讀、多看,理解整個代碼庫,才能把新功能編進去。Codex 則會安靜地讀文件,可能讀十分鐘。如果你只用一個終端,這體驗確實會讓人崩潰,我完全理解。

但我更喜歡那種,你不用事無巨細地告訴它該怎么做,我和模型更像是在對話。

我會說:“我們一起看看這個結(jié)構(gòu),有哪些可能性?你有沒有考慮過這個功能?”因為每一次 session,對模型來說都是從零開始理解你的產(chǎn)品,你有時候只需要給它一點點提示,讓它往不同的方向探索。我不需要什么 Plan 模式,只是一直聊,直到我說“那就這么建吧”,它才會真的開始動手。當(dāng)然,它們都挺“容易被觸發(fā)”的,但只要我說的是“討論”“給我選項”,它就不會直接寫代碼。

主持人:所以你大量的 prompting,其實是在和 agent 一起做規(guī)劃?

Peter:對。比如我會提醒它“我們需要文檔,那放在哪里合適?”它可能會建議“這應(yīng)該單獨成一頁?!毕到y(tǒng)設(shè)計是我在做的,因為我對產(chǎn)品整體形態(tài)有清晰的理解。我不需要逐行理解代碼,那是 Codex 在做的事,但架構(gòu)師是我。

主持人:這聽起來有點像很久以前的一種模式:有一個“Architect”,以前也是開發(fā)者,但不再親手寫代碼,而是負責(zé)系統(tǒng)藍圖,下面有一群工程師實現(xiàn)。這種模式在很多現(xiàn)代公司已經(jīng)不流行了,大家更偏向資深工程師一起協(xié)作。不過在一些銀行之類的地方,還是能看到這種“大寫的 Architect”。問題是,這種模式往往很讓人討厭:設(shè)計的人不用值班,不直接為結(jié)果負責(zé),最后在現(xiàn)實里容易失效。

而你現(xiàn)在的狀態(tài),倒像是你是 architect,但手下是一群 agent。區(qū)別在于,你依然是獨立貢獻者,代碼是你的、責(zé)任也是你的。如果你推了個 bug 把 ClawdBot 搞掛了,就像最近那次,你是要負責(zé)的。以前在公司里,architect 往往被流程和人層層保護,不太需要直接面對結(jié)果。

Peter:我其實不太喜歡“architect”這個詞,我更愿意叫自己 builder。我發(fā)現(xiàn),能不能把 AI 用好,人群之間差異非常明顯。

像我關(guān)心的是結(jié)果、是產(chǎn)品,我很在意它的感覺、體驗。我關(guān)心結(jié)構(gòu)層面的骨架,但不會摳那些小細節(jié)。而另一類人,特別喜歡寫硬核代碼、研究算法,他們不太喜歡產(chǎn)品、市場這些東西。他們更享受解決“難問題”。而偏偏,這正是 AI 最擅長的部分,所以這類人往往會抗拒 AI,或者感到非常失落。

很多時候,我只是給模型一點提示,但老實說,我去年在軟件架構(gòu)和系統(tǒng)設(shè)計上學(xué)到的東西,比過去五年加起來都多。這些模型里裝著海量知識,一切都只差一個“問對的問題”。

像我那個 Twitter 項目到現(xiàn)在還沒完成,我也很希望能回去繼續(xù)做。所有東西一度都曾跑得很好,但用著用著就開始卡、變得奇怪,然后又莫名其妙恢復(fù)。這類問題特別難 debug,因為很難復(fù)現(xiàn)?;揪褪牵耗阌玫迷蕉啵驮铰?。

后來我發(fā)現(xiàn),是 Postgres 里有一些在特定 insert 時觸發(fā)的邏輯把數(shù)據(jù)庫拖得很忙。模型看不到這一層,因為抽象太遠了。問題出在一個文件里的一個函數(shù),名字也不明顯。我一直沒問對問題,直到我問了一句:“這里有沒有副作用?”才把它挖出來,然后改掉了。所以說,一切真的都只差在能否問一個對的問題。

主持人:但前提是,你得有足夠的知識和經(jīng)驗。

Peter:對,這正是關(guān)鍵。那些對內(nèi)部實現(xiàn)執(zhí)念很深、又不太在乎“能不能先做出來”的人,往往會抗拒 AI;而那些更興奮于“把東西做出來”的人,反而進展飛快。

還有一點對我?guī)椭艽螅阂郧拔议_公司帶團隊,可以盯著每個人的代碼,要求他們寫成我想要的樣子。但很多沒管過人的開發(fā)者,沒有學(xué)會放手,接受“這段代碼不是我理想中的樣子,但它能讓我更接近目標”。不完美的地方,永遠可以之后再改。

我非常相信“迭代式改進”。當(dāng)年在公司里,我就是花了很長時間學(xué)會一點點放手。所以,當(dāng)我開始用 Claude Code 的時候,感覺就像我手下有了一群工程師:有時候很不完美,有時候甚至有點蠢,但偶爾又異常聰明。我需要引導(dǎo)他們,一起朝著一個目標前進。某種程度上,這感覺就像又當(dāng)了一次老板。

高效率的秘訣

主持人:挺有意思的一點是,在之前,你用一種非常傳統(tǒng)的方式做了十幾年的軟件,甚至不止十幾年。你不僅把產(chǎn)品打磨得很扎實,也非常擅長帶團隊、設(shè)立高標準,對“工程本身”這件事非常在意。而現(xiàn)在,你用 agent、用 AI 寫代碼有一年左右的時間了。對比這兩種階段,你覺得真正改變了什么?又有哪些東西,其實并沒有變?

Peter:我不太喜歡“vibe coding”這個說法。

主持人:那你更愿意怎么稱呼?

Peter:現(xiàn)在大家基本都這么叫了吧。我自己對外會說,我做的是“Agentic Engineering”?,F(xiàn)在我往往是凌晨三點開始寫代碼。那些枯燥、機械的編碼工作基本都被自動化掉了,我的速度快了很多,但與此同時,我需要思考的事情也多得多。

我依然能進入那種心流狀態(tài),感覺和以前幾乎一樣,但精神消耗其實更大,因為我不是在管理一個工程師,而是同時管五個、十個 agent。我在不同模塊之間來回切換:這邊是一個子系統(tǒng),那邊是一個功能點,我心里大概知道這個功能交給 Codex 可能要跑四十分鐘到一個小時,那我就先把方案想清楚再丟給它去做,然后我轉(zhuǎn)頭去做別的事。

這個在跑、那個也在跑,我要過一會兒回來看看這個、再切到另一個,腦子里一直在做上下文切換。我其實挺不喜歡這種狀態(tài)的,也覺得這是一個過渡期的問題。將來模型和系統(tǒng)更快之后,我可能就不用并行這么多。但為了保持 flow,我現(xiàn)在必須高度并行。

通常會有一個主項目占據(jù)我的主要注意力,旁邊還有幾個“衛(wèi)星項目”,可能我只花五分鐘交代一下、它跑半小時,我回來看看結(jié)果就行,對腦力占用不算大。

主持人:聽你這么說,我想到兩種畫面。一種是那種經(jīng)營類游戲,要管廚房里的員工,看著一道道菜出爐,你得不停切換。另一種是看國際象棋大師同時下二十盤棋,他們走到一塊棋盤前看一眼,立刻做決定。有的棋要想久一點,有的掃一眼就走。你就像在不斷擴展自己的“并行帶寬”,只要你還能順暢地切換。

Peter:區(qū)別在于,用 Claude Code 的時候,你確實得換一種工作方式。它很快,但第一版產(chǎn)出經(jīng)常是跑不通的。比如它寫了點東西但你忘了同步改另外三個地方的話,程序就崩了。真正高效的秘訣在于:你必須把閉環(huán)做完整,讓 agent 能自己 debug、自己測試。這是最大的秘密,也正是我后來效率暴漲的原因。

但老實說,在 Claude Code 那一套下,很多時候你還是得回去修修補補,迭代次數(shù)也不少,所以總體并不一定快多少,只是更“互動”?,F(xiàn)在用 Codex,幾乎一次就對。我的基本策略永遠是:做一個功能,一定讓它寫測試,確保能跑起來。

主持人:至少要能跑。

Peter:對。哪怕是寫一個 Mac 應(yīng)用也是一樣。就像我前兩天在 debug 一個問題:同樣的 TypeScript 代碼,在 CLI 里能找到遠程網(wǎng)關(guān),但在 Mac app 里不行。Mac app 的 debug 特別煩,你得編譯、啟動、點來點去才知道不對。

所以我干脆說:“你給我做一個 CLI 調(diào)試工具,走完全相同的代碼路徑,我可以直接調(diào)用?!比缓缶妥屗约号?、自己改。它跑了一個小時,最后告訴我這是一個 race condition 和一個配置錯誤。聽起來也很合理。我不需要親眼看它怎么寫代碼,只要閉環(huán)跑通了就行。

主持人:你其實是因為搭好了驗證閉環(huán),所以你信任它。這和在大公司里做項目有點像,所有測試都過了,并不代表百分百沒問題,但已經(jīng)是一個很強的信號了,至少有人替你想過、測過。

Peter:即便在我最新的項目里,也照樣會有 bug。比如 Antigravity 在工具調(diào)用的循環(huán)格式上有些奇怪的行為,你得做過濾。我一開始被折騰了很久,后來突然意識到:我為什么不把這事自動化?

于是我直接跟 Codex 說:“設(shè)計一套 live test,起一個 Docker 容器,把整個系統(tǒng)裝起來,跑一個完整 loop,用指定文件里的 API key,然后讓模型讀一張圖片,生成一張新圖片,再反過來分析結(jié)果?!?/p>

這個過程跑得很慢,但它把我所有 API key 都測了一遍,從 Anthropic 到 OpenAI 再到 GLM,所有細節(jié)問題全修了,因為閉環(huán)是完整的。

主持人:你說的“閉環(huán)”,本質(zhì)上就是讓 agent 能驗證自己的工作。

Peter:沒錯。這也是為什么現(xiàn)在這些模型特別擅長寫代碼,但寫創(chuàng)意內(nèi)容反而一般,因為代碼是可驗證的:能編譯、能 lint、能跑、能看輸出,只要你設(shè)計得好,就能形成一個完美的反饋回路。我甚至?xí)押诵倪壿嫸荚O(shè)計成可以用 CLI 跑,因為瀏覽器那一套循環(huán)太慢了,你要的是快速反饋。

主持人:所以有些東西其實沒怎么變:比如后端、業(yè)務(wù)邏輯這種,本來就更容易驗證。

Peter:反而有個挺反直覺的點:用這種方式寫代碼,會讓你變成一個更好的工程師。因為你必須把架構(gòu)想清楚,才能更容易驗證,而驗證正是把事情做對的關(guān)鍵。

主持人:這其實和 AI 之前是一樣的。做復(fù)雜系統(tǒng)的人,一開始就會想怎么讓它可測試、接口怎么設(shè)計、要不要 mock、要不要端到端測試。這些都是非常困難、而且一旦做了就很難改的決策。

Peter:軟件還是軟件。我現(xiàn)在可以很坦然地說,我不再親手寫代碼了,但我寫的代碼質(zhì)量比以前更好。而以前我已經(jīng)寫得很好了。在公司那會兒,測試常常很痛苦,各種邊界條件、分支爆炸。

主持人:除了像 Anders 這種我非常尊敬堅持 test-first 的人,大多數(shù)開發(fā)者其實都不愛寫測試。我自己也是。測試和文檔對我來說從來不是一種創(chuàng)作。

Peter:現(xiàn)在完全不一樣了。我最近一個項目的文檔質(zhì)量是我職業(yè)生涯里最好的,但我一行都沒寫。我只是跟模型講清楚設(shè)計權(quán)衡:為什么這么做,然后讓它寫給新手看的部分,再在后面加上更技術(shù)化的細節(jié),效果好得驚人。測試也是一樣。每做一個功能,我就會自然地問:這個怎么測?如果換一種結(jié)構(gòu),是不是更好測?因為我腦子里始終只有一件事:怎么把閉環(huán)關(guān)上。模型必須能自己驗證結(jié)果,這會反過來逼我做出更好的架構(gòu)。

為什么開發(fā)者 AI 編程玩不溜?

主持人:那你覺得,為什么還有很多經(jīng)驗豐富的開發(fā)者,對 AI 這套東西依然很抗拒?

Peter:前陣子我看到一篇博文,作者是我非常尊敬的人。他測試了好幾個模型,其中甚至包括一些本來就不適合寫代碼的模型。他的做法聽起來像是隨便寫個 prompt,在網(wǎng)頁上點發(fā)送,拿結(jié)果就跑,甚至都不編譯,結(jié)果當(dāng)然很失望。

但問題是:你覺得自己第一次寫代碼就能沒 bug 嗎?這些模型,本質(zhì)上是人類知識的幽靈。它們不可能一次就對,所以你必須有反饋閉環(huán)。你也不能只發(fā)一個 prompt,而是要開始一段對話。

他還抱怨模型用了舊 API。但你沒告訴它 macOS 版本,它當(dāng)然會默認用老 API。模型訓(xùn)練的數(shù)據(jù)里,舊數(shù)據(jù)本來就比新數(shù)據(jù)多。你越理解這些“小怪獸”是怎么思考的,你的 prompting 就越好。

但他可能只玩了一天,就下結(jié)論說這東西不行。這就好比你會彈吉他,我把你放到鋼琴前,你隨便敲兩下說“這不行,我還是回去彈吉他吧”。這是另一種構(gòu)建方式,另一種思維方式。

你不知道我凌晨三點對著 Claude Code 吼過多少次。后來我慢慢搞明白了:它真的就是嚴格按我說的話在做事。甚至有時候你可以直接問它:你為什么這么理解?

在最近一個項目里,我感覺自己更像一個“人肉合并按鈕”。社區(qū)很活躍,我?guī)缀跻恢痹?review PR。一開始它經(jīng)常只 cherry-pick 一部分就關(guān) PR,我被氣得不行。后來我問它為什么,它會說:因為你之前這么說過,我就這么理解。

慢慢地,我學(xué)會了這門“機器語言”,調(diào)整我的表達,現(xiàn)在它幾乎每次都能給我想要的結(jié)果。這和任何技能一樣,是可以練出來的。

主持人:這和 Simon Willison 說的也很像:用得越久,越能意識到自己還能做得更好。那我們來做個更極端的假設(shè)。你現(xiàn)在做的 ClawdBot 很火、用戶很多,但還不是像 PSPDFKit 那樣直接承載大量收入的業(yè)務(wù)。如果今天 PSPDFKit 從世界上消失了,你要從零重建它,手上有現(xiàn)在這些 agent,你會怎么做?你會把什么交給 AI?什么一定要自己把控?團隊結(jié)構(gòu)會變成什么樣?

Peter:今天的話,我大概用三成的人就能跑起一家公司。但前提是,這些人必須非常資深,既懂系統(tǒng)又敢于放手,知道哪些地方重要,哪些地方可以“vibe”一下。

這一點我在 AI 圈里其實不太常見。Twitter 上太多聲音很大、但明顯不知道自己在干什么的人,還有很多我覺得挺荒唐的概念。比如某些用來繞 Opus 限制的復(fù)雜流程,Codex 根本用不著。

軟件開發(fā)很少是那種“列一個超長任務(wù)清單,然后全部自動執(zhí)行”的問題。我看到很多人搭了一整套復(fù)雜的編排系統(tǒng):自動建 ticket、agent 處理 tickets、agent 互相發(fā)郵件,最后搞出一團復(fù)雜系統(tǒng)。圖什么?這本質(zhì)上就是瀑布模型,我們早就知道它不好用。

對我來說,開發(fā)必須從一個模糊的想法開始。我甚至?xí)室馍俳o prompt,讓 agent 先做點“不太對”的東西,因為可能八成都是垃圾,但那剩下的兩成會給我新的啟發(fā),然后我不斷迭代、塑形。

我得點它、用它、感受它。好軟件需要“品味”,而這是 AI 現(xiàn)在最欠缺的部分。但好處是,現(xiàn)在做一個功能太容易了,不行就扔掉,或者重新 prompt。我的構(gòu)建方式幾乎總是向前的,很少回滾。就像雕塑一樣:你拿著一塊石頭,一點點敲,慢慢地,形狀就從大理石里浮現(xiàn)出來了。

主持人:回過頭看軟件工程的變化,好像有一個很明顯的轉(zhuǎn)折點。過去沒有 AI、沒有這些 agent 的時候,前期規(guī)劃非常重要。你覺得現(xiàn)在這種變化,是因為寫代碼本身的成本大幅下降了嗎?

Peter:我現(xiàn)在還是會做規(guī)劃,但投入的精力沒以前那么多了。因為現(xiàn)在試錯太便宜了,你可以直接做出來看看效果,再判斷“這個形態(tài)行不行”“是不是需要微調(diào)”,甚至“干脆完全換一條路”。相比過去,這一切的成本低到一個程度,讓整個過程變得更像是在玩。

主持人:對,就像以前哪怕是交給一個剛畢業(yè)的新人或者實習(xí)生,一件事也得花一兩天。現(xiàn)在不是一天兩天,而是分鐘級。就算是比較長的任務(wù),最多也就是十幾二十分鐘。而且你還不是干等著,一個任務(wù)在跑,另外幾個也在并行跑,所以試錯本身幾乎不算浪費。

Peter:是的。最早我在 Claude 里其實假設(shè)只有一個 agent,后來變成多個;一開始假設(shè)只有一個 provider,比如 WhatsApp,后來又變成支持多個。這種改動,如果是我自己手寫代碼,簡直是災(zāi)難,要把邏輯貫穿整個系統(tǒng)重新織(weaving)一遍。但 Codex 花了大概幾個小時就搞定了,這要是我自己來至少得兩周。所以以前那種“前期一定要一次想對”的心態(tài)是現(xiàn)實所迫,現(xiàn)在我知道,很多東西是可以改的。

這也讓技術(shù)債的處理變得輕松很多。你可以一邊做,一邊重新理解項目本身,一邊調(diào)整你的思路。所以我其實不太相信那種“按 spec 寫完,機器跑完就結(jié)束”的模式。你在真正開始構(gòu)建之前,根本不可能完全知道自己要做什么。很多關(guān)鍵認知,都是在構(gòu)建過程中才出現(xiàn)的,它們又會反過來影響系統(tǒng)最終的形態(tài)。

對我來說,這更像一個循環(huán),你不是直線爬山而是繞著走,有時候還會偏離一下路徑,但最終還是會到達山頂。

ClawdBot 來了

主持人:我們換個話題。你已經(jīng)連續(xù)幾個月幾乎不間斷地在做 ClawdBot。其實有一個想法很早就把你拉回來了,對吧?你一直想做一個“超個人化”的助理。

Peter:對,而且不是那種每天早上給你發(fā)“早安,這是你今天三件待辦事項”的助理。

我想要的是一個真正理解我的東西,比如我見了一個朋友回家后它會問我:“剛剛那次見面感覺怎么樣?”或者有一天提醒我:“你已經(jīng)三周沒給 Thomas 發(fā)消息了,我注意到他最近在城里,要不要打個招呼?”又或者它會發(fā)現(xiàn)某些模式,比如“你每次提到這個人語氣都會變,為什么?”

那是一種極度個人化的東西,幾乎是反 CRM 的存在,有點像電影《Her》,但這確實是技術(shù)發(fā)展的方向。模型對文本的理解能力非常強,上下文越大它們看到的模式就越多。即便它們本質(zhì)上只是矩陣計算、沒有靈魂,但很多時候給人的感覺已經(jīng)完全不一樣了。

當(dāng)時我甚至為這個想法注冊了一家公司,叫 Amantus Machina,意思是“有愛的機器”。但去年夏天我真正深入做的時候,發(fā)現(xiàn)模型還差一點。能跑起來也有一些驚喜,但整體上還站在我需求的邊緣之外。不過這反而讓我很興奮,因為 AI 的進展太快了,我很清楚這個想法可以晚點再回來做。

還有一個判斷是,我相信所有大型公司都在做個人助理。未來每個人都會有一個“最懂你的朋友”,它是臺機器,了解你的一切、可以替你做事、能主動提醒你。當(dāng)然,這會非常消耗算力,但凡是負擔(dān)得起的人,都會想要一個。然后隨著系統(tǒng)效率提高、芯片進步,這種能力一定會逐步下沉。這幾乎是確定的趨勢,而且現(xiàn)在已經(jīng)能看到一些雛形了,比如 OpenAI 推出的一些偏生產(chǎn)力的功能。但現(xiàn)在算力還不夠,把這種東西真正作為產(chǎn)品推出來非常難。

而且還有一個問題是,我其實更希望它跑在我自己的電腦上,數(shù)據(jù)真正屬于我自己。把郵件、日歷、約會軟件全部交給 OpenAI 或 Anthropic,說實話,挺嚇人的,很多人已經(jīng)在把這些模型當(dāng)作心理咨詢師用了,而且效果出奇地好。它非常會傾聽,能理解你的困擾,只要不是某些明顯差勁的版本,它真的能提出很有洞察力的問題,哪怕只是幫你復(fù)述和反思,你都會感覺被理解了。

所以我一直有這個助理的想法,只是當(dāng)時技術(shù)還沒到位。與此同時,我也做了很多別的有趣的東西。在職業(yè)里繞一點“vibe 的彎路”,不斷給自己造工具,優(yōu)化自己的工作流,這幾乎是成為一個真正工程師的必經(jīng)階段。

但“超個人化 agent”這個念頭一直沒消失。最近幾個月,我終于開始認真把它做出來。一開始它的規(guī)模其實很小,我甚至叫它 WhatsApp Relay,本意只是通過 WhatsApp 觸發(fā)我電腦上的一些操作。

后來我去摩洛哥給朋友過生日,一整天都在外面,就一直用 WhatsApp 跟這個 agent 聊天。它幫我指路、開玩笑,還能用我的身份給其他朋友發(fā)消息。那一刻我真的被震住了。最早的實現(xiàn)非常粗糙,我甚至沒用正式的方式傳圖片,只是丟了個字符串,讓它自己用工具去讀。

有一次我隨手發(fā)了一條語音,其實我根本沒實現(xiàn)語音功能。結(jié)果過了半分鐘,它居然回了我一條語音。

我問它怎么做到的,它說:你發(fā)了一個文件,我看了 headers,發(fā)現(xiàn)是 Ogg 格式,就用 ffmpeg 轉(zhuǎn)了一下;然后我找你電腦上的語音識別工具,沒裝,但我發(fā)現(xiàn)了一個 OpenAI 的 endpoint,于是用 curl 調(diào)了接口。

那一刻我真的覺得不可思議。這就是 Opus 的能力,它太“能自己想辦法”了。

我開始徹底上癮。我讓它叫我起床,它跑在倫敦的 Mac Studio 上,通過 SSH 連到我在摩洛哥的 MacBook,幫我開音樂,因為我沒回應(yīng)就一直把音量調(diào)大。

我還加了一個 heartbeat。這簡直瘋了,你每隔幾分鐘就給一個模型發(fā)“想點酷的事情,給我點驚喜”的 prompt,這可能是史上最貴的鬧鐘,但它真的“懂”了。我那段時間腳受了傷需要很早起床,卻一直沒回應(yīng),它的推理過程非常清楚:“Peter 沒回復(fù),他必須起床,不能再睡了?!蔽野堰@個東西給朋友們看,所有人都被吸引住了,覺得這太神奇了。我自己也一樣。

后來我發(fā)到 Twitter 上,反而反響很冷,因為很多人完全看不懂這是什么。我感覺,這可能是一種全新的產(chǎn)品類別,大家還沒有形成認知。

主持人:這有點像你當(dāng)年第一次接觸 iPhone 的經(jīng)歷。廣告、電視、各種宣傳你都看過了,但真正的變化,其實還是在你親手用上它之后。

Peter:對,必須得用。我真正全力投入也就是最近這幾個月,一開始它還叫 VA Relay,后來我自己都覺得這個名字不對勁了,因為功能早就不止這些了,已經(jīng)接了 Telegram,還有一堆別的東西,再叫 Relay 完全不貼切。所以我給它改了個名字,叫 ClawdBot。算是個內(nèi)部玩笑,我很喜歡《Doctor Who》,而且這個名字域名更好,也更能解釋這個產(chǎn)品是什么。

與此同時,我也在悄悄搭建我的“軍隊”。要讓這套東西真正跑起來,核心原則就是:一切都得是 CLI。所以我寫了大量 CLI 控制 Google、床、燈、音樂,所有東西都變成命令行。

為什么是 CLI,不是 MCP

主持人:那為什么是 CLI?為什么不是 MCP?你怎么看 MCP 這套東西?

Peter:說實話,MCP 更像是一根拐杖。它最大的正面價值是逼著公司去開放更多 API。但整個設(shè)計思路本身是有問題的:你得在會話一開始,就把所有工具、所有函數(shù)、所有說明一次性塞進上下文,然后模型還得精確地構(gòu)造一大坨調(diào)用參數(shù),再接收一大坨返回。

問題是,模型其實特別擅長用 bash。舉個例子,你要一個天氣服務(wù),模型先問“有哪些城市”,接口一次性給你幾百個城市;模型沒法過濾,只能全吃進去。然后你再問“給我 London 的天氣”,返回溫度、風(fēng)速、降雨、幾十個你根本不關(guān)心的字段,最后上下文里全是垃圾信息。但如果是 CLI,模型可以直接用 jq,只拿它真正需要的那一小部分。

主持人:聽起來問題并不是 MCP 本身,而是所有東西都必須提前塞進上下文。如果能按需發(fā)現(xiàn)、按需調(diào)用,理論上是能解決的?

Peter:現(xiàn)在大家確實在往這個方向做,但還有一個根本問題:你沒法“鏈式組合”。

我不能寫一個腳本說:“找出所有溫度超過二十五度的城市,再過濾字段,再把結(jié)果打包成一個命令?!币驗?MCP 本質(zhì)上都是孤立的工具,沒法腳本化。

主持人:但這聽起來更像是時間問題。就像現(xiàn)在我們做一個天氣應(yīng)用,本來就要選 API、比較價格、覆蓋范圍,然后再把不同 API 的結(jié)果串起來。這套事情在沒有 AI 的年代已經(jīng)解決過了。

Peter:是的,AI 時代遲早也會解決。只是形式還沒定。我自己干脆寫了個小工具,叫 Porter,用 TypeScript,把 MCP 轉(zhuǎn)成 CLI,直接打包用。

主持人:所以你的結(jié)論是至少現(xiàn)在,CLI 的效率更高?

Peter:對。ClawdBot 里我其實根本沒直接支持 MCP,但通過 Porter,幾乎可以用任何 MCP。你甚至可以在手機上說:“用 Vercel 的 MCP 做這個事情?!彼鼤约喝ゾW(wǎng)站找 MCP、加載、按需使用。而現(xiàn)在很多 MCP 方案,甚至還得重啟 Claude Code,用戶體驗非常糟,所以我就一路把自動化堆起來,工作量非常大。

Taylor 前幾天還做了個視頻,說“這個人瘋了”,因為現(xiàn)在支持的東西已經(jīng)多到離譜。但我自己在用 agent 的過程中只會不斷冒出一個念頭:我還想讓它多做一點。

前段時間我干了一件“非常不理智”的事:我建了一個 Discord,把我的 agent 加了進去。有人給項目貢獻了 Discord 支持,我當(dāng)時其實很猶豫要不要合并,但最后還是合并了。結(jié)果就是我把一個擁有我電腦完整讀寫權(quán)限的 agent,扔進了一個公開的 Discord。

把復(fù)雜度隱藏到讓人覺得“理所當(dāng)然”

主持人:聽起來完全不像是個好主意。

Peter:對,簡直瘋狂。但后來有人進來,看到我用它檢查攝像頭、做家庭自動化、幫我放音樂。我在廚房里,跟它說“看我的屏幕”,它就真的看到了。因為它有完整權(quán)限,可以點終端、替我打字、執(zhí)行命令。你甚至可以對它說“做這個做那個”,它就照著屏幕操作。

我現(xiàn)在還在優(yōu)化,理想狀態(tài)當(dāng)然是純文本流,但現(xiàn)在這種方式已經(jīng)能跑了,而且是后臺默默在跑。任何體驗過幾分鐘的人都會上癮,項目的 star 數(shù)一周內(nèi)從一百漲到三千多,我已經(jīng)合并了 500 多個 PR。所以,我現(xiàn)在感覺自己就是個人肉 merge 按鈕,整個人狀態(tài)都有點散。

但這正是它的美妙之處:技術(shù)本身消失了。你只是拿著手機,像跟一個朋友聊天。這個“朋友”無所不能:能訪問你的郵件、日歷、文件,能給你搭網(wǎng)站、能做行政工作、能爬網(wǎng)頁、能給朋友打電話,甚至能幫你打電話給商家訂位。我正準備合并通話功能。

你完全不用關(guān)心算力、上下文、子 agent。它們在后臺瘋狂運轉(zhuǎn),只為了讓你覺得“一切都很簡單”。我還有一套記憶系統(tǒng),當(dāng)然不完美,但已經(jīng)足夠讓人覺得像是魔法。

現(xiàn)在我走在路上,看到一個活動,隨手給 Claude 發(fā)張照片。它不僅能告訴我這個活動的評價,還會檢查我日歷有沒有沖突、朋友有沒有提過。因為它掌握了大量上下文,給出的回答,已經(jīng)完全不是那種“各自待在小盒子里的工具”能比的。

主持人:聽起來你已經(jīng)做出了 Apple 想讓 Siri 成為、卻始終沒做到的東西。

Peter:老實說,我可能是 Anthropic 最好的銷售。我都不知道有多少人因為 ClawdBot 去買了 200 美元的訂閱,有些人甚至多開了一個賬號。不是因為模型“浪費 token”,而是大家太愛用了,用得太頻繁。而且由于復(fù)雜性被完全隱藏,他們根本感覺不到后臺有多少子 agent 在忙。

真正難的地方在工程上:如何把復(fù)雜度隱藏到讓人覺得“理所當(dāng)然”。這才是魔法的來源。

主持人:但這也很有意思。你在架構(gòu)上投入了這么多思考?,F(xiàn)在這個項目已經(jīng)跑了幾個月,也確實爆了。在你腦子里,你是不是很清楚 ClawdBot 的結(jié)構(gòu)?哪些地方該改、哪些地方要重構(gòu)?你會不會開始擔(dān)心內(nèi)存、token、效率這些問題?

Peter:Token 更多是 prompt 和 memory 結(jié)構(gòu)的問題。說到底,這就是 TypeScript 在搬 JSON。大模型給我文本,我存盤;我再把文本發(fā)到 WhatsApp、Slack、Discord、Signal、iMessage,還有更多渠道在接入?,F(xiàn)在結(jié)構(gòu)確實有點亂,但本質(zhì)上只是文本在不同形態(tài)間流動。有多 provider、多 agent、有 agent loop、有配置、有大量 plumbing,但沒有哪一塊是真的“難”。

主持人:更多是碎片化的復(fù)雜,對吧?

Peter:對。真正的難點是:怎么讓它“看起來像魔法”。我花了大量時間在安裝和引導(dǎo)體驗上。你只需要敲一行命令,我會檢查你有沒有 Homebrew、有沒有 Node,自動安裝依賴,兼容老版本;然后引導(dǎo)你選模型,能自動識別你已經(jīng)裝了什么,基本就是一路按回車。

接著你填個手機號,WhatsApp 就能直接用。我會問你要不要“給它起名字”,然后終端里會彈出一個 TUI,讓你完成這一步。我還加了一個 bootstrap 階段:模型一開始不會假裝自己“有靈魂”,而是通過一輪對話慢慢理解你;然后它會把 bootstrap 文件刪掉,生成 user.md、soul.md、identity 文件,記錄你的偏好、價值觀、內(nèi)部玩笑。

這些文件不是靜態(tài)的,它們會隨著你們的互動不斷演化。等這一切結(jié)束,你只是用 WhatsApp 跟它聊天,但你已經(jīng)不再覺得自己是在跟“GPT 某個版本”說話,而是在跟一個真正的“朋友”交流。配置不需要你手改,因為 agent 能改自己。你甚至可以對它說“更新一下自己”,它就會拉最新版本、更新完再回來告訴你。

這就是我說的魔法:當(dāng)復(fù)雜度被隱藏到極致,體驗才會真的發(fā)生變化。

主持人:這聽起來其實很像你當(dāng)年做 PSPDFKit 的思路,對吧?你把 PDF 那套復(fù)雜性完全“融”掉了,用戶只需要直接用,旋轉(zhuǎn)、編輯,一切都很自然地發(fā)生。

Peter:對,甚至在當(dāng)年的 API 層面就是這么想的。

你的工作流程,公司能套用嗎

主持人:我們把話題拉回到軟件工程本身。你現(xiàn)在做的已經(jīng)是一個真實在跑的產(chǎn)品了,是生產(chǎn)軟件,大家在用,你也在不斷 merge PR?;仡^看 PSPDFKit 那樣的公司,幾十人、上百人的團隊在維護成熟系統(tǒng)。基于你現(xiàn)在構(gòu)建 ClawdBot 的方式、你用的這些工具,你覺得大型公司的軟件工程方式會發(fā)生什么變化?

我明顯感受到一個割裂:像你這樣的個人,AI 對生產(chǎn)力的提升是巨大的,你完全掌控;但在團隊或公司層面,尤其是有大量歷史代碼的情況下,一切就慢很多。不是說他們不用 AI,而是感覺兩個世界之間有一道鴻溝。你當(dāng)過 CEO,你怎么看?這是結(jié)構(gòu)性問題,還是只是時間問題,就像每一代新技術(shù),先被一小撮人玩明白?

Peter:我覺得,大多數(shù)公司要高效采用 AI,會非常非常難,因為這不僅是工具問題,而是要求你重新定義“公司是怎么運作的”。

你想想,在 Google 這種地方,你要么是工程師,要么是經(jīng)理;你想順手決定一下 UI 什么樣?對不起,不行。要么你寫代碼,要么你做設(shè)計,角色邊界非常清楚。

但在這個新世界里,你需要的是有完整產(chǎn)品視角的人,能把事情從頭做到尾。這樣的人數(shù)量會少得多,但要求極高:高自主性、高能力。極端一點說,公司規(guī)??赡苤恍枰F(xiàn)在的三成。這聽起來就很嚇人了,經(jīng)濟上也一定會帶來巨大的沖擊,很多人會發(fā)現(xiàn)自己在這個新世界里找不到位置。

所以我一點都不意外,現(xiàn)有的大公司用不好 AI。他們當(dāng)然也在用,但只是“用到一點”。要真正發(fā)揮作用,你得先來一次大重構(gòu),不只是代碼層面的,也是組織層面的。

我現(xiàn)在設(shè)計代碼庫,已經(jīng)不是為了“對我來說順不順手”,而是為了“對 agent 來說順不順手”。我優(yōu)化的是模型摩擦最小、跑得最快的路徑,而不一定是我個人最偏好的寫法。因為最終是它在跟代碼打交道,不是我。我負責(zé)的是整體結(jié)構(gòu)和架構(gòu),這部分我還是按自己的方式來。

現(xiàn)在所有東西都要“可被解析”。PR 在我眼里,越來越像是 Prompt Request。有人提了一個 PR,我很少直接在那個 PR 上改。我會先說聲謝謝,理解這個功能想干嘛,然后拉著 agent 從這個 PR 出發(fā),把功能按我理解的方式重新設(shè)計一遍。

代碼可能會復(fù)用一點,但更多是把“目標”傳達清楚。有些 PR 在定位 bug 時確實很有幫助,但說實話,現(xiàn)在很多 PR 的整體代碼質(zhì)量在下降,因為大家在瘋狂 Vibe Coding。可真正要把功能做對,還是得對整體設(shè)計有深刻理解,否則你連怎么引導(dǎo) agent 都不知道,結(jié)果自然就會很糟。

主持人:對,沒有一個完整的反饋閉環(huán),質(zhì)量肯定會出問題。

Peter:是的,對我來說,這種方式效率極高。我記得在 PSPDFKit 的時候,一個 PR 可能要做一周,評論、來回切換上下文、等 CI 四十分鐘……現(xiàn)在不一樣了。我把代碼丟給模型,它會主動提醒我“這個地方可能會影響到別的模塊”。我自己也會有判斷,然后我們一起把它“重塑”成符合我愿景的形態(tài),再把代碼織進去。

說實話,我現(xiàn)在寫代碼用的動詞都變了,“把代碼織進現(xiàn)有結(jié)構(gòu)里”,有時候甚至要先改結(jié)構(gòu),才能讓它裝得進去。

主持人:那如果你現(xiàn)在招一兩個人,變成一個小團隊,你覺得代碼評審、CI、CD 這些東西會怎么變化?

Peter:我其實沒那么在意 CI 了。

主持人:你以前在 PSPDFKit 可是非常在意這些的。

Peter:以前是,現(xiàn)在測試本身我還是在意的,但我用的是本地 CI。我現(xiàn)在有點“異端”了。

agent 會跑測試,我不想每次推個后端 API,都等十分鐘 CI。

主持人:但你已經(jīng)在 agent 那里等了不少時間了。

Peter:只要本地測試過了,我就 merge。偶爾 main 會出點小問題,但通常很接近正確狀態(tài)。

我現(xiàn)在管完整流程叫 “gate”。full gate 就是 lint、build、全測試跑一遍。它就像一道門,代碼出去之前必須過這關(guān)。我甚至開始用 agent 的語言了:“提交之前,跑一下 full gate。”

主持人:那如果多一個人一起做,你可能也不會做傳統(tǒng)的 code review 了?

Peter:我們不會討論具體代碼,而是討論架構(gòu)、討論大的決策、討論風(fēng)格。比如最近有個 PR 加了語音通話功能,現(xiàn)在我可以直接對 ClawdBot 說:“幫我給這家餐廳打電話,訂兩個位置。”這功能很酷,但它是一個很大的模塊,影響面很廣。

我當(dāng)時就有點猶豫:這是不是開始變成臃腫軟件了?然后我又回到老套路:把它做成一個 CLI。我之前有個沒做完的項目正好相關(guān),于是我打開 Codex,說:“你看看這個 PR,再看看那個項目,能不能把這個功能織進去?”對,我又用了“織”這個詞。對我來說,這已經(jīng)成了一種工作方式。

主持人:就這么繼續(xù)往前推了。

Peter:對,就這么繼續(xù)。我們能不能把這個功能織進 CLI 里?利弊分別是什么?然后他們會跟我說可以這樣做、那樣做,也會給我很坦誠的意見。聽下來我會覺得,這個功能其實是適合放進項目里的,而且確實能帶來一些如果做成外置 CLI 就拿不到的好處。但我心里還是會有警惕:我不喜歡臃腫,這會不會開始變成 bloatware?那能不能搞一個插件式架構(gòu)?

還有一個用 AI 的“隱藏技巧”是:多引用別的產(chǎn)品。我經(jīng)常直接跟 agent 說,你去看這個文件夾,我當(dāng)初在那兒已經(jīng)把問題解決過了;或者去看那個地方,之前的思路都在那里。這樣它就能直接理解我當(dāng)時是怎么想的,我也不用重新解釋一遍。

因為如果我再解釋一次,很可能反而會引入偏差,沒法完全表達我腦子里的原始想法。

有個人叫 Shitty Coding Agent 的項目,名字雖然這么叫,其實一點也不 shitty。他里面有一套插件架構(gòu),可以通過 Git 加載代碼,而且全是 TypeScript。我就跟 agent 說,“你去看看這個文件夾、那個文件夾?!苯Y(jié)果它受到啟發(fā),直接給我設(shè)計出了一套非常炸裂的插件架構(gòu)。所以本質(zhì)上還是一種直覺驅(qū)動的過程。我昨晚基本上就是在干這個。

主持人:聽起來,你的整個工作流已經(jīng)和傳統(tǒng)方式完全不一樣了。PR 在你這里的角色變了,CI 也不一樣了,測試還在,但更重要的是反饋回路。你用的是“織代碼”,而不是“寫代碼”,討論的是架構(gòu)和品味。這對我來說是一個非常大的轉(zhuǎn)變。

那我們假設(shè)接下來你要招一兩個、三個工程師,把這個項目變成一個真正的團隊,甚至一個業(yè)務(wù), 你會看重什么樣的能力?如果現(xiàn)在有一個資深工程師,你會被什么樣的品質(zhì)吸引?你會期待他們做過什么項目,或者具備什么特質(zhì),才能適應(yīng)、或者快速學(xué)會這種工作方式?

Peter:我會找那種活躍在 GitHub 上、做開源的人。更重要的是,我要感覺到他們“愛玩這個游戲”。在這個新世界里,學(xué)習(xí)方式就是不斷嘗試,它真的很像一個游戲:你越玩越熟練,就像學(xué)樂器一樣,得一直練。

我現(xiàn)在能做到這么快、這么高效,連我自己都覺得有點不可思議。前幾天我一天之內(nèi)提交了 600 多個 commits,簡直瘋狂。但它是能跑的,不是那種“看起來很糟”的代碼。

主持人:對,這背后是大量的技能積累。

Peter:是的,但真的很累,你必須去玩這些技術(shù)、去學(xué)習(xí)。一開始一定會很挫敗,就像你第一次去健身房又累又痛,但很快你就會變強,你會感覺到工作流在加速,能明顯看到進步,然后你就慢慢上癮了。所以,一邊玩,一邊拼命干。

主持人:你現(xiàn)在投入的時間,明顯比以前多了。

Peter:我從來沒像現(xiàn)在這么拼過。就算當(dāng)年我有公司,也沒這么拼。不是因為我必須這么做,而是因為這件事太上癮、太好玩了。再加上現(xiàn)在正好有勢能,有一群人在推著我往前走。

年輕人的建議

主持人:是不是也因為你商業(yè)嗅覺很好?你能看出來什么時候有機會、什么時候窗口期打開了。

你剛才提到,現(xiàn)在“公開做事”這件事本身就很新穎。你也說,就算你現(xiàn)在想招人,其實也很難,因為真正公開、高頻使用這些工具的人并不多。但可能兩三年后,大家都會這么做,這個優(yōu)勢也就沒了。還有一群人很焦慮的,是應(yīng)屆生、沒什么經(jīng)驗的新人。畢竟你是在成為資深工程師之后,AI 才出現(xiàn)的,你有大量積累可以借力。

如果你把自己放回到那個階段,基于你現(xiàn)在知道的一切,你會建議他們?nèi)プ鍪裁??是打好軟件工程基本功,還是直接擁抱 agent,還是兩者結(jié)合?

Peter:我會建議他們保持無限的好奇心。毫無疑問,進入這個市場一定會更難,你必須通過不斷做東西來積累經(jīng)驗。我不覺得一定要寫很多代碼,但你得去接觸復(fù)雜的開源項目,去讀、去理解。

你現(xiàn)在有一臺無限耐心的機器,可以把任何東西給你講清楚,你可以不停地問:為什么要這么設(shè)計?為什么當(dāng)初要這么做?慢慢建立起系統(tǒng)級理解。但這一切都依賴真實的好奇心,而我不覺得現(xiàn)在的大學(xué)真的很擅長教這個。通常,這種能力都是在痛苦中學(xué)會的。

對新人來說不會輕松,但他們也有一個優(yōu)勢:他們沒有被“舊經(jīng)驗”污染。就像小孩子一樣,他們會用 agent 做出我們根本想不到的事情,因為他們不知道“這事不該這么做”。而等他們這么做的時候,往往已經(jīng)能跑通了。

主持人:而且他們身邊的朋友也都在用這些工具。

Peter:對。前幾天我有個小的菜單欄應(yīng)用,用來統(tǒng)計 Cursor、Claude Code 這些成本,跑得有點慢。我本能反應(yīng)是:好,打開 Instruments,開始點。結(jié)果他們直接在終端里把 profiling 全做了,連 Instruments 都不用開,就直接給我提了優(yōu)化方案,還順帶把性能搞快了。我完全被震住了。

主持人:我覺得我們可能低估了進入這個行業(yè)的年輕人的能力和資源整合水平。很多偉大的公司創(chuàng)始人都非常年輕,當(dāng)時經(jīng)驗也不多,但熱情極強。對我來說,最沖擊的還是你提到的這些變化:不再依賴 PR,不做傳統(tǒng) code review。這些東西陪伴了你十五年以上,也是 PSPDFKit 成功的重要基石。

Peter:是的,現(xiàn)在需要一整套新東西。哪怕現(xiàn)在有人給我提 PR,我更關(guān)心的其實是 prompt,而不是代碼。我會讓大家把 prompt 也一起提交,有些人會這么做。

我讀 prompt 的時間,比讀代碼還多。因為那是更高信號的信息:你是怎么得到這個結(jié)果的?你問了什么問題?中間做了多少引導(dǎo)?這比最終代碼本身更能幫我判斷質(zhì)量。

如果有人想要一個新功能,我甚至直接要一個“Prompt Request”。你把需求寫清楚,我就能把 issue 指給 agent,讓它直接去做。真正的工作,其實是在想清楚系統(tǒng)應(yīng)該怎么運作、細節(jié)是什么。如果別人已經(jīng)幫我把這些想清楚了,我基本可以直接說一句“build”,然后它就能跑。

相反,如果有人只提了一個很小的修復(fù) PR,我反而會請他們別這么做,因為我花在 review 上的時間,可能是我直接在 Codex 里敲一句“fix”再等幾分鐘的十倍?,F(xiàn)在我們已經(jīng)可以有一行命令就啟動。但在最近兩周項目開始真正有熱度之后,我干脆讓大家直接用 agent 指向倉庫來做配置。所以我們沒有傳統(tǒng)意義上的 Onboarding,而是 Claude Code 驅(qū)動的 Onboarding。

我的 agent 會自己 clone 倉庫、讀文檔、寫配置、幫用戶把環(huán)境全搭好,甚至設(shè)置 Launch Agent,全程不需要人工步驟。這在以前完全不可想象,但現(xiàn)在不是優(yōu)先級問題了,因為 agent 可以替你做這些事。

而且這個產(chǎn)品本身就是 agent 構(gòu)建的,所以它的結(jié)構(gòu)、命名方式,完全符合 agent 的“直覺”。模型權(quán)重里本身就編碼了某些對命名和結(jié)構(gòu)的偏好,它在這個項目里導(dǎo)航起來非常順。所以我沒有把太多精力放在 Onboarding 上。以后我當(dāng)然也想做成很魔法的體驗,但當(dāng)下更重要的是信息傳得通、系統(tǒng)別炸。

小彩蛋

主持人:好,那我們用幾個快問快答收尾。第一個:有沒有一個你會推薦的工具?不是 CLI,也不是 IDE,可以是實體設(shè)備。

Peter:我買過很多小玩意,大多數(shù)都挺一般。但有一個不貴、看起來也挺糙的東西,給了我?guī)缀鯚o限的快樂。它是一個用 Android 跑的電子相框,可以上傳照片。它有一個郵箱,朋友可以直接給它發(fā)照片,之后就會自動顯示。我家里放了好幾個。技術(shù)上說,它很糟糕,動畫也很簡陋,但它就是不停地給我展示生活中那些快樂的瞬間。

它大概兩百美元,但說實話它給我的滿足感,比我新買的 iPhone 還大。我買了 iPhone 17,到現(xiàn)在都還沒拆封,因為我一想到要換卡、遷移數(shù)據(jù)就覺得太麻煩,完全沒有“非換不可”的理由。但這個小相框,真的讓我很開心。

主持人:那在科技之外,有什么事情能讓你充電、讓你遠離屏幕?

Peter:健身房,最好是和教練一起,把手機鎖在柜子里。那一個小時里,我完全活在當(dāng)下,沒有通知,沒有沖動去摸手機。有時候我甚至出門散步,把手機直接留在家里。一開始會非??只?,好像手機已經(jīng)變成身體的一部分了,但這種感覺反而讓我覺得特別爽。

https://www.youtube.com/watch?v=8lF7HmQ_RgY

聲明:本文為 AI 前線整理,不代表平臺觀點,未經(jīng)許可禁止轉(zhuǎn)載。

會議推薦

InfoQ 2026 全年會議規(guī)劃已上線!從 AI Infra 到 Agentic AI,從 AI 工程化到產(chǎn)業(yè)落地,從技術(shù)前沿到行業(yè)應(yīng)用,全面覆蓋 AI 與軟件開發(fā)核心賽道!集結(jié)全球技術(shù)先鋒,拆解真實生產(chǎn)案例、深挖技術(shù)與產(chǎn)業(yè)落地痛點,探索前沿領(lǐng)域、聚焦產(chǎn)業(yè)賦能,獲取實戰(zhàn)落地方案與前瞻產(chǎn)業(yè)洞察,高效實現(xiàn)技術(shù)價值轉(zhuǎn)化。把握行業(yè)變革關(guān)鍵節(jié)點,搶占 2026 智能升級發(fā)展先機!

今日薦文

你也「在看」嗎?

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

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.

相關(guān)推薦
熱點推薦
金晨出事前曾靈魂發(fā)問春晚為啥不邀請她,這下一語成讖了

金晨出事前曾靈魂發(fā)問春晚為啥不邀請她,這下一語成讖了

娛樂小丸子
2026-01-30 09:51:02
斯塔默嘗試中餐后,王毅選擇在京接待另一貴賓,中英分歧被擺上桌

斯塔默嘗試中餐后,王毅選擇在京接待另一貴賓,中英分歧被擺上桌

策前論
2026-01-29 17:23:41
奧迪只賣10萬了?多地奧迪4S店被曝閉店跑路!

奧迪只賣10萬了?多地奧迪4S店被曝閉店跑路!

小南看車
2026-01-28 15:55:33
馬克西40+8準絕殺76人送國王7連敗 恩比德37+5+8施羅德27分

馬克西40+8準絕殺76人送國王7連敗 恩比德37+5+8施羅德27分

醉臥浮生
2026-01-30 10:37:19
“夜間獵人”深夜突降伊朗,普京給想動手的美國,多焊了一道硬坎

“夜間獵人”深夜突降伊朗,普京給想動手的美國,多焊了一道硬坎

軍機Talk
2026-01-29 15:18:21
末輪0-3出局!46歲名帥怒交辭職信:球員集體造反 執(zhí)教13年第1次

末輪0-3出局!46歲名帥怒交辭職信:球員集體造反 執(zhí)教13年第1次

風(fēng)過鄉(xiāng)
2026-01-30 08:03:11
特朗普:請求普京對基輔等地?;鹨恢?,普京同意了

特朗普:請求普京對基輔等地停火一周,普京同意了

新京報
2026-01-30 07:24:14
獨家|平頭哥PPU芯片2025年出貨量達數(shù)十萬片 超過寒武紀

獨家|平頭哥PPU芯片2025年出貨量達數(shù)十萬片 超過寒武紀

財聯(lián)社
2026-01-30 10:24:05
伊朗、中國和俄羅斯將舉行聯(lián)合海上演習(xí)

伊朗、中國和俄羅斯將舉行聯(lián)合海上演習(xí)

桂系007
2026-01-30 03:56:40
華為宣布:最高降4000元!此前蘋果開啟大降價

華為宣布:最高降4000元!此前蘋果開啟大降價

每日經(jīng)濟新聞
2026-01-29 18:19:05
經(jīng)濟大省“年報”出齊:七省份去年增速高于全國,河南領(lǐng)跑

經(jīng)濟大省“年報”出齊:七省份去年增速高于全國,河南領(lǐng)跑

澎湃新聞
2026-01-30 10:35:08
星光黯淡!海斯布萊恩特參加扣籃大賽 三屆扣籃王麥克朗不再參賽

星光黯淡!海斯布萊恩特參加扣籃大賽 三屆扣籃王麥克朗不再參賽

羅說NBA
2026-01-30 06:38:29
真霸氣!獲國家級表彰僅24天,崔培軍因“買雞蛋”,口碑再次暴漲

真霸氣!獲國家級表彰僅24天,崔培軍因“買雞蛋”,口碑再次暴漲

以茶帶書
2026-01-30 00:35:35
21場16球!西媒曝本澤馬收到“免費踢球”續(xù)約報價,將無限期罷賽

21場16球!西媒曝本澤馬收到“免費踢球”續(xù)約報價,將無限期罷賽

夏侯看英超
2026-01-30 00:57:09
重磅打虎!孫紹騁被查

重磅打虎!孫紹騁被查

新京報政事兒
2026-01-29 18:15:03
全球只有5位領(lǐng)導(dǎo)人被永久保留遺體,他們都是誰

全球只有5位領(lǐng)導(dǎo)人被永久保留遺體,他們都是誰

扶蘇聊歷史
2026-01-29 16:13:42
中英雙方在英國首相斯塔默訪華期間達成一系列積極成果

中英雙方在英國首相斯塔默訪華期間達成一系列積極成果

界面新聞
2026-01-30 07:04:47
退役倒計時!湖人將要求詹姆斯大幅降薪 客戰(zhàn)尼克斯票價因他飆升

退役倒計時!湖人將要求詹姆斯大幅降薪 客戰(zhàn)尼克斯票價因他飆升

羅說NBA
2026-01-30 06:28:14
回顧探花大神:害人害己,多位女主被親戚認出當(dāng)場“社死”

回顧探花大神:害人害己,多位女主被親戚認出當(dāng)場“社死”

就一點
2025-10-09 12:19:42
美國第一次做出了妥協(xié),悄悄歸還了油輪,馬杜羅徹底失去軍方擁護

美國第一次做出了妥協(xié),悄悄歸還了油輪,馬杜羅徹底失去軍方擁護

文雅筆墨
2026-01-30 02:58:25
2026-01-30 11:27:00
AI前線 incentive-icons
AI前線
面向AI愛好者、開發(fā)者和科學(xué)家,提供AI領(lǐng)域技術(shù)資訊。
1278文章數(shù) 113關(guān)注度
往期回顧 全部

科技要聞

單季狂賺3000億;iPhone 17 全球賣瘋了!

頭條要聞

當(dāng)保安的武漢理工畢業(yè)生:干兩月被辭退 公司怕受波及

頭條要聞

當(dāng)保安的武漢理工畢業(yè)生:干兩月被辭退 公司怕受波及

體育要聞

敢揍多爾特,此子必成大器?

娛樂要聞

曝金晨涉嫌交通肇事逃逸 本人尚未回應(yīng)

財經(jīng)要聞

血鉛超標工人,擋在“勞動關(guān)系”門檻外

汽車要聞

全面科技化 新款梅賽德斯-奔馳S級發(fā)布

態(tài)度原創(chuàng)

數(shù)碼
本地
教育
藝術(shù)
公開課

數(shù)碼要聞

“iPod之父”Tony Fadell炮轟蘋果AI營銷:不再務(wù)實、純搞噱頭

本地新聞

云游中國|撥開云霧,巫山每幀都是航拍大片

教育要聞

伽利略無窮大悖論

藝術(shù)要聞

風(fēng)景畫選刊 | 中國油畫學(xué)會三十年藝術(shù)展

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關(guān)懷版