Claude Code 实战工作流
本文汇集了 Claude Code 日常使用中最有效的提示模式、工作流和社区最佳实践。适用于探索代码库、调试、重构、CI/CD 自动化,以及从单会话任务到多会话协作的各种场景。
补充阅读:Claude Code 最佳实践 → 社区技巧精选 — 来自社区的 127+ settings 调优、40+ 提示词技巧、Hooks Mastery 模式。
核心理念
Claude Code 不是聊天机器人,而是代理式编码环境。它能读取文件、运行命令、进行更改,并自主解决问题。这种自主性意味着:
- 描述你想要什么,而不是怎么做:让 Claude 弄清楚如何构建
- Context 是最宝贵的资源:上下文窗口满了,性能就会下降
- 给 Claude 能验证自己的方式:让它运行测试、lint、构建,自己检查结果
第一部分:日常开发工作流
1. 理解新代码库
逐步深入:从广泛的问题开始,逐步缩小到特定领域。
给我这个代码库的概览
解释这里使用的主要架构模式
关键数据模型是什么?
身份验证是如何处理的?查找相关代码:
查找处理用户身份验证的文件
这些文件如何协同工作?
追踪从前端到数据库的登录流程提示:
- 使用项目中的领域语言
- 要求 Claude 解释项目中使用的编码约定和模式
- 为语言安装代码智能插件,以获得精确的符号导航能力
2. 高效修复 Bug
我运行 npm test 时看到这个错误:[粘贴错误信息/截图]
建议几种修复 user.ts 中 @ts-ignore 的方法
按你建议的方式更新 user.ts,添加 null 检查关键原则:
- 告诉 Claude 重现问题的命令,获取堆栈跟踪
- 提及重现错误的任何步骤
- 让 Claude 知道错误是间歇性的还是持续的
- 不要只修复症状:要求 Claude 找到并修复根本原因
构建失败,出现此错误:[粘贴错误]。
修复它并验证构建成功。解决根本原因,不要抑制错误。3. 重构代码
查找代码库中已废弃的 API 使用
建议如何重构 utils.js 使用现代 JavaScript 特性
重构 utils.js 使用 ES2024 特性,同时保持相同行为
运行重构后代码的测试提示:以小的、可测试的增量进行重构。每次重构后运行测试。
4. 编写测试
查找 NotificationsService.swift 中未被测试覆盖的函数
为通知服务添加测试
为通知服务的边界条件添加测试用例
运行新测试并修复任何失败Claude 会检查现有测试文件,匹配已有的风格、框架和断言模式。要求 Claude 识别你可能遗漏的边界情况。
5. 创建 PR
总结我对身份验证模块所做的更改
创建 PR
用更多关于安全改进的上下文增强 PR 描述使用 gh pr create 创建 PR 时,会话会自动链接到该 PR。稍后可通过 claude --from-pr 123 返回。
6. 处理文档
查找 auth 模块中没有 JSDoc 注释的函数
为 auth.js 中未文档化的函数添加 JSDoc 注释
用更多上下文和示例改进生成的文档
检查文档是否符合我们的项目标准提示:指定文档样式(JSDoc、docstrings 等),请求包含示例,重点关注公共 API、接口和复杂逻辑。
7. 在非代码文件夹中工作
Claude Code 可以在任何目录中工作。在笔记库、文档文件夹或任何 markdown 文件集合中运行它,以搜索、编辑和重新组织内容,就像处理代码一样。.claude/ 目录和 CLAUDE.md 与其他工具的配置目录并排存在,不会产生冲突。
8. 使用图像分析
将图像拖放到 Claude Code 窗口中,或复制粘贴(Mac 上 Cmd+V 也适用于 iTerm2),或提供图像路径:
分析这张图:/path/to/screenshot.png
描述这个截图中的 UI 元素
这张数据库架构图有什么问题?
根据这个设计稿生成 CSS当 Claude 引用图像时(例如 [Image #1]),Cmd+Click(Mac)或 Ctrl+Click(Windows/Linux)可在默认查看器中打开图像。
第二部分:高效沟通模式
提示词写法:Before / After
| 策略 | 模糊 | 具体 |
|---|---|---|
| 限定任务范围 | "为 foo.py 添加测试" | "为 foo.py 编写测试,涵盖用户已注销的边界情况。避免 mock。" |
| 指向来源 | "为什么 ExecutionFactory 有奇怪的 API?" | "查看 ExecutionFactory 的 git 历史并总结其 API 是如何形成的" |
| 参考现有模式 | "添加日历小部件" | "查看主页上现有小部件的实现方式以了解模式。HotDogWidget.php 是一个很好的例子。按照模式实现。" |
| 描述症状 | "修复登录错误" | "用户报告会话超时后登录失败。检查 src/auth/ 中的身份验证流程。编写失败的测试重现问题,然后修复。" |
提供丰富上下文的方式
| 方式 | 示例 |
|---|---|
| @ 引用文件 | 解释 @src/utils/auth.js 中的逻辑 — 包含文件的完整内容 |
| @ 引用目录 | @src/components 的结构是什么? — 提供文件列表 |
| 粘贴图像 | 复制/粘贴或拖放截图到提示中 |
| 提供 URL | 用于文档和 API 参考 |
| 管道数据 | cat error.log | claude 直接发送文件内容 |
| 让 Claude 自己获取 | "用 Bash 命令自己拉取上下文" |
@ 文件引用的额外好处:在文件的目录和父目录中添加
CLAUDE.md到上下文。可以在单个消息中引用多个文件(如@file1.js and @file2.js)。
让 Claude 采访你
对复杂功能,先让 Claude 采访你,再开始实现:
我想构建 [简要描述]。用 AskUserQuestion 工具详细采访我。
询问技术实现、UI/UX、边界情况、关注点和权衡。
不要问显而易见的问题,深入挖掘我可能没考虑到的难点。
持续采访直到我们覆盖了所有内容,然后将完整规范写入 SPEC.md。完成后,启动新会话来执行规范——干净的 context 完全专注于实现。
第三部分:让 Claude 自我验证
核心原则:不要接受 Claude 的第一次输出就结束。 给 Claude 能产生"通过/失败"信号的东西,循环就会自动关闭。
验证策略对比
| 策略 | Before | After |
|---|---|---|
| 提供验证标准 | "实现一个验证邮箱地址的函数" | "编写 validateEmail 函数。示例测试用例:user@example.com 为真,invalid 为假,user@.com 为假。实现后运行测试" |
| 视觉验证 UI 更改 | "让仪表板看起来更好" | "[粘贴截图] 实现此设计。对结果截图并与原始设计比较。列出差异并修复它们" |
| 解决根本原因 | "构建失败" | "构建失败,出现此错误:[粘贴错误]。修复它并验证构建成功。解决根本原因,不要抑制错误" |
验证深度选择
| 深度 | 方法 | 适用场景 |
|---|---|---|
| 轻量 | 在一个提示中要求 Claude 运行检查并迭代 | 单次任务 |
| 中等 | 设置 /goal 条件,Claude 持续工作直到条件成立 | 跨多个轮次的任务 |
| 强约束 | Stop hook 运行检查脚本,阻止继续直到通过 | 无人值守的自动化 |
| 独立审查 | 子代理用新鲜模型审查结果,尝试反驳 | 正确性检查 |
对抗性审查
你刚才的实现可能存在什么问题?扮演安全工程师审查一遍使用子代理根据 PLAN.md 审查这次更改。检查每个要求是否已实现、
列出的边界情况是否有测试,以及任务范围之外是否有任何更改。
报告缺陷,而不是风格偏好。审查者作为子代理运行,实现会话直接接收缺陷,可以修复并重新审查,无需在窗口之间复制发现。
验证模式速查
| 模式 | 流程 | 何时使用 |
|---|---|---|
| Writer → Reviewer | 一个会话写代码,另一个独立审查 | 需要无偏见的代码审查 |
| Tests → Iterate → Pass | 先写测试,再实现,循环直到通过 | 明确定义的需求 |
| Plan → Implement → Verify | 先规划再实现,用子代理验证 | 复杂架构变更 |
第四部分:会话管理
生命周期命令
# 恢复最近的会话
claude --continue
# 从列表中选择恢复
claude --resume
# 从 PR 恢复
claude --from-pr 123
# 会话内恢复
/resume方向控制
| 操作 | 快捷键/命令 | 效果 |
|---|---|---|
| 中途停止 | Esc | 停止 Claude,保留 context,可重定向 |
| 回退菜单 | Esc + Esc 或 /rewind | 恢复对话和代码状态,或从消息总结 |
| 撤销更改 | "撤销那个" | 让 Claude 恢复其更改 |
| 重置上下文 | /clear | 在不相关任务之间释放 context window |
何时 /clear:
- 在不相关的任务之间
- 对同一问题改正 Claude 两次以上后(context 已被失败方法污染)
- 长会话积累了大量无关 context
Context 管理策略
| 策略 | 适用场景 |
|---|---|
/clear | 任务之间完全重置 |
/compact <instructions> | 压缩对话但保留关键信息 |
/rewind → 总结 | 只压缩对话的一部分 |
/btw | 快速问题,答案不进入对话历史 |
给会话起名字
给会话起描述性名称(如 oauth-migration),方便后续查找。在 CLAUDE.md 中设置压缩偏好:
When compacting, always preserve the full list of modified files and any test commands第五部分:自动化与扩展
非交互模式(CI / 脚本)
# 一次性查询
claude -p "Explain what this project does"
# 结构化输出
claude -p "List all API endpoints" --output-format json
# 流式输出(实时处理)
claude -p "Analyze this log file" --output-format stream-json --verbose
# 管道输入
git log --oneline -20 | claude -p "summarize these recent commits"并行会话
| 方法 | 隔离级别 | 适用场景 |
|---|---|---|
| Worktrees | 完全隔离(不同 git 分支) | 功能 A 和功能 B 并行开发 |
| 桌面 App | 可视化管理多个本地会话 | 需要同时监控多个任务 |
| Web 版 | 云端虚拟机 | 不在本地机器时 |
| Agent Teams | 自动协调多个会话 | 复杂任务自动分发 |
Writer/Reviewer 模式
| 会话 A(Writer) | 会话 B(Reviewer) |
|---|---|
| 为 API 端点实现速率限制器 | |
审查 src/middleware/rateLimiter.ts。查找边界情况、竞态条件和与现有中间件模式的一致性。 | |
| 根据审查反馈修复问题 |
新鲜 context 改进了代码审查,因为 Claude 不会偏向于它刚刚编写的代码。
计划任务
| 选项 | 运行位置 | 最适合 |
|---|---|---|
| Routines | Anthropic 管理的云基础设施 | 即使计算机关闭也应该运行的任务。支持 API 调用和 GitHub 事件触发 |
| 桌面计划任务 | 本地机器 | 需要直接访问本地文件或未提交更改的任务 |
| GitHub Actions | CI 管道 | 与仓库事件(打开的 PR)相关的任务 |
/loop | 当前 CLI 会话 | 会话打开时的快速轮询 |
为计划任务写 prompt 时,明确说明成功标准和结果处理方式——任务自主运行,不能提出澄清问题。
第六部分:常见失败模式与规避
| 失败模式 | 表现 | 修复 |
|---|---|---|
| 厨房水槽会话 | 从一个任务跳到另一个,context 充满无关信息 | 不相关任务之间 /clear |
| 反复改正 | Claude 做错 → 你改正 → 还是错 → 再改正 | 两次失败后,/clear 并用更好的初始提示重新开始 |
| 过度 CLAUDE.md | CLAUDE.md 太长,Claude 忽略重要规则 | 无情修剪;如果 Claude 没有指令也能做对,就删除 |
| 信任-验证鸿沟 | 实现看起来合理但不处理边界情况 | 始终提供验证(测试、脚本、截图) |
| 无限探索 | "调查 X" 没有限定范围,Claude 读数百个文件 | 限定调查范围或用 subagents |
第七部分:CLAUDE.md 最佳实践
✅ 应该包含
- Claude 无法猜测的 Bash 命令
- 与默认值不同的代码风格规则
- 测试指令和首选测试运行器
- 存储库礼仪(分支命名、PR 约定)
- 开发者环境怪癖(必需的环境变量)
- 常见陷阱或非显而易见的行为
❌ 应该排除
- Claude 可以通过读取代码弄清楚的任何东西
- 标准语言约定(Claude 已经知道)
- 详细的 API 文档(改为链接到文档)
- 经常变化的信息
- 长解释或教程
- 自明的实践(如"编写干净的代码")
CLAUDE.md 文件位置
| 位置 | 作用范围 |
|---|---|
~/.claude/CLAUDE.md | 所有 Claude 会话(个人全局) |
./CLAUDE.md | 项目根目录,检入 git 与团队共享 |
./CLAUDE.local.md | 个人项目笔记,添加到 .gitignore |
子目录/CLAUDE.md | 处理该目录中的文件时自动加载 |
CLAUDE.md 维护原则
- 保持简短:每一行都要回答"删除这个会导致 Claude 犯错吗?"
- 如果 Claude 继续做你不想要的事,文件可能太长
- 像对待代码一样对待它:审查、定期修剪、测试更改是否实际改变了行为
- 可以通过
@path/to/import语法导入其他文件
第八部分:扩展 Claude Code 选型指南
Claude Code 有多个扩展点,应该用哪个?
| 扩展点 | 何时使用 | 生命周期 |
|---|---|---|
| CLAUDE.md | 持久上下文:代码风格、命令、工作流规则 | 每次对话加载 |
| Skills | 按需加载的专项工作流 | Claude 自动识别场景时加载 |
| Hooks | 必须在特定时间点确定性执行的脚本 | 工具调用前后自动触发 |
| Subagents | 需要独立 context 的调查/审查任务 | 主代理生成并行子代理 |
| Plugins | 社区/团队发布的打包扩展 | 安装后按需使用 |
| MCP Servers | 连接外部工具和服务 | 持久连接,工具调用时使用 |
决策规则:
- 需要"每次对话都加载的规则" → CLAUDE.md
- 需要"特定场景才用的工作流" → Skill
- 需要"文件编辑后必须执行的脚本" → Hook
- 需要"探索大量文件不污染主 context" → Subagent
- 需要"社区打包好的能力" → Plugin
第九部分:跨文件并行处理
对于大型迁移或分析,可以跨多个并行 Claude 调用分配工作:
# 管道输出到 Claude 处理
git log --oneline -20 | claude -p "summarize these recent commits"
# 结构化输出供脚本消费
claude -p "List all API endpoints" --output-format json | jq '.endpoints[]'使用 --verbose 进行调试,生产环境关闭。
相关页面
- Claude Code 主教程 — 安装、交互、核心概念
- 术语表 Glossary — MCP / Hooks / Skills / Sub-agents 等核心概念的统一解释
- Cheatsheet 速查表 — 完整配置参考 + 决策表 + 高质量信息源
- 最佳实践(官方) — Anthropic 内部验证过的模式
- 常见工作流(官方) — 日常任务的分步指南