【CSDN 編者按】AI 生成式開發(fā)工具正在席卷整個軟件行業(yè),許多人驚嘆于它帶來的提速奇跡,也有人對其取代程序員崗位感到焦慮。但當一位有著十年經(jīng)驗的開發(fā)者親自實驗,用兩周時間生成了 1.2 萬行代碼后,他卻從狂熱轉向失落,最終選擇推倒重來。
原文鏈接:https://www.reddit.com/r/ExperiencedDevs/comments/1l1b6n8/i_introduced_agentic_ai_into_my_codebase_two_and/
作者 | return-zero 翻譯 | 鄭麗媛
出品 | CSDN(ID:CSDNnews)
正如標題所說,幾周前我在自己的代碼倉中引入了 Agentic AI,但現(xiàn)在已決定將它拆分出來了。這篇文章可能會比較長,你可以把它視作一篇“親身實錄”。
考慮到不少讀者可能已經(jīng)被各種 AI 話題轟炸得疲憊不堪,我先奉上一段簡潔明了的內(nèi)容概括:我試圖把“Agentic AI”融入開發(fā)流程,結果它就像《搏擊俱樂部》里的 Tyler Durden,一不小心就把我的整個代碼庫給炸了。
10 年碼齡開發(fā)者,想借 AI 提速
先做個簡單介紹:我是一位有 10 年開發(fā)經(jīng)驗的技術負責人。
幾個月前,我開始開發(fā)一款社交媒體應用(大概可以類比 BlueSky 這種類型)。它不是聯(lián)邦制的(至少現(xiàn)在不是),但它是開源的,可以自己部署。這是我一直以來想做的一個“心頭好”,從頭到尾都是我手寫的代碼,幾乎沒怎么借助 AI。開發(fā)節(jié)奏雖然慢,但比較穩(wěn)定,項目已經(jīng)公開,有人會來找我聊天交流,我也感到很滿意。
但有一個問題:我的開發(fā)時間非常零碎。因為家里有一個 5 個月大的寶寶,只有等全家都睡著以后我才能專注寫代碼。也正因如此,我對最近發(fā)布的一些“Agentic AI”解決方案格外感興趣,想著或許能借此提提速。
大體來說,這個項目的技術棧非常簡單:
● 移動端:React Native
● Web 端:Next.js
● 后端:Nest.js
● 數(shù)據(jù)庫:Postgres
● 對象存儲:S3
我之前用 AI 的經(jīng)驗只限于問問 ChatGPT,或者在 VSCode 中把 Copilot 當 StackOverflow 的替代品來用。我甚至還關掉了 Copilot 的自動補全功能,因為它經(jīng)常太啰嗦了,而且不太靠譜。
但這次我決定嘗試 VSCode 的“Agent 模式”。在動手之前,我給自己設定了幾條原則:
1. 不用按 token 計費的模型
Agentic 系統(tǒng)的工作方式基本是“暴力試錯”:反復迭代,直到得到正確結果。我不相信這種機制能在計費模型上用得好。坦白說,如果一個任務需要這么多輪才能搞定,那我自己動手或許還更快。不過這個原則我后來打破了——當我發(fā)現(xiàn) Sonnet 4 在 6 月之前是不限量的,就想“試試看也無妨”,反正之后還可以再切回 GPT-4.1。這個后面還會詳細說。
2. 每一行代碼都要人工 review
我不是來搞“氛圍編碼”的(vibecoding)。這次,我想真正地把 Agentic AI 融入到我日常的工作流程中,看看它是否真的能幫助我提升開發(fā)速度。畢竟現(xiàn)實項目中,每一行被合入主干的代碼都需要有人來兜底。如果 AI 真的代表了未來開發(fā)方式,那我希望搞清楚“未來到底長什么樣”。
3. 不能半途而廢
這聽起來好像是廢話,但我確實非常認真地按照 Agentic AI 的相關文檔和最佳實踐來操作。我反復研究了 copilot-instructions.md,也覺得自己當前的代碼結構是挺合適引入 agent 的:已有的測試驅動開發(fā)(TDD)邏輯清晰、模塊封裝合理、API 邊界清楚。我對自己說,這一套得真正跑得起來,才能把我的項目推上線。畢竟,現(xiàn)在有那么多開發(fā)者靠幾條 prompt 就能部署上線,如果我不掌握這項技能,怎么跟他們競爭?
AI 的潛力,讓我無法視而不見
在這次嘗試之前,我其實對 AI 開發(fā)一直是持懷疑態(tài)度的那一類人。我的幾個朋友總是興沖沖地來找我說:“你看我 prompt 出了個啥!”然后展示一些半成品 UI,沒有任何實質功能,只能完成一個唯一的使用場景。我隨口問幾個最基本的問題:
——怎么部署的?答不上來。
——用的什么技術棧?答不上來。
——有安全性措施嗎?沒有。
我一般會客氣地提醒他們注意安全、注意質量,然后祝他們好運。但說實話,我內(nèi)心是憤怒的——一些從沒參與過技術工作、甚至連技術邊都沒摸過的人,現(xiàn)在居然跑來跟我說:“你很快會失業(yè)了,因為我用 prompt 寫出了一個……連 MVP 都稱不上的玩意”?要知道,就在幾年以前,這群人還覺得我做的東西簡直像“魔法”一樣。
但轉念一想,我開始擔心自己是不是“錯過了什么”。也許這些工具如果交給“正確的人”,真的能做出不錯的作品?也許這項技術早就飛躍發(fā)展,而我還把腦袋埋在土里假裝沒看見?
在這個行業(yè)里,大多數(shù)時候你唯一的選擇就是:如果你覺得重要,就別抱怨,趕緊學。
所以我決定不再嘴硬,轉而認真學習,畢竟 AI 的潛力確實讓我無法視而不見。
初次嘗試“Agent 模式”:震撼到失眠
當我第一次把“Agent 模式”接入我的代碼庫時,真的是被驚到了——它幾乎可以一鍵生成完整的“功能模塊”:
● 自動編寫前后端邏輯;
● 自動生成單元測試;
● 自動運行測試并驗證功能是否符合預期。
說真的,那天晚上我根本沒睡著。我真的一度以為:“AI 要取代我了。”
它完成了大量我認為是“機械性開發(fā)”的內(nèi)容,比如數(shù)據(jù)庫 CRUD 操作,而且效率幾乎是我的五倍。我按照之前定下的規(guī)則逐行 review 了代碼,提出改進建議,做了一些重構,它也都處理得非常好。按照我以往的評估標準,這已經(jīng)相當于我布置給一位初級開發(fā)者的三天任務,而且它還執(zhí)行得非常利索。
意料之中,我對它徹底上頭了,就像上癮了一樣,瘋狂地寫 prompt、生成功能、重構代碼。一行一行地過,我發(fā)現(xiàn)它的質量還真不賴!在差不多兩周時間里,我一共生成了約 12000 行代碼,并刪除了約 5000 行舊代碼——相比之下,在那之前我花了整整兩個月,才寫到 2 萬行左右。
我當然知道 LOC(代碼行數(shù))并不是衡量生產(chǎn)力的好指標,我也承認這一點,但我實在想不出比這更直觀的方式來描述我的開發(fā)速度在這段時間里到底加快了多少。
它生成的代碼和我自己的風格、語法都很一致,還能自動校驗 lint 規(guī)則、通過我的 CICD 工作流。說實話,我那時已經(jīng)完全相信:“做開發(fā)的日子真的快到頭了。”
然后,第二周來了……
逐漸“祛魅”:根本無法維護,也不再信任 AI
第二周剛開始,我?guī)缀醯搅恕耙?prompt 就上頭”的地步了,顯然已經(jīng)徹底沉迷了。上周我在應用開發(fā)上的進展,甚至超過了過去一個月的總和。把思維轉化為代碼對我來說已經(jīng)非常自然,就像是我領域知識的直接延伸。生成的代碼干凈、可用,幾乎不需要我這個“AI 暴君”再插手。
但接下來,事情開始變得詭異。
注意,我用的是所謂的“高級模型”。如果你不知道這是什么,可以這么理解:這些模型會把大量的化石燃料燒掉,只為生成一個只會單一功能、還做得很爛的 React 應用。我開玩笑的,當然,也不完全是玩笑……總之,這些算是目前市面上頂尖的編程 AI 模型了。Sonnet 4 剛剛發(fā)布,而 Anthropic 的模型也被公認為最擅長代碼生成的 AI。
我在追求“AI 編碼”的路上已經(jīng)走火入魔,開始違背自己曾經(jīng)定下的“規(guī)則 1”——但我就是想看看,頂配模型到底能把我?guī)У绞裁吹夭健?/p>
我開始嘗試開發(fā)一個新功能,說白了就是“所有社交平臺都有的那種功能”,只是加了一點我自己的創(chuàng)新(在此就不劇透了)。我給它下了非常明確的 prompt,也給它逐步反饋哪里出問題了。
結果呢?每!一!次!它不是陷入無限循環(huán),就是跑偏追錯方向。而最糟糕的是,它死活不肯承認自己失敗了,還拖拖拉拉、磨磨唧唧。
此時,我的代碼庫已經(jīng)膨脹到 12k 行以上,應用的上下文復雜度也隨之大增。AI 不再能像以前那樣簡單地 grep 一下關鍵詞就找到 1~2 個可以修改的點了。現(xiàn)在,它每次查找都會碰上 10、20、甚至 30 個相關引用。更別提,每一次失敗的嘗試,如果是在 6 月 3 日以后,那就是按次計費的。模型失敗時不會告訴我,但每一次失敗都在悄悄地燒我的錢。
我開始懷疑自己是不是哪里出了問題:“那些聰明人都說他們可以靠自動代理做完整功能,完全不用開發(fā)者干預啊!”
于是,我給自己挖了個新的大坑,死磕代碼、手動清理前端。我注意到代碼庫里其實藏著很多重復代碼,在 isolated review 時不容易發(fā)現(xiàn)。同時也發(fā)現(xiàn)了一個讓人抓狂的點:AI 根本不在乎命名是否準確。它會給變量起一個聽起來很對的名字,但實際功能和這個名字毫無關系。
我承認,我可能從一開始就不應該接受這些代碼合并。但問題是,這些修改看上去真的很不錯。AI 寫得信心滿滿,風格跟我的 style guide 完全一致,而我投入的精力和我 review 一位初級程序員的 PR 是一樣的。
雖然我確實取得了一些進展,但當我退一步、從宏觀上看整個項目時,開始產(chǎn)生一種莫名的失落感:這個代碼庫,不再有我當初那種專注細節(jié)、精雕細琢的味道了。
我不再為它感到驕傲——哪怕我才剛剛花了一整天,讓 AI 對它進行了“花式重構”。然后,我意識到了更可怕的一件事:這玩意兒根本無法維護,而且我不再信任它了。
一些想法與后記
說實話,現(xiàn)在我依然對我們這個行業(yè)的未來感到有些恐懼。
AI 的出現(xiàn),讓一大批本來不會接觸代碼的人突然有了“我現(xiàn)在就是軟件工程師”的錯覺。而這種錯覺正在腐蝕我們行業(yè)的專業(yè)認知,也在持續(xù)稀釋真正的技術人才。
更糟糕的是,這也讓我們越來越難分辨誰是真正懂行的人,誰又只是在演戲。對了,還有一點:判斷標準絕對不是看誰刷 Leetcode 刷得多。現(xiàn)在有太多“技術 coser”,他們可能對營銷很有一套,甚至能包裝得滴水不漏,但本質上是在玩 cosplay。
我也不知道該怎么讓這些非技術出身的朋友明白“你不知道自己不知道的東西”,除了用一點被動攻擊性的方式,拿他們生成的項目,慢慢地用真正的軟件工程原則去“審問”他們。而現(xiàn)實是,他們中的大多數(shù)人,在項目卡到一定程度后,已經(jīng)從頭重寫了三四遍了。
不過,我依然還在嘗試把 AI 納入我的開發(fā)流程。我現(xiàn)在做的,是把整個項目在引入 AI 之前的版本 fork 一份新倉庫,開始手動重寫所有功能,把 AI 生成的代碼當成一種“模糊參考”,而不是直接用。我越來越相信,AI 的使用邊界就應該止步于此:它永遠不該直接往一個實際的代碼倉里寫功能性代碼。
它的價值應該體現(xiàn)在兩個方面:一是分析現(xiàn)有代碼,二是作為文檔提供一些示例代碼。
我現(xiàn)在偶爾會在 VSCode 里用 inline 的 Cmd+I prompt 工具,體驗還算可以。尤其是用在小函數(shù)級別(比如五行以內(nèi)的函數(shù))時,效果還算穩(wěn)定、可預測。但要是讓它一口氣生成一個垂直功能模塊,那簡直就是災難。
總之,如果你讀到這里,我也真心希望能聽聽你的想法。是不是我哪里理解錯了?你也有類似的體驗嗎?我現(xiàn)在覺得,自己算是站在了 AI 開發(fā)兩端的分界線上,好好鉆研了一番,但我最終的結論卻是——這玩意兒跟我們手寫的屎山代碼,其實也差不多。
——對話 IEEE 首位華人主席、美國雙院院士劉國瑞 | 萬有引力
2025 全球產(chǎn)品經(jīng)理大會
2025 年 8 月 15–16 日
北京·威斯汀酒店
2025 全球產(chǎn)品經(jīng)理大會將匯聚互聯(lián)網(wǎng)大廠、AI 創(chuàng)業(yè)公司、ToB/ToC 實戰(zhàn)一線的產(chǎn)品人,圍繞產(chǎn)品設計、用戶體驗、增長運營、智能落地等核心議題,展開 12 大專題分享,洞察趨勢、拆解路徑、對話未來。
更多詳情與報名,請掃碼下方二維碼。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
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.