无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

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

谷歌首席工程師:二十年自然生長出來的軟件工程生態(tài),快被大模型 10 倍提速撐爆

0
分享至


編譯|宇琪

策劃 | Tina

AI 讓你寫代碼快了 10 倍,然后呢?更多的代碼意味著更長的編譯、更重的測試、更堵的代碼審查,以及一個(gè)沒人能理解的代碼庫。軟件是負(fù)債,你寫得越快,欠得越多。

Google 首席軟件工程師 Adam Bender 的警告很直接:今天你構(gòu)建軟件的方式,在 10 倍速度下根本行不通。但 AI 時(shí)代的真正贏家,不是產(chǎn)出最高的團(tuán)隊(duì),而是基本功最扎實(shí)的那些人。因?yàn)?AI 只負(fù)責(zé)放大,不負(fù)責(zé)方向。

在 Google I/O 2026 的一場主題演講中,Adam Bender 拋出了一個(gè)大多數(shù)人還沒來得及思考的問題:當(dāng) AI 把代碼產(chǎn)出速度推到現(xiàn)有工程流程無法承載的地步,我們的開發(fā)者生態(tài)系統(tǒng)里,什么會最先垮掉?他用一個(gè)你可能沒聽過的概念串起了整場演講:軟件生態(tài)學(xué),即對生產(chǎn)軟件的社會技術(shù)生態(tài)系統(tǒng)進(jìn)行整體性研究的學(xué)科。換句話說,你不只要看技術(shù),還要看人、看文化、看組織里那些不成文的規(guī)則。基于該演講視頻,InfoQ 對內(nèi)容進(jìn)行了整理。

核心觀點(diǎn)如下:

  • AI 默認(rèn)不幫你解決任何問題。如果你的實(shí)踐是好的,它能放大它們。但如果不夠好,它只會制造更多麻煩。

  • 人人都是構(gòu)建者是很酷,直到你必須維護(hù)所有人構(gòu)建的所有東西。

  • 工程實(shí)踐不是神圣不可侵犯的。實(shí)踐會變,原則才是重要的。

  • 作為一線軟件工程師,在這個(gè)臨界點(diǎn)時(shí)刻,你處于決定軟件工程將走向何方的核心位置。從工具到工作流,從工程實(shí)踐到工程文化,如果你能看清正在運(yùn)轉(zhuǎn)的系統(tǒng),你就能找到杠桿。

什么是“系統(tǒng)”

你 2026 年的工作,跟你 2020 年想象的樣子完全不一樣。如果你試圖跟 2020 年的我解釋今天發(fā)生的事,我不會信的。變化太多了,多到讓人有點(diǎn)招架不住。我沒法預(yù)測未來,但我相信,如果我們仔細(xì)研究當(dāng)下的軟件生態(tài)系統(tǒng),有些答案比我們想象中更近。

我今天要跟你聊一個(gè)詞:軟件生態(tài)學(xué)(Software Ecology)。聽起來像是我為了上臺隨便編的,但不是,這是個(gè)正經(jīng)術(shù)語。在給出定義之前,我想先鋪墊一些背景,我們稍微深入一下系統(tǒng)思維。

一個(gè)系統(tǒng)是一組相互關(guān)聯(lián)的元素,按照一套規(guī)則運(yùn)作,形成一個(gè)統(tǒng)一的整體。聽起來很抽象,但你對系統(tǒng)并不陌生。比如空調(diào):一個(gè)知道目標(biāo)溫度的恒溫器,一個(gè)負(fù)責(zé)升溫或降溫的暖通空調(diào),一個(gè)房間,溫度合適了,信號就停了,這就是一個(gè)系統(tǒng)。


如果你是軟件工程師,你每天都在跟系統(tǒng)打交道,你設(shè)計(jì)系統(tǒng)、構(gòu)建系統(tǒng)、運(yùn)維系統(tǒng),在這個(gè)過程中你大概學(xué)會了一件事:一切皆關(guān)聯(lián)。

接下來是生態(tài)系統(tǒng),它是一種特殊的系統(tǒng)。定義有點(diǎn)長,但很重要:生態(tài)系統(tǒng)是一個(gè)由相互依賴的行動者組成的動態(tài)網(wǎng)絡(luò),這些行動者與其環(huán)境共同演化,其特點(diǎn)是涌現(xiàn)行為和去中心化的自主性。說人話就是,生態(tài)系統(tǒng)很復(fù)雜,組件之間深度連接,每個(gè)組件有自己的自主性,可以做決策、采取行動。而且最關(guān)鍵的一點(diǎn):環(huán)境是系統(tǒng)的一部分,你不能把兩者分開。

生態(tài)系統(tǒng)也是一種復(fù)雜適應(yīng)系統(tǒng),能夠隨著時(shí)間增長、變化和演化。它們還有一種特性叫涌現(xiàn)(Emergent Property),就是你沒法通過觀察任何一個(gè)單獨(dú)部件來看到的東西,只有當(dāng)系統(tǒng)整體組裝起來,行為才會從中涌現(xiàn)。正是這種持續(xù)變化、持續(xù)學(xué)習(xí)加上涌現(xiàn),讓搞清楚生態(tài)系統(tǒng)里到底在發(fā)生什么變得極其困難。

說到生態(tài)系統(tǒng),你腦子里浮現(xiàn)的大概是山川河流、鳥語花香。但內(nèi)部開發(fā)者環(huán)境,它也是一種生態(tài)系統(tǒng):有各種工具和服務(wù),有帶著各自想法和訴求的人,有業(yè)務(wù)約束。而且它是一種特殊的系統(tǒng):社會技術(shù)系統(tǒng),就是由人和技術(shù)共同構(gòu)成的系統(tǒng)。社會技術(shù)系統(tǒng)極其復(fù)雜,因?yàn)槟銖乃心切┘夹g(shù)開始,然后把人也攪進(jìn)去。

你很可能在不知不覺中已經(jīng)接觸過社會技術(shù)系統(tǒng)的智慧。你們知道康威定律嗎:組織所構(gòu)建的技術(shù),會鏡像其內(nèi)部的溝通結(jié)構(gòu)。通俗地說,如果你有四個(gè)團(tuán)隊(duì)在做同一個(gè)編譯器,你就會得到一個(gè)四遍編譯器,事情就是這樣。康威定律的核心觀察是,我們構(gòu)建技術(shù)的方式,與構(gòu)建它的組織結(jié)構(gòu)不可分割,組織塑造了最終被構(gòu)建出來的東西。

但不止組織結(jié)構(gòu)影響開發(fā)者生態(tài),價(jià)值觀和文化同樣影響深遠(yuǎn)。你的生態(tài)系統(tǒng)構(gòu)建的,是組織所激勵(lì)的東西,你的工程文化創(chuàng)造了圍繞開發(fā)者生態(tài)的環(huán)境。一旦你了解了社會技術(shù)系統(tǒng),你就會在軟件開發(fā)的每一個(gè)角落看到它們:架構(gòu)、事故復(fù)盤文化、代碼審查、安全策略,無處不在。我們構(gòu)建的東西,以及我們選擇構(gòu)建它們的方式,反映了我們重視什么。如果我們足夠用心,就可以利用這個(gè)認(rèn)知來放大我們的價(jià)值觀,將它們注入到我們所構(gòu)建的東西中。

現(xiàn)在我可以給你一個(gè)正確定義了:軟件生態(tài)學(xué)是對生產(chǎn)軟件的社會技術(shù)生態(tài)系統(tǒng)進(jìn)行整體性研究的學(xué)科。如果剛才那些有點(diǎn)抽象,沒關(guān)系,現(xiàn)在來看一個(gè)真實(shí)的案例。

Google 的開發(fā)者生態(tài)

我聊 Google,不是因?yàn)槲以谀莾汗ぷ魉砸邓且驗(yàn)樗俏易盍私獾拈_發(fā)者生態(tài)。我的目的不是告訴你們應(yīng)該照搬 Google,那樣對你們沒好處。你們是不同的公司,處在不同的階段,面臨不同的權(quán)衡取舍。Google 所做的很多選擇,都是針對當(dāng)時(shí)我們構(gòu)建生態(tài)時(shí)的具體需求。

幾年前我們寫了一本書,內(nèi)部叫"火烈鳥書"。書里有一半講版本控制和測試,但整個(gè)前半部分都在講工程文化。很多人問為什么花這么多篇幅講文化,因?yàn)槿绻悴焕斫?Google 的文化,你就沒法理解我們?yōu)槭裁醋龀瞿切┘夹g(shù)選擇,這些事是相互關(guān)聯(lián)的。

Google 有幾個(gè)比較獨(dú)特的文化特質(zhì)。我們是深度工程導(dǎo)向的,做重要決策時(shí)工程師總是在場;我們極其重視透明度,盡可能讓所有文檔和代碼對所有人開放;我們鼓勵(lì)樂于助人,事實(shí)上跟任何離開過 Google 的人聊,同事們的樂于助人會是他們第一個(gè)提到的;我們把代碼審查當(dāng)作指導(dǎo)的機(jī)會,而不是批改試卷;我們極其重視標(biāo)準(zhǔn)化;我們相信持續(xù)改進(jìn);我們推崇免于追責(zé)的事故復(fù)盤;我們堅(jiān)信可持續(xù)性優(yōu)于英雄主義,自動化優(yōu)于手工勞作。當(dāng)然我們不總能達(dá)到所有這些理想,但這是我們在文化上努力追求的方向。

技術(shù)方面呢?單體代碼倉庫,幾乎所有代碼都在一個(gè)倉庫里;基于主干的開發(fā),每一次變更直接合入主線;構(gòu)建一個(gè)二進(jìn)制文件時(shí),幾乎每一行代碼都從源碼構(gòu)建;統(tǒng)一的構(gòu)建工具鏈,每個(gè)人都用;全球化的測試自動化平臺,一個(gè)地方運(yùn)行所有測試,每天數(shù)十億個(gè)測試用例;一個(gè)全局的"最后綠色"信號,我可以靠一個(gè)簡單的內(nèi)部網(wǎng)站就告訴你任何構(gòu)建的狀態(tài);統(tǒng)一的計(jì)算環(huán)境,所以"在我機(jī)器上能跑"這種事基本上不可能發(fā)生;高度規(guī)范化的開發(fā)者框架和一小組核心編程語言。


這種文化與技術(shù)的混合,造就了 Google 今天的模樣,你沒辦法只理解其中一半而忽略另一半。

共享命運(yùn)

如果要我選一個(gè)一直在隱隱指導(dǎo)我們的原則,我會選“共享命運(yùn)(Shared Fate)”。它描述的是一個(gè)生態(tài)系統(tǒng)及其組件之間緊密關(guān)聯(lián)的程度,在一個(gè)高共享命運(yùn)的生態(tài)里,一個(gè)組件可以影響所有其他組件。在開發(fā)者生態(tài)系統(tǒng)中,共享命運(yùn)既是一種技術(shù)選擇,也是一種社會選擇。你不可能僅僅通過讓所有人都使用同樣的技術(shù)來實(shí)現(xiàn)共享命運(yùn),你還需要建立關(guān)于如何管理這些技術(shù)的社會契約。

在 Google,共享命運(yùn)始于單體代碼倉庫。公司的每一行代碼,除了少數(shù)例外比如 Android 和 Chrome,都在一個(gè)共享倉庫里。所有代碼提交到主干,沒有分支,沒有版本號,一切都在一個(gè)地方。這種共享命運(yùn)讓我們能夠在一個(gè)文件里應(yīng)用一個(gè)安全補(bǔ)丁,然后知道在一周之內(nèi),公司里每一個(gè)應(yīng)用程序都會被修復(fù)。十行代碼修補(bǔ)一百億行應(yīng)用和系統(tǒng)軟件,這就像超能力一樣。

但共享命運(yùn)并不總是好事,它是一種選擇。有些地方共享命運(yùn)不合適,比如在生產(chǎn)環(huán)境中,我們絕不希望一個(gè)服務(wù)拖垮所有其他服務(wù),或者一個(gè)集群感染整個(gè)區(qū)域。所以我們在避免危險(xiǎn)的共享命運(yùn)方面下了很大功夫,那種會導(dǎo)致級聯(lián)故障的共享命運(yùn)。共享命運(yùn)是一種權(quán)衡,你必須找到正確的放置位置,然后確保它為你工作。

大規(guī)模變更

我們共享命運(yùn)環(huán)境中最有趣的涌現(xiàn)屬性之一,就是大規(guī)模變更。注意這一點(diǎn):遠(yuǎn)在 AI 出現(xiàn)之前,Google 的內(nèi)部工具就已經(jīng)讓一個(gè)開發(fā)者有可能修改數(shù)百萬行代碼,數(shù)百萬行他們根本不會去讀、再也不會去看、可能對其一無所知的代碼。我們構(gòu)建了讓這一切自動成為可能的工具,今天就是這樣,而且我們至少在過去十五年里一直這么做。

這種能力讓我們能夠持續(xù)演化單體代碼倉庫,更新語言和框架,防止內(nèi)部環(huán)境變得僵化。毫不夸張地說,沒有大規(guī)模變更,我們就不會是今天的 Google。做這些工具的同事干的是一種幕后英雄式的工作,讓公司能以需要的速度前進(jìn)。

但關(guān)鍵在于,你如果不了解使大規(guī)模變更成為可能的那些文化組件和技術(shù)組件,你就沒法真正理解它。你需要什么?普及的測試文化,每個(gè)人都得寫測試。統(tǒng)一的測試平臺,你知道去哪里拿結(jié)果。共同的構(gòu)建工具,你構(gòu)建跟我構(gòu)建結(jié)果一樣。標(biāo)準(zhǔn)化的庫,替換組件時(shí)不會跳來跳去找哪個(gè)版本對你有用對我沒用。標(biāo)準(zhǔn)化的代碼審查,代碼倉庫本身的透明度,這樣你才知道哪些代碼需要改動。大規(guī)模變更是 Google“自動化優(yōu)于手工勞作”這個(gè)理念的終極體現(xiàn),而且它只有在整個(gè)生態(tài)系統(tǒng)協(xié)作的情況下才有可能。你沒法指著開發(fā)者環(huán)境中某一個(gè)部分說,這就是它產(chǎn)生的原因,所有的部分連接在一起才是原因。

你的生態(tài)系統(tǒng),你的權(quán)衡

每個(gè)開發(fā)者生態(tài)系統(tǒng)都有這樣的涌現(xiàn)屬性。它們通常就是那些讓你感覺你工作的地方有些獨(dú)特的東西,那是因?yàn)樗鼈兪悄闼龅囊幌盗羞x擇的產(chǎn)物。

Google 的開發(fā)者生態(tài)產(chǎn)生了一套獨(dú)特的權(quán)衡取舍,服務(wù)于我們的技術(shù)和業(yè)務(wù)目標(biāo)。但和每一個(gè)生態(tài)系統(tǒng)一樣,它不可能在所有任務(wù)上都表現(xiàn)出色。我們選擇優(yōu)化的是極致規(guī)模、安全性和性能,即使這意味著有時(shí)要以犧牲開發(fā)者生產(chǎn)力為代價(jià),我們愿意做這個(gè)權(quán)衡。一個(gè)五個(gè)人初創(chuàng)公司的生態(tài)看起來會完全不同,速度和敏捷性才是最重要的。

你們大多數(shù)人所在的生態(tài)介于五個(gè)人和二十萬人之間。你們需要做的權(quán)衡取舍非常值得關(guān)注,因?yàn)楫?dāng)你審視這些權(quán)衡時(shí),你就能開始理解組織的價(jià)值觀:它真正在乎什么,不是嘴上說在乎什么,而是你實(shí)際觀察到的選擇暴露了什么。當(dāng)你理解了這些價(jià)值觀,你就能開始塑造正在展開的變革。

10 倍時(shí)刻:每一個(gè)節(jié)點(diǎn)都在承壓

是時(shí)候談?wù)劮块g里那頭吃 token 的大象了:一個(gè) AI first 的開發(fā)者生態(tài)系統(tǒng)到底長什么樣?

從零開始構(gòu)建一個(gè)全新的生態(tài)當(dāng)然好,但你們沒人有這個(gè)奢侈。你們必須一邊繼續(xù)交付軟件,一邊在替換其中的幾乎每一個(gè)部分。公司指望你繼續(xù)創(chuàng)造價(jià)值,同時(shí)確保不出問題。

那么問自己一個(gè)問題:你對自己今天的開發(fā)者生態(tài)系統(tǒng)了解多少?你能把它完整畫出來嗎?你知道所有部件在哪里嗎,不只是技術(shù)的,還有社會的?你能列舉出你的生態(tài)是由什么構(gòu)成的嗎?你組織里的其他人了解多少?它的優(yōu)勢劣勢是什么?瓶頸在哪里?哪里被約束,哪里是自由的?你有什么樣的選擇余地?你見過什么樣的涌現(xiàn)屬性?也許最關(guān)鍵的:如果你的生態(tài)突然必須在未來十八個(gè)月內(nèi)吞吐 10 到 15 倍的代碼量,你知道什么會最先崩潰嗎?

地球上每一個(gè)開發(fā)者生態(tài)系統(tǒng)都在經(jīng)歷一場徹底變革,也許它還沒有到達(dá)你所在的每一個(gè)角落,但它正在來的路上,每一個(gè)開發(fā)者生態(tài)都將不得不面對這個(gè) 10 倍時(shí)刻。這是令人難以置信的時(shí)代,但也相當(dāng)令人困惑。過去二十五年我們有意演化出來的所有權(quán)衡取舍,都將被重新平衡。

生成代碼快 10 倍和工程開發(fā)快 10 倍,是兩件不同的事。在 Google 我們常說,工程是隨時(shí)間積分的編程。但問題是,我們正在大幅加速編程這個(gè)環(huán)節(jié),正在讓代碼機(jī)器加速運(yùn)轉(zhuǎn)。所以我們必須想辦法圍繞這臺代碼機(jī)器做好工程工作,才能真正為客戶交付結(jié)果。沒有人知道這輪生產(chǎn)力增長能推多遠(yuǎn),但有一件事是確定的:我們從這里開始是往上走的。

問題是,你我今天構(gòu)建軟件、交付軟件的方式,在 10 倍或 100 倍的速度下不行,有些東西必須改變。

讓我們從一個(gè)簡化版的開發(fā)者生態(tài)系統(tǒng)圖開始看。在一個(gè)活動量增加 10 倍的世界里,什么必須改變?

代碼入庫


寫源代碼。如果每個(gè)人寫代碼都快了很多,代碼量就會多很多,這可不是好事。Jeff Atwood 說過,軟件是一種負(fù)債。所以,10 倍代碼,10 倍負(fù)債。而且你不能直接給每人發(fā)一堆 token 然后說“祝你好運(yùn)”,我希望你在培訓(xùn)完再投資:你知道你的工程實(shí)踐文檔在哪里嗎?知道怎么去演化它們嗎?之后可以考慮一下。

構(gòu)建系統(tǒng)。更多的代碼、更大的系統(tǒng)意味著更長的編譯時(shí)間。我敢肯定你們公司現(xiàn)在沒人抱怨過編譯慢。但猜猜怎么著,它們會變得更慢。而且如果 agent 在驅(qū)動大量工作,編譯次數(shù)也在暴漲。編譯不是免費(fèi)的,不管在時(shí)間還是計(jì)算資源上。你可能從來沒有注意過自己在編譯上花了多少時(shí)間,但在 10 倍規(guī)模下,你一定會注意到的。

代碼設(shè)計(jì)。你有合適的 agent 化技能來鼓勵(lì)解耦嗎?有合適的服務(wù)端框架來確保快速安全地組合各種能力嗎?你知道你們公司里 Web 應(yīng)用有多少種部署方式嗎?有多少種不同的服務(wù)端框架在跑?你怎么管理 agent 寫的代碼的組件復(fù)用?也許你在賭這不重要。但如果 agent 寫出了容易寫但難以維護(hù)的代碼,別太驚訝,這就是當(dāng)前的基準(zhǔn)水平。Agent 擅長寫代碼,但不總是從長遠(yuǎn)角度思考。那些代碼,我確定不會很好地被重構(gòu)。沒關(guān)系,這部分我們將來會解決。但事實(shí)是,agent 正在為我們做大量工作,我們必須每天想辦法最高效地應(yīng)用這些能力。

到了某個(gè)時(shí)候,這些 agent 化工作可能讓你的二進(jìn)制文件大到無法編譯。或者大到?jīng)]法再推送到手機(jī)上。你有沒有問過這個(gè)問題:你能編譯的最大二進(jìn)制是多大?我不知道答案,但我知道在 Google,我們正在碰觸到極限,有些地方的二進(jìn)制已經(jīng)大到無法編譯了,我相信我們會解決的。但事實(shí)是,大規(guī)模有很多連鎖反應(yīng),規(guī)模的影響無處不在。

也許你是微服務(wù)技術(shù)棧,你正想:我的服務(wù)都很小,我干嘛要擔(dān)心?但我有個(gè)問題:10 倍網(wǎng)絡(luò)流量、10 倍服務(wù)數(shù)量、10 倍通信量,你準(zhǔn)備好了嗎?沒有人能全身而退,規(guī)模的影響無處不在。

代碼審查。假設(shè)你不能可靠地編譯所有這些代碼,你的代碼審查流程會怎樣?每個(gè)人都在擔(dān)心代碼審查,有理由的。我們正在給這個(gè)非常人性化的流程施加巨大壓力,在很多情況下它正在變成瓶頸,而人不喜歡當(dāng)瓶頸。當(dāng)你給他們施加壓力時(shí),他們的行為會變得奇怪。10 倍代碼量,你要么得到 10 倍大的變更,要么 10 倍多的變更。你的技術(shù)負(fù)責(zé)人能維持必要的審查速度嗎?大多數(shù)技術(shù)負(fù)責(zé)人連五個(gè) 10 倍開發(fā)者一天的代碼量都審查不過來。

所以他們?yōu)榱瞬划?dāng)瓶頸,會開始重新安排流程,開始走捷徑,確保不阻塞任何人,因?yàn)闆]人想當(dāng)阻塞者。你也許可以靠 AI 解決一部分,可以部署 AI 來改善代碼審查。但這只解決了部分問題,因?yàn)槿绻愕膱F(tuán)隊(duì)成員不寫代碼了,他們唯一遇到代碼的時(shí)刻就是在審查時(shí),而審查時(shí)的注意力又不夠,那誰在關(guān)注代碼庫的演化?沒有人。很快,你的代碼庫就會變成一個(gè)沒人能理解的爛攤子。

Token 經(jīng)濟(jì)學(xué)。Token 很貴,你們有些人已經(jīng)知道了。在大規(guī)模下,token 是一個(gè)你必須納入考量的實(shí)際成本。如果公司里每個(gè)人都開始用 10 倍或 100 倍的 token 會發(fā)生什么?如果你不小心在一天之內(nèi)花光整個(gè)月的預(yù)算呢?如果你必須優(yōu)先決定 token 花在哪里,你知道該優(yōu)先投入哪里嗎?你甚至有沒有看到 token 正在流向何處的可見性?

僅僅在這個(gè)簡單系統(tǒng)的前幾個(gè)節(jié)點(diǎn)里,我們就已經(jīng)發(fā)現(xiàn)了問題。而且非常清楚,會有一些具有挑戰(zhàn)性的二階效應(yīng)。

測試和版本控制


你曾經(jīng)看過你的測試基礎(chǔ)設(shè)施消耗了多少計(jì)算資源嗎?在 Google,我從來沒有對自己的測試速度滿意過。

每一個(gè)進(jìn)入版本控制的變更都必須被測試。但除此之外,agent 也很喜歡運(yùn)行測試,因?yàn)闇y試能告訴它們自己做得好不好。所以 agent 產(chǎn)生了額外的工作量,我要干的活就更多了。那么,10 倍提交量加上 agent 做的所有工作,現(xiàn)在消耗了多少測試計(jì)算資源?

實(shí)際上情況可能更糟。我們在 Google 觀察到的是,隨著代碼庫增長,依賴圖是二次方增長,不是線性。所以代碼庫大了 10 倍,你要跑的可能不是 10 倍的測試,而是 100 倍乃至 1000 倍的測試。這將是一個(gè)非常有趣的挑戰(zhàn),而且它會在某個(gè)時(shí)刻變成你預(yù)算表上的一行。如果你現(xiàn)在不擔(dān)心測試計(jì)算資源的花費(fèi),那更讓我擔(dān)心,因?yàn)槟且馕吨憧赡芨揪蜎]有足夠的測試,那些 agent 正在沒有安全網(wǎng)的情況下在你的代碼庫中 YOLO。

假設(shè)編譯和測試解決了,現(xiàn)在看版本控制系統(tǒng)。大多數(shù)流行的版本控制系統(tǒng)不是為性能優(yōu)化的,它們?yōu)橐恢滦院团判騼?yōu)化。這是它們的本職工作,保持完整記錄,不是跑得飛快。你的版本控制系統(tǒng)一分鐘能吃多少次提交?我保證比你想象的要少。它無法擴(kuò)展到你需要的那種 10 倍速度。你上一次想到版本控制系統(tǒng)的性能是什么時(shí)候?如果你不是做 Git 開發(fā)的,大概從來沒想過。說實(shí)話,淪落到要討論版本控制性能的地步,說明有些事已經(jīng)嚴(yán)重跑偏了。我們在開發(fā)者體驗(yàn)的最底層了,但這就是系統(tǒng)性變化的后果:它找到你系統(tǒng)的每一個(gè)角落,然后說,嘿,你在注意嗎?因?yàn)槟銢]預(yù)料到的事情來了。

對那些打算用很多小倉庫來解決版本控制問題的朋友,去問問任何跑過幾百個(gè)幾千個(gè)小倉庫的人,我可以保證,那只是一整套全新的挑戰(zhàn),AI 并不能必然使這些問題變得更容易。

意外清單

到目前為止我們只在看那些相對容易發(fā)現(xiàn)的容量型節(jié)點(diǎn),就是拿一個(gè)數(shù)字乘以 10 然后問會好還是會壞,還有很多意料之外的挑戰(zhàn)。

驗(yàn)證策略。你今天的驗(yàn)證大概就是很多單元測試加一些集成測試。但在 10 倍代碼和 10 倍服務(wù)的世界里,集成測試會變成質(zhì)量策略中最重要的部分。你們有多少人對自己今天的集成測試方案滿意?我也不滿意。集成測試真的很難,我現(xiàn)在還沒有能按我想要的方式做集成測試的工具。

布爾值合取問題。今天你要發(fā)布軟件,你要求每一個(gè)測試都通過,所有布爾值都變綠,一切沒問題了你才發(fā)布,這很合理。當(dāng)你有了一百萬個(gè)測試,而底層測試基礎(chǔ)設(shè)施運(yùn)行一百萬測試的可靠性本身就成問題的時(shí)候,會發(fā)生什么?可能所有布爾值都必須為真才能發(fā)布軟件這件事就做不到了。你需要一種新策略,大概基于統(tǒng)計(jì)的方法,來判斷哪些是正確的測試去運(yùn)行,因?yàn)槟悴豢赡芘芩袦y試。

超大變更。能處處重構(gòu)、更換語言和框架,的確令人興奮。但你有支撐的工作流和社會契約,能讓人們管理數(shù)以萬計(jì)、幾十萬計(jì)、百萬計(jì)行的合并沖突嗎?大概沒有。如果公司里每個(gè)人都能做超大變更,我們就需要新的工作流策略。

Agent 編輯戰(zhàn)爭。一個(gè) agent 做了一個(gè)修改,另一個(gè) agent 跑過來說不,我不喜歡,我要做一個(gè)不同的修改。看著挺好笑,直到你意識到你在為兩邊支付 token 費(fèi)用。

發(fā)布節(jié)奏。你今天多久向客戶發(fā)布一次?每天?那算挺好的。如果不是,這里有個(gè)問題:你會得到 10 倍多的軟件,這些軟件總得放到某個(gè)地方。如果你不是每天都在發(fā)布,每次變更會變得大很多。而我的 SRE 朋友們會告訴你,非常大的變更非常可怕。別這么做。但代碼總得部署才能產(chǎn)生價(jià)值,所以你可能會嘗試更頻繁地發(fā)布,這很好,DORA 的朋友們會感到欣慰。但在某個(gè)點(diǎn)上收益會遞減,每秒發(fā)布一次大概不會給你帶來太多價(jià)值。代碼還是會增長,你需要搞明白把它放在哪里才不會制造更多風(fēng)險(xiǎn)。

內(nèi)部 API。我一直在跟共事的朋友們說,你的所有 API 突然之間都變成公開的了。Agent 不會跟你商量,它會找到 API 然后直接調(diào)用。它能訪問到什么就會用到什么,我保證。如果你從來沒有像對待公網(wǎng) API 那樣加固內(nèi)部接口和內(nèi)部數(shù)據(jù)集,agent 會找到那些你并不希望它們找到的東西。

杰文斯悖論。杰文斯說,一種資源越便宜、越高效,我們就用得越多。Token 的爆發(fā)就是活生生的例子。我們在把它們放到所有地方,這改變了我們怎么工作,以及怎么思考工作。我們正在給以前那些隱形生產(chǎn)力勞動定價(jià),這會對我們的行為產(chǎn)生什么影響?我還不知道。

回滾。你知道為什么回滾今天基本可行嗎?因?yàn)槟惆l(fā)布軟件的速度略慢于你在生產(chǎn)環(huán)境中檢測到問題所需的時(shí)間。如果你能非常非常快地發(fā)布,快到你還沒法檢測到任何問題,你的回滾姿態(tài)會怎樣?每次回滾將不得不應(yīng)對堆在上面的多個(gè)互相沖突的變更。所以光發(fā)得更快是不夠的,你必須考慮整個(gè)系統(tǒng),包括回滾這個(gè)重要的安全閥。順便說一句,你需要小心把 token 引擎放在哪里。如果你的回滾流程依賴某個(gè) agent 有足夠的容量,而之前有人把那個(gè) agent 的 token 預(yù)算耗盡了,導(dǎo)致你現(xiàn)在無法回滾,那大概不是什么好事。

人人都是構(gòu)建者。你大概想過 vibe code 一個(gè)替代品,代替公司里那個(gè)你不喜歡的工具。現(xiàn)在,把這個(gè)乘以公司里每個(gè)人和每一個(gè)工具。當(dāng)每個(gè)人都在用完全不同的工具時(shí),公司的社會肌理會發(fā)生什么?如果你運(yùn)氣好有一個(gè)統(tǒng)一的數(shù)據(jù)底層,所有數(shù)據(jù)進(jìn)同一個(gè)地方,那還好。但如果沒有呢?人人都是構(gòu)建者是很酷,直到你必須維護(hù)所有人構(gòu)建的所有東西。

技術(shù)領(lǐng)導(dǎo)力速成班。成為一個(gè)技術(shù)負(fù)責(zé)人之所以花那么長時(shí)間,是因?yàn)槟惚仨毞e累直覺、判斷力和專業(yè)能力來幫你做決策,因?yàn)楫?dāng)你領(lǐng)導(dǎo)一個(gè)團(tuán)隊(duì)時(shí),你的失誤波及范圍比你獨(dú)自行動時(shí)要大得多。當(dāng)一個(gè)應(yīng)屆生踏入一個(gè)可以調(diào)用五十個(gè) agent 的環(huán)境,卻沒有任何直覺和判斷力時(shí),什么會出錯(cuò)?我怎么在六個(gè)月內(nèi)教出十年的經(jīng)驗(yàn)?我不知道。

人類注意力是我們擁有的最寶貴資源。現(xiàn)在噪音非常多,那么多 agent、那么多事物在爭奪我們的注意力,我們必須想辦法管理這件事。我們以前受益于一個(gè)事實(shí):我們制造麻煩的能力不會超過我們投入注意力的能力,但現(xiàn)在情況已經(jīng)不是這樣了。


這些聽起來很多,那是因?yàn)樵谝粋€(gè)系統(tǒng)里,一切皆關(guān)聯(lián)。我剛才提到的所有挑戰(zhàn),你不可能只通過看系統(tǒng)中一個(gè)節(jié)點(diǎn)來解決任何一個(gè),你必須看整個(gè)系統(tǒng)。

為了適應(yīng) agent 化開發(fā),我們都必須開始學(xué)會持續(xù)用系統(tǒng)的方式思考。當(dāng)你在思考系統(tǒng)時(shí),這些是你應(yīng)該關(guān)注的事:事物在變大,隨時(shí)間變化的效應(yīng),因果關(guān)系朝哪個(gè)方向流動,哪些節(jié)點(diǎn)在跟所有鄰居對話,涌現(xiàn)長什么樣,那些不知道從哪里冒出來的東西是什么。激勵(lì)機(jī)制呢?包括社會的和技術(shù)的,容量、反饋回路和瓶頸,這些是系統(tǒng)分析的工具。


看起來很復(fù)雜,但你真的只需要兩個(gè)問題:為什么(Why?),和如果呢(What if?)。為什么我們的集成測試這么少?如果我們有比單元測試更多的集成測試呢?為什么我們使用這些特定語言?如果 AI 寫了所有代碼呢?

“為什么”是你用來深入系統(tǒng)核心、搞清楚它如何運(yùn)作的鉆頭。你們都很擅長問為什么,但是“如果呢”是更難的部分。“如果呢”,可能讓人害怕,如果它要求你放棄那些你曾經(jīng)認(rèn)為設(shè)計(jì)得非常好的實(shí)踐的話。如果不這樣測試呢?如果完全不寫測試呢?別走太遠(yuǎn)。但如果你允許它發(fā)生,“如果呢”,也可以相當(dāng)令人興奮。

AI 是放大器,不是方向

AI 是放大器。這個(gè)想法來自我在 DORA 的朋友們,他們?nèi)ツ甑?AI 開發(fā)報(bào)告發(fā)現(xiàn),那些真正搞清楚了事情的團(tuán)隊(duì)之間存在一種關(guān)系:他們弄明白了如何讓 AI 成為放大器。

AI 可以給你更多。更多測試,更多文檔,更多代碼,但也更多混亂。放大是幅度,不是方向。AI 不關(guān)心那些東西去了哪里,它就是給你更多。DORA 真正發(fā)現(xiàn)的是,那些基本功扎實(shí)的團(tuán)隊(duì),能夠把放大效應(yīng)引導(dǎo)到有用的方向。

這就引出了問題:你對自己的基本功感覺怎么樣?你們公司的決策文化怎么樣?你能做什么來改進(jìn)它?技術(shù)戰(zhàn)略呢?有人在關(guān)注開發(fā)者生產(chǎn)力嗎?組織里的人今天協(xié)作得怎么樣?安全態(tài)勢呢?代碼健康度、發(fā)布衛(wèi)生、可靠性呢?AI 默認(rèn)不幫你解決任何問題。如果你的實(shí)踐是好的,它能放大它們。但如果不夠好,它只會制造更多麻煩。

但即使基本功扎實(shí),我們也即將經(jīng)歷一段真正的旅程。我猜測,到 2030 年,我們今天的開發(fā)者生態(tài)系統(tǒng),大概就像 2001 年在我們今天看來那么遙遠(yuǎn)。2001 年我們還在用 CD-ROM 發(fā)布軟件,到 2030 年我們可能就隔著這么遠(yuǎn)。

在你們繼續(xù)夯實(shí)基本功的過程中,讓我給你四件可以沿途思考的事。

第一,基礎(chǔ)設(shè)施容量。如果你不知道你有多少資源可以花,你不能部署 AI,不能部署計(jì)算資源,你需要一個(gè)好方法跟蹤這些。

第二,驗(yàn)證策略。你不能也不應(yīng)該發(fā)布沒有驗(yàn)證過的軟件。但驗(yàn)證策略會變,現(xiàn)在是時(shí)候想清楚了。集成測試會成為你最重要的武器,而你可能還沒有趁手的工具。

第三,隔離。你會得到很多用于不同目的的代碼,有些目的以前根本不用代碼。這沒問題,但你不希望一個(gè)很酷的原型代碼真的跑進(jìn)了生產(chǎn)環(huán)境。讓好玩的東西不要影響賺錢的東西。

第四,抽象。我們構(gòu)建抽象是為了防止開發(fā)者做出糟糕的選擇,這就是為什么我們有庫和框架。沒人從零開始寫 Web 服務(wù)器。讓 agent 做大量決策會導(dǎo)致同樣的后果,所以你需要好的抽象讓 agent 遵循。不要給它們糟糕的選擇。

你還必須接受一件事:工程實(shí)踐不是神圣不可侵犯的。實(shí)踐會變,原則才是重要的。這說起來容易做起來難,如果你從來沒有真正思考過為什么你的團(tuán)隊(duì)以這樣的方式測試軟件,或者為什么發(fā)布流程是這樣運(yùn)作的,你就沒辦法演化它。理解原則,才會給你力量和信心去穿越這個(gè) 10 倍時(shí)刻。

現(xiàn)在對軟件工程師來說,是一個(gè)令人著迷的時(shí)代。我們工作的每一個(gè)維度都在被重新定義;我們比以往任何時(shí)候都更需要發(fā)揮創(chuàng)造力;我們需要技能來應(yīng)對像上下文管理、token 經(jīng)濟(jì)學(xué)、模型漂移這樣的問題;我們需要?jiǎng)?chuàng)造力;我們不能太沉迷于優(yōu)化一切的誘惑,需要鼓勵(lì)探索。

有一個(gè)問題一直讓我睡不著,它不能僅靠優(yōu)化來解決:隨著代碼庫的增長,我們要如何保持對它的智識掌控?智識掌控就是指,人類能否對面前的東西進(jìn)行推理。我們輸?shù)暨@場戰(zhàn)爭至少已經(jīng)十五年了,我們最大的系統(tǒng)早就超出了任何一個(gè)人能思考的規(guī)模。你不信的話,回去做一個(gè)實(shí)驗(yàn):讓你團(tuán)隊(duì)里每個(gè)人畫一張系統(tǒng)架構(gòu)圖,看看你能得到多少種不同的版本。

我們的很多軟件系統(tǒng)非常脆弱,一行糟糕的代碼或一個(gè)錯(cuò)誤的配置標(biāo)志就能破壞一個(gè)百萬行系統(tǒng),這種脆弱讓你在做變更前不得不三思。但關(guān)于 AI 我有一個(gè)非常興奮的想法:一個(gè)持續(xù)更新的、幾乎可交互的架構(gòu)空間,我可以向它提問。如果我們把這里的容量移到東海岸會怎樣?如果用戶增長突然躍升 40% 呢?對于今天哪怕一個(gè)中等規(guī)模的系統(tǒng),這樣做在功能上幾乎是不可能的,變量太多了。但 AI 可以理解非常龐大的數(shù)據(jù)集,所以我認(rèn)為這里有東西可以挖掘。

我喜歡這個(gè)問題的原因是,我們不只是純粹專注于讓代碼機(jī)器轉(zhuǎn)得更快,我們在問:如何加深對我們已經(jīng)構(gòu)建的東西的理解?

變化發(fā)生得非常快,比你們大多數(shù)人經(jīng)歷的都快。你們現(xiàn)在能做的最重要的事情之一,就是去幫助那些正在掙扎的人,向那些還沒搞清楚的人伸出援手。我們都在以不同速度前進(jìn),都在以不同方式應(yīng)對這場變化。感到自己在落后,是很容易發(fā)生的事。

資深工程師們,去當(dāng)導(dǎo)師。找到那些卡住的人,幫助他們。如果你已經(jīng)搞清楚了 AI 開發(fā)工作流,去分享給別人,這不是什么珍貴的秘密。技術(shù)負(fù)責(zé)人,你必須參與進(jìn)來,幫助引導(dǎo)軟件工程在你們公司的發(fā)展方向。如果你關(guān)心軟件質(zhì)量或軟件設(shè)計(jì),你必須用你的聲音去為它發(fā)聲。在座各位就是要去做到這些的人,你們的老板大概不會。

如果我們把開發(fā)者生態(tài)系統(tǒng)想象成活的生態(tài)系統(tǒng),我們都已經(jīng)習(xí)慣了緊緊盯著每一個(gè)樹枝上的每片葉子,像照顧某種特殊生命形態(tài)一樣照料每一棵樹。但不用多久,我們要管的就不是一棵樹了,是整片森林。而你不能通過盯著單棵樹來管一片森林,你得把森林看作一個(gè)生態(tài)系統(tǒng)來管理。

系統(tǒng)性變化有一種特質(zhì):它在一切地方、一切事物上同時(shí)發(fā)生,大到讓人覺得什么都抓不住。此時(shí)此刻,你可能覺得什么都不能讓你在似乎每周都涌來的變革浪潮中站穩(wěn)腳跟。但正如我們剛才發(fā)現(xiàn)的,在一個(gè)系統(tǒng)中,一切皆關(guān)聯(lián),小的行動可以產(chǎn)生大的后果。

不管表面上看起來怎么樣,AI 轉(zhuǎn)型不是只屬于公司領(lǐng)導(dǎo)者的領(lǐng)域。作為一線軟件工程師,在這個(gè)臨界點(diǎn)時(shí)刻,你處于決定軟件工程將走向何方的核心位置。從工具到工作流,從工程實(shí)踐到工程文化,如果你能看清正在運(yùn)轉(zhuǎn)的系統(tǒng),你就能找到杠桿。你擁有的自主性比你以為的要多,用好這份自主性,為你的組織、你的團(tuán)隊(duì)和你自己去創(chuàng)造未來。

演講原鏈接:

https://www.youtube.com/watch?v=2n41YjR5QfU

聲明:本文為 InfoQ 原創(chuàng),不代表平臺觀點(diǎn),未經(jīng)許可禁止轉(zhuǎn)載。

會議推薦

AICon 上海站 Keynote 嘉賓已集齊!來自復(fù)旦、清華、螞蟻、阿里云等高校知名教授與頂尖專家集結(jié)!從多模態(tài)、大模型落地與 Token 服務(wù)維度,拆解大模型從 “會回答” 到 “能執(zhí)行” 的技術(shù)拐點(diǎn)。9 折倒計(jì)時(shí)最后一周,現(xiàn)在報(bào)名立減 580。

特別聲明:以上內(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)推薦
熱點(diǎn)推薦
Lisa闖進(jìn)世界杯歌詞引發(fā)低俗爭議!終因露屁股蛋子被LV家族拋棄

Lisa闖進(jìn)世界杯歌詞引發(fā)低俗爭議!終因露屁股蛋子被LV家族拋棄

阿訊說天下
2026-06-14 17:01:39
無視臺當(dāng)局禁令!臺東縣長和大陸談妥,廈門簽約,帥化民說出實(shí)話

無視臺當(dāng)局禁令!臺東縣長和大陸談妥,廈門簽約,帥化民說出實(shí)話

共工之錨
2026-06-16 00:19:37
上海男籃又撒錢了!24歲李弘權(quán)拿下三年頂薪,三個(gè)頂薪名額全用光,球迷直呼太豪橫

上海男籃又撒錢了!24歲李弘權(quán)拿下三年頂薪,三個(gè)頂薪名額全用光,球迷直呼太豪橫

銜春信
2026-06-16 14:04:29
一個(gè)人有沒有福氣,就看這3點(diǎn):1、看早起,2、看吃飯,3、看睡前

一個(gè)人有沒有福氣,就看這3點(diǎn):1、看早起,2、看吃飯,3、看睡前

阿凱銷售場
2026-06-16 08:31:52
鋤頭被殺刑事立案后續(xù)!狗主人再錘惡行,夫妻倆全坐牢也難平眾怒

鋤頭被殺刑事立案后續(xù)!狗主人再錘惡行,夫妻倆全坐牢也難平眾怒

奇思妙想草葉君
2026-06-15 19:21:54
臺當(dāng)局徹底絕望!大陸第二波反制開始,要把日本野心按死在臺海

臺當(dāng)局徹底絕望!大陸第二波反制開始,要把日本野心按死在臺海

離離言幾許
2026-06-16 03:25:53
沒想到,世界杯剛開始,裁判馬寧意外出圈,背后原因讓人哭笑不得

沒想到,世界杯剛開始,裁判馬寧意外出圈,背后原因讓人哭笑不得

荒野老五
2026-06-16 09:10:44
存款要變天了?若不出意外,2026年下半年存款市場或迎來4大轉(zhuǎn)變

存款要變天了?若不出意外,2026年下半年存款市場或迎來4大轉(zhuǎn)變

貓叔東山再起
2026-06-16 09:00:07
底層人到底有多艱辛?擺攤小哥在攤前竟這樣走了,無比痛心!

底層人到底有多艱辛?擺攤小哥在攤前竟這樣走了,無比痛心!

慧翔百科
2026-06-15 17:23:45
陽氣入髓,百病全退!記住這個(gè)補(bǔ)陽正確的順序,把陽氣補(bǔ)進(jìn)骨縫里

陽氣入髓,百病全退!記住這個(gè)補(bǔ)陽正確的順序,把陽氣補(bǔ)進(jìn)骨縫里

垚垚分享健康
2026-06-15 20:15:10
深夜撞了29只羊,女司機(jī)賠了32只:多出來的那3只,才是一個(gè)人走到哪都站得住的本錢!

深夜撞了29只羊,女司機(jī)賠了32只:多出來的那3只,才是一個(gè)人走到哪都站得住的本錢!

犀利辣椒
2026-06-15 06:23:13
26人全靠歸化,非洲雄獅被打趴,世界杯或造驚天大冷,劍指西班牙

26人全靠歸化,非洲雄獅被打趴,世界杯或造驚天大冷,劍指西班牙

古事尋蹤記
2026-06-16 07:18:34
王毅憑啥讓日本人羨慕?蒙古一行后,日民眾:換我們外長吧

王毅憑啥讓日本人羨慕?蒙古一行后,日民眾:換我們外長吧

天注定
2026-06-15 09:58:46
為什么說美伊達(dá)成停火備忘錄,是川普贏了伊朗輸了?

為什么說美伊達(dá)成停火備忘錄,是川普贏了伊朗輸了?

壹家言
2026-06-15 10:14:12
山西一肉鋪老板殺害合伙人及兩名顧客,涉案時(shí)精神狀態(tài)為抑郁發(fā)作,被評定為完全刑事責(zé)任能力;死者兒子稱合伙經(jīng)營30多年,曾想退出被拒

山西一肉鋪老板殺害合伙人及兩名顧客,涉案時(shí)精神狀態(tài)為抑郁發(fā)作,被評定為完全刑事責(zé)任能力;死者兒子稱合伙經(jīng)營30多年,曾想退出被拒

揚(yáng)子晚報(bào)
2026-06-16 07:31:40
教育部同意:兩所高校合并!

教育部同意:兩所高校合并!

雙一流高校
2026-06-16 00:09:41
人為啥是大屁股、雙乳房,肛門還被裹?背后全是演化中的生存取舍

人為啥是大屁股、雙乳房,肛門還被裹?背后全是演化中的生存取舍

奇怪的鯊魚們
2026-06-15 10:29:35
打死也不能放冰箱10種食物,回家立刻拿出來,別拿家人健康開玩笑

打死也不能放冰箱10種食物,回家立刻拿出來,別拿家人健康開玩笑

小柱解說游戲
2026-06-16 07:38:45
世界杯“大熱必死”定律再度應(yīng)驗(yàn),傳統(tǒng)強(qiáng)隊(duì)小組賽還能單方面“虐菜”嗎

世界杯“大熱必死”定律再度應(yīng)驗(yàn),傳統(tǒng)強(qiáng)隊(duì)小組賽還能單方面“虐菜”嗎

上游新聞
2026-06-16 14:43:42
巴薩盯上曼城天才中衛(wèi),德科已經(jīng)開始行動

巴薩盯上曼城天才中衛(wèi),德科已經(jīng)開始行動

余憁搞笑段子
2026-06-16 14:32:57
2026-06-16 15:19:00
InfoQ incentive-icons
InfoQ
有內(nèi)容的技術(shù)社區(qū)媒體
12538文章數(shù) 51947關(guān)注度
往期回顧 全部

科技要聞

DeepSeek融資500億,梁文鋒牢牢握住控制權(quán)

頭條要聞

多位業(yè)主購房后發(fā)現(xiàn)房子早已被查封 如今恐"錢房兩空"

頭條要聞

多位業(yè)主購房后發(fā)現(xiàn)房子早已被查封 如今恐"錢房兩空"

體育要聞

西班牙遭爆冷0-0佛得角 亞馬爾完成首秀

娛樂要聞

Lucky長大啦!完全就是小戚薇啊

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

2萬億存款去哪兒了?

汽車要聞

smart #6上市后 竟然很少被討論參數(shù)

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

數(shù)碼
教育
時(shí)尚
本地
軍事航空

數(shù)碼要聞

Ubuntu Touch 24.04-2.0 Beta發(fā)布:適配索尼Xperia X等

教育要聞

2025年國家關(guān)鍵領(lǐng)域語言科技賦能創(chuàng)新項(xiàng)目案例名單公示

和AI聊了2個(gè)月,我被確診「AI精神病」

本地新聞

當(dāng)年輕人重新愛上黃金,非遺有了新的打開方式

軍事要聞

美伊達(dá)成諒解備忘錄 內(nèi)塔尼亞胡表態(tài)

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