如何系统化地用 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,然后告诉我怎么构建镜像。
Follow this guide to effortlessly set up ESLint and Prettier in VS Code for your Next.js 13 project, ensuring clean and consistent code.
A comprehensive collection of my TypeScript learning notes, from basic concepts to advanced features
Learn to optimize Webflow's Card Slider effortlessly. Enable on mobile, disable on desktop with a seamless, code-free approach.