分享一些“氛圍編程”的工程化技巧 原創(chuàng)
編者按: 在氛圍編程日益普及的今天,開發(fā)者是否真的能夠完全依賴 AI 編程助手來完成從設(shè)計(jì)到測(cè)試的全流程開發(fā)?我們今天為大家?guī)淼奈恼?,作者的觀點(diǎn)是:AI?輔助編程是一種強(qiáng)大的效率工具,但開發(fā)者必須始終保持主導(dǎo)權(quán),承擔(dān)起代碼質(zhì)量、架構(gòu)決策和測(cè)試驗(yàn)證的最終責(zé)任。
文章系統(tǒng)性地介紹了“氛圍編程”(Vibe Coding)的核心組成與工作流程,強(qiáng)調(diào)了明確需求與設(shè)計(jì)先行的重要性,并詳細(xì)闡述了如何通過提示詞工程、上下文管理、測(cè)試驗(yàn)證和文檔協(xié)作等方式,最大化 AI 編程助手的效能。同時(shí),作者也指出了當(dāng)前 AI 在單元測(cè)試生成、多工具協(xié)調(diào)和會(huì)話管理等方面的局限性,提醒開發(fā)者保持批判性思維,不可盲目信任 AI 輸出。
作者 | Amazon Web Services - Labs
編譯 | 岳揚(yáng)
01 “氛圍編程”
根據(jù) wikipedia 介紹[1],氛圍編程(vibe coding)是一種現(xiàn)代軟件開發(fā)方式,用戶通過使用自然語言撰寫提示詞來生成代碼。
氛圍編程包含以下幾個(gè)協(xié)同工作的核心組件:
- Prompt(提示詞):用于指導(dǎo)編碼過程的初始指令與上下文信息
- Client(客戶端):用戶與編碼系統(tǒng)交互的界面,例如 Amazon Q Developer[2]?或 Cline[3]
- Additional context(附加上下文):可通過提供額外的上下文(如 AWS MCP 服務(wù)器)增強(qiáng)智能體的能力
需要重點(diǎn)強(qiáng)調(diào)的是:雖然編程 AI 想要提升開發(fā)效率,但其目標(biāo)并非取代開發(fā)者。開發(fā)者始終是產(chǎn)品架構(gòu)與產(chǎn)品愿景的主導(dǎo)者。 作為開發(fā)者,你需要理解、審查并驗(yàn)證每一個(gè)技術(shù)決策 —— AI 只是增強(qiáng)能力的一種工具,不能替代你的批判性思維與專業(yè)判斷。代碼質(zhì)量、架構(gòu)選擇和技術(shù)決策的責(zé)任始終由人類承擔(dān)。請(qǐng)參閱這份指南[4]了解如何負(fù)責(zé)任地使用 AI。
?? 警告:切忌盲目信任 AI 助手生成的代碼。請(qǐng)務(wù)必:
1)全面審查并理解生成的代碼
2)驗(yàn)證所有依賴項(xiàng)
3)執(zhí)行必要的安全檢查
4)在受控環(huán)境中測(cè)試代碼
02 AI 編程客戶端
- 選擇標(biāo)準(zhǔn):選擇 AI 編程客戶端時(shí),需綜合考慮組織需求(如合規(guī)性、安全策略和供應(yīng)商白名單等),同時(shí)權(quán)衡定價(jià)機(jī)制與 IDE 集成度等技術(shù)因素。
- 善用客戶端的功能特性:不同客戶端具備的獨(dú)特功能特性都可優(yōu)化工作流程。以 Cline 為例,可先啟用 Plan(規(guī)劃) 模式討論和細(xì)化完善實(shí)施方案,待全面評(píng)審后,再切換至 Act 模式生成符合預(yù)定方案的代碼。建議定期查閱文檔和版本說明,及時(shí)掌握所用客戶端的新功能與更新動(dòng)態(tài)。
- 功能兼容性:各客戶端支持的 MCP 功能特性存在差異(如 Tools/Resources/Prompts - 詳見 MCP 客戶端說明[5])。例如若計(jì)劃使用 CDK MCP 服務(wù)器,需確認(rèn)所選客戶端同時(shí)支持 Tools 與 Resources 功能。
- 多客戶端策略:無需局限于單一客戶端。不同客戶端擅長(zhǎng)的任務(wù)領(lǐng)域各異 —— 可搭配使用 Cline 進(jìn)行后端 / CDK 開發(fā),同時(shí)采用 Q CLI 處理 AWS 權(quán)限排查、網(wǎng)絡(luò)連通性檢查及安全組規(guī)則調(diào)試等運(yùn)維場(chǎng)景。
- MCP 服務(wù)器選擇:面對(duì)日益豐富的 MCP 服務(wù)器生態(tài),只需關(guān)注符合實(shí)際需求的解決方案。建議通過文檔研讀和實(shí)測(cè)驗(yàn)證相結(jié)合的方式完成遴選。
03 項(xiàng)目需求與設(shè)計(jì)指南
在開始任何編碼任務(wù)前,請(qǐng)先遵循以下這些要求:
1)明確界定項(xiàng)目需求與項(xiàng)目范圍
2)建立全面的設(shè)計(jì)指南與編碼規(guī)范
3)記錄所有約束條件與限制因素
4)創(chuàng)建并維護(hù)包含已收集信息的 markdown 文件供客戶端調(diào)用
5)完成上述步驟后方可啟動(dòng)編碼流程
你可通過 AI 助手協(xié)助確定特定功能或特定項(xiàng)目的需求、架構(gòu)、設(shè)計(jì)及任務(wù)劃分。這一環(huán)節(jié)非常重要,在實(shí)施階段能為 AI 助手提供關(guān)鍵信息。但請(qǐng)謹(jǐn)記:AI 是協(xié)作工具而非決策主體。
清晰的需求與明確的任務(wù)定義有助于 AI 助手生成更精準(zhǔn)的代碼,從而減少手動(dòng)干預(yù)需求。但這絕不意味著你可以減少對(duì)生成代碼的審查與驗(yàn)證責(zé)任。
需特別注意:絕不能僅依賴 AI 助手創(chuàng)建這些文檔。作為項(xiàng)目負(fù)責(zé)人,你必須始終保持對(duì)每個(gè)技術(shù)細(xì)節(jié)的掌控與理解。你的領(lǐng)域?qū)I(yè)知識(shí)、實(shí)踐經(jīng)驗(yàn)與判斷力才是決策的核心依據(jù)。由于 AI 助手可能存在迎合用戶而非提出批判性反饋的傾向,建議以提問形式而非斷言的方式與 AI 交互。這種方式能引發(fā)更有價(jià)值的對(duì)話,并有助于發(fā)現(xiàn)潛在問題或替代方案。
04 提示詞工程
有效的提示詞設(shè)計(jì)對(duì) AI 輔助開發(fā)(AI-assisted development)非常重要:
- 提供待完成工作的詳細(xì)規(guī)范
- 必要時(shí)附上相關(guān)上下文和文件資料
- 針對(duì)特定任務(wù)策略性地運(yùn)用提示詞,便于后續(xù)審查和測(cè)試
- 將大型任務(wù)拆分為更為聚焦的子任務(wù),以便獲得更佳的輸出結(jié)果
你可通過以下方式構(gòu)建提示詞:
- 使用 Amazon Bedrock Prompt Optimization[6]?等工具重寫提示詞,使其產(chǎn)生更符合應(yīng)用場(chǎng)景的推理結(jié)果
- 采用元提示詞策略(metaprompting)(譯者注:可以把它理解為 “讓 AI 生成提示詞的提示詞” 或 “提示詞的生成框架”。),先與 AI 助手討論功能特性,再將討論內(nèi)容總結(jié)為供智能體開發(fā)該功能的提示詞
05 測(cè)試與驗(yàn)證
通過以下方式確保代碼的質(zhì)量與可靠性:
- 對(duì)每項(xiàng)代碼變更進(jìn)行增量測(cè)試
- 盡可能實(shí)現(xiàn)自動(dòng)化測(cè)試
- 依據(jù)原始需求進(jìn)行驗(yàn)證
- 維護(hù)完整的測(cè)試套件(CI/CD)
- 定期執(zhí)行自動(dòng)化的安全掃描與質(zhì)量檢測(cè)
實(shí)踐中我們發(fā)現(xiàn),完全依賴 AI?代碼助手生成單元測(cè)試效果不佳。AI 助手只能創(chuàng)建淺層測(cè)試或無關(guān)斷言,這些測(cè)試僅能驗(yàn)證現(xiàn)有代碼,無法確保足夠的測(cè)試覆蓋率或有效的驗(yàn)證。
強(qiáng)烈建議自主創(chuàng)建測(cè)試用例并采用測(cè)試驅(qū)動(dòng)開發(fā)(TDD)方法。雖然可以借助 AI 助手基于你提供的測(cè)試用例來實(shí)現(xiàn)測(cè)試,但測(cè)試用例的定義必須由你親自完成。作為項(xiàng)目的負(fù)責(zé)人或監(jiān)督者,你最了解業(yè)務(wù)邏輯、邊界場(chǎng)景以及軟件的預(yù)期行為。你的領(lǐng)域知識(shí)和對(duì)需求的理解對(duì)于設(shè)計(jì)能真正驗(yàn)證應(yīng)用行為的測(cè)試場(chǎng)景至關(guān)重要。
開發(fā)人員必須親自審查并確認(rèn)每個(gè)測(cè)試用例能否:有效檢驗(yàn)?zāi)繕?biāo)功能、妥善處理邊界情況、保持測(cè)試套件的整體質(zhì)量。請(qǐng)謹(jǐn)記,有效的測(cè)試需要同時(shí)對(duì)業(yè)務(wù)需求和技術(shù)實(shí)現(xiàn)具有深度理解——這是當(dāng)前 AI 助手無法完全復(fù)制的能力。
06 文檔管理
可通過以下方式維護(hù)高質(zhì)量文檔:
- 記錄所有變更內(nèi)容
- 確??蛻舳松梢?guī)范的代碼文檔(如 Python 代碼中的 docstrings 和 README 中的書面文檔)
- 保持文檔與代碼變更同步
6.1 使用 AI 輔助進(jìn)行文檔編寫
可與 AI 共同創(chuàng)建多種文檔,并在協(xié)同修改時(shí)實(shí)時(shí)更新。例如:規(guī)劃階段定義數(shù)據(jù)庫架構(gòu)后,可讓 AI 生成 ER 圖。審查時(shí)若需調(diào)整,同步更新文檔與代碼。這種協(xié)作模式可應(yīng)用于 API 設(shè)計(jì)、網(wǎng)絡(luò)架構(gòu)等多方面。關(guān)鍵在于采用有邏輯的文檔拆分方式,保持文檔的實(shí)時(shí)性與簡(jiǎn)潔度,幫助您和 AI 共同維持對(duì)上下文的清晰認(rèn)知(對(duì)項(xiàng)目背景、進(jìn)展和細(xì)節(jié)的掌握)和控制(對(duì)項(xiàng)目方向和內(nèi)容的管理能力)。
小提示:結(jié)構(gòu)良好的文檔有助于開發(fā)者和 AI 助手在整個(gè)項(xiàng)目周期中保持上下文連貫性。
07 局限與注意事項(xiàng)
7.1 MCP 服務(wù)器與工具數(shù)量
- 過多的 MCP 服務(wù)器/工具可能對(duì)客戶端性能產(chǎn)生負(fù)面影響
- 請(qǐng)閱讀客戶端文檔了解最佳實(shí)踐與限制規(guī)范
7.2 會(huì)話管理
- 過長(zhǎng)的對(duì)話會(huì)因上下文容量持續(xù)增長(zhǎng)而降低客戶端性能
- 建議為不同功能模塊維護(hù)獨(dú)立的對(duì)話線程
- 定期審查并清理對(duì)話歷史記錄
08 上下文管理
8.1 規(guī)則規(guī)范(Rules)與工具設(shè)置(Configuration)
為實(shí)現(xiàn)最佳效果:
- 明確定義代碼生成與修改的規(guī)則
- 保持跨環(huán)境配置的一致性
- 記錄特殊規(guī)則與例外情況
- 定期審查并更新配置設(shè)置
- 采用模塊化的設(shè)計(jì)原則
規(guī)則規(guī)范示例:
- 若文件超過 300 行代碼,應(yīng)拆分為多個(gè)文件
- 為每個(gè)新增代碼段添加文檔說明
09 工具鏈
為充分發(fā)揮 AI 編程智能體的效能,請(qǐng)遵循軟件開發(fā)最佳實(shí)踐(需求明確、將代碼模塊化、文檔完善等)并善用工具(靜態(tài)代碼分析工具、代碼覆蓋率計(jì)算工具、CI/CD 流水線、測(cè)試套件、格式化工具等)。
當(dāng)我們向編碼智能體分配任務(wù)時(shí),它可通過運(yùn)行測(cè)試用例和靜態(tài)分析工具進(jìn)行自主迭代,必要時(shí)進(jìn)行自我修正。這種方式能最大限度減少人工干預(yù),優(yōu)化開發(fā)流程。
10 版本控制
請(qǐng)遵循以下版本控制最佳實(shí)踐:
- 規(guī)范化的 Commits:高頻率提交代碼變更并提供清晰的描述性信息??煽紤]使用 AI 輔助起草 Commit 說明,但務(wù)必人工審核確保其準(zhǔn)確反映代碼變更內(nèi)容,并為潛在的回滾提供有效參考點(diǎn)。
- 分支策略:新功能開發(fā)使用?feature?分支(feature branches)。重大變更應(yīng)創(chuàng)建獨(dú)立分支以保持開發(fā)流程的靈活性。
- 倉庫結(jié)構(gòu):維護(hù)清晰有序的代碼倉庫結(jié)構(gòu)。提前明確結(jié)構(gòu)規(guī)范要求(例如文件大小限制、單體倉庫設(shè)置、前端框架選型),并將這些要求納入給 AI 的提示詞中,以確保代碼組織方式的一致性。
END
本期互動(dòng)內(nèi)容 ??
?如果 AI 能完成 80% 的代碼,你認(rèn)為開發(fā)者最重要的核心能力是什么?是架構(gòu)設(shè)計(jì)、提示詞工程、測(cè)試驗(yàn)證,還是別的?
文中鏈接
[1]https://en.wikipedia.org/wiki/Vibe_coding
[2]https://aws.amazon.com/q/developer/
[5]https://modelcontextprotocol.io/clients
[6]https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-management-optimize.html
原文鏈接:
https://github.com/awslabs/mcp/blob/main/VIBE_CODING_TIPS_TRICKS.md

















