这里收录常见开发任务的实用工作流。你已经会用基础功能,这里教你怎么思考用 Claude 解决复杂问题。
1. 大型代码库重构
重构是 Claude Code 最擅长的事情之一。它帮你避免机械劳动,同时降低出错概率。
场景:批量重命名变量/函数
问题描述: 你想要把代码中所有的 oldName 改成 newName,分散在多个文件中。
工作流指令:
帮我把整个项目中所有的 oldName 重命名为 newName。
- 检查所有相关文件
- 只修改变量名/函数名,不要修改注释和字符串中的内容(除非它们也是标识符)
- 每个文件改完告诉我改了什么地方
要点:
- 指定哪些要改,哪些不要改,避免误伤
- Claude 会用
Grep找到所有匹配,然后逐个修改 - 修改完后,记得运行测试验证
场景:提取函数/模块
问题描述: 一个函数太长了,想要把它拆分成多个小函数。
工作流指令:
这个文件 src/process.js 中的 processData 函数有 200 行,太长了。
帮我把它拆分成多个小函数:
- 验证输入部分提取出来
- 解析部分提取出来
- 转换部分提取出来
- 保持原有的逻辑和错误处理不变
- 导出保持兼容性,原来的 processData 函数调用新拆分出来的函数
要点:
- 告诉 Claude 拆分的原则
- 强调保持兼容性(如果需要的话)
- 拆分完后,运行测试确保行为不变
场景:跨文件大重构,保持一致性
问题描述: 你修改了一个 API 的接口,需要更新所有调用它的地方。
工作流指令:
我修改了 src/api/user.ts 中的 getUser 函数,现在返回类型从 User 改成了 Promise<User | null>。
帮我找到所有调用 getUser 的地方,更新它们处理 null 的情况。
逐个文件修改,每个改完后总结你的修改。
检查要点:
- 确保 Claude 找到了所有调用点(可以要求它先列出找到的调用点)
- 检查错误处理是否正确添加
- 最后运行测试
大型重构的通用技巧
- 小步快跑 —— 把大重构拆分成多个小步骤,每次改完验证一次
- 利用 Git —— 每完成一个可测试的步骤就 commit,改坏了可以回滚
- 保持测试通行 —— 每次修改后让 Claude 运行测试,确保没有破坏功能
- 上下文管理 —— 如果重构跨很多文件,一个会话放不下,按模块分多个会话
2. 疑难问题调试
Claude 是你绝佳的调试搭档,因为它可以帮你系统地分析问题,而不是乱试。
场景:程序报错,看不懂错误信息
工作流指令:
这个错误是什么意思?帮我分析可能的原因和修复方法。
<粘贴错误信息>
如果错误堆栈很长,粘贴完整的错误信息给 Claude。它会帮你翻译:
- 哪一行出错了
- 为什么错
- 最可能的原因是什么
- 怎么修复
场景:Bug 复现不出来,偶现
工作流指令:
我遇到一个偶现的 bug:有时候提交表单页面会崩溃。
堆栈信息在这里:
<粘贴堆栈>
从我看到的现象看,可能是 race condition,当网络慢的时候更容易发生。
帮我分析可能的原因,给我一个排查计划。
Claude 会帮你:
- 分析可能的原因(按概率排序)
- 给你一个一步步的排查计划
- 帮你写调试日志代码
然后你逐个排除,找到问题。
场景:性能问题,哪里慢了
工作流指令:
这个 API 响应很慢,需要 5 秒钟才返回。帮我分析可能的瓶颈在哪里。
这是代码:
<粘贴相关代码>
Claude 会帮你:
- 指出可能的性能瓶颈(N+1 查询?循环里面做重操作?)
- 给你优化建议
- 帮你写简单的基准测试
调试的最佳实践
让 Claude 帮你:
- 读错误日志,翻译专业术语
- 列假设,按概率排序
- 帮你写调试代码
- 帮你读代码找逻辑问题
你需要提供:
- 完整的错误信息和堆栈
- 相关的代码片段
- 你已经试过什么,结果如何
记住: Claude 不是神,它不可能每次都对。但它能帮你系统地排查,节省你的时间。
3. 写出更好的测试
Claude 非常擅长写测试,因为它能理解代码逻辑,想到各种边界情况。
场景:给现有函数写单元测试
工作流指令:
帮我给 src/utils/format.ts 中的 formatDate 函数写单元测试。
- 覆盖正常情况
- 覆盖边界情况(空输入,非法输入,边界值)
- 使用 Jest 语法
- 每个测试case测试一个清晰的行为
要点:
- Claude 会想到你想不到的边界情况
- 检查一下测试是不是真的覆盖了所有分支
- 生成完测试,让 Claude 运行测试确保通过
场景:修复 flaky 测试(时而通过时而失败)
工作流指令:
这个测试 test/formatDate.test.ts 偶尔会失败,看起来是和时区有关。
帮我看看为什么,怎么修复它让它稳定。
常见原因:
- 依赖当前时间,没有 mock
- 依赖执行顺序,竞态条件
- 依赖随机数
- 异步问题,没有 properly await
Claude 通常能快速发现这类问题。
场景:测试驱动开发(TDD)with Claude
先写需求,再写测试,再实现:
我想要实现一个函数 parseUrl(url),解析 URL 返回 { protocol, host, path, query }。
帮我先写测试用例,覆盖所有情况。
测试通过后,再让 Claude 实现:
现在测试写好了,帮我实现 parseUrl 函数,让所有测试通过。
测试小技巧
- 让 Claude 想边界情况 —— 你想正常情况,Claude 帮你想奇葩情况
- 每个测试一个断言 —— 告诉 Claude 这样做,测试失败了你容易找到问题
- 运行测试 —— 生成完让 Claude 自己运行,看到错误自己修
4. 代码评审与知识传递
场景:看不懂一段陌生代码,让 Claude 解释
工作流指令:
这个文件 src/auth/jwt.ts 里面的 decodeToken 函数是做什么的?
帮我用简单的话解释一下,每一步在干什么,有什么安全考虑?
Claude 会:
- 解释整体目的
- 逐行(逐块)解释逻辑
- 指出这里用到的模式
- 提醒你可能的问题
场景:让 Claude 给你的 PR 写总结
工作流指令:
帮我看一下当前 git diff,给我写一个 PR 描述,总结:
- 改了什么
- 为什么改
- 测试方法
保持简洁清晰。
Claude 会分析 diff,自动生成符合规范的 PR 描述。
场景:辅助审查 Pull Request
你也可以让 Claude 帮你审查他人的 PR:
请审查这个 PR 的改动。重点检查:
- 代码逻辑是否正确
- 是否有潜在的性能问题
- 测试覆盖是否足够
- 是否有安全漏洞
将 git diff 内容粘贴给 Claude,它会逐文件分析并给出意见。
场景:寻找代码异味
工作流指令:
帮我检查一下这个文件 src/api/users.ts,有没有什么设计问题或者代码异味?
比如重复代码、过长函数、不合理的命名等等。
Claude 会帮你找出来:
- 重复代码
- 太长的函数
- 命名不准确
- 错误处理不完善
- 可能的安全问题
然后你可以让它帮你重构。
场景:更新文档
当你改完代码,让 Claude 帮你更新文档:
我刚刚修改了 getUser API 的返回类型,帮我更新 README.md 里面的文档。
5. 从零开始搭建项目
场景:创建新项目脚手架
工作流指令:
帮我创建一个新的 Node.js + Express 项目,结构如下:
- src/ 放源代码
- dist/ 放编译输出
- tests/ 放测试
- .gitignore 忽略 node_modules, dist, .env
- package.json 配置 scripts: start, build, test
- 使用 TypeScript
入口文件是 src/index.ts,启动一个 HTTP 服务器,监听 3000 端口,提供 /health 端点返回 200 OK。
Claude 会帮你:
- 创建所有目录和文件
- 配置 package.json 和依赖
- 写入门代码
- 甚至可以帮你运行
npm install
场景:理解现有项目
接手一个陌生项目时,让 Claude 帮你快速建立认知:
claude init
Claude 会扫描项目结构、依赖和代码,自动生成 CLAUDE.md 项目记忆文件。后续每次会话都会自动加载这份记忆,帮你快速进入状态。
场景:选择依赖
如果你不确定选什么依赖,可以问 Claude:
我需要一个解析 CSV 的库,Node.js 生态里哪个比较流行维护得好?
比较几个热门的,说说各自的优缺点。
Claude 会给你一个比较清楚的对比,帮助你决策。
场景:设置 CI/CD
工作流指令:
帮我配置 GitHub Actions CI,做这些事情:
- 推送到 main 或者开 PR 的时候运行
- 安装依赖
- 编译
- 运行测试
- 如果测试通过,自动部署到 Vercel
Claude 会帮你生成正确的 YAML 文件,放在 .github/workflows/ 下面。
6. 高级功能与工作流模式
这里是一些高级功能和让你效率更高的使用模式。
6.1 使用 Agent 工具并发处理独立任务
当你有多个互不依赖的任务要做,可以使用 Agent 工具启动子代理分别处理。
场景: 你需要给多个文件各写测试,这些文件之间没有依赖。
帮我给这三个文件各写单元测试:
- src/utils/format.ts
- src/utils/parse.ts
- src/utils/validate.ts
使用 Agent 工具,每个文件启动一个子代理处理。
Agent 的工作方式:
- 启动多个子代理,每个子代理拥有独立的上下文窗口(默认 80K tokens)
- 子代理之间互不干扰,专注于各自的任务
- Claude 异步调度它们,全部完成后汇总结果
这样做的好处:
- 避免单个超长上下文导致注意力分散或 token 爆满
- 每个子代理专注单一任务,生成质量更高
- 整体完成时间通常短于顺序执行
要点:
- 只对独立任务使用 Agent
- 任务之间有依赖的,仍然应该顺序处理
6.2 自定义斜杠命令
对于频繁使用的提示词模板,你可以将其保存为自定义斜杠命令,大幅提升效率。
在 ~/.claude/commands/ 目录下创建 Markdown 文件,文件名即命令名。
示例: 创建 ~/.claude/commands/review.md
请审查以下代码改动,从四个维度给出意见:
1. 逻辑正确性
2. 错误处理
3. 性能影响
4. 测试覆盖建议
之后在 Claude Code 中输入 /review 并附上代码,即可自动应用该审查模板。
你也可以创建更复杂的多步骤命令,甚至可以包含变量占位符(详见官方文档)。
6.3 上下文管理技巧
长时间会话,上下文快满了怎么办?
-
/compact—— 先试试压缩,Claude 总结对话,腾出空间。进阶用法:带参数指定保留内容
/compact retain the changes to payment processing logic /compact focus on src/services/重要提示:
/compact执行后,Claude Code 会自动从磁盘重新读取CLAUDE.md并注入到新的压缩上下文中。因此,你可以放心地将编码规范、项目架构说明等持久化信息写入CLAUDE.md,它们不会因压缩而丢失。 -
开新会话 —— 如果压缩不够,退出重新开。用
claude -c可以继续最近一次会话,或者在交互界面使用/resume选择恢复之前的会话。告诉新 Claude:"我们之前在做...,当前状态是...,接下来..." -
一个会话一个任务 —— 养成好习惯,不要在同一个会话解决多个不相关的问题。
6.4 让 Claude 记住你的编码规范
你可以一开始就告诉 Claude 你的团队规范,更好的做法是将其写入 CLAUDE.md 中永久保存:
我们团队编码规范:
- 使用 2 空格缩进
- 变量使用 camelCase,常量 UPPER_SNAKE_CASE
- 函数注释使用 JSDoc
- 错误处理优先使用 try/catch
- React 组件使用函数组件,不用类组件
通过 /memory 命令可以随时编辑 CLAUDE.md。之后所有会话都会自动遵循这些规范。
6.5 MCP —— Model Context Protocol 扩展能力
MCP(Model Context Protocol)是 Claude Code 的扩展机制,允许 Claude 连接外部服务获取上下文。
常见用法:
- 连接你的数据库,让 Claude 直接查询 schema 和数据
- 连接你的 Git 仓库,获取更多上下文
- 连接第三方 API 服务
配置方式: MCP 服务器配置可以放在以下位置:
~/.claude/mcp.json(全局生效)- 项目根目录下的
.mcp.json(仅当前项目生效)
配置示例: 添加一个文件系统 MCP 服务器
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
}
}
}
详细配置说明见官方文档。
6.6 成本控制技巧
进阶使用中,关注 token 消耗可以帮你更经济地使用 Claude Code:
- 实时监控:使用
/cost命令随时查看当前会话的 token 消耗和预估费用 - 自动压缩:在
~/.claude/settings.json中设置"autoCompactThreshold": 0.7,当上下文使用率达到 70% 时自动触发压缩 - 模型选择:对于简单任务(如代码格式化、生成注释、写测试用例骨架),可以在
~/.claude/settings.json中将默认模型切换为claude-3-5-haiku,速度更快且成本更低 - 善用 Plan 模式:在规划阶段按
Shift+Tab切换到 Plan 模式,Claude 只分析不修改,避免不必要的工具调用消耗
6.7 复杂多步骤工作流示例
这里是一个真实的复杂任务,看看怎么拆分:
目标: 把一个 JavaScript 文件转换成 TypeScript,添加类型。
# 步骤 1:理解现有代码
帮我看看 src/old/user.js 这个文件,理解它做什么,有哪些函数,输入输出是什么。
# 步骤 2:转换成 TypeScript
现在帮我把它转换成 TypeScript:
- 给所有函数添加正确的类型标注
- 定义需要的接口
- 保持逻辑完全不变
- 导出保持不变
# 步骤 3:检查类型错误
运行 tsc 看看有没有类型错误,帮我修复。
# 步骤 4:添加测试
帮我给转换后的模块写单元测试。
要点: 大任务拆成小步骤,一步一步来,每一步 Claude 都能拥有完整上下文,不容易出错。
总结
Claude Code 是一个强大的工具,但它是你的工具。你是驾驶员,它是引擎。
核心原则:
- 小步快走 —— 拆分大任务,每次验证
- 具体清晰 —— 描述问题越具体,Claude 给你的答案越好
- 审查一切 —— Claude 也会犯错,你是最终负责人
- 利用 Git —— 改之前 commit,错了可以随时回滚
- 善用持久化记忆 —— 把规范写进
CLAUDE.md,每次会话自动加载 - 实践出真知 —— 多用,你会找到适合你自己的工作流
祝你用 Claude Code 开发愉快!