Skip to content
Alex Lee
Go back

現在用 AI 開發有什麼好方法:一個老兵的 11 條實戰經驗

有人問我,現在用 AI 開發有什麼好方法。我說這主要看你把 AI 用到什麼程度了,是新項目還是維護舊項目。真要展開來說,篇幅會非常大,這裏簡單說一下我個人的幾點經驗:

  1. 需求、詳細設計可以 AI 來做,但是架構一定要自己把關。

  2. 核心約束一定要有四個: 一是要求文檔、對話都要說人話; 二是任何文檔的新建、改寫,都不要壓縮任何信息,不以節省 token 爲導向; 三是代碼必須要有註釋,任何函數、類、接口以及重要的邏輯,必須要有註釋。 這三點其實說白了,就是解決你文檔看不看得懂、代碼看不看得懂的問題。 最後一個,就是能複用現有代碼就複用,能有成熟的開源項目和第三方庫就使用,不要重複造輪子。這一點也很重要,否則你會發現 AI 寫了大量代碼,實際效果不如一個成熟的庫有用。

  3. 第一批 AI 寫的文檔,一定要仔細閱讀,哪怕看着很不耐煩也要仔細閱讀,儘量把問題在文檔階段就解決掉。否則隨着 AI 寫的代碼越來越多、文檔越來越多,你會越來越不想看文檔,不想去閱讀代碼。很多的漂移和邊界擴大,都是因爲這一點。

  4. 在需求、架構、設計階段,訪談式很好用。你可以讓 agent 採用訪談式方式和你共同編寫,也可以讓 agent 和子 agent 自問自答來替代你做。但是每一步都要 append 到一個 list,不要相信它的上下文壓縮機制足夠好。

  5. 單元測試、門禁都是需要的,特別是項目越來越大時,更加需要。但是要定好規則,一個是單元測試和門禁的編寫和使用時機,一個是不要每次都跑全量。這能決定開發進度和 token 的浪費,同時避免過早進入優化的泥潭。

  6. 無論一個 agent 編寫你的項目,還是多個子 agent 並行開發,都會有一個很明顯的問題出現:那就是重複代碼、重複邏輯。這個當前很難避免,哪怕像我第 2 點寫了約束也一樣。Ponytail 這個 skill 庫有一定的作用,但是不能用原版,要修改,否則效果並不會很好。整個項目看下來,仍舊會有大量的、本可以合併或者抽象化的代碼,實際上寫了多個版本存在。而且使用不當,會導致你的代碼質量出現問題。

  7. review 一定要,不管每次的任務大小都需要,而且 review 一定要獨立且嚴格。什麼叫做獨立?就是不要開發者自審,而是交給其他的子 agent,如果有條件,甚至可以交給其他的大模型。review 一般來說要進行多輪,而且看複雜程度,簡單的一個 agent 去審,複雜的多個 agent 從不同的角度、或者分配不同的模塊去審,然後主 agent 負責去重、交叉驗證以及終審調研。這一步非常重要,因爲很多的 issue 都需要交叉驗證才能找到根因,否則就是不斷的打補丁式開發,修復只是解決了標,但是不治本。你讓它修好了,然後再次 review 又會發現新的問題,多輪下來修復了一大堆,但是實際上根因可能只有一個。另外一個就是要注意 review 是否存在過度審查,這點可以寫提示詞或者自己寫一個技能,但是最終還是要依靠你自己的能力,任何的提示詞和技能無法保證不會出現過度審查。最後就是不要一句“你給我 review”就完事了,要指出重點審查的方面,比如審查內存是否出現越界、溢出、泄漏等內存問題,是否存在過度設計,是否線程所有權和異步線程的使用方式正確等。

  8. skills 的使用,我不建議在當前這些頂級模型上開啓諸如 superpowers 之類的強約束技能組。這類效果是有,但是不見得收益有那麼大。個人來說,內置的 skill 和幾個自己修改過的足夠;團隊來說,工程化的 skill 一兩個足夠。再多就是負擔了。說句大白話,就算你用了 TDD、DDD 等等的玩意,實際產出的還是 AI 在審查,項目越大,人類審查的難度越大。

  9. 最重要是,就算你的項目跑了成千上萬的門禁,並且通過了,也不代表你的項目就可以上線了。這本身就是一個僞命題。因爲門禁再多,單元測試覆蓋再完整,不代表本身項目不會出問題。這些最多保證在有限的、已經驗證的前提下,項目是正常的。至於如何做,每個公司有自己的方式,比如我們一個小項目,全量門禁超過 10 萬個,跑一次要 30 分鐘,但是我們仍舊讓另外的 agent 根據設計文檔重新寫了一套攻擊程序,加在 CI 的最後一個環節。

  10. 其他的還有一些技巧,可能網上很多人都說了,就是 AGENTS.md、CLAUDE.md 只寫不超過 100 行核心提示,其他都是隻做索引。內部文檔採用結構化目錄保存,每個目錄有入口索引,測試要有臺賬,每次測試都要 append 臺賬。文檔的管理不要用編號,而是依靠 git 倉庫管理。等等之類的,就不多說了,網上到處都是。

  11. 哦,差點忘記了,還有大模型的選型。國內的模型我不是很瞭解,也基本上沒有用過。光從 Claude 和 GPT 來說,他們適合不同的領域,Claude 的分析能力非常強,在項目的架構、設計等階段執行的非常好,比 GPT 強非常多,唯一算是缺點的,就是自主能力太強了,你約束不好,它就會幫你做很多不必要的事情。GPT 在解決複雜問題上的確比 Claude 差很多,但是在幹活上就比較聽話,所以看你怎麼用了,我一般複雜的問題交給 Claude,簡單的局部的代碼編寫交給 GPT。另外很多時候我是用 Claude 來指揮 GPT 幹活,這樣效果很不錯,Claude Code 中它會監督 GPT 去做具體的任務,並及時地糾正和調整。至於模型切換,我不建議網上人說的換來換去,比如先讓它分析使用最強模型,幹活使用次級模型,一個連續的任務最好不要換來換去,除非本身就是主任務和子任務。這不是上下文的問題,而是大模型本身 cache 命中的問題。

其他的一時半會要麼想不起來,要麼要展開說纔行。總之上面這些就是簡單的我的一些經驗。真正如果展開說,這是非常大的一塊內容,不是簡單幾條就能說清楚的。正好你問起來了,我就簡單地說了下我的經驗,可能因爲是臨時起意,有些不完整和不對的地方,僅供參考。