Skip to content

翻译 | 🧠 完整AI编码助手工作流

Published: at 05:30 PM

credit: https://www.youtube.com/watch?v=SS5DYx6mPw8

本指南概述了一个可重复、结构化的流程,用于与AI编码助手一起构建生产级质量的软件。我们将以使用Python构建Supabase MCP服务器为例,但同样的流程适用于任何AI编码工作流程。

1. 🔑 黄金法则

这些是指导如何高效有效地使用AI工具的高级原则。我们将通过全局规则和在整个过程中的提示来实施这些原则:

2. 🧠 规划与任务管理

在编写任何代码之前,与LLM进行对话以规划项目的初始范围和任务是很重要的。范围记录在PLANNING.md中,具体任务记录在TASK.md中。随着项目进展,这些文件应由AI编码助手更新。

PLANNING.md

TASK.md

3. ⚙️ 全局规则(用于AI IDE)

全局(或项目级别)规则是强制AI编码助手使用黄金法则的最佳方式。 全局规则适用于所有项目。项目规则适用于您当前的工作空间。所有AI IDE都支持这两种规则。

使用以下示例(针对我们的Supabase MCP服务器)作为起点,向您的AI IDE系统提示添加全局规则以确保一致性:

🔄 项目意识与上下文

🧱 代码结构与模块化

🧪 测试与可靠性

✅ 任务完成

📎 风格与约定

📚 文档与可解释性

🧠 AI行为规则

4. 🧰 配置MCP

MCP使您的AI助手能够与服务交互,以完成以下操作:

想要更多MCP服务器? 在此处查看带有安装说明的大量MCP服务器列表。

如何配置MCP:

使用Git MCP服务器可能的示例提示:

好的,我喜欢应用程序的当前状态。请进行git提交以保存当前状态。

5. 💬 启动项目的初始提示

开始项目的第一个提示是最重要的。即使在PLANNING.md中有全面的概述,TASK.md中有明确的任务,以及良好的全局规则,仍然重要的是要提供大量详细信息,准确描述您希望LLM为您创建的内容以及它可以参考的文档。

根据您的项目,这可能意味着许多不同的事情,但这里最好的建议是提供您想要构建的类似示例。bolt.new、v0、Archon等应用中最好的提示都提供了示例 - 您也应该这样做。如果使用特定工具、框架或API进行构建,通常还需要其他文档。

提供示例和文档有三种方式:

  1. 使用许多AI IDE内置的文档功能。例如,如果我在Windsurf中输入”@mcp”并按tab键,我就告诉Windsurf搜索MCP文档来辅助编码。
  2. 让LLM使用像Brave这样的MCP服务器在互联网上查找文档。例如:“搜索网络以查找其他Python MCP服务器实现。”
  3. 在您的提示中手动提供示例/文档片段。

创建初始Supabase MCP服务器的示例提示(使用Python):

使用@docs:model-context-protocol-docs和@docs:supabase-docs创建一个用Python编写的MCP服务器(使用FastMCP)与Supabase数据库交互。服务器应使用Stdio传输并具有以下工具:

- 读取表中的行
- 在表中创建记录(一个或多个)
- 更新表中的记录(一个或多个)
- 删除表中的记录(一个或多个)

确保为每个工具提供全面的描述,使MCP服务器能够有效地向LLM传达何时以及如何使用每种功能。
此MCP服务器的环境变量需要是Supabase项目URL和服务角色密钥。

阅读此GitHub README以了解如何使用Python创建MCP服务器:

https://github.com/modelcontextprotocol/python-sdk/tree/main

使用FastMCP创建MCP服务器后,更新README.md和TASK.md,因为您现在已经有了服务器的初始实现。

记住在对话变长时重新开始对话。当LLM开始让你感到无比沮丧时,你就知道是时候了。

6. 🧩 初始提示后的模块化提示过程

对于项目的任何后续修复或更改,通常您希望一次只给出一个任务,除非任务非常简单。虽然一次向LLM提出很多问题很诱人,但越是集中的更改,结果就越一致。

好例子:

"现在更新列出记录的函数,添加一个用于过滤记录的参数。"

坏例子:

"更新列出记录以添加过滤。然后,我在创建行函数中收到一个错误,说找不到API密钥。此外,我需要为主函数和README.md添加更好的文档,说明如何使用此服务器。"

为了获得一致的输出,最重要的是让LLM尽可能专注于更新单个文件。

记住,在进行任何更改后,始终让LLM更新README.md、PLANNING.md和TASK.md!

7. ✅ 测试每个功能

通过全局规则告诉LLM在实现每个功能后编写单元测试,或者自己作为后续操作进行测试。及早发现错误可以防止问题复合,所以这一点非常重要!

单元测试可能很烦人,LLM在编写它们方面也不是完美的,但尽力让AI编码助手测试它实现的所有内容。在最糟糕的情况下,如果它在测试中卡住而你只想继续前进,你总是可以要求它跳过为某个功能编写测试。

测试最佳实践(LLM应该知道这些,以防万一):

8. 🐳 Docker部署(Supabase MCP示例)

这一步更加可选,且相当有主见,但我仍然想分享我通常的做法!当我准备好将项目部署到云端托管和/或与他人共享时,我通常使用Docker或类似服务(如Podman)将项目”容器化”。

LLM在处理Docker方面非常出色,所以这是我发现的打包项目最一致的方式。此外,几乎每个用于部署应用的云服务(Render、Railway、Coolify、DigitalOcean、Cloudflare、Netlify等)都支持托管Docker容器。我将所有AI代理、API端点和MCP服务器作为Docker容器托管。

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。在之后给我构建容器的命令。

Next Post
Coolify部署记录