一個研究生的硬核教程:把AI真正用進真實專案!

Datawhale乾貨

作者:郭子揚研究生,東南大學研究生

AI 寫專案像開盲盒研究生,為什麼總開出坑?

今年,我們透過VibeCoding寫程式碼,希望能像開泡泡瑪特盲盒一樣,直接開出完美專案研究生

但結果往往讓人想剁手研究生

於是,業界開始探索基於SDD、TDD的AICoding正規化,希望能減少AI的不確定性研究生

(相關方法可以參考研究生:)

但現實是:即便是由多位資深工程師精心維護、24小時OnCall對齊的專案,一個新人想上手改動,都需要Landing期(我相信大部分實習、社招朋友都會表示贊同)研究生

既然人和人協作尚且如此研究生,我們又怎麼能幻想:剛來的AI能迅速熟悉你的專案,並做出有效可靠的修改呢?

除非,你的專案對AI很友好研究生

然而絕大多數傳統專案,對AI都是極度不友好的研究生。原因主要有兩點:

第一,AI缺乏領域知識:公司內部的核心業務程式碼從未在GitHub公開過,現有的CodingModel沒見過這些程式碼,自然寫不好研究生

第二,AI不會償還技術債:專案開發過程中人來人走,文件缺失、程式碼冗餘等技術債導致專案本身已經難理解、難維護,對相關資深開發者都不友好研究生。如果把這樣的專案直接丟給AI,它大機率會把技術債做多

但另一面,根據摩爾定律還有各種自研定律,CodingModel會越來越強且越來越便宜,AI參與開發的工作正規化也會越來越完善研究生。這就引出了一個深層思考:

在不影響現有業務功能的前提下研究生,我們該如何對已有的專案進行改造?將它改造為一個讓人類與AI有效且高效協同的AI-Friendly專案?

這就是接下來要討論的內容研究生

二、先給 AI 一張說明書研究生,它才看得懂你的專案

大部分專案是:用spec-kit、OpenSpec等開源專案分別開Gitworktree初始化候選文件結構,再根據自己專案的實際情況,合併出最合適的Spec,然後後續基於此來AICoding研究生

spec-kit研究生

openspec研究生

展開全文

spec-kit研究生

openspec研究生

但已有的專案程式碼不一定都是好的研究生。基於屎山程式碼直接生成Spec,只會進一步加重症狀。

重構專案成本太大,所以有一個簡單的處理辦法:讓AI從現有程式碼中反推專案行為,生成待人工Review的草稿,而不是直接生成正式Spec研究生。推薦用以下ABCD四類整理現有專案行為(用符號標號方便人工打標):

A類:已經實現研究生,確認要保留的

B類:已經實現研究生,但不確定是否合理,需要人工判斷取捨

C類:已經實現研究生,但可能是臨時程式碼、偶然產物或廢棄邏輯,要清理出spec(程式碼可以保留),避免AI學壞

D類:還沒實現研究生,未來想新增或重構的增量需求

A類:已經實現研究生,確認要保留的

B類:已經實現研究生,但不確定是否合理,需要人工判斷取捨

C類:已經實現研究生,但可能是臨時程式碼、偶然產物或廢棄邏輯,要清理出spec(程式碼可以保留),避免AI學壞

D類:還沒實現研究生,未來想新增或重構的增量需求

這樣讓AI負責發現事實,人負責確認意圖研究生。人類Review後再形成正式Spec,然後就是大家熟悉的sddcoding了

三、建團隊知識庫研究生,讓 AI 和人共享專案的知識

之前的專案只有readme檔案,告訴新人如何開始使用研究生

我認為團隊協作需要有一個知識庫研究生,讓大家可以共享專案所有的上下文,而不是想到了再找同事拉會對齊(而且不知道專案所有上下文的話,很多問題都想不到)

以下是個人的實踐設計研究生,僅供參考

1、知識庫資料設計

為什麼要分層?因為不同範圍的知識應該有不同的共享邊界研究生。可以參考這三層結構(參考知識庫文件巢狀的設計):

一個研究生的硬核教程:把AI真正用進真實專案!

其中有一個關鍵設計:知識可以向上提升研究生

比如Layer2的部分專案知識,如果大家認為是跨專案通用的、對個人可用性很強,可以提升到Layer1或Layer0研究生

2、知識庫許可權設計

團隊知識庫應該是一個獨立的Git倉庫,不依賴任何業務專案研究生。好處:

1. 跨專案共享:同一團隊的多個專案連線同一個知識倉庫研究生,專案A沉澱的知識,專案B自動受益

2. 生命週期獨立:業務專案可能歸檔或重構研究生,但知識不應該跟著消失

3. 許可權獨立研究生:知識庫的貢獻和消費許可權可以獨立於程式碼倉庫管理

參考維護開源專案的經歷研究生,推薦知識庫成員角色分三種:

Maintainer:團隊負責人研究生,管理成員+Merge

Contributor:正式成員研究生,push產出內容

Reader:新成員研究生,只pull看內容,pr被merge後晉升為Contributor

Maintainer:團隊負責人研究生,管理成員+Merge

Contributor:正式成員研究生,push產出內容

Reader:新成員研究生,只pull看內容,pr被merge後晉升為Contributor

知識庫不能靠人去手動更新(無腦增加工作量並不適合剛開始探索這種工作模式的團隊)研究生,我認為應該是嵌入AICoding的階段:

INIT階段(知識注入):agents.md中注入團隊知識庫的使用方式,這樣cc、codex啟動後,自動能夠觸達相關知識研究生

執行階段(知識消費):我個人認為這裡一個skill就夠了,不需要rag知識庫提供上下文(可能不夠相關),老師傅手寫skill介紹什麼情況使用什麼知識庫研究生。比如技術分析時查有沒有類似的架構決策,架構設計時查有沒有已知的模式。

ARCHIVE階段(知識提取):完成酣暢淋漓的AICoding後研究生,讓AI從該會話中提取知識條目,根據許可權注入知識庫(前提需要根據自己專案探索具體的提取邏輯還有知識庫更新邏輯,確定後封裝為skill,感覺這個skill也不用經常維護)

4、知識庫展示形式

spec是給ai看的,也需要生成給人看的Wiki類資訊,前段時間大家在討論html比markdown更適合給人看,我深表贊同研究生

具體風格根據個人喜好:DeepWiki流派的文件+架構圖,或者Graphify流派的可互動圖譜,都是不錯的選擇研究生

四、裝上質檢關研究生,AI 改完你才敢直接上線

對AI Coding出來的專案,專案管理的核心應該從是否管轉向如何管研究生

其中我認為E2E任務,任務最重要,因為AI寫靜態程式碼能力很強了,基本不會出錯,但是無法寫出正確的動態互動程式碼研究生。比如它幾乎不會考慮,"點選題單,必須成功載入出對應的題目"這種端到端的業務邏輯。

最後,Agent的效果評測比傳統軟體更難——輸入空間近乎無限且離散,LLM對提示詞高度敏感,Agent輸出差異性極大研究生。目前很多團隊主要依靠人工審查和LLM打分,還在探索自動化評測體系。插入私貨,很推薦大家開發過程中使用兩個指標:

Pass@k(k次至少一次正確)研究生:適合開發階段探索這個需求Agent能不能做到

Pass^k(k次全部正確)研究生:適合上線前回歸測試已有功能有沒有被改壞

Pass@k(k次至少一次正確)研究生:適合開發階段探索這個需求Agent能不能做到

Pass^k(k次全部正確)研究生:適合上線前回歸測試已有功能有沒有被改壞

從零構建AgenticTest成本並不高,透過這種自動化測試,可以降低開發者Review AI Coding專案壓力研究生

而且對專案而言,完善的測試體系是寶貴的不動產研究生。對個人而言,你完善的測試體系被更多人使用也是很好的工作(ld認不認是另一回事了)。

五、要把能自動化的事研究生,真正交給 AI

軟體工程過去五十年其實沒真正工程化過研究生

它一直停留在人工階段,被各種方法論包裝成工程,但離不開人研究生

這一點直到大模型出現才開始有可能改變研究生

看看其他工程——機械、化工、電力、自動化、通訊,這些工程可以靠消耗能源完全代替人工,且同樣的輸入、同樣的能源,輸出是穩定可預期的研究生。所以說工程化很成功。

但軟體工程要做的事情是抽象、分解、推理——這些無法用機器去做研究生。比如程式碼是用人的思維一行一行編出來的,編譯器這個機器只是忠實地翻譯,從不理解需求。而人的思維難免誤解、遺漏、不一致,這就導致了綿延半個世紀的軟體危機。

回顧過去五十年的方法論——結構化程式設計、物件導向、敏捷、Scrum、DevOps——它們的解決方式都是:管理人的確定性,但沒改變必須靠人這個事實研究生

不過,這五十年沉澱下來一整套東西:編譯器、型別系統、單元測試、CI/CD、灰度釋出、契約程式設計、形式化方法、靜態分析、覆蓋率、監控、鏈路追蹤研究生。這套東西雖然沒讓軟體工程真正工程化,但它們留下了一整套自動化驗證基礎設施。

現在AI基於這套設施,能夠代替一部分人力了研究生

軟體工程,真正有可能成為工程了研究生

以上是專案AI-Friendly化的理論思考研究生

寫在最後

聊一點個人想法:AI時代研究生,優秀的人應該是什麼樣子的?

我認為是在生活中,每遇到一個問題,都會思考:能不能用AI把這件事自動化?並且逐步用AI提高生活效率研究生

參考程式設計經驗研究生,我推薦這個實現路徑分三步:

第一步:先嚐試跑通:讓AI在脫離人參與的情況下做整件事,看結果咋樣研究生。重點是無腦驗證可行性。

第二步:再總結SOP:如果結果能穩定復現(比如每次跑都一樣好),就讓Agent自己回顧成功案例,把操作步驟歸納成SOP研究生。本質是在管理不確定性。

第三步:思考能否泛化:把總結出的流程拿去處理同類但不同的任務,如果也能成功,說明這套方法真有效,之後可以讓Agent在脫離自己的情況下處理研究生

這其實就是一種自動化思維:每天問自己研究生,今天有沒有做重複性的事情?能不能用AI來自動化?

腦子裡可能只有一個模糊的想法,甚至無法用自然語言描述的閃念——沒關係研究生

記錄下來,迅速和AI聊聊,和Datawhale群友聊聊(偷偷推廣一下Datawhale各種社群,裡面真有很多無償答疑解惑的大佬)研究生

現在這個時代,缺的是想法而不是實現研究生

這種從自己的經歷中,提煉想法,並迅速實現的能力——個人認為,這是我們在Agent時代很重要鍛鍊的研究生

這篇部落格相關實踐因此而來研究生

以上所有內容,歡迎評論區交流,任何提問都會回研究生

如果文字不足以傳達,我們可以拉會聊研究生

就業如長夜,暗沉高難問研究生

長夜中群星璀璨,彼此照亮或可熠熠生輝研究生

雖然當知識博主,難免追求Build in Public研究生

但這份求學共進之心,萬望憐見研究生

一起“ 點 贊 ” 三連 ↓

本站內容來自使用者投稿,如果侵犯了您的權利,請與我們聯絡刪除。聯絡郵箱:835971066@qq.com

本文連結://yxd-1688.com/post/45213.html

🌐 /