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-permissions4. 自动测试
4.1 测试生成
Claude Code 擅长批量生成测试:
> 给 lib/actions/ 目录下所有 Server Actions 生成单元测试。
要求:
- 使用 Vitest
- 测试文件放在 __tests__/ 目录
- mock 数据库层(db.select, db.insert 等)
- mock auth 层(getSession, requirePermission)
- 每个 action 测试:正常流程、权限不足、输入无效、数据不存在
- 运行 pnpm test 确认全部通过Claude Code 会:
- 扫描所有 Server Actions 文件
- 分析每个 action 的输入输出和依赖
- 生成对应的测试文件
- 运行测试
- 如果测试失败,自动修复(可能是测试写错了或 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:e2e5. 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 #425.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 减少试错