第19讲|从零搭建 AI 辅助的全栈开发环境

5 阅读1分钟

金句:工欲善其事,必先利其器。一个配置完善的 AI 开发环境,是把 Vibe Coding 效率落地的基础设施。


一、为什么环境配置如此重要?

很多人学了 Vibe Coding 的理念,却发现实际使用中处处碰壁:

  • AI 提示词写得很好,但生成的代码风格和项目不一致
  • 每次开始新功能都要重新向 AI 解释项目背景
  • 团队成员的 AI 使用方式各不相同,代码差异巨大

根本原因:没有系统化的环境配置

本讲给你一套完整的 AI 辅助全栈开发环境配置方案。


二、全栈 AI 开发环境架构图

┌─────────────────────────────────────────────────────────────────┐
│                        AI 开发环境总览                            │
│                                                                   │
│  ┌──────────────────┐    ┌──────────────────┐                   │
│  │    编码层          │    │    工具链层        │                   │
│  │  • Cursor IDE    │    │  • ESLint + AI   │                   │
│  │  • .cursorrules  │    │  • Prettier      │                   │
│  │  • Cursor Rules  │    │  • Husky (Git钩) │                   │
│  └──────────────────┘    └──────────────────┘                   │
│           ↓                        ↓                            │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                     AI 上下文层                           │   │
│  │  • 项目规范文档  • 架构决策记录  • 提示词模板库            │   │
│  └──────────────────────────────────────────────────────────┘   │
│           ↓                                                      │
│  ┌──────────────────┐    ┌──────────────────┐                   │
│  │    CI/CD 层       │    │    质量守护层      │                   │
│  │  • AI PR 审查    │    │  • AI 测试生成   │                   │
│  │  • 自动化部署    │    │  • 覆盖率检查     │                   │
│  └──────────────────┘    └──────────────────┘                   │
└─────────────────────────────────────────────────────────────────┘

三、项目脚手架:AI-Ready 的项目模板

目录结构设计

my-fullstack-app/
├── .github/
│   ├── copilot-instructions.md     # GitHub Copilot 规则
│   ├── workflows/
│   │   ├── ai-review.yml           # AI 代码审查
│   │   └── test.yml                # 自动化测试
│   └── PULL_REQUEST_TEMPLATE.md    # PR 模板
├── .cursor/
│   └── rules/                      # Cursor Rules 目录
│       ├── general.md              # 通用规则
│       ├── frontend.md             # 前端规则
│       └── backend.md              # 后端规则
├── docs/
│   ├── architecture.md             # 架构文档
│   ├── adr/                        # 架构决策记录
│   │   └── 001-use-postgresql.md
│   └── api-spec.md                 # API 规范
├── prompts/                        # 提示词模板库
│   ├── new-feature.md
│   ├── bug-fix.md
│   ├── refactor.md
│   └── test-generation.md
├── frontend/
│   ├── src/
│   └── ...
├── backend/
│   ├── src/
│   └── ...
└── README.md

四、.cursor/rules/ 完整配置

general.md(通用规则)

# 通用代码规范

## 项目背景
这是一个企业级 SaaS 应用,主要功能包括:
- 用户管理和权限控制
- 数据分析看板
- 报表导出

## 通用原则
1. 所有代码使用 TypeScript,禁止 any 类型
2. 错误处理必须完整,不允许吞掉异常
3. 日志使用项目封装的 logger,不用 console.log
4. 所有字符串常量抽取为 enum 或 const
5. 函数长度不超过 50 行,超过则拆分

## 命名规范
- 文件名:kebab-case(user-profile.ts)
- 类名:PascalCase(UserProfile)
- 函数/变量:camelCase(getUserById)
- 常量:UPPER_SNAKE_CASE(MAX_RETRY_COUNT)
- 接口:I前缀(IUserService)或无前缀,保持统一

## 注释规范
- 公共 API 必须有 JSDoc 注释
- 复杂业务逻辑必须有行内注释
- 禁止过时的注释(TODO/FIXME 必须有 issue 编号)

backend.md(后端规则)

# 后端代码规范

## 技术栈
- 框架:NestJS v10
- ORM:Prisma
- 数据库:PostgreSQL 15
- 认证:JWT + Passport
- 测试:Jest + Supertest

## 架构规范
- 遵循 Controller → Service → Repository 三层架构
- Service 层禁止直接使用 Prisma(通过 Repository 层)
- Controller 层只做参数验证和响应格式化
- 业务逻辑全部在 Service 层

## DTO 规范
所有输入必须通过 DTO 验证:
\`\`\`typescript
export class CreateUserDto {
  @IsEmail()
  @IsNotEmpty()
  email: string;
  
  @IsString()
  @MinLength(8)
  @MaxLength(50)
  password: string;
}
\`\`\`

## 响应格式
统一使用以下响应格式:
\`\`\`typescript
interface ApiResponse<T> {
  success: boolean;
  data: T;
  message?: string;
  timestamp: string;
}
\`\`\`

## 错误处理
使用全局异常过滤器,Service 层抛出业务异常:
\`\`\`typescript
throw new BusinessException('用户不存在', 'USER_NOT_FOUND', 404);
\`\`\`

frontend.md(前端规则)

# 前端代码规范

## 技术栈
- 框架:React 18 + Next.js 14(App Router)
- 状态管理:Zustand
- 样式:Tailwind CSS
- 组件库:shadcn/ui
- 表单:React Hook Form + Zod
- 数据请求:TanStack Query v5

## 组件规范
1. 优先使用函数式组件 + Hooks
2. 页面级组件放在 app/ 目录,可复用组件放在 components/
3. 自定义 Hooks 放在 hooks/ 目录,以 use 开头命名
4. 组件 Props 必须有 TypeScript 接口定义

## 状态管理规范
- 服务端数据:TanStack Query(不放入 Zustand)
- 全局 UI 状态:Zustand
- 表单状态:React Hook Form
- 局部状态:useState

## 样式规范
- 只使用 Tailwind CSS,禁止内联 style
- 复杂样式组合使用 cn() 工具函数
- 响应式断点从移动端优先(mobile-first)

## 禁止事项
- 禁止直接调用 fetch/axios,必须通过 API 层封装
- 禁止在组件中写业务逻辑,抽取到 Hooks
- 禁止使用 useEffect 处理数据获取,用 TanStack Query

五、提示词模板库

prompts/new-feature.md

# 新功能实现提示词模板

## 使用方式
复制以下模板,填写 [] 中的内容,然后发给 Cursor/Copilot

---

## 任务描述
实现 [功能名称] 功能。

## 需求背景
[描述这个功能的业务价值和用户需求,1-3句话]

## 技术要求
[列出具体的技术要求,如接口规范、数据结构、性能要求]

## 需要创建/修改的文件
- [文件路径1](新建/修改)
- [文件路径2](新建/修改)

## 约束条件
- 遵循 @.cursor/rules/backend.md 中的架构规范
- [其他特殊约束]

## 验收标准
- [ ] [可验证的功能点1]
- [ ] [可验证的功能点2]
- [ ] 单元测试覆盖率 > 80%
- [ ] TypeScript 编译无错误

六、架构决策记录(ADR)模板

# ADR-001: 使用 PostgreSQL 而非 MongoDB

## 状态
已决策(2024-01-15)

## 背景
我们需要选择主数据库,候选方案:PostgreSQL vs MongoDB。

## 决策
选择 PostgreSQL。

## 理由
1. 我们的数据有明显的关联结构(用户-订单-商品)
2. 需要事务支持确保数据一致性
3. 团队更熟悉 SQL

## 后果
- 好处:强事务、关联查询方便、类型安全
- 代价:Schema 变更需要迁移脚本,不如 MongoDB 灵活

## AI 提示词影响
在 Cursor Rules 中已注明使用 Prisma + PostgreSQL,
AI 生成代码时会自动遵循此技术栈。

七、一键初始化脚本

#!/bin/bash
# setup-ai-env.sh - AI 开发环境初始化脚本

echo "🚀 初始化 AI 辅助开发环境..."

# 创建目录结构
mkdir -p .github/workflows
mkdir -p .cursor/rules
mkdir -p docs/adr
mkdir -p prompts

# 复制规则模板(实际使用时替换为你的模板路径)
echo "📝 创建 Cursor Rules..."
# 此处写入你的规则文件

# 安装代码质量工具
echo "🔧 安装代码质量工具..."
npm install -D eslint prettier husky lint-staged

# 配置 Husky Git 钩子
echo "🪝 配置 Git 钩子..."
npx husky install
npx husky add .husky/pre-commit "npx lint-staged"
npx husky add .husky/commit-msg "npx commitlint --edit $1"

echo "✅ AI 开发环境初始化完成!"
echo "📚 请查阅 docs/architecture.md 了解项目架构"
echo "💡 提示词模板在 prompts/ 目录下"

章节小结:AI 开发环境配置的核心是"上下文工程"——让 AI 在每次交互时都能访问到正确的项目规范、架构文档和提示词模板。这些文件一次配置,长期生效,是提升团队 Vibe Coding 效率的基础设施投资。