AI 辅助开发
问题
如何高效使用 AI 辅助编程工具?包括工具选型、模型选择、Rules 配置、Agent 模式、代码审查自动化、上下文管理、安全考量等全方位实战指南。
答案
AI 辅助开发已成为现代前端工程师的核心技能。从 2023 年的「AI 补全代码」到 2025 年的「AI Agent 自主编码」,工具能力发生了质的飞跃。选择合适的工具和模型、掌握高效的交互技巧、理解安全边界,能将开发效率提升 2-10 倍。本文从工具选型 → 模型选择 → Rules 配置 → Agent 模式 → 上下文管理 → 代码审查 → 安全考量 → 效果度量全面覆盖。
一、AI 编程工具全景
主流工具深度对比
| 工具 | 类型 | 核心优势 | 默认模型 | 价格(2025) | Agent 能力 |
|---|---|---|---|---|---|
| GitHub Copilot | VS Code 插件 | 生态最完善、Agent Mode、MCP 支持 | GPT-4o / Claude Sonnet | $10-39/月 | Copilot Agent |
| Cursor | 独立编辑器 | AI-first、Composer 多文件、Background Agent | Claude Sonnet/Opus | 200/月(Ultra) | Composer Agent |
| Windsurf | 独立编辑器 | Cascade 深度上下文、自主编码流畅 | Claude/GPT | $15/月(Pro) | Cascade Agent |
| Augment Code | VS Code/JetBrains 插件 | 企业级上下文理解、大型代码库支持 | 多模型切换 | $30/月 | Next Edit |
| Amazon Q Developer | VS Code/JetBrains 插件 | AWS 深度集成、安全扫描、代码转换 | Amazon 自研 | 免费/Pro $19/月 | Agent Mode |
| Claude Code | CLI 工具 | 终端 Agent、深度代码理解、git 集成 | Claude Sonnet/Opus | API 按量计费 | 原生 Agent |
| Gemini CLI | CLI 工具 | Google 生态、超长上下文、免费额度 | Gemini 2.5 Pro/Flash | 免费/API | Agent Mode |
| Trae | 独立编辑器 | 字节跳动出品、免费、中文友好 | 豆包/Claude/GPT | 免费 | Builder Mode |
| v0.dev | Web 应用 | UI 组件生成、shadcn/ui 集成 | Claude/GPT | $20/月 | 生成式 |
团队统一 / 企业合规:GitHub Copilot — 生态最完善、企业管理功能好、支持 MCP 追求效率极致:Cursor — Composer 多文件编辑和 Background Agent 体验最好 流畅自主编码:Windsurf — Cascade 的上下文理解和自动执行链路顺滑 终端 / 大型重构:Claude Code — 对整个仓库的 Agent 能力最强,适合 CLI 工作流 AWS 技术栈:Amazon Q Developer — 与 AWS 服务深度集成,安全扫描出色 预算有限:Trae(免费)或 Gemini CLI(免费额度大) UI 原型:v0.dev — 快速生成 React + Tailwind 组件
工具定位矩阵
| 场景 | 最佳工具 | 原因 |
|---|---|---|
| 写新功能(单文件) | Cursor Inline Edit / Copilot | 行内编辑快速 |
| 写新功能(多文件) | Cursor Composer / Windsurf Cascade | 跨文件协调 |
| 大型重构 / 迁移 | Claude Code / Cursor Background Agent | 深度理解+自主执行 |
| 调试复杂 Bug | Claude Code / Cursor Chat + 终端 | 日志分析+代码修改 |
| 代码审查 | Copilot PR Review / CodeRabbit | CI/CD 集成 |
| 生成测试 | Copilot / Cursor Chat | 上下文感知 |
| 学习新框架 | Claude.ai / ChatGPT | 对话式学习 |
| UI 原型 | v0.dev / Bolt.new | 可视化生成 |
二、模型选择策略
2025 年主流编程模型已经形成明确的能力梯队:
模型能力对比
| 模型 | 编码能力 | 推理深度 | 上下文 | 速度 | 成本 | 最适合 |
|---|---|---|---|---|---|---|
| Claude Opus 4 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 200K | 中 | 高 | 复杂架构、深度重构、Agent 长任务 |
| Claude Sonnet 4 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 200K | 快 | 中 | 日常编码首选、性价比最高 |
| GPT-4o | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 128K | 快 | 中 | 全能型、前端代码质量好 |
| GPT-o3 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 200K | 慢 | 高 | 复杂算法、数学推理、架构决策 |
| GPT-o4-mini | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 200K | 快 | 低 | 推理型任务的高性价比选择 |
| Gemini 2.5 Pro | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 1M | 中 | 中 | 超长上下文、整库代码审查 |
| Gemini 2.5 Flash | ⭐⭐⭐ | ⭐⭐⭐ | 1M | 很快 | 低 | 快速补全、简单任务、超长上下文 |
| DeepSeek V3 | ⭐⭐⭐⭐ | ⭐⭐⭐ | 128K | 快 | 很低 | 性价比极高、中文场景好 |
| GPT-4o-mini | ⭐⭐⭐ | ⭐⭐⭐ | 128K | 很快 | 很低 | 简单补全、代码解释、快速原型 |
模型选择决策树
- 日常编码用 Claude Sonnet 4 或 GPT-4o —— 平衡速度和质量,SWE-bench 评分领先
- 复杂调试/重构切换到 Claude Opus 4 —— 多步推理最稳定,Agent 任务成功率最高
- 代码审查选 Gemini 2.5 Pro —— 100 万上下文可以一次看完整个仓库
- 快速原型用 GPT-4o-mini 或 Gemini Flash —— 速度快成本低
- 需要强推理用 o3 或 o4-mini —— 链式推理型任务(如算法设计、架构分析)效果好
- 模型的 benchmark 排名每月都在变,建议每季度重新评估主力模型
模型切换策略
在 Cursor 和 Copilot 中可以随时切换模型,建议根据任务类型动态选择:
// 模型选择策略(概念示意)
type TaskType = 'completion' | 'chat' | 'refactor' | 'debug' | 'review' | 'architect';
const MODEL_STRATEGY: Record<TaskType, string> = {
// Tab 补全:速度优先
completion: 'gpt-4o-mini',
// 日常对话:性价比优先
chat: 'claude-sonnet-4',
// 重构:编码+推理平衡
refactor: 'claude-sonnet-4',
// 复杂调试:深度推理
debug: 'claude-opus-4',
// 代码审查:长上下文
review: 'gemini-2.5-pro',
// 架构设计:最强推理
architect: 'claude-opus-4',
};
三、Rules 配置(最重要的效率倍增器)
Rules 是预设指令,让 AI 理解你的项目规范、技术栈和偏好。所有碎片化信息在 Rules 中说一次,胜过每次对话重复说。不同工具的 Rules 文件格式和生效机制有显著差异。
Rules 文件对比
| 工具 | 文件路径 | 格式特性 | 生效范围 |
|---|---|---|---|
| Cursor | .cursor/rules/*.mdc | 支持 globs 按路径匹配、alwaysApply 全局生效 | 匹配的文件/全局 |
| Windsurf | .windsurfrules | 单文件、纯 Markdown | 全局 |
| Claude Code | CLAUDE.md(可多层级) | 支持根目录 + 子目录级别 | 对应目录及子目录 |
| GitHub Copilot | .github/copilot-instructions.md | 单文件、纯 Markdown | 全局 |
| Augment | .augment-guidelines | 纯文本 | 全局 |
Cursor Rules(最灵活)
Cursor 的 .mdc 格式支持通过 frontmatter 控制生效范围,这是最精细的 Rules 系统:
---
description: 项目全局规则 - 始终生效
globs: "**/*"
alwaysApply: true
---
# 项目规范
## 技术栈
- Next.js 15 (App Router)
- React 19 + TypeScript 5.x (strict mode)
- Tailwind CSS 4 + Shadcn/ui
- Prisma + PostgreSQL
- Zustand 状态管理
## 代码风格
- 使用函数式组件和 Hooks
- 优先使用 Server Components
- 命名:组件 PascalCase,函数/变量 camelCase,常量 UPPER_SNAKE_CASE
- 文件命名:kebab-case(如 `user-profile.tsx`)
- 导出:具名导出优先,页面组件使用默认导出
## TypeScript
- 严格模式,不使用 any
- Props 使用 interface 定义,命名 `XxxProps`
- 优先使用 unknown 而非 any
## 禁止事项
- 不要使用 class 组件
- 不要使用 var
- 不要在 Server Component 中使用 useState/useEffect
- 不轻易使用 'use client'
---
description: React 组件规范 - 仅在组件目录生效
globs: "src/components/**/*.tsx"
alwaysApply: false
---
# React 组件规范
## 组件模板
```tsx
interface XxxProps {
// props 定义
}
export function Xxx({ ...props }: XxxProps) {
// hooks
// handlers
// render
return (...)
}
```
## Hooks 使用规范
- useState: 简单状态
- useReducer: 复杂状态逻辑
- useMemo/useCallback: 只在有性能问题时使用
- useEffect: 注意 cleanup,避免闭包陷阱
---
description: API 路由规范 - 仅在 API 目录生效
globs: "src/app/api/**/*.ts"
alwaysApply: false
---
# API 路由规范
## Route Handler 模板
```ts
import { NextRequest, NextResponse } from 'next/server';
import { z } from 'zod';
import { auth } from '@/lib/auth';
const requestSchema = z.object({
// 请求体 schema
});
export async function POST(request: NextRequest) {
// 1. 认证
const session = await auth();
if (!session) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
// 2. 参数校验
const body = requestSchema.safeParse(await request.json());
if (!body.success) {
return NextResponse.json({ error: body.error }, { status: 400 });
}
// 3. 业务逻辑
try {
const result = await doSomething(body.data);
return NextResponse.json(result);
} catch (error) {
return NextResponse.json({ error: 'Internal Error' }, { status: 500 });
}
}
```
alwaysApply: true:无论编辑什么文件都会包含这条规则(全局规则)alwaysApply: false+globs:只有当编辑的文件匹配 globs 模式时才生效(局部规则)- 没有
alwaysApply和globs:Cursor 会根据description自动判断是否相关(AI 判断)
建议:全局规范用 alwaysApply: true,特定目录的规范用 globs 精确控制。
Windsurf Rules
Windsurf 使用单文件 .windsurfrules,放在项目根目录:
# 项目规则
## 技术栈
- Next.js 15 App Router + React 19 + TypeScript
- Tailwind CSS 4 + Shadcn/ui
- Prisma + PostgreSQL
## 编码规范
- 使用函数组件 + Hooks,不使用 class 组件
- Server Components 优先
- TypeScript strict 模式,禁止 any
- 文件命名 kebab-case
- 组件命名 PascalCase
## Cascade 指引
- 修改代码前先解释方案
- 每次改动聚焦一个功能
- 运行 `pnpm lint` 检查代码质量
- 运行 `pnpm test` 确保测试通过
Claude Code CLAUDE.md(支持多层级)
Claude Code 的独特优势是支持目录级别的 Rules 继承:
# 项目规则
## 技术栈
- Next.js 15 App Router + React 19 + TypeScript
- Tailwind CSS 4 + Shadcn/ui
- Prisma + PostgreSQL
- Zustand
## 开发命令
- `pnpm dev` - 启动开发服务器
- `pnpm build` - 构建
- `pnpm lint` - ESLint 检查
- `pnpm test` - 运行测试
- `pnpm db:push` - 同步数据库
## 重要规则
- 写 TypeScript,不用 any
- Server Component 优先
- commit message 使用 conventional commits
- 新功能必须包含测试
# 组件开发规则
- Props 使用 interface 定义
- 使用 shadcn/ui 基础组件
- 每个组件一个文件
- 包含加载和错误状态处理
- 使用 Tailwind CSS 而非 CSS Modules
# API 路由规则
- 所有请求需要认证检查(使用 `auth()` from next-auth)
- 参数使用 Zod 校验
- 错误返回标准格式 { error: string, code: string }
- 数据库操作使用事务
GitHub Copilot Instructions
# Copilot 使用指南
## 项目上下文
这是一个用 Next.js 15 + React 19 构建的 AI 聊天应用。
## 代码生成要求
- 使用 TypeScript strict 模式
- React 组件使用函数组件 + Hooks
- 样式使用 Tailwind CSS
- 状态管理使用 Zustand
- 数据库操作使用 Prisma
## 命名约定
| 类型 | 约定 | 示例 |
|------|------|------|
| 组件 | PascalCase | `UserProfile` |
| Hook | use 前缀 | `useAuth` |
| 工具函数 | camelCase | `formatDate` |
| 类型 | PascalCase | `UserResponse` |
| 常量 | UPPER_SNAKE | `MAX_RETRIES` |
| 文件 | kebab-case | `user-profile.tsx` |
## 不要做的事
- 不使用 class 组件
- 不使用 `var` 和 `any`
- 不在 Server Component 中使用 useState/useEffect
Memory Bank 模式
Memory Bank 是一种在项目中维护持久化上下文的高级模式,特别适合 Claude Code 等基于会话的工具:
项目根目录/
├── .memory-bank/
│ ├── project-brief.md # 项目概述、目标、约束
│ ├── tech-decisions.md # 技术决策记录(ADR)
│ ├── current-sprint.md # 当前迭代目标和进展
│ ├── known-issues.md # 已知问题和待修复项
│ └── architecture.md # 架构图和模块关系
├── CLAUDE.md # 引用 memory-bank 中的关键信息
└── ...
# 项目规则
## 项目背景
详见 .memory-bank/project-brief.md
## 当前迭代
详见 .memory-bank/current-sprint.md
## 已知问题
修改代码前请先查看 .memory-bank/known-issues.md
- 具体而非模糊:"使用
interface定义 Props" 好过 "遵循 TypeScript 最佳实践" - 包含代码模板:给出代码模板比纯文字描述有效 10 倍
- 分层级:全局规则 + 目录特化规则,让 AI 在相关上下文中获取精确指导
- 列出禁忌:明确说 "不要用 any"、"不要用 class 组件"
- 包含命令:让 AI 知道如何运行测试、构建、lint
- 持续迭代:发现 AI 重复犯错的模式,立即写入 Rules
- 提交到 Git:Rules 文件应纳入版本管理,团队共享
多层级 Rules 目录结构
项目根目录/
├── CLAUDE.md # Claude Code 全局规则
├── .github/
│ └── copilot-instructions.md # GitHub Copilot 规则
├── .cursor/
│ └── rules/
│ ├── project-rules.mdc # 全局规则(alwaysApply: true)
│ ├── react-patterns.mdc # 组件目录生效
│ ├── api-patterns.mdc # API 目录生效
│ └── testing-rules.mdc # 测试文件生效
├── .windsurfrules # Windsurf 规则
├── .augment-guidelines # Augment 规则
└── src/
├── components/
│ └── CLAUDE.md # Claude Code 子目录规则
└── server/
└── CLAUDE.md # Claude Code 子目录规则
四、Agent 模式深度解析
Agent 模式是 2025 年 AI 编程工具最重要的突破。与传统的「问答式」AI 不同,Agent 可以自主规划任务、执行多步操作、根据反馈调整策略。
关于 AI Agent 的核心架构(Think → Act → Observe 循环)和 Function Calling 机制,详见 Function Calling 与 AI Agent。
Agent 模式工作原理
各工具 Agent 模式对比
| 特性 | Cursor Composer Agent | Copilot Agent | Claude Code Agent | Windsurf Cascade |
|---|---|---|---|---|
| 交互方式 | IDE 内面板 | VS Code Chat | 终端 CLI | IDE 内面板 |
| 文件操作 | 读/写/创建多文件 | 读/写/创建多文件 | 读/写/创建/删除 | 读/写/创建多文件 |
| 终端命令 | 支持(需确认) | 支持(需确认) | 原生支持 | 支持(需确认) |
| Git 操作 | 有限 | 有限 | 完整 git 支持 | 有限 |
| 网络搜索 | 支持 @web | 支持 @web | 支持 WebSearch | 支持 |
| MCP 工具 | 支持 | 支持 | 支持 | 支持 |
| 后台执行 | Background Agent(Pro) | 不支持 | 支持(headless 模式) | 不支持 |
| 多文件协调 | 优秀 | 良好 | 最强 | 优秀 |
| 上下文理解 | Codebase 索引 | @workspace 索引 | 自动分析整个仓库 | 深度 Cascade 索引 |
| 撤销恢复 | Checkpoint 恢复 | 版本对比 | git 原生回退 | 变更记录 |
Cursor Composer Agent 实战
# 在 Cursor 中使用 Composer Agent(Cmd+I)
## 示例任务
"为用户模块添加头像上传功能。包括:
1. 新建上传 API 路由(支持图片裁剪、压缩)
2. 前端上传组件(拖拽、预览、裁剪)
3. 数据库 schema 添加 avatar 字段
4. 用户设置页面集成上传组件
5. 运行 lint 和测试确保没有问题"
## Agent 执行过程
1. 读取项目结构和现有代码
2. 分析 prisma schema 和用户模型
3. 修改 schema.prisma 添加 avatar 字段
4. 创建 app/api/upload/route.ts
5. 创建 components/avatar-upload.tsx
6. 修改 app/settings/page.tsx 集成组件
7. 运行 pnpm lint 和 pnpm test
8. 如有报错,自动修复
Claude Code Agent 实战
# Claude Code 的 Agent 模式是原生的
# 它在终端中直接读写文件、执行命令
# 示例 1:大型重构
claude "将项目从 Pages Router 迁移到 App Router。
要求:
- 逐个页面迁移,每迁移一个运行 pnpm build 确认
- 保持 URL 路径不变
- 将 getServerSideProps 改为 Server Component 数据获取
- 将 _app.tsx 的布局迁移到 layout.tsx"
# 示例 2:从报错日志修复问题
cat error.log | claude "分析这些错误,找到根因并修复。
修复后运行测试确认。"
# 示例 3:根据 Issue 实现功能
claude "查看 GitHub Issue #42 的描述,实现该功能。
完成后创建一个 PR,包含清晰的描述。"
# 示例 4:Headless 模式(CI/CD 中使用)
claude -p "检查代码中的安全漏洞并生成报告" --output-format json
GitHub Copilot Agent Mode 实战
# 在 VS Code 中开启 Copilot Agent Mode
# 1. 打开 Copilot Chat(Cmd+Shift+I)
# 2. 选择 "Agent" 模式(而非 Ask 或 Edit)
## Agent 可以执行的操作
- 读取和编辑项目文件
- 运行终端命令
- 使用 @workspace 理解项目结构
- 调用 MCP 工具
- 创建和修改多个文件
## 示例
@workspace 为整个项目添加 Vitest 单元测试:
1. 安装 vitest 和相关依赖
2. 创建 vitest.config.ts
3. 为 src/lib/ 下的每个工具函数创建测试
4. 运行测试确保通过
- 任务粒度适中:太大的任务("重写整个项目")容易出错,太小的任务("改个变量名")不值得用 Agent
- 给出验证标准:告诉 Agent 如何验证完成("运行 pnpm build 和 pnpm test 确认")
- 分阶段确认:复杂任务要求 Agent 每完成一步等待确认
- 善用 Checkpoint:Cursor 的 Composer 支持回退到任意步骤
- 审查变更:Agent 完成后务必审查所有文件变更
五、上下文管理策略
AI 编程工具的效果 = 模型能力 × 上下文质量。提供精准的上下文比选择更贵的模型更重要。
@mentions 与上下文引用
| 工具 | 引用语法 | 支持的引用类型 |
|---|---|---|
| Cursor | @file @folder @codebase @web @docs @git | 文件、文件夹、整个代码库、网页、官方文档、Git 历史 |
| Copilot | #file @workspace @terminal @vscode | 文件、工作区、终端输出、VS Code API |
| Windsurf | 自动 Cascade 索引 + @file | 文件、自动推断相关文件 |
| Claude Code | 自动分析 + 指定路径 | 自动理解整个仓库、指定文件/目录 |
# Cursor 上下文引用示例
## 引用单个文件
@user-service.ts 这个服务的 getUserById 有 N+1 查询问题,帮我优化
## 引用文件夹
@src/components/forms/ 这些表单组件有大量重复代码,
帮我提取公共的 useFormField Hook
## 引用代码库搜索
@codebase 项目中所有使用 fetch 直接调用 API 的地方,
帮我统一改为使用 @lib/api-client.ts 的封装
## 引用官方文档
@docs Next.js App Router 的最新 caching 策略是什么?
结合我的 @app/api/posts/route.ts 给出优化建议
## 引用 Git 变更
@git 看最近 3 次 commit 的改动,有没有引入性能问题?
## 引用网页
@web https://ui.shadcn.com/docs/components/dialog
参考这个文档,帮我实现一个确认对话框组件
## 引用终端输出(Copilot)
@terminal 看这个报错信息,帮我修复
代码库索引机制
各工具的代码库索引方式不同,这直接影响 AI 理解项目结构的深度:
| 工具 | 索引方式 | 索引范围 | 刷新频率 |
|---|---|---|---|
| Cursor | 本地嵌入索引 | 整个项目 | 文件保存时增量更新 |
| Copilot | 远程索引 | @workspace 范围 | 实时 |
| Windsurf | Cascade 深度索引 | 整个项目+依赖 | 持续更新 |
| Claude Code | 运行时分析 | 整个仓库 | 每次会话 |
| Augment | 云端索引 | 整个组织代码库 | 持续同步 |
- 主动提供关键文件:不要依赖 AI 自己找,用 @mention 精确指定
- 减少噪音:不要一次引用太多无关文件,会稀释有效上下文
- 利用 Rules 压缩重复信息:项目规范写进 Rules,不用每次重复
- MCP 连接外部数据:数据库 schema、API 文档通过 MCP 提供
- 渐进暴露:先让 AI 了解架构,再给具体任务
六、AI 代码审查自动化
AI 代码审查可以集成到 CI/CD 流程中,在 PR 提交时自动审查代码质量。
代码审查工具对比
| 工具 | 类型 | 集成方式 | 特性 | 价格 |
|---|---|---|---|---|
| CodeRabbit | SaaS | GitHub/GitLab App | 逐行评论、摘要、对话式修改 | 免费/Pro $15/月 |
| Copilot PR Review | GitHub 内置 | GitHub App | 与 Copilot 集成、内联建议 | Copilot 订阅内含 |
| Cursor Background Agent | IDE | Cursor 内触发 | PR 创建和审查 | Cursor Pro |
| Claude Code | CLI | CI 脚本调用 | 深度分析、自定义审查规则 | API 计费 |
| Amazon Q | IDE 插件 | VS Code/JetBrains | 安全扫描、代码优化 | 免费/Pro |
CI/CD 集成模式
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
ai-review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get PR Diff
id: diff
run: |
git diff origin/${{ github.base_ref }}...HEAD > pr.diff
# 方式 1:使用 Claude Code 进行审查
- name: AI Review with Claude
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx -y @anthropic-ai/claude-code -p \
"审查以下 PR diff,关注:
1. 潜在 Bug 和边界条件
2. 性能问题
3. TypeScript 类型安全
4. 安全风险
输出 JSON 格式:{comments: [{file, line, severity, message}]}
$(cat pr.diff)" \
--output-format json > review.json
- name: Post Review Comments
uses: actions/github-script@v7
with:
script: |
const review = require('./review.json');
for (const comment of review.comments) {
await github.rest.pulls.createReviewComment({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
body: `**${comment.severity}**: ${comment.message}`,
path: comment.file,
line: comment.line,
commit_id: context.payload.pull_request.head.sha,
});
}
自定义审查规则
// 审查重点配置
interface ReviewConfig {
// 审查维度和权重
focus: {
security: boolean; // 安全漏洞(XSS、注入)
performance: boolean; // 性能问题(N+1、内存泄漏)
typesSafety: boolean; // TypeScript 类型完整性
errorHandling: boolean; // 错误处理覆盖
accessibility: boolean; // 无障碍合规
testCoverage: boolean; // 是否包含测试
};
// 自动忽略的文件
ignorePatterns: string[];
// 严重等级
severityLevels: ('error' | 'warning' | 'suggestion')[];
}
const defaultReviewConfig: ReviewConfig = {
focus: {
security: true,
performance: true,
typesSafety: true,
errorHandling: true,
accessibility: false,
testCoverage: true,
},
ignorePatterns: [
'*.lock',
'*.generated.*',
'node_modules/**',
'.next/**',
],
severityLevels: ['error', 'warning', 'suggestion'],
};
七、AI 结对编程模式
不同的开发场景应该使用不同的 AI 交互模式,选错工具会大幅降低效率。
交互模式选择矩阵
| 交互模式 | Cursor | Copilot | Claude Code | 最适合场景 |
|---|---|---|---|---|
| Tab 补全 | Tab | Tab | - | 写代码时的实时续写 |
| Inline Edit | Cmd+K | Cmd+I | - | 选中代码后就地修改 |
| Chat 对话 | Cmd+L | Cmd+Shift+I | 默认模式 | 讨论方案、理解代码 |
| Composer/Agent | Cmd+I | Agent Mode | 默认模式 | 多文件修改、新功能 |
| CLI Agent | - | - | claude | 大型重构、CI/CD 集成 |
场景化最佳实践
场景 1:实现新功能
# 推荐:Cursor Composer Agent
## 步骤
1. 用 Chat 讨论技术方案:"@codebase 我想加一个通知系统,
用什么方案比较好?"
2. 确定方案后,用 Composer Agent 实现:
"基于刚才的讨论,实现通知系统:
- 数据模型(Prisma schema)
- API 路由(CRUD + 标记已读)
- 通知列表组件(实时更新)
- WebSocket 推送"
3. Agent 逐步执行,每步确认
4. 完成后运行测试
场景 2:修复线上 Bug
# 推荐:Claude Code CLI(上下文理解最深)
claude "线上报错:TypeError: Cannot read property 'name' of undefined
出现在用户列表页面,错误日志如下:
[粘贴日志]
请:
1. 找到出错的代码
2. 分析原因
3. 修复并添加防御性代码
4. 运行测试确认"
场景 3:代码重构
# 推荐:Inline Edit + Chat 组合
## 小范围重构:Inline Edit(Cmd+K)
选中要重构的函数 → Cmd+K → "提取成自定义 Hook,添加错误处理"
## 大范围重构:Composer Agent
"将 src/utils/ 下所有使用 callback 模式的异步函数
改为 async/await 模式,保持接口兼容"
场景 4:学习新 API/框架
# 推荐:Chat 对话模式
## 在 Cursor Chat 中
@docs React 19 的 use() Hook 怎么用?
和 useEffect + useState 的数据获取模式有什么区别?
给我一个实际的例子,结合我项目的 @lib/api-client.ts
八、编程场景 Prompt 技巧
高效的 Prompt 能让 AI 的输出质量提升数倍。更多通用 Prompt Engineering 技巧详见 Prompt Engineering 详解。
1. Few-shot 代码生成
# 通过示例引导 AI 生成符合项目规范的代码
我的项目中 API 路由的风格如下:
## 示例 1:获取文章列表
```ts
// app/api/posts/route.ts
export async function GET(request: NextRequest) {
const session = await auth();
if (!session) return unauthorized();
const { searchParams } = new URL(request.url);
const page = Number(searchParams.get('page') ?? '1');
const limit = Number(searchParams.get('limit') ?? '10');
const [posts, total] = await Promise.all([
prisma.post.findMany({ skip: (page - 1) * limit, take: limit }),
prisma.post.count(),
]);
return success({ data: posts, total, hasMore: page * limit < total });
}
```
## 示例 2:创建评论
```ts
// app/api/comments/route.ts
const createSchema = z.object({
postId: z.string().uuid(),
content: z.string().min(1).max(1000),
});
export async function POST(request: NextRequest) {
const session = await auth();
if (!session) return unauthorized();
const body = createSchema.safeParse(await request.json());
if (!body.success) return badRequest(body.error);
const comment = await prisma.comment.create({
data: { ...body.data, userId: session.user.id },
});
return success(comment, 201);
}
```
## 现在请按照同样的风格,实现「收藏文章」的 API 路由
- POST /api/favorites - 收藏
- DELETE /api/favorites - 取消收藏
- GET /api/favorites - 获取收藏列表(带分页)
2. Chain-of-Thought 调试
# 让 AI 逐步分析复杂 Bug
请一步步分析这个问题,不要直接给答案:
## 现象
用户在表单中输入数据后点击提交,页面闪烁后表单被清空,
但数据没有保存到数据库。
## 已知信息
- 浏览器控制台无报错
- Network 面板:POST /api/users 返回 200
- React DevTools:提交后组件重新挂载了(而非重新渲染)
- 使用 React Hook Form + Zod
- 组件是 Client Component
## 请逐步分析
1. 根据"组件重新挂载"这个线索,推断可能的原因
2. 200 响应但数据没保存,说明什么?
3. 列出最可能的 3 个原因
4. 对每个原因给出验证方法
5. 给出修复方案
3. 模板化 Prompt
// 可复用的 Prompt 模板
const PROMPT_TEMPLATES = {
// 组件生成模板
component: (name: string, description: string) => `
创建 React 组件 ${name}:
功能:${description}
要求:
- TypeScript + Tailwind CSS + shadcn/ui
- 包含 Props interface
- 包含 loading 和 error 状态
- 响应式布局
- 无障碍支持(aria 标签)
`,
// 代码审查模板
review: (context: string) => `
审查以下代码,给出分级反馈:
🔴 Must Fix:安全漏洞、数据丢失风险
🟡 Should Fix:性能问题、类型不安全
🟢 Nice to Have:可读性改进、最佳实践
🔵 Question:需要确认的设计决策
代码:
${context}
`,
// 重构模板
refactor: (target: string, goal: string) => `
重构 ${target}:
目标:${goal}
约束:
- 保持公开 API 不变
- 每次只改一个文件
- 改完运行 pnpm lint && pnpm test
- 有任何测试失败立即停下来
`,
} as const;
4. 约束型 Prompt
# 通过约束条件控制 AI 输出质量
帮我实现一个 useDebounce Hook:
## 必须满足
- 支持泛型(任意类型的值)
- 支持自定义延迟时间
- 组件卸载时清理 timer
- 支持 cancel 方法
- TypeScript 严格类型
## 不要
- 不要使用 lodash 或任何第三方库
- 不要使用 any
- 不要超过 30 行代码
## 同时提供
- 3 个使用示例
- 1 个单元测试
九、度量 AI 编码效果
引入 AI 工具后,团队需要科学度量其效果,避免"感觉变快了"的主观判断。
核心指标
| 指标 | 定义 | 目标值 | 如何采集 |
|---|---|---|---|
| 代码采纳率 | AI 生成代码被接受的比例 | > 30% | Copilot/Cursor 后台统计 |
| 迭代次数 | 完成一个任务与 AI 交互的轮次 | < 5 轮 | 手动记录 / 工具统计 |
| Bug 引入率 | AI 生成代码导致的 Bug 占比 | < 10% | Bug Tracker 标记 |
| PR 周期 | 从开始到合并的时间 | 减少 30%+ | GitHub 统计 |
| 测试覆盖率变化 | AI 是否帮助提升了测试 | 提升 | CI 报告 |
| 开发者满意度 | 团队对 AI 工具的满意程度 | > 4/5 | 定期调研 |
度量框架
interface AIMetrics {
// 效率指标
codeAcceptanceRate: number; // AI 代码采纳率
avgIterationsPerTask: number; // 平均交互轮次
prCycleTimeReduction: number; // PR 周期缩短比例
// 质量指标
bugIntroductionRate: number; // AI 代码 Bug 率
testCoverageChange: number; // 测试覆盖率变化
codeReviewPassRate: number; // 一次通过审查的比例
// 成本指标
monthlyTokenCost: number; // 月 Token 消耗费用
toolSubscriptionCost: number; // 工具订阅费用
costPerFeature: number; // 每个功能的 AI 成本
}
// ROI 计算
function calculateROI(metrics: AIMetrics, teamSize: number): {
monthlySaving: number;
roi: number;
} {
// 假设开发者平均月薪(成本)
const avgDeveloperMonthlyCost = 30000; // 人民币
// 效率提升带来的等效节省
const efficiencyGain = metrics.prCycleTimeReduction;
const monthlySaving = avgDeveloperMonthlyCost * teamSize * efficiencyGain;
// 总成本
const totalCost = metrics.monthlyTokenCost + metrics.toolSubscriptionCost;
// ROI = (收益 - 成本) / 成本
const roi = (monthlySaving - totalCost) / totalCost;
return { monthlySaving, roi };
}
团队推广策略
十、安全考量
AI 编程工具在提升效率的同时,也带来了新的安全风险。这些风险在面试中经常被问到。
安全风险矩阵
| 风险类型 | 描述 | 严重等级 | 缓解措施 |
|---|---|---|---|
| 代码泄露 | 代码被发送到第三方 AI 服务 | 高 | 使用企业版/私有部署、审查数据政策 |
| 密钥泄露 | .env、API Key 被包含在上下文中 | 严重 | .gitignore + .cursorignore + 环境变量管理 |
| AI 生成的漏洞 | AI 可能生成有安全漏洞的代码 | 高 | 安全审查、SAST 扫描、安全相关的 Rules |
| 供应链攻击 | AI 建议使用有漏洞的依赖包 | 中 | npm audit、Snyk 扫描 |
| Prompt 注入 | 恶意输入通过 AI 工具执行危险操作 | 中 | Agent 操作需确认、白名单机制 |
| 知识产权 | AI 生成的代码可能涉及版权 | 中 | 使用提供版权保护的工具、审查许可证 |
安全配置最佳实践
# 敏感文件
.env
.env.*
*.pem
*.key
credentials.json
service-account.json
# 密钥目录
secrets/
.aws/
.ssh/
# 大型二进制文件(节省上下文)
*.png
*.jpg
*.mp4
dist/
node_modules/
## 安全规则(写入 Rules 文件中)
### 禁止事项
- 绝不在代码中硬编码密钥、密码、Token
- 绝不在日志中输出敏感信息
- 不要使用 eval()、innerHTML
- 不要禁用 TypeScript 的 strict 模式
### 安全编码要求
- 所有用户输入必须校验和清理(使用 Zod)
- SQL 查询使用参数化(Prisma ORM)
- API 路由必须认证检查
- 文件上传必须校验类型和大小
- CORS 配置使用白名单
### 依赖安全
- 新增依赖前检查 npm audit
- 不要安装未经验证的包
- 锁文件必须提交到 Git
企业合规对比
| 合规维度 | GitHub Copilot Business | Cursor Business | Claude Code (API) |
|---|---|---|---|
| 代码不用于训练 | 是 | 是(Privacy Mode) | 是 |
| SOC 2 合规 | 是 | 是 | 是 |
| 数据驻留控制 | 区域选择 | 有限 | API 区域选择 |
| 审计日志 | 是 | 有限 | API 日志 |
| SSO/SAML | 是 | 是 | N/A |
| IP 赔偿保护 | 是 | 部分 | 有限 |
| 自定义策略 | Content Exclusion | .cursorignore | CLAUDE.md |
- 永远不要把密钥发给 AI:使用环境变量,配置 .cursorignore / .gitignore
- 审查所有安全相关代码:认证、授权、加密、输入校验等代码必须人工审查
- 了解数据政策:确认你的 AI 工具不会用你的代码训练模型
- Agent 操作需确认:删除、发布、部署等操作不要让 AI 自动执行
- 定期安全扫描:AI 生成的代码也要通过 SAST/DAST 扫描
十一、高效开发技巧与最佳实践
分步骤开发(最重要的技巧)
# 不推荐:一次性让 AI 写完所有功能
"帮我写一个完整的博客系统,包含文章列表、详情、编辑器、分类、标签、评论、用户系统"
# 推荐:分步迭代
第1步:"创建文章数据模型(Prisma schema)和基础 CRUD API"
第2步:"创建文章列表页面,使用 Server Component 获取数据"
第3步:"添加文章详情页,支持 Markdown 渲染"
第4步:"创建文章编辑器,使用 MDX editor"
第5步:"添加分类和标签功能"
...每步完成后验证,再继续下一步
IDE 功能速查
Cursor
| 功能 | 快捷键 | 用途 |
|---|---|---|
| Inline Edit | Cmd+K | 选中代码后就地修改 |
| Chat | Cmd+L | 对话式编程 |
| Composer | Cmd+I | 多文件 Agent 模式 |
| @mention | @ | 引用文件/文档/代码库 |
| Tab 补全 | Tab | 智能代码补全 |
GitHub Copilot
| 功能 | 用途 |
|---|---|
| Tab Suggestions | 实时代码补全 |
| Inline Chat (Cmd+I) | 选中代码后就地修改 |
| Chat (Cmd+Shift+I) | Agent 对话 |
| @workspace | 基于整个工作区上下文 |
| #file | 引用特定文件 |
| Fix with Copilot | 快速修复代码错误 |
| Generate Tests | 为选中代码生成测试 |
| Generate Docs | 生成 JSDoc 注释 |
Claude Code CLI
# 启动交互模式
claude
# 单次命令
claude -p "解释这个项目的架构"
# 管道输入(分析日志、代码等)
cat error.log | claude -p "分析错误并修复"
# 多文件重构
claude "重构 src/components/ 下所有表单组件,统一用 React Hook Form"
# Git 集成
claude "查看最近 5 次 commit,总结变更,检查有无潜在 bug"
# 输出 JSON(适合 CI/CD)
claude -p "检查安全漏洞" --output-format json
常见误区
| 误区 | 正确做法 |
|---|---|
| 让 AI 一次写完所有代码 | 分步迭代,每步验证 |
| 完全信任 AI 的输出 | 始终审查生成的代码 |
| 使用模糊的 Prompt | 具体描述需求、约束、上下文 |
| 不配置 Rules | 花时间配好 Rules,后续事半功倍 |
| 只用一个 AI 工具 | 不同任务选不同工具 |
| 不提供上下文 | @mention 文件、错误日志、截图等 |
| 遇到报错就切到手动 | 把报错信息给 AI,通常能快速定位 |
| 安全代码也交给 AI | 认证/授权/加密代码必须人工审查 |
十二、AI 辅助开发的局限性与未来
- AI 生成的代码可能包含 bug,尤其是边界条件和并发场景
- AI 对最新 API了解可能过时(训练数据截止,可通过 @docs 或 MCP 补充)
- AI 不了解你的业务上下文(除非通过 Rules/RAG/MCP 提供)
- 复杂的架构级决策仍需要人类判断
- AI 可能过度工程化或忽略简单方案
- 安全敏感代码必须人工审查
- AI 的幻觉问题在代码生成中表现为编造不存在的 API
未来趋势
- Agent 持续进化:从单步任务到多 Agent 协作(设计 Agent + 编码 Agent + 测试 Agent)
- MCP 标准化:MCP 协议让 AI 工具与外部系统的集成标准化
- 上下文窗口扩大:百万级 Token 让 AI 理解整个大型代码库成为可能
- 自主编码 Agent:Devin、Cursor Background Agent 等可以独立完成完整的开发任务
- 端到端:从需求到代码到测试到部署,AI 参与度持续提升
- 人机协作新范式:工程师从"写代码"更多转向"审查代码"和"设计架构"
常见面试问题
Q1: 你日常开发中如何使用 AI 工具?效率提升了多少?
答案:
日常开发中我主要使用 Cursor + Claude Code 的组合:
- Cursor:日常编码、小范围修改、代码补全(Tab 补全 + Inline Edit Cmd+K)、多文件新功能用 Composer Agent(Cmd+I)
- Claude Code:大型重构、跨模块修改、项目架构调整、CI/CD 中的自动化任务
- GitHub Copilot:团队协作时使用,PR 自动审查
效率提升的具体数据:
- 重复性代码(CRUD、表单、接口对接):提升 3-5 倍
- 复杂逻辑(算法、架构设计):提升 1.5-2 倍
- 调试:提供完整上下文后,AI 通常比自己排查快 2-3 倍
- 代码审查:AI 预审后,人工审查效率提升 50%
关键经验:配好 Rules 文件是效率提升的基础。配 Rules 之前,AI 每次生成都需要手动纠正风格问题;配好之后,生成的代码 80%+ 可以直接使用。
Q2: 如何选择 AI 编程工具和模型?
答案:
工具选择需要考虑四个维度:
| 维度 | 推荐 |
|---|---|
| 团队统一/企业合规 | GitHub Copilot Business |
| 个人效率最大化 | Cursor(Composer + Agent) |
| CLI/大项目重构 | Claude Code |
| 预算有限 | Trae(免费)/ Gemini CLI |
| AWS 技术栈 | Amazon Q Developer |
模型选择的核心原则是「任务匹配」:
- 日常编码:Claude Sonnet 4 — 编码能力最强,速度快
- 复杂推理/重构:Claude Opus 4 — Agent 长任务最稳定
- 大量代码审查:Gemini 2.5 Pro — 100 万上下文可一次看完整个仓库
- 算法/数学:o3 / o4-mini — 链式推理强
- 快速原型:GPT-4o-mini / Gemini Flash — 速度快成本低
不要只用一个模型,应根据任务类型在 Cursor/Copilot 中灵活切换。
Q3: 如何配置 Rules 文件以最大化 AI 效果?
答案:
Rules 是 AI 编程效率的最大杠杆。不同工具的 Rules 系统有差异:
Cursor 最灵活——.cursor/rules/*.mdc 支持 globs 按路径匹配和 alwaysApply 全局生效:
- 全局规则(技术栈、代码风格):
alwaysApply: true - 组件规则:
globs: "src/components/**/*.tsx" - API 规则:
globs: "src/app/api/**/*.ts"
Claude Code 支持多层级——根目录 CLAUDE.md + 子目录 CLAUDE.md,子目录规则会继承父目录。
GitHub Copilot 单文件——.github/copilot-instructions.md。
Rules 编写 5 原则:
- 具体不模糊:"使用
interface定义 Props",不要说"遵循最佳实践" - 包含代码模板:给出组件、API、Hook 的代码模板
- 列出禁忌:明确禁止 any、var、class 组件等
- 包含命令:lint、test、build 命令让 AI 可以自我验证
- 持续迭代:发现 AI 重复犯的错,立即写入 Rules
Rules 文件应纳入 Git 版本管理,团队成员共享。
Q4: 对比各工具的 Agent 模式
答案:
2025 年主流 AI 编程工具都具备了 Agent 模式,但实现差异明显:
| 维度 | Cursor Composer | Copilot Agent | Claude Code | Windsurf Cascade |
|---|---|---|---|---|
| 交互 | IDE 面板 | VS Code Chat | 终端 CLI | IDE 面板 |
| 文件操作 | 多文件读写 | 多文件读写 | 最强(完整文件系统) | 多文件读写 |
| 终端命令 | 需确认 | 需确认 | 原生支持,流畅 | 需确认 |
| Git 操作 | 有限 | 有限 | 完整 git 支持 | 有限 |
| 后台运行 | Background Agent | 不支持 | headless 模式 | 不支持 |
| 最适合 | 日常多文件开发 | 团队协作 | 大型重构/CI 自动化 | 流畅自主编码 |
Claude Code 的 Agent 最强大——原生终端操作、完整 git 支持、可在 CI/CD 中以 headless 模式运行。Cursor Composer 在 IDE 内体验最好——多文件编辑可视化程度高。Copilot Agent 优势在于 VS Code 生态整合好,MCP 支持完善。
Q5: 什么时候该用 Inline Edit、Chat、Composer、CLI Agent?
答案:
选错交互模式会大幅降低效率。核心原则是任务复杂度匹配交互重量:
| 任务 | 推荐模式 | 原因 |
|---|---|---|
| 补全一行代码 | Tab 补全 | 最轻量,不打断心流 |
| 修改一个函数 | Inline Edit(Cmd+K) | 就地修改,上下文自然 |
| 讨论方案/理解代码 | Chat(Cmd+L) | 对话式探索 |
| 实现新功能(多文件) | Composer/Agent(Cmd+I) | 跨文件协调 |
| 大型重构/迁移 | CLI Agent(claude) | 整仓库理解+终端操作 |
| 生成 UI 原型 | v0.dev/Bolt.new | 可视化生成 |
一个经验法则:如果你需要在多于 3 个文件中做关联修改,就应该用 Composer/Agent 而非 Chat。如果涉及运行命令和 git 操作,用 CLI Agent。
Q6: 如何度量团队中 AI 编码工具的 ROI?
答案:
度量 AI 编码工具的 ROI 需要从效率、质量、成本三个维度建立指标体系:
效率指标:
- 代码采纳率:AI 生成代码被接受的比例。Copilot 后台可直接看到,目标 > 30%
- PR 周期缩短:对比引入 AI 前后的 PR 从创建到合并的时间,目标缩短 30%+
- 迭代次数:完成一个任务需要和 AI 交互的轮数,越少说明 Prompt 和 Rules 越好
质量指标:
- Bug 引入率:AI 生成的代码导致的 Bug 占总 Bug 的比例,需要 < 10%
- 测试覆盖率变化:AI 是否帮助提升了测试覆盖率
- 审查通过率:AI 生成代码一次通过 Code Review 的比例
成本指标:
- 月费用:工具订阅 + Token 消耗
- ROI 计算:(效率提升带来的人力节省 - AI 工具费用) / AI 工具费用
实践建议:先小范围试点 2-3 人,收集 4 周数据后做量化对比,再决定是否全团队推广。
Q7: AI 编程工具有哪些安全风险?如何防范?
答案:
AI 编程工具的安全风险主要有 5 类:
-
代码泄露风险
- 代码被发送到第三方服务器,可能被用于模型训练
- 防范:使用企业版(Copilot Business/Cursor Business 承诺不用代码训练)、审查数据政策
-
密钥泄露风险
- AI 工具索引 .env 文件,密钥被包含在发送给模型的上下文中
- 防范:配置
.cursorignore/.gitignore排除敏感文件,使用环境变量管理平台
-
AI 生成的安全漏洞
- AI 可能生成有 XSS、SQL 注入、不安全的加密等问题的代码
- 防范:安全相关代码必须人工审查、CI 中集成 SAST 扫描(如 Snyk、SonarQube)、在 Rules 中写入安全编码规范
-
供应链攻击
- AI 可能建议使用有漏洞或恶意的 npm 包
- 防范:新依赖必须检查
npm audit、使用 lockfile、定期审查依赖
-
Agent 操作风险
- Agent 模式下 AI 可能执行危险操作(删除文件、推送代码)
- 防范:高危操作需要人工确认、Agent 命令白名单、生产环境操作绝不用 AI Agent
Q8: 代码库索引在 AI IDE 中是怎么工作的?
答案:
代码库索引是 AI IDE 理解整个项目的基础。核心机制是向量化嵌入 + 语义搜索:
-
索引构建:
- 将项目中的每个文件拆分为代码片段(函数、类、模块等)
- 对每个片段生成嵌入向量(embedding),存入本地向量数据库
- Cursor 使用本地嵌入索引,Copilot 使用远程索引,Windsurf 使用 Cascade 深度索引
-
检索过程:
- 用户提问时,将问题也转为嵌入向量
- 在向量数据库中搜索最相似的代码片段(语义搜索,非关键词匹配)
- 将最相关的代码片段作为上下文注入给模型
-
各工具实现:
- Cursor
@codebase:本地嵌入索引,文件保存时增量更新 - Copilot
@workspace:远程索引,支持整个仓库 - Windsurf:Cascade 自动推断相关文件,无需手动 @mention
- Claude Code:运行时动态分析,利用 grep/glob 搜索相关文件,不依赖预构建索引
- Cursor
-
优化建议:
- 配置忽略文件(.cursorignore)排除 node_modules、dist 等噪音
- 大型 monorepo 可能需要手动 @mention 指定范围
- 关键文件写入 Rules 引用,确保始终在上下文中
更多关于向量检索的技术原理,可参考 向量数据库与语义搜索。
Q9: 如何把 AI 代码审查集成到 CI/CD 流程中?
答案:
AI 代码审查集成到 CI/CD 有几种主流方案:
方案 1:CodeRabbit(最简单)
- 安装 GitHub App,零配置即可使用
- 自动对每个 PR 生成摘要和逐行评论
- 支持在评论中与 AI 对话修改
方案 2:Copilot PR Review(GitHub 原生)
- Copilot Business/Enterprise 内置功能
- 在 PR 页面点击 "Review with Copilot" 触发
- 与 GitHub 生态深度集成
方案 3:Claude Code CLI(最灵活)
- 在 GitHub Actions 中调用
claude -p分析 PR diff - 可自定义审查规则(安全、性能、类型安全等)
- 输出 JSON 格式后通过 GitHub API 发布评论
# 简化的 CI 集成示例
- name: AI Review
run: |
git diff origin/main...HEAD > diff.txt
claude -p "审查 diff,输出 JSON 评论" --output-format json < diff.txt
最佳实践:
- AI 审查作为「第一轮筛查」,发现明显问题后再人工深度审查
- 配置审查重点(安全 > 性能 > 代码风格)
- AI 审查评论带"AI Review"标签,和人工评论区分
- 不要让 AI 审查成为合并的阻塞条件,仅作辅助
Q10: 如何让 AI 理解整个项目的上下文?
答案:
让 AI 理解项目上下文有 6 个层次,从低到高:
- 当前文件:AI 默认能看到你正在编辑的文件(最基本)
- Rules 文件:通过 CLAUDE.md / .cursor/rules 提供项目规范、技术栈、约定(最重要)
- @mention 引用:在对话中用 @file、@folder 指定关键文件(精准控制)
- 代码库索引:Cursor 的 @codebase、Copilot 的 @workspace 索引整个项目(全局搜索)
- MCP 连接:通过 MCP Server 连接数据库、API 文档、Issue tracker 等外部数据源
- Memory Bank:在 .memory-bank/ 目录维护项目的持久化上下文(架构、决策、进展)
实用建议:
- 项目初始化时就配好 Rules,这是投入产出比最高的操作
- 复杂任务先让 AI 读架构("先看 @src/app 的目录结构和 @prisma/schema.prisma"),再给具体任务
- 不要一次引用太多文件,精准引用 3-5 个关键文件效果最好
- 定期更新 Rules,尤其是技术栈升级或架构变更后
Q11: 如何编写高效的 AI Prompt 进行编程?
答案:
编程场景的 Prompt 遵循 CRISP 原则(详见 Prompt Engineering):
- Context(上下文):技术栈、框架版本、项目背景
- Requirement(需求):具体要实现什么功能
- Input/Output(输入输出):数据结构、API 接口
- Style(风格):代码规范、命名约定
- Priority(优先级):性能?可读性?安全性?
4 种高效 Prompt 模式:
- Few-shot 模式:给 2-3 个现有代码示例,让 AI 按相同风格生成新代码
- Chain-of-Thought 调试:要求 AI 逐步分析 Bug 原因,不要直接给答案
- 约束型 Prompt:明确列出"必须满足"和"不要做"
- 模板化 Prompt:将常用的 Prompt 模式封装为可复用模板
# 好的 Prompt 示例
上下文:Next.js 15 + Prisma + PostgreSQL
需求:实现分页查询文章列表 API
输入:{ page: 1, pageSize: 10, category?: string }
输出:{ data: Article[], total: number, hasMore: boolean }
要求:支持按分类筛选,添加缓存(Redis),处理边界情况
风格:参考 @app/api/users/route.ts 的代码风格
Q12: 谈谈你对 AI 辅助开发未来趋势的理解
答案:
AI 辅助开发正在经历从「补全工具」到「AI 工程师同事」的转变:
- Agent 持续进化:从"被动回答"走向"主动执行"。Claude Code、Cursor Background Agent 已能自主完成多步骤任务。下一步是多 Agent 协作——设计 Agent + 编码 Agent + 测试 Agent + 审查 Agent
- MCP 标准化:MCP 协议让 AI 工具与外部系统集成标准化,AI IDE 可以连接数据库、文档、API。未来每个 SaaS 工具都会提供 MCP Server
- 上下文无限扩展:从 128K 到 1M 到更大,AI 将能理解整个大型 monorepo 的代码
- 端到端自动化:从需求分析到代码实现到测试到部署,AI 参与度会持续提升
- 人机协作新范式:工程师的核心价值从"写代码"转向"定义需求、设计架构、审查质量、做技术决策"
- 个性化 AI:AI 将学习每个开发者的编码风格和偏好,提供更个性化的建议
对前端工程师的启示:
- 掌握 AI 工具是必备技能,不是加分项
- 重点提升「需求分析、架构设计、代码审查」能力,这些是 AI 最难替代的
- 学会写好 Rules 和 Prompt,这是用好 AI 的核心技能
- 保持对 AI 输出的判断力,不要成为"AI 复制粘贴工程师"
Q13: AI 辅助开发的局限性有哪些?
答案:
6 大局限性:
-
不了解运行时状态:AI 看不到你的数据库数据、浏览器实际报错、用户行为数据。需要你主动提供日志、截图、网络请求等运行时信息
-
知识截止:模型训练数据有截止日期,对最新的 API/框架可能不了解。缓解方案:通过 @docs 引用官方文档、通过 MCP 连接实时数据源、使用带联网能力的工具
-
上下文窗口有限:虽然上下文在持续扩大(Gemini 达 1M),但超大型项目仍可能遗漏关键文件。需要通过 Rules + @mention 精准控制上下文
-
缺乏业务理解:AI 不了解你的产品逻辑、用户需求、商业目标。架构级决策和产品设计仍需人类判断
-
代码质量波动:同一个问题多次生成可能结果不同;复杂逻辑的边界条件处理常有疏漏
-
安全盲区:AI 可能引入安全漏洞(XSS、注入、不安全的加密)、建议使用有漏洞的依赖。安全敏感代码必须人工审查
Q14: 你如何在团队中推广 AI 编码工具?
答案:
推广策略分 4 个阶段:
第 1 阶段(1 周)—— 选型试用
- 2-3 名技术骨干试用不同工具(Cursor、Copilot、Claude Code)
- 在真实项目中使用,记录效率提升和问题
第 2 阶段(2 周)—— 建立规范
- 编写团队 Rules 文件(.cursor/rules、CLAUDE.md、copilot-instructions.md)
- 制定安全规范(.cursorignore、敏感信息处理)
- 建立 Prompt 最佳实践文档
第 3 阶段(1 周)—— 培训推广
- 组织团队分享会,演示高效使用技巧
- 收集反馈,解答常见问题
- 设置 AI 辅助使用的 Slack 频道,共享经验
第 4 阶段(持续)—— 度量优化
- 收集代码采纳率、PR 周期、Bug 引入率等指标
- 每月复盘,更新 Rules 和最佳实践
- 分享团队成员的成功案例
注意事项:
- 不要强制使用,让团队自然接受
- 安全合规先行,确认工具符合公司政策
- Rules 文件提交到 Git,团队共享
Q15: 如何避免过度依赖 AI 导致技术能力下降?
答案:
这是一个很重要的问题。AI 是放大器,放大能力强的人,但也可能让能力弱的人更弱。保持技术成长的方法:
- 理解再使用:AI 生成的代码必须理解原理再 commit,不要当黑盒。如果不理解,让 AI 解释
- 刻意练习:算法题、底层原理仍然需要自己练习。面试时你不能说"我让 AI 写的"
- 审查能力:把重心从"写代码"转向"审查代码"。读代码的能力比写代码更重要
- 架构思维:AI 擅长实现细节,但架构设计、技术选型、权衡取舍仍需要深厚的技术功底
- 保持好奇心:新框架/新特性先自己读文档理解,再用 AI 加速实践
- 定期脱离 AI 编码:每周花一些时间不借助 AI 写代码,保持手感
核心观点:AI 工具是「自行车」不是「轮椅」——它帮你更快到达目的地,但你必须自己有骑车的能力。
相关链接
- GitHub Copilot 文档
- Cursor 文档
- Claude Code 文档
- Windsurf 文档
- CodeRabbit
- MCP(Model Context Protocol) - AI 工具标准协议
- Prompt Engineering - Prompt 技巧详解
- Function Calling 与 AI Agent - Agent 核心架构