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

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

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

0
分享至


整理 | 褚杏娟

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

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

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

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

我們整理翻譯了這期干貨滿滿的對(duì)話,并在不改變?cè)饣A(chǔ)上進(jìn)行了刪減,以饗讀者。

怎么入行的?

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

Peter:是啊,差點(diǎn)還搞砸了。

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

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

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

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

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

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

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

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

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

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

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

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

Peter:差不多。后來有一次,我在地鐵上用一個(gè)交友網(wǎng)站,用的是 iPhone OS 2。我打了一大段很走心的消息,剛點(diǎn)發(fā)送后車進(jìn)隧道了,JavaScript 禁用了發(fā)送按鈕,然后直接報(bào)錯(cuò)。那時(shí)候沒有復(fù)制粘貼、沒有截圖、頁面還不能滾動(dòng),那段話就這么沒了。我當(dāng)時(shí)氣炸了,覺得這簡直不可接受。回到家我就把那個(gè)網(wǎng)站黑了,用正則去解析 HTML。

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

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

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

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

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

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

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

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

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

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

主持人:還是 Objective-C?

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

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

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

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

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

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

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

Peter:對(duì),尤其是這個(gè)。你知道那句話嗎:公司是由年輕人建立的,因?yàn)樗麄儾恢烙卸嚯y。我當(dāng)時(shí)完全沒概念,后來才發(fā)現(xiàn)這簡直是瘋了一樣復(fù)雜。

直到現(xiàn)在,前幾周還有人給我寫郵件,說他們?cè)谧?PDF 相關(guān)的事情,想找我?guī)兔?。我基本都?huì)回一句:不好意思,我已經(jīng)把這輩子該懂的 PDF 知識(shí)都學(xué)完了,遠(yuǎn)遠(yuǎn)超過一個(gè)正常人該承受的量,祝你好運(yùn)。

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

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

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

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

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

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

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

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

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

所以哪怕有競(jìng)爭(zhēng)對(duì)手功能更多、做得更早,我的產(chǎn)品依然更成功。因?yàn)殚_發(fā)者試過之后,都會(huì)覺得我的用起來最好。我一直覺得,產(chǎn)品的“感覺”比功能列表重要得多。我們?yōu)槭裁促I Apple?不是因?yàn)樗δ茏疃?,而是因?yàn)樗闷饋砭褪歉娣?/p>

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

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

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

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

主持人:名字確實(shí)有點(diǎn)繞,但非常獨(dú)特。

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

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

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

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

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

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

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

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

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

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

Peter:對(duì)。

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

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

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

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

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

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

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

主持人:那就是五十萬個(gè)鏈接。

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

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

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

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

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

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

主持人:這是我對(duì) PSPDFKit 最深的印象之一。你們的博客不只是營銷,而是真的好看。說實(shí)話,我并不做 PDF,但如果要說起 PDF 框架,第一個(gè)想到的就是 PSPDFKit,因?yàn)橹挥心銈儠?huì)寫這么有意思的技術(shù)文章。

主持人:你現(xiàn)在回頭看,會(huì)不會(huì)也覺得奇怪,為什么更多公司不這么做?還是說,這本來就需要?jiǎng)?chuàng)始人本身是個(gè)喜歡寫、喜歡拆解問題的工程師?你當(dāng)時(shí)寫這些文章,是出于“這對(duì)公司有用”,還是單純因?yàn)槟阕约合氚呀鉀Q過的難題記錄下來?

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

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

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

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

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

“停更”,賦閑

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

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

我記得有個(gè)周末,合伙人凌晨給我打電話,說一家大型飛機(jī)制造公司,因?yàn)槲覀兊能浖懒?,飛機(jī)停飛了。那是個(gè)非常“刺激”的周末,最后我拆了他們的應(yīng)用,證明是他們外包代碼亂改,觸發(fā)了授權(quán)回退邏輯。但那種時(shí)刻,你會(huì)覺得公司隨時(shí)可能完蛋,而這種壓力只是所有壓力中的一部分。

這些事情你能撐一陣子。但我也相信,burnout 不完全是因?yàn)楣ぷ魈?,更是因?yàn)槟汩_始不再真正相信自己在做的事情,或者內(nèi)部沖突太多。我們當(dāng)時(shí)在管理團(tuán)隊(duì)里爭(zhēng)論也很多,我還犯了一個(gè)錯(cuò)誤,以為公司應(yīng)該用一種過度民主的方式來管理。這些都消耗了我。但即便如此,我一點(diǎn)都不后悔這段經(jīng)歷。

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

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

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

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

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

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

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

主持人:所以你其實(shí)一直沒怎么親手下場(chǎng)?

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

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

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

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

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

Peter:是 Claude Code。

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

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

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

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

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

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

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

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

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

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

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

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

主持人:但另一方面,你剛才也說過,大家之所以喜歡 PSPDFKit,正是因?yàn)樗蚰サ米詈谩⒆罘€(wěn)定。你不覺得那種“摳細(xì)節(jié)”其實(shí)是在控制技術(shù)債嗎?某種程度上,正是這種偏執(zhí)才讓產(chǎn)品性能和質(zhì)量都站得住。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

高效率的秘訣

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

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

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

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

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

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

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

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

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

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

主持人:至少要能跑。

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

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

主持人:你其實(shí)是因?yàn)榇詈昧蓑?yàn)證閉環(huán),所以你信任它。這和在大公司里做項(xiàng)目有點(diǎn)像,所有測(cè)試都過了,并不代表百分百?zèng)]問題,但已經(jīng)是一個(gè)很強(qiáng)的信號(hào)了,至少有人替你想過、測(cè)過。

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

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

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

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

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

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

Peter:反而有個(gè)挺反直覺的點(diǎn):用這種方式寫代碼,會(huì)讓你變成一個(gè)更好的工程師。因?yàn)槟惚仨毎鸭軜?gòu)想清楚,才能更容易驗(yàn)證,而驗(yàn)證正是把事情做對(duì)的關(guān)鍵。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

軟件開發(fā)很少是那種“列一個(gè)超長任務(wù)清單,然后全部自動(dòng)執(zhí)行”的問題。我看到很多人搭了一整套復(fù)雜的編排系統(tǒng):自動(dòng)建 ticket、agent 處理 tickets、agent 互相發(fā)郵件,最后搞出一團(tuán)復(fù)雜系統(tǒng)。圖什么?這本質(zhì)上就是瀑布模型,我們?cè)缇椭浪缓糜谩?/p>

對(duì)我來說,開發(fā)必須從一個(gè)模糊的想法開始。我甚至?xí)室馍俳o prompt,讓 agent 先做點(diǎn)“不太對(duì)”的東西,因?yàn)榭赡馨顺啥际抢?,但那剩下的兩成?huì)給我新的啟發(fā),然后我不斷迭代、塑形。

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

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

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

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

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

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

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

ClawdBot 來了

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

后來我發(fā)到 Twitter 上,反而反響很冷,因?yàn)楹芏嗳送耆床欢@是什么。我感覺,這可能是一種全新的產(chǎn)品類別,大家還沒有形成認(rèn)知。

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

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

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

為什么是 CLI,不是 MCP

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

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

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

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

Peter:現(xiàn)在大家確實(shí)在往這個(gè)方向做,但還有一個(gè)根本問題:你沒法“鏈?zhǔn)浇M合”。

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

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

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

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

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

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

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

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

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

Peter:對(duì),簡直瘋狂。但后來有人進(jìn)來,看到我用它檢查攝像頭、做家庭自動(dòng)化、幫我放音樂。我在廚房里,跟它說“看我的屏幕”,它就真的看到了。因?yàn)樗型暾麢?quán)限,可以點(diǎn)終端、替我打字、執(zhí)行命令。你甚至可以對(duì)它說“做這個(gè)做那個(gè)”,它就照著屏幕操作。

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

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

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

現(xiàn)在我走在路上,看到一個(gè)活動(dòng),隨手給 Claude 發(fā)張照片。它不僅能告訴我這個(gè)活動(dòng)的評(píng)價(jià),還會(huì)檢查我日歷有沒有沖突、朋友有沒有提過。因?yàn)樗莆樟舜罅可舷挛模o出的回答,已經(jīng)完全不是那種“各自待在小盒子里的工具”能比的。

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

Peter:老實(shí)說,我可能是 Anthropic 最好的銷售。我都不知道有多少人因?yàn)?ClawdBot 去買了 200 美元的訂閱,有些人甚至多開了一個(gè)賬號(hào)。不是因?yàn)槟P汀袄速M(fèi) token”,而是大家太愛用了,用得太頻繁。而且由于復(fù)雜性被完全隱藏,他們根本感覺不到后臺(tái)有多少子 agent 在忙。

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

主持人:但這也很有意思。你在架構(gòu)上投入了這么多思考。現(xiàn)在這個(gè)項(xiàng)目已經(jīng)跑了幾個(gè)月,也確實(shí)爆了。在你腦子里,你是不是很清楚 ClawdBot 的結(jié)構(gòu)?哪些地方該改、哪些地方要重構(gòu)?你會(huì)不會(huì)開始擔(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)確實(shí)有點(diǎn)亂,但本質(zhì)上只是文本在不同形態(tài)間流動(dòng)。有多 provider、多 agent、有 agent loop、有配置、有大量 plumbing,但沒有哪一塊是真的“難”。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Peter:我其實(shí)沒那么在意 CI 了。

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

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

agent 會(huì)跑測(cè)試,我不想每次推個(gè)后端 API,都等十分鐘 CI。

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

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

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

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

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

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

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

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

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

因?yàn)槿绻以俳忉屢淮?,很可能反而?huì)引入偏差,沒法完全表達(dá)我腦子里的原始想法。

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

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

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

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

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

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

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

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

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

年輕人的建議

主持人:是不是也因?yàn)槟闵虡I(yè)嗅覺很好?你能看出來什么時(shí)候有機(jī)會(huì)、什么時(shí)候窗口期打開了。

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

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

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

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

對(duì)新人來說不會(huì)輕松,但他們也有一個(gè)優(yōu)勢(shì):他們沒有被“舊經(jīng)驗(yàn)”污染。就像小孩子一樣,他們會(huì)用 agent 做出我們根本想不到的事情,因?yàn)樗麄儾恢馈斑@事不該這么做”。而等他們這么做的時(shí)候,往往已經(jīng)能跑通了。

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

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

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

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

我讀 prompt 的時(shí)間,比讀代碼還多。因?yàn)槟鞘歉咝盘?hào)的信息:你是怎么得到這個(gè)結(jié)果的?你問了什么問題?中間做了多少引導(dǎo)?這比最終代碼本身更能幫我判斷質(zhì)量。

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

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

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

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

小彩蛋

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

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

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

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

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

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

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

會(huì)議推薦

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

今日薦文

你也「在看」嗎?

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(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)推薦
熱點(diǎn)推薦
慣子如殺子!遼寧女孩早晨遛狗導(dǎo)致全家被害,父親重傷,母親被殺

慣子如殺子!遼寧女孩早晨遛狗導(dǎo)致全家被害,父親重傷,母親被殺

深度報(bào)
2025-09-02 22:45:04
賀希寧:感謝郭指導(dǎo)給我重返國家隊(duì)的機(jī)會(huì),世預(yù)賽給自己打6分

賀希寧:感謝郭指導(dǎo)給我重返國家隊(duì)的機(jī)會(huì),世預(yù)賽給自己打6分

懂球帝
2026-03-06 23:12:41
國羽全英警鐘敲響!混雙男單雙保險(xiǎn)失效,女單女雙Big4格局穩(wěn)固

國羽全英警鐘敲響!混雙男單雙保險(xiǎn)失效,女單女雙Big4格局穩(wěn)固

排球黃金眼
2026-03-07 11:08:17
孤獨(dú)的統(tǒng)帥:特朗普打破百年慣例,成為首位未經(jīng)公眾支持便發(fā)動(dòng)戰(zhàn)爭(zhēng)的現(xiàn)代總統(tǒng)

孤獨(dú)的統(tǒng)帥:特朗普打破百年慣例,成為首位未經(jīng)公眾支持便發(fā)動(dòng)戰(zhàn)爭(zhēng)的現(xiàn)代總統(tǒng)

奇思妙想生活家
2026-03-07 11:05:25
龍洋眼往上瞟,不是看提詞器,也不是針打多了,而是一個(gè)“硬傷”

龍洋眼往上瞟,不是看提詞器,也不是針打多了,而是一個(gè)“硬傷”

她時(shí)尚丫
2026-02-17 22:41:30
男子被綠后還被判凈身出戶,女法官說男人要大度,男子兩槍殺之

男子被綠后還被判凈身出戶,女法官說男人要大度,男子兩槍殺之

干史人
2026-02-23 13:25:10
自食惡果!伊朗全球追殺特朗普,倆百歲大佬下死令,永無期限

自食惡果!伊朗全球追殺特朗普,倆百歲大佬下死令,永無期限

愛看劇的阿峰
2026-03-06 17:08:17
2025年,我國國際機(jī)場(chǎng)排行榜!

2025年,我國國際機(jī)場(chǎng)排行榜!

民航之翼
2026-03-07 09:44:30
騰訊樓下近千人排隊(duì)安裝,用戶都在用OpenClaw做什么?

騰訊樓下近千人排隊(duì)安裝,用戶都在用OpenClaw做什么?

第一財(cái)經(jīng)資訊
2026-03-06 20:35:53
美軍中央司令部稱摧毀伊朗伊斯蘭革命衛(wèi)隊(duì)指揮控制設(shè)施

美軍中央司令部稱摧毀伊朗伊斯蘭革命衛(wèi)隊(duì)指揮控制設(shè)施

參考消息
2026-03-03 13:59:03
遇羅克《出身論》談到的問題至今無解......

遇羅克《出身論》談到的問題至今無解......

細(xì)雨中的呼喊
2026-03-06 14:54:54
字節(jié)跳動(dòng)啟動(dòng)最大規(guī)模實(shí)習(xí)生招聘:擬招超7000人,轉(zhuǎn)正率超50%,重點(diǎn)傾斜研發(fā)、產(chǎn)品與AI領(lǐng)域

字節(jié)跳動(dòng)啟動(dòng)最大規(guī)模實(shí)習(xí)生招聘:擬招超7000人,轉(zhuǎn)正率超50%,重點(diǎn)傾斜研發(fā)、產(chǎn)品與AI領(lǐng)域

深圳晚報(bào)
2026-03-06 16:38:48
2026中國百強(qiáng)城市指數(shù)榜單發(fā)布!一線城市洗牌,江蘇13市全部入選

2026中國百強(qiáng)城市指數(shù)榜單發(fā)布!一線城市洗牌,江蘇13市全部入選

GYbrand
2026-03-05 22:03:13
澤連斯基對(duì)歐爾班撂狠話,以色列遭集束彈藥襲擊

澤連斯基對(duì)歐爾班撂狠話,以色列遭集束彈藥襲擊

史政先鋒
2026-03-06 19:25:11
踢了23分鐘就掛靴!瓦拉內(nèi)退役后首發(fā)聲:身體零件已散架,不硬撐

踢了23分鐘就掛靴!瓦拉內(nèi)退役后首發(fā)聲:身體零件已散架,不硬撐

仰臥撐FTUer
2026-03-06 13:38:03
江西48.8萬彩禮后續(xù):男子轉(zhuǎn)頭退婚提豪車,女子破防:要告你強(qiáng)奸

江西48.8萬彩禮后續(xù):男子轉(zhuǎn)頭退婚提豪車,女子破防:要告你強(qiáng)奸

鋭娛之樂
2025-09-09 22:24:54
官方:阿根廷隊(duì)將派代表來華,舉辦阿根廷世界杯出征中國發(fā)布會(huì)

官方:阿根廷隊(duì)將派代表來華,舉辦阿根廷世界杯出征中國發(fā)布會(huì)

懂球帝
2026-03-06 15:47:22
長江和記宣布就巴拿馬政府強(qiáng)行接管貨柜碼頭事宜采取進(jìn)一步法律行動(dòng)

長江和記宣布就巴拿馬政府強(qiáng)行接管貨柜碼頭事宜采取進(jìn)一步法律行動(dòng)

每日經(jīng)濟(jì)新聞
2026-03-06 16:07:34
55:42!特朗普被催下臺(tái),國會(huì)推動(dòng)投票表決:限制美國領(lǐng)導(dǎo)人開戰(zhàn)

55:42!特朗普被催下臺(tái),國會(huì)推動(dòng)投票表決:限制美國領(lǐng)導(dǎo)人開戰(zhàn)

華人書畫藝術(shù)
2026-03-07 11:11:07
唏噓!國安功勛球員生活窘迫,做足球青訓(xùn)賠本,如今靠送外賣維生

唏噓!國安功勛球員生活窘迫,做足球青訓(xùn)賠本,如今靠送外賣維生

體壇鑒春秋
2026-03-06 16:02:20
2026-03-07 12:28:49
AI前線 incentive-icons
AI前線
面向AI愛好者、開發(fā)者和科學(xué)家,提供AI領(lǐng)域技術(shù)資訊。
1345文章數(shù) 133關(guān)注度
往期回顧 全部

科技要聞

OpenClaw爆火,六位"養(yǎng)蝦人"自述與AI共生

頭條要聞

中東局勢(shì)動(dòng)蕩 歐盟"女外長"污蔑:中國趁機(jī)拿捏歐洲

頭條要聞

中東局勢(shì)動(dòng)蕩 歐盟"女外長"污蔑:中國趁機(jī)拿捏歐洲

體育要聞

塔圖姆歸來:凱爾特人的春之綠

娛樂要聞

周杰倫田馥甄20年地下情 被扒得底朝天

財(cái)經(jīng)要聞

針對(duì)"不敢休、不讓休"怪圈 國家出手了

汽車要聞

逃離ICU,上汽通用“止血”企穩(wěn)

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

教育
家居
親子
健康
數(shù)碼

教育要聞

教育部:我國高等教育毛入學(xué)率超60%,“雙一流”高校擴(kuò)招3.8萬人 #2026全國兩會(huì)

家居要聞

暖棕撞色 輕法奶油風(fēng)

親子要聞

全國政協(xié)委員厲彥虎:太早學(xué)不該學(xué)的反而害了孩子

轉(zhuǎn)頭就暈的耳石癥,能開車上班嗎?

數(shù)碼要聞

英特爾酷睿Ultra 5 250K Plus處理器PassMark跑分曝光

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