如何系統化地用 AI 程式設計助手寫出生產等級的程式碼?這篇指南給你一套可重複使用的完整流程。
credit: https://www.youtube.com/watch?v=SS5DYx6mPw8
這篇指南整理了一套可重複使用的結構化流程,教你怎麼和 AI 程式設計助手配合寫出生產等級的程式碼。文中會以用 Python 搭建 Supabase MCP 伺服器為例,但這套方法論適用於任何 AI 輔助開發的場景。
先說幾條核心原則,後面的全域規則和提示詞都是圍繞它們展開的:
動手寫程式之前,先和 LLM 聊聊,把專案的大致範圍和任務理清楚。整體規劃寫進 PLANNING.md,具體任務記在 TASK.md。專案推進過程中,讓 AI 助手持續更新這兩個檔案。
全域規則是讓 AI 助手遵守黃金法則最有效的方式。全域規則對所有專案生效,專案規則只作用於目前的工作區。主流 AI IDE 都支援這兩種規則:
下面是一套範例規則(以 Supabase MCP 伺服器為例),可以直接拿來當模板:
PLANNING.md,了解專案的架構、目標、程式碼風格和限制。TASK.md,如果目前的任務沒記錄,就加一條簡要描述和日期。PLANNING.md 中的命名規範、目錄結構和架構模式。/tests 目錄下,目錄結構與主程式碼保持一致。TASK.md 裡標記完成。TASK.md 的「過程中發現」一欄。主要語言用 Python。
遵循 PEP8,用型別註記,用 black 格式化。
資料驗證用 pydantic。
API 用 FastAPI,ORM 用 SQLAlchemy 或 SQLModel(視需求選擇)。
每個函式都寫 docstring,採用 Google 風格:
def example():
"""
简要说明。
Args:
param1 (type): 参数描述。
Returns:
type: 返回值描述。
"""
README.md。# 原因: 行內註解說明為什麼這麼寫,而不只是描述做了什麼。TASK.md 的任務裡。MCP 能讓 AI 助手直接和外部服務互動,例如:
想找更多 MCP 伺服器?網路上有彙整了大量 MCP 伺服器的清單,附安裝說明。
各 IDE 的 MCP 設定文件:
搭配 Git MCP 的提示詞範例:
现在代码状态不错,帮我 git commit 保存一下。
開局的第一條提示詞至關重要。哪怕 PLANNING.md 寫得再詳細、TASK.md 整理得再清楚、全域規則設定得再完善,第一條提示依然要盡可能具體——告訴 LLM 你要做什麼,以及可以參考哪些文件。
具體到你的專案會有所不同,但最好的做法是:給一個類似的參考範例。bolt.new、v0、Archon 裡那些效果最好的提示詞,無一例外都附帶了範例。如果你用到了特定的工具、框架或 API,通常還需要額外提供相關文件。
提供參考資料有三種方式:
@mcp 再按 Tab,就是在告訴它去搜 MCP 文件。以建立 Supabase MCP 伺服器為例的起手提示詞:
参考 @docs:model-context-protocol-docs 和 @docs:supabase-docs,用 Python + FastMCP 写一个与 Supabase 数据库交互的 MCP 服务器。传输方式用 Stdio,需要支持以下操作:
- 读取表中的行
- 创建记录(支持单条和批量)
- 更新记录(支持单条和批量)
- 删除记录(支持单条和批量)
每个工具的描述要写清楚,让 LLM 能准确判断什么时候该用哪个工具。
环境变量需要 Supabase 项目 URL 和 Service Role Key。
先读一下这个 README 了解 Python MCP SDK 的用法:
https://github.com/modelcontextprotocol/python-sdk/tree/main
写完之后更新 README.md 和 TASK.md。
對了,對話拉長了記得及時開新的。如果你發現 LLM 開始讓你抓狂,那就是該重開的訊號了。
初始提示之後的修改和迭代,盡量一次只給一個任務,除非是很簡單的改動。雖然一口氣丟一堆需求給 LLM 很誘人,但任務越聚焦,輸出品質越穩定。
好的提示詞:
给“列出记录”的函数加一个过滤参数。
不好的提示詞:
给列出记录加个过滤功能。另外创建记录那个函数报错说找不到 API Key。还有,README.md 里关于怎么用这个服务器的文档写得太简单了,帮我补充一下。
想要穩定的輸出,關鍵是讓 LLM 每次盡量只改一個檔案。
改完之後別忘了讓 LLM 同步更新 README.md、PLANNING.md 和 TASK.md。
可以在全域規則裡要求 LLM 實作功能後自動寫測試,也可以自己手動跟一步「幫我寫個測試」。盡早發現 bug 能避免問題滾雪球,這一步非常重要。
寫單元測試確實有點煩,LLM 寫的測試也不總是完美的,但盡量讓它把每個功能都涵蓋到。真的卡在某個測試上推不動了,跳過也行——先保住主流程。
測試的幾個最佳實踐:
tests/ 目錄下。這一步算是選配,而且比較看個人偏好,但還是想分享一下我的習慣。當專案準備上線或需要分享給別人的時候,我一般會用 Docker(或 Podman)把它容器化。
LLM 處理 Docker 相關的東西非常可靠,所以這是我目前覺得最省心的打包方式。而且現在幾乎所有雲端平台(Render、Railway、Coolify、DigitalOcean、Cloudflare、Netlify……)都支援跑 Docker 容器。我的 AI Agent、API 服務和 MCP 伺服器全部容器化部署。
Dockerfile 範例:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 拷贝 MCP 服务器代码
COPY . .
CMD ["python", "server.py"]
建置指令:
docker build -t mcp/supabase .
讓 LLM 幫你產生的提示詞:
帮这个 MCP 服务器写一个基于 requirements.txt 的 Dockerfile,然后告诉我怎么构建镜像。