Claude Code 全栈自动化实战

如果说 Cursor 是"有 AI 辅助的 IDE",那 Claude Code 就是"会写代码的终端"。它不在 IDE 中运行,而是直接在终端中操作文件系统、执行命令、运行测试、提交代码。这种终端原生的设计,使它在全栈功能开发、自动化测试、批量重构等场景下有着 Cursor 无法匹敌的效率。本章用 AI 视频平台的真实任务,展示 Claude Code 的完整工作流。

1. 终端工作流

1.1 基础命令

# 启动交互式会话
claude
 
# 一次性任务(非交互)
claude "给 VideoCard 组件添加视频时长显示"
 
# 从标准输入读取上下文
cat error.log | claude "分析这个错误日志,找到根本原因"
 
# 指定模型
claude --model claude-sonnet-4-20250514
 
# 继续上次的会话
claude --continue
 
# 恢复指定会话
claude --resume

1.2 权限模型

Claude Code 有三级权限:

级别操作需要确认
自动读取文件、搜索代码、分析逻辑不需要
提示编辑文件、创建文件首次确认,可加白名单
警告执行终端命令、git push、删除文件每次确认

通过 /allowed-tools 命令可以配置白名单,对可信操作跳过确认:

# 在会话中运行
/allowed-tools
# 添加:Edit, Write, Bash(npm run *)

1.3 CLAUDE.md 驱动

Claude Code 启动时自动读取项目的 CLAUDE.md,这是它的"工作手册"。前面章节已经详细介绍了 CLAUDE.md 的编写,这里强调一个实战要点——把常用命令写进去

## Commands
- `pnpm dev` - Start dev server
- `pnpm build` - Build for production
- `pnpm typecheck` - TypeScript check (run before commit)
- `pnpm test` - Run all tests
- `pnpm test:unit` - Unit tests only
- `pnpm db:generate` - Generate migration after schema change
- `pnpm db:migrate` - Apply migrations

Claude Code 在需要验证代码时,会自动调用这些命令。

2. 全栈功能开发

2.1 场景:实现评论系统

$ claude "给 AI 视频平台实现完整的评论系统:
 
数据库:
- comments 表:id, content, videoId, userId, parentId(可选,支持回复), createdAt
- 带 parentId 自引用外键
 
API:
- POST /api/videos/:id/comments - 发表评论(支持回复)
- GET /api/videos/:id/comments - 获取评论列表(树状结构)
- DELETE /api/comments/:id - 删除自己的评论
 
前端:
- CommentList.vue - 评论列表(树状嵌套显示)
- CommentInput.vue - 评论输入框(支持 @ 回复)
- composables/useComments.ts - 评论数据管理
 
使用 Drizzle ORM,遵循项目现有的 API 风格。"

2.2 Claude Code 的执行过程

[Claude Code 自主执行的步骤]

1. 读取 CLAUDE.md → 理解项目结构和技术栈
2. 读取 packages/database/schema/ → 理解现有 schema 风格
3. 读取 server/api/videos/ → 理解 API 风格
4. 创建 packages/database/schema/comments.ts
5. 运行 pnpm db:generate → 生成 migration
6. 创建 server/api/videos/[id]/comments.post.ts
7. 创建 server/api/videos/[id]/comments.get.ts
8. 创建 server/api/comments/[id].delete.ts
9. 创建 composables/useComments.ts
10. 创建 components/CommentList.vue
11. 创建 components/CommentInput.vue
12. 运行 pnpm typecheck → 类型检查通过
13. 运行 pnpm test → 测试通过

整个过程你只需要在终端命令执行时确认(或已经加入白名单),代码修改是自动的。

2.3 与 Cursor 的区别

维度Cursor AgentClaude Code
文件修改生成 diff,等你审查直接写入文件
命令执行有限的终端访问完整终端能力
验证需要你手动运行测试自动运行 typecheck + test
提交不涉及 Git可以自动 commit + push
适合需要精细控制的修改目标明确的端到端任务

3. 并行子任务

3.1 什么是并行子任务

Claude Code 可以 fork 子进程,并行处理独立的任务。例如,前端和后端的修改互不依赖时,可以同时进行。

3.2 触发方式

Claude Code 会自动识别可以并行的任务。你也可以显式要求:

$ claude "并行执行以下任务:
1. 为 videos API 编写单元测试(server/api/videos/__tests__/)
2. 为 VideoPlayer 组件编写组件测试(components/__tests__/)
3. 更新 README.md 的 API 文档
 
三个任务互相独立,请并行处理。"

3.3 并行的价值

串行执行并行执行
任务 1 → 任务 2 → 任务 3任务 1 ↗
总耗时:三个任务之和任务 2 → 全部完成
任务 3 ↗
总耗时 ≈ 最慢任务的耗时

对于编写测试这类任务,3 个独立的测试文件并行生成,效率提升接近 3 倍。

4. 自动测试循环

4.1 测试驱动开发

Claude Code 最擅长的工作流之一是 TDD 循环——编写测试、运行测试、修复失败、重复直到全绿:

$ claude "为视频收藏功能编写完整的测试:
 
1. 单元测试:
   - toggle API: 未收藏 → 收藏,已收藏 → 取消
   - list API: 分页正确,按时间倒序
   - check API: 已收藏返回 true,未收藏返回 false
 
2. 运行测试,如果失败就修复代码直到全部通过
 
使用 vitest + @nuxt/test-utils。"

Claude Code 的执行:

1. 创建测试文件
2. 运行 pnpm test:unit → 3 个失败
3. 分析失败原因 → 修复测试或代码
4. 再次运行 → 1 个失败
5. 修复 → 再次运行 → 全部通过
6. 完成

这个"写 → 跑 → 修 → 跑"的循环,Cursor 无法自动完成(它不会主动运行测试并修复),而 Claude Code 可以循环到通过为止。

4.2 修复现有失败测试

$ claude "运行 pnpm test,查看失败的测试,分析原因并修复。
不要修改测试本身,只修复被测代码。"

这个约束很重要——"不要修改测试"。否则 AI 可能会通过删除断言来"修复"测试。

5. 自动 Git 工作流

5.1 自动提交

$ claude "完成后提交代码:
- 使用 Conventional Commits 格式
- 每个逻辑变更一个 commit
- commit message 用英文"

Claude Code 会根据修改内容自动生成合适的 commit message:

feat: add video favorites feature

- Add favorites schema with userId+videoId unique constraint
- Add toggle/list/check API endpoints
- Add useFavorite composable with optimistic UI
- Add FavoriteButton component

5.2 自动创建 PR

$ claude "把当前分支的修改创建一个 PR 到 main:
- PR 标题描述功能
- PR 描述包含改动摘要和测试说明
- 添加 'feature' 和 'needs-review' label"

需要配置 GitHub MCP 或者 gh CLI。

5.3 代码审查

Claude Code 也可以用来审查别人的 PR:

$ claude "审查 PR #42,关注以下方面:
1. SSR 安全性(是否有 hydration 风险)
2. 数据库查询性能(是否有 N+1 问题)
3. 错误处理是否完整
4. TypeScript 类型是否严格"

6. 批量重构

6.1 场景:全局 API 错误处理统一

$ claude "审查 server/api/ 下所有 API 路由,
找到没有使用 Zod 做输入校验的 POST/PUT 路由,
为它们添加 Zod schema 校验。
 
规则:
- POST body 用 readValidatedBody(event, schema.parse)
- GET query 用 getValidatedQuery(event, schema.parse)
- 不要改变现有的业务逻辑
- 每个文件修改后运行 typecheck 验证"

Claude Code 会扫描所有 API 文件,找到缺失校验的路由,逐个添加 Zod schema。这类跨数十个文件的统一修改,Claude Code 比 Cursor 高效得多。

6.2 场景:依赖升级

$ claude "把项目的 Nuxt 版本从 3.x 升级到 4.x:
1. 更新 package.json 的依赖版本
2. 运行 pnpm install
3. 运行 pnpm build,修复所有编译错误
4. 运行 pnpm test,修复所有测试失败
5. 检查 breaking changes 文档,确认所有迁移项
 
参考:https://nuxt.com/docs/migration"

7. 安全实践

7.1 工作区隔离

Claude Code 直接操作文件系统,安全意识很重要:

  • Git 分支:总是在新分支上工作,不要在 main 上直接让 Claude Code 修改
  • 备份:重要修改前确保代码已提交
  • 审查:完成后用 git diff 审查所有修改
# 安全的工作流
git checkout -b feat/favorites
claude "实现收藏功能..."
git diff  # 审查所有修改
pnpm test  # 手动验证
git add -A && git commit  # 确认无误后提交

7.2 敏感操作

Claude Code 在执行以下操作前会请求确认:

  • rm 删除文件
  • git push 推送代码
  • docker 容器操作
  • 任何涉及外部请求的命令

即使你配置了 /allowed-tools,也不要把这些危险操作加入白名单。

7.3 成本控制

Claude Code 按 token 计费。控制成本的方法:

  • 精确 Prompt:明确任务范围,避免 AI 做不必要的探索
  • 限制文件范围:指定目标文件/目录,不要让 AI 扫描整个项目
  • 分步执行:大任务拆成小步,每步验证后再继续
  • 使用 --model:简单任务用 Haiku/Sonnet,复杂任务用 Opus

8. Claude Code vs Cursor:何时用哪个

场景选 Cursor选 Claude Code
写一个新组件✅ 在 IDE 里直接看效果
修改一行代码✅ Cmd+K 最快
探索陌生代码✅ Chat + @ 引用
全栈端到端功能✅ 从 DB 到 UI 一步到位
跨 20+ 文件重构✅ 批量处理效率高
自动测试 + 修复✅ 测试循环直到通过
自动提交 + PR✅ Git 操作原生支持
CI/CD 集成✅ 可以在 GitHub Actions 中运行

最佳实践:Cursor 做日常开发(80% 的时间),Claude Code 做全栈功能和自动化任务(20% 的时间)。

本章小结

  • 终端原生:Claude Code 在终端中运行,能力边界等于系统能力边界
  • 全栈开发:从 schema 到 API 到前端,一个 Prompt 端到端完成
  • 并行任务:独立的子任务(如测试文件)可以并行生成,效率翻倍
  • 测试循环:写测试 → 运行 → 修复 → 重复直到全绿,Cursor 无法自动完成
  • Git 集成:自动 commit(Conventional Commits)、创建 PR、代码审查
  • 安全实践:新分支工作、审查 diff、不白名单危险操作、成本控制