引言
AI 编程工具已经从「玩具」进化为「生产力工具」。GitHub Copilot、Cursor、Claude Code 等工具正在改变开发者编写代码的方式。但很多人仍然停留在「让 AI 写个函数」的阶段。本文分享我在日常开发中沉淀的 AI 辅助编程最佳实践。
1. 选对工具:不同场景不同选择
| 工具 | 适用场景 | 优势 |
|---|---|---|
| GitHub Copilot | 日常编码补全 | 深度 IDE 集成,上下文感知强 |
| Cursor | 全栈项目开发 | Agent 模式,跨文件重构 |
| Claude / ChatGPT | 架构设计、代码审查 | 长上下文,推理能力强 |
| Aider | 命令行 Git 工作流 | 自动 commit,适合 TDD |
2. Prompt 工程:写出高质量的指令
2.1 坏 Prompt vs 好 Prompt
❌ 坏 Prompt:
帮我写一个登录功能。
✅ 好 Prompt:
请用 Python FastAPI 实现一个 JWT 登录接口,要求:
- 使用 bcrypt 加密密码
- access_token 有效期 30 分钟,refresh_token 有效期 7 天
- 数据库使用 PostgreSQL + SQLAlchemy
- 包含输入验证(Pydantic)
- 返回完整的路由、模型和中间件代码
2.2 结构化 Prompt 模板
## 角色
你是一个资深的 TypeScript 全栈工程师。
## 任务
重构以下 Express.js 路由,迁移到 tRPC v10。
## 约束
- 保持原有的业务逻辑不变
- 使用 Zod 进行输入验证
- 遵循项目现有的代码风格
## 现有代码
```typescript
// 这里粘贴现有代码
期望输出
- 完整的 tRPC router 定义
- 对应的 Zod schema
- 客户端调用示例 ```
3. 实战:用 AI 完成一个完整功能
3.1 需求分析阶段
先用 AI 梳理需求,避免「边写边改」:
我正在开发一个团队协作应用,需要实现「任务看板」功能。
请帮我梳理功能需求,列出:
1. 核心用户故事
2. 数据模型设计
3. API 端点列表
4. 前端组件树
3.2 分步实现,逐步验证
# 步骤 1:生成数据模型
# 步骤 2:生成 API 接口
# 步骤 3:生成前端组件
# 步骤 4:写单元测试
# 每一步都验证通过后,再进行下一步
关键原则:不要让 AI 一次性生成超过 200 行的代码。 分步生成,每步验证。
3.3 使用 Cursor 的 Agent 模式
# 在 Cursor 中按 Cmd+I 打开 Composer
# 使用 Agent 模式
@folder:src/services 帮我重构 userService.ts,
将回调风格改为 async/await,所有相关调用也一并修改。
Agent 模式会自动找到所有引用的文件并同步修改。
4. AI 代码审查
4.1 提交前让 AI Review
# 导出 diff
git diff main > changes.diff
# 将 diff 内容粘贴给 AI
请审查以下代码变更,关注:
1. 潜在的安全漏洞(SQL注入、XSS等)
2. 性能问题(N+1查询、内存泄漏)
3. 错误处理是否完善
4. 是否有遗漏的边界情况
4.2 生成测试用例
针对以下函数,生成 10 个测试用例,覆盖:
- 正常路径
- 边界值(null, undefined, 空数组)
- 异常情况
- 并发调用
function processOrders(orders: Order[]): ProcessedOrder[] {
// 函数实现...
}
5. 常见陷阱与对策
陷阱 1:过度信任 AI 代码
# 永远不要直接复制粘贴到生产环境
# 三步验证法:
1. 阅读理解:确保理解每一行代码
2. 本地测试:运行并验证行为
3. 安全检查:检查依赖版本、密钥硬编码等
陷阱 2:上下文窗口超载
# 长对话后 AI 会「遗忘」早期约束
# 解决:每隔 5-10 轮对话,重新发送关键约束
"回顾一下我们的项目约束:
- 使用 TypeScript strict 模式
- 不允许 any 类型
- 数据库字段统一使用 snake_case"
陷阱 3:AI 生成过时 API
# 指定版本号
"请使用 React 19 的 use() hook,而不是 React 18 的 Suspense 写法"
"使用 Next.js 15 的 App Router,不要用 Pages Router"
6. 我的 AI 编程工作流
┌─────────────────────────────────────────┐
│ 1. 需求分析 ──→ Claude/ChatGPT │
│ (梳理需求、设计方案) │
├─────────────────────────────────────────┤
│ 2. 编码实现 ──→ Cursor + Copilot │
│ (分步实现,每步验证) │
├─────────────────────────────────────────┤
│ 3. 代码审查 ──→ Claude │
│ (安全审查、最佳实践检查) │
├─────────────────────────────────────────┤
│ 4. 测试生成 ──→ AI 生成测试框架 │
│ (人工补充业务逻辑相关的边界条件) │
├─────────────────────────────────────────┤
│ 5. 文档编写 ──→ AI 生成初稿 │
│ (人工润色和补充细节) │
└─────────────────────────────────────────┘
总结
AI 编程工具的核心价值不在于「替代开发者」,而在于消除重复劳动,让你专注于架构设计、业务逻辑和代码质量。关键是:
- 精确的 Prompt 比模糊的指令好 10 倍
- 分步验证,不要一次性生成太多代码
- 永远审查 AI 生成的代码,尤其是安全和性能方面
- 善用多工具组合,不同场景用不同工具
AI 不会取代程序员,但会用 AI 的程序员会取代不会用的。
🏷️ 关键词:
AI编程
Copilot
Cursor
Claude
代码生成
LLM
开发效率
Prompt工程