引言

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 编程工具的核心价值不在于「替代开发者」,而在于消除重复劳动,让你专注于架构设计、业务逻辑和代码质量。关键是:

  1. 精确的 Prompt 比模糊的指令好 10 倍
  2. 分步验证,不要一次性生成太多代码
  3. 永远审查 AI 生成的代码,尤其是安全和性能方面
  4. 善用多工具组合,不同场景用不同工具

AI 不会取代程序员,但会用 AI 的程序员会取代不会用的。