隨着AI技術的發展,Vibe Coding 也越來越火,所謂 Vibe Coding 就是用自然語言告訴 AI 你想要做,AI 負責生成代碼,人工來審查和修正。這就像和高水平的程序員結對編程,你出想法,他動手,你們通過對話不斷完善產品。這是一種對話式開發的閉環。
最近也嘗試了一下用AI編程,比想象中要好點(但也被AI刪庫跑路過)。想要入門 Vibe Coding 非常簡單,只需要以下幾步就可以了。
第一步:起點從文檔開始
不建議直接上來就説“給我寫個登錄頁面”,這種不明確的描述會讓AI降智。
所以,我建議 Vibe Coding 需要從更高層面的對話開始的,這個對話的產物就是項目文檔。
- 產品需求文檔 ( PRD ) :我腦子裏有個想法後,會先找 AI 聊,我一般用的是Gemini。比如,我會説:“我需要構思一個項目。它是個在線書籤管理器,核心功能有:用户註冊登錄、添加書籤(URL和標籤)、按標籤分類、全文搜索。你幫我把這些整理成一份簡單的產品需求文檔。” 經過幾輪的討論和補充,一份清晰的 PRD 就出來了。這份文檔就是我們後續所有工作的基礎。
- 技術需求文檔 (TRD) :有了產品需求文檔,我會繼續跟 AI 聊:“好,基於上面的需求,我們來設計技術方案。我傾向於用 React 做前端,Node.js + Express 做後端,數據庫用 PostgreSQL。你幫我分析下這個技術棧的優缺點,並設計一下數據庫的主要表結構,比如用户表和書籤表。” AI 會給出方案,我再根據我的經驗進行調整。這份 TRD 就成了我們開發工作的框架。
千萬不要覺得文檔是開發的負擔,這是和 AI 之間最重要的準則。有了它們,AI 才能真正理解我的意圖,而不是零散地執行命令。
第二步:開始編程
文檔準備就緒,打開我的編輯器,比如 VS Code + GitHub Copilot。這時候把AI當做是一個高水平的程序員,所以我的工作模式是:
- 我提需求,它寫代碼:我會在代碼裏寫下注釋,比如:“// 根據 TRD 設計,創建一個 Express 路由,處理
POST /api/v1/bookmarks請求,用於添加新書籤。” 這樣AI 會生成完整的代碼框架。 - 我做審查,它來修改:AI 生成代碼後,我的角色就變成了 Code Reviewer。我會檢查代碼邏輯是否嚴謹、安全性是否考慮周全。如果發現問題,我直接對 AI 説:“這裏需要增加輸入驗證,確保 URL 格式正確,並且標籤不能為空。” 它會立刻生成修正後的代碼。
我指揮,AI幹活,不斷循環這個過程,這大大提升了我的開發效率。
第三步:為了確保安全,需要高頻度的 Git 提交
AI 寫代碼速度很快,但有時也會過於熱情,一次性修改大量文件,有時候還會刪庫跑路,所以為了防止場面失控,Git 是最重要的安全保障。
我的想法是,只要 AI 完成了一個獨立的、可運行的小功能,我就會立刻 commit。*哪怕只是一個 API 端點的實現,我也會馬上保存一個版本。
git add .git commit -m "feat: implement add bookmark endpoint with validation"git push
這樣做的好處是,我的項目永遠都有一個穩定的回退點。如果 AI 下一步的修改引入了 bug,或者方向錯了,甚至刪庫了,我都能回滾到上一個正常的狀態,然後換一種方式和 AI 溝通。
第四步:開發環境是基礎
Vibe Coding 的流暢感,最怕被環境問題打斷。我和 AI 聊得正嗨,技術方案也確定了,結果一到本地運行,發現缺這少那,心態直接搞崩。
比如想用 Go 寫個微服務,得先去配 Go 的環境;想加個 Redis 緩存,又得去啓動 Redis 服務。這個過程非常割裂。
現在,我把這些後勤工作都交給了 ServBay。它成了我的本地開發總控台。
- 技術棧無縫切換:在項目構思階段,我和 AI 可能會討論多種技術方案。比如最終確定用 Node.js + PostgreSQL,我在 ServBay 裏點幾下鼠標,對應的Node.js 運行環境和數據庫服務就準備好了。整個過程不會超過一分鐘,思路完全不會被打斷。
- 多版本共存:我手頭有好幾個項目,有的用 Python 3.11,有的老項目還停在 Python 2.7。ServBay 能讓它們在我的電腦裏和諧共存,我想在哪個項目上工作,就切換到哪個版本,非常方便。
- 服務一鍵管理:需要 MySQL, MariaDB, PostgreSQL, Redis, MongoDB?我不再需要記住那些複雜的啓動命令,直接在 ServBay 的圖形界面裏下載並啓動就行了。
ServBay 保證了我的本地環境能跟上我思想的速度,為我和 AI 的“對話”提供了一個穩定可靠的試驗場。
第五步:學會説話,提升溝通效率
和 AI 協作,指令必須精確。這不僅體現在功能描述上,更體現在應用的架構層面,尤其是 API 的設計。
應用通常不是一個單體文件,它有前端(用户界面)和後端(數據處理)。它們之間需要一座橋樑來溝通,這座橋就是 API。
在和 AI 協作時,一般不建議説“讓前端拿到後端的數據”這種模糊的指令,而是給出非常具體的指令:“為書籤功能設計一套 RESTful API。我需要一個 GET /api/v1/bookmarks 來獲取所有書籤,以及一個 POST /api/v1/bookmarks 來創建新書籤。”
當 AI 為我生成前端代碼時,它就會知道如何通過 API 來獲取數據。比如,它會生成這樣的代碼:
async function fetchBookmarks() {
try {
const response = await fetch('/api/v1/bookmarks', {
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`
}
});
if (!response.ok) {
throw new Error('獲取書籤失敗');
}
const bookmarks = await response.json();
console.log('成功獲取書籤:', bookmarks);
// 接下來可以更新UI狀態...
} catch (error) {
console.error(error.message);
}
}
通過清晰地定義 API,我確保了應用的前後端能像兩個配合默契的同事一樣協同工作。
第六步:從本地到雲端,絲滑的部署
代碼在我的電腦上跑通只是第一步,讓所有人都能用上才是最終目的。
開發環境和生產環境的巨大差異常常導致“在我電腦上是好的,一上線就崩”的經典問題。
不過我用了ServBay之後,這個差異極大地被縮小。ServBay 不僅僅是管理語言版本,它還內置了 Nginx 和 Caddy 這樣的高性能 Web 服務器,還支持一鍵安裝和管理與生產環境同款的 SQL/NoSQL 數據庫。
所以,我在 ServBay 上做的每一次測試,都是在一個高度仿真的生產環境裏進行的,並且我能一鍵切換不同版本的語言環境,這樣能提前排除了大量因環境差異可能導致的 bug。
我的部署流程依然是基於 Git 的自動化流程:
- 前端:我把代碼
push到 GitHub,觸發 Vercel 的自動構建和部署。 - 後端:同樣,
push代碼到另一個倉庫,觸發 Render 或 自動化流程。
這個 Git-Ops 流程,讓我從寫完代碼到產品上線的整個過程,幾乎是全自動的。我只需要 git push,剩下的交給平台,就不用浪費時間和精力在運維上了。
最後
總而言之,AI 是我的得力助手,但最終的掌控者是我自己。我會引導 AI 解決根本問題,從本地開發,到 API 設計,再到最終部署,全程把控方向。
Vibe Coding 工作流就是是一個完整的閉環:用對話生成文檔來統一認知,在編輯器裏結對編程實現功能,用 Git 保證過程安全,靠 ServBay 提供敏捷且高保真的本地環境,通過清晰的 API 連接前後端,最後用自動化平台完成部署。 這套流程,讓我把編程變成了一場從想法到產品的流暢創作。