Claude Code 全栈自动化实战

Claude Code 和 Cursor 最大的不同在于 自主性——你给它一个任务描述,它会自己规划步骤、读取相关文件、编写代码、运行测试、修复错误,直到任务完成。这种"甩手掌柜"模式特别适合复杂的全栈任务。本章从终端工作流出发,演示 Claude Code 在 Next.js 项目中的高级用法。

1. 终端工作流

1.1 基本交互

# 启动 Claude Code(在项目根目录)
$ cd ~/projects/nextsaas
$ claude
 
# 进入交互模式
> 帮我分析这个项目的架构,列出主要模块和依赖关系
 
Claude Code:
  [读取 package.json]
  [读取 app/ 目录结构]
  [读取 lib/ 目录结构]
  [读取 tsconfig.json]
 
  "项目架构分析:
   - Next.js 15 App Router + React 19
   - 数据层:Drizzle ORM + PostgreSQL
   - 认证:Clerk(多租户)
   ..."

1.2 单次执行模式

对于明确的任务,可以用 -p 参数直接执行:

# 单次执行,不进入交互模式
$ claude -p "给 users 表添加 timezone 字段,更新 schema 和所有相关查询"
 
# 从文件读取任务
$ claude -p "$(cat tasks/add-notification-system.md)"
 
# 管道输入
$ cat error.log | claude -p "分析这个错误日志,找出根因"

1.3 会话管理

# 继续上一个会话
$ claude --continue
 
# 恢复特定会话
$ claude --resume
 
# 列出历史会话
$ claude sessions list

--continue 非常有用——当你中断了一个大任务,可以回来继续,Claude Code 会记住之前的上下文。

1.4 权限控制

Claude Code 默认对高风险操作需要确认:

Claude Code 想执行:rm -rf node_modules
[y/n/explain] > 

Claude Code 想修改:lib/db/schema.ts
[y/n/explain] >

可以通过 --dangerously-skip-permissions 跳过确认(仅限你完全信任的场景),或者用 --allowedTools 限制可用操作。

2. 自主任务执行

2.1 从零搭建功能模块

Claude Code 最强的场景——给一个功能需求,它自己完成全部实现:

> 实现完整的团队邀请功能:
  1. 管理员输入邮箱发送邀请
  2. 系统发送邀请邮件(用 Resend)
  3. 受邀者点击链接注册并加入团队
  4. 邀请 24 小时过期
  5. 不能重复邀请同一邮箱
  
  请参考 CLAUDE.md 中的项目约定。

Claude Code 的执行过程:

[Plan]
1. 读取 CLAUDE.md 了解项目约定
2. 读取 lib/db/schema.ts 了解数据模型
3. 创建 invitations 表(schema 变更)
4. 运行 pnpm db:generate 生成迁移
5. 创建 lib/actions/invitation.ts(Server Actions)
6. 创建 lib/email/invitation.ts(邮件模板)
7. 创建 app/invite/[token]/page.tsx(邀请接受页面)
8. 修改 app/(dashboard)/settings/members/page.tsx(添加邀请按钮)
9. 创建 components/invite-member-form.tsx(邀请表单)
10. 编写测试 lib/actions/__tests__/invitation.test.ts
11. 运行 pnpm test 验证
12. 运行 pnpm build 确认无类型错误

[Executing step 1/12...]

2.2 大规模重构

> 将项目从 Pages Router 迁移到 App Router:
  
  1. 分析 pages/ 目录下所有路由
  2. app/ 下创建等效路由
  3. getServerSideProps 改为 Server Component 直接获取数据
  4. getStaticProps 改为 generateStaticParams
  5. useRouter query 改为 useSearchParams
  6. 迁移 _app.tsx 的全局布局到 app/layout.tsx
  7. 迁移 _document.tsx HTML 结构到 app/layout.tsx
  8. 迁移完成后删除 pages/ 目录
  9. 运行测试确认功能正常

Claude Code 会逐文件迁移,每迁移一个路由就运行类型检查确认无误。

2.3 关键能力:自我修复

Claude Code 的自我修复循环是它最有价值的特性:

写代码 → 运行检查 → 发现错误 → 自动修复 → 再次检查 → 通过
> 给所有 Server Actions 添加输入验证
 
Claude Code:
  [修改 lib/actions/project.ts]
  [运行 pnpm build]
  
 Error: Type 'z.infer<typeof schema>' is not assignable to...
  
  [分析错误]
  [修改类型定义]
  [再次运行 pnpm build]
  
 Build successful
  
  [继续修改下一个文件...]

3. 并行任务

3.1 多终端并行

对于独立的子任务,可以在多个终端中并行执行:

# 终端 1:实现后端逻辑
$ claude
> 实现通知系统的数据模型和 Server Actions
 
# 终端 2:实现前端组件(不依赖后端)
$ claude
> 基于这个接口定义,实现通知 UI 组件:
  - getNotifications(): Promise<Notification[]>
  - markAsRead(id: string): Promise<void>
  - getUnreadCount(): Promise<number>
  (后端同事正在实现,你先用 mock 数据)

3.2 后台任务

# 在当前会话中启动后台任务
> /background 给 lib/actions/ 下所有文件添加 JSDoc 注释,不要修改任何逻辑
 
# 继续主任务
> 现在帮我实现搜索功能...
 
# 后台任务完成后会通知你

3.3 任务编排

对于大型项目,可以写任务文件批量执行:

<!-- tasks/sprint-23.md -->
# Sprint 23 Tasks
 
## Task 1: 用户搜索
- 添加全文搜索索引(pg_trgm)
- 实现搜索 API
- 创建搜索 UI 组件
 
## Task 2: 通知系统
- 数据模型
- 触发器
- UI 组件
 
## Task 3: 导出功能
- CSV 导出 Server Action
- 导出按钮组件
$ claude -p "$(cat tasks/sprint-23.md)" --dangerously-skip-permissions

4. 自动测试

4.1 测试生成

Claude Code 擅长批量生成测试:

> 给 lib/actions/ 目录下所有 Server Actions 生成单元测试。
  
  要求:
  - 使用 Vitest
  - 测试文件放在 __tests__/ 目录
  - mock 数据库层(db.select, db.insert 等)
  - mock auth 层(getSession, requirePermission)
  - 每个 action 测试:正常流程、权限不足、输入无效、数据不存在
  - 运行 pnpm test 确认全部通过

Claude Code 会:

  1. 扫描所有 Server Actions 文件
  2. 分析每个 action 的输入输出和依赖
  3. 生成对应的测试文件
  4. 运行测试
  5. 如果测试失败,自动修复(可能是测试写错了或 mock 不完整)

4.2 测试驱动修复

> 运行 pnpm test,修复所有失败的测试。
  
  规则:
  - 先分析失败原因
  - 如果是测试代码的问题,修复测试
  - 如果是源代码的 bug,修复源代码
  - 不要删除或跳过测试
  - 修复后重新运行确认

4.3 E2E 测试生成

> 给登录流程编写 Playwright E2E 测试:
  
  场景:
  1. 访问 /login 看到登录表单
  2. 输入错误密码 显示错误提示
  3. 输入正确凭据 跳转到 /dashboard
  4. 刷新 /dashboard 仍然保持登录状态
  5. 点击退出 跳转到 /login
  
  测试文件:e2e/auth.spec.ts
  运行:pnpm test:e2e

5. Git 工作流自动化

5.1 Auto Commit

Claude Code 内置 Git 支持,可以自动管理提交:

# 实现功能后自动提交
> 实现通知系统,完成后帮我 commit。
  commit message 使用 conventional commits 格式。
 
Claude Code:
  [完成所有代码修改]
  [运行 pnpm build 确认无误]
  [运行 pnpm test 确认通过]
  
  git add lib/db/schema.ts lib/actions/notification.ts ...
  git commit -m "feat(notifications): implement in-app notification system
  
  - Add notifications table schema
  - Add CRUD Server Actions
  - Add notification triggers for member/task/file events
  - Add NotificationBell and NotificationPanel components
  - Add unit tests for notification actions"

5.2 PR 创建

> 创建 PR 提交到 main 分支:
  
  - 确保当前分支所有修改已提交
  - PR 标题从 commit 历史生成
  - PR 描述包含:修改概述、测试情况、截图说明
  - 关联 Issue #42

5.3 Code Review

Claude Code 的 /review 命令提供自动化代码审查:

# 审查当前分支相对 main 的改动
> 审查我的代码修改,重点检查:
  1. 安全问题(SQL 注入、XSS、权限绕过)
  2. 性能问题(N+1 查询、缺少索引、不必要的重渲染)
  3. 是否符合 CLAUDE.md 中的编码规范
  4. 边界情况处理
  
  输出格式:
  | 文件:行号 | 严重等级 | 问题描述 | 建议修复 |

6. 高级模式

6.1 Extended Thinking

对于复杂的架构决策,启用 extended thinking 模式让 Claude Code 深度思考:

> 我要给这个 SaaS 添加实时协作功能(类似 Google Docs)。
 
  请先深度分析:
  1. 技术方案对比(WebSocket vs CRDT vs OT)
  2. Next.js + Vercel 上的可行性
  3. 数据一致性保证
  4. 离线支持策略
  5. 具体的实现计划
 
  不要写代码,先给出分析报告。

6.2 自定义 Slash Commands

.claude/commands/ 目录创建自定义命令:

<!-- .claude/commands/new-feature.md -->
When implementing a new feature:
1. Read CLAUDE.md for project conventions
2. Design the database schema first (add to lib/db/schema.ts)
3. Generate migration: pnpm db:generate
4. Create Server Actions in lib/actions/
5. Create UI components
6. Write tests
7. Run pnpm build && pnpm test
8. Commit with conventional commit format
 
Reference files:
- Schema: lib/db/schema.ts
- Action pattern: lib/actions/project.ts
- Component pattern: components/create-project-form.tsx

使用:

> /new-feature 实现团队级别的文件存储功能,每个团队有独立的存储空间

6.3 Claude Code + Cursor 双轨工作流

最高效的方式是两个工具配合使用:

日常流程:

  上午——Cursor 写代码:
    → 日常功能开发
    → 小 Bug 修复
    → UI 调整

  需要大动作时——切换到 Claude Code:
    → 大规模重构
    → 批量生成测试
    → 复杂功能从零搭建
    → Code Review

  下班前——Claude Code 收尾:
    → "运行所有测试,修复失败的"
    → "运行 build,修复所有类型错误"
    → "审查今天的所有改动"
    → "提交并创建 PR"

7. 成本控制

7.1 Token 消耗分析

Claude Code 按 API 用量计费,成本与任务复杂度相关:

任务类型平均 Token估算成本
简单 Bug 修复10-30K$0.05-0.15
中等功能开发50-150K$0.25-0.75
大型功能(多文件)200-500K$1.00-2.50
大规模重构500K-2M$2.50-10.00
批量测试生成300K-1M$1.50-5.00

7.2 降低成本的策略

# 1. 使用 --model 选择合适的模型
$ claude --model sonnet  # 日常任务用 Sonnet(便宜)
$ claude --model opus    # 复杂架构决策用 Opus(贵但强)
 
# 2. 精确的 CLAUDE.md 减少试错
#    AI 对项目越了解,一次性做对的概率越高
 
# 3. 拆分大任务
#    "一步实现完整通知系统" → 成本高,易出错
#    分 5 步实现 → 每步更便宜,总体可能更省
 
# 4. 用 --continue 复用会话
#    新会话需要重新读取所有文件,浪费 token
#    继续会话复用已有上下文

7.3 使用 Max Plan

如果重度使用 Claude Code,Anthropic 的 Max Plan($100/月或 $200/月)可能比按量计费更划算——包含大量 Opus 和 Sonnet 用量。

本章小结

  • 自主执行:给任务描述,Claude Code 自己规划、编码、测试、修复
  • 终端原生-p 单次执行、--continue 恢复会话、管道输入
  • 自我修复循环:写代码 → 运行检查 → 发现错误 → 自动修复 → 再次检查
  • 并行任务:多终端 + 后台模式,独立子任务并行执行
  • 测试自动化:批量生成单元测试 + 运行 + 自动修复失败用例
  • Git 集成:自动 commit(conventional commits)、创建 PR、Code Review
  • 自定义命令.claude/commands/ 封装团队工作流
  • 双轨工作流:Cursor 日常编码 + Claude Code 复杂任务/收尾
  • 成本控制:Sonnet 日常 / Opus 架构决策,精确 CLAUDE.md 减少试错