最佳实践(并行处理多任务)
在持续集成过程中,可以在 claude -p "prompt" 处使用它。在预提交钩子或脚本中也可以使用它。如果要输出 JSON 数据,可以使用 --output-format stream-json --verbose 。
通过使用 claude -p "your prompt" ,你可以以非交互方式运行 Claude,无需保持会话状态。非交互模式适用于将 Claude 集成到持续集成流程、预提交钩子或任何自动化工作流程中。其输出格式允许以编程方式解析结果:纯文本、JSON 或流式 JSON 格式。
命令如下(需要在powershell里面执行,而不是cli界面里面):
# One-off queries
claude -p "Explain what this project does"
# Structured output for scripts
claude -p "List all API endpoints" --output-format json
# Streaming for real-time processing
claude -p "Analyze this log file" --output-format stream-json --verbose
比如:
-p参数:print
--output-format json:以json格式输出

--output-format stream-json --verbose

运行多个Claude对话
通过并行运行多个 Claude 会话来加速开发过程,进行独立的实验,或者启动复杂的工作流程。
选择适合你希望自行进行多少协调工作的平行处理方法吧:
-
工作树:在独立的 Git 检查点中运行各自的 CLI 会话,这样就能避免编辑结果产生冲突。
具体创建完之后样子如下:

当前这个工作树不建议放到工作区下面,而应该放到跟这个工作区根目录同级的位置。这样子cc在并行处理时候不会互相覆盖影响,因为一旦把工作树子分支建立在这个根目录下面,根目录下面运行cc可能将这个新的工作区充当为自己的处理。下面是错误做法,一定要是跟根目录工作区平级的文件夹。

来演示一下大体的工作流程:
首先在子分支上增加一句话模拟运用cc编辑这个工作区代码文件。

这时候加完之后开启终端使用git处理。

最后可以在主分支master上看到对应文件的修改痕迹:

如果没有冲突,就会正常合并。
如果有冲突,就解决冲突后再提交:git status
手动解决冲突
git add .
git commit
也可以用 PR 流程处理,而不是本地直接 merge。
第一,每个 worktree 对应一个明确任务,不要让多个 Claude Code 会话改同一个功能范围。
第二,每个 worktree 用独立分支,不要多个 worktree 绑定同一个分支。Git 一般也会阻止同一个分支同时被多个 worktree checkout。
第三,最好把 worktree 放在主仓库的同级目录,而不是主仓库里面。这样 VS Code 和 Git 状态会更清楚。
你现在图里的结构总体是正确方向。真正需要警惕的是:如果 my-project-auth-feature 是建在主仓库内部,建议以后改成建在同级目录。除此之外,worktree 就是专门为这种"多个功能并行开发、多个 CLI 会话并行处理"设计的。
- 桌面应用:能够直观管理多个本地会话,每个会话都属于自己的工作树结构。
- Claude Code on the web: 在由 Anthropic 公司管理的云基础设施上,在隔离的虚拟机器中运行会话。
- Agent teams: 能够自动化地协调多个会话,实现任务共享、消息传递,并配备一名团队负责人。
除了实现并行处理之外,多会话模式还能确保工作流程的高质量。新的上下文环境有助于改进代码审查的质量,因为 Claude 不会受到编写自己代码的代码的偏见影响。
| 会话 A(编写者) | 会话 B(审查者) |
|---|---|
| 实现我们 API 端点的限流器。 | 审查 @src/middleware/rateLimiter.ts 中的限流器实现。检查边界情况、竞态条件,以及它是否与我们现有的中间件模式保持一致。 |
| 这是审查反馈:会话B的输出会话 B 的输出会话B的输出。请处理这些问题。 |
一般涉及到这样的话,编写代码功能的claude可以git commit本地提交一下,然后审查员可以通过git diff进行审查,将审查反馈机制复制粘贴给开发claude让他进行修改。
竞态条件就是:多个操作同时或交错执行时,因为执行顺序不确定,导致程序结果偶尔出错。
你可以用类似的方法来处理测试工作:让一个 Claude 负责编写测试代码,然后另一个 Claude 负责编写通过这些测试的代码。
跨文件扩散
遍历所有任务,对每个任务调用 claude -p 。使用 --allowedTools 来指定批量操作的权限。
对于大规模迁移或分析任务,你可以将工作分配到多个并行的 Claude 实例上进行处理:
-
生成任务列表
请让Claude列出所有需要迁移的文件(例如, list all 2,000 Python files that need migrating )。 -
编写一段脚本来实现对列表的循环遍历
for file in (cat files.txt); do claude -p "Migrate file from React to Vue. Return OK or FAIL."
--allowedTools "Edit,Bash(git commit *)"
done -
先对几份文件进行测试,然后再大规模运行。
根据前 2-3 个文件出现的问题来优化你的提示语,然后再对全部文件集进行运行。 --allowedTools 标志限制了 Claude 能做的事情,这在无人干预的情况下非常重要。
您还可以将 Claude 整合到现有的数据处理流程中:
claude -p "<your prompt>" --output-format json | your_command
在开发过程中,可以使用 --verbose 进行调试操作;而在生产环境中则应该关闭此功能。
在自动模式下自主运行
为了能够持续执行任务,同时确保后台安全,可以使用自动模式。在命令执行之前,分类器模型会对其进行审查,从而阻止范围扩展、处理未知的基础设施情况,以及执行与恶意内容相关的操作。这样就能让常规任务继续顺利进行,而无需进行额外的提示或干预。
claude --permission-mode auto -p "fix all lint errors"
对于带有 -p 标志的非交互式运行,如果分类器反复阻止了操作执行,那么自动模式将会终止。因为此时已经没有用户可以依赖了。
添加对抗性评审步骤
在将任务视为已完成之前,让一个子代理从新的角度审查差异,并报告存在的差距。
Claude无人监管地工作的时间越长,那么在将工作视为完成之前,进行独立检查就变得越重要。在新的子代理环境中运行的审核者只能看到差异以及你给出的标准,而看不到产生这些变化的理由。因此,审核者会根据自己的标准来评估结果。
为了进行正确性检查,可以运行随附的 /code-review 技能。该技能会检查新子代理中的差异,并报告发现的错误。如果你希望将差异与你的计划进行对比检查,可以自行编写检查提示。需要指定要检查的工作名称、用于对比的计划,以及什么才算是错误。
Use a subagent to review the rate limiter diff against PLAN.md. Check that
every requirement is implemented, the listed edge cases have tests, and
nothing outside the task's scope changed. Report gaps, not style preferences.
因为审查者作为子代理运行,实现会话直接接收缺陷,可以修复它们并重新审查,而无需你在窗口之间复制发现。对于更长的自主运行,agent team 可以在许多任务中保持这个循环进行,而你可以对记录的发现进行抽查。
避免常见失败模式
这些是常见的错误。尽早识别它们可以节省时间:
- 厨房水槽会话。你从一个任务开始,然后问 Claude 一些不相关的东西,然后回到第一个任务。Context 充满了无关的信息。修复:在不相关的任务之间 /clear。
- 一次又一次地改正。 Claude 做错了什么,你改正它,它仍然是错的,你再改正。Context 被失败的方法污染。修复:在两次失败的改正后,/clear 并编写一个更好的初始提示,包含你学到的东西。
- 过度指定的 CLAUDE.md。如果你的 CLAUDE.md 太长,Claude 会忽略一半,因为重要的规则在噪音中丢失。
修复:无情地修剪。如果 Claude 已经在没有指令的情况下正确地做某事,删除它或将其转换为 hook。 - 信任然后验证的差距。 Claude 产生一个看起来合理的实现,但不处理边界情况。修复:始终提供验证(测试、脚本、屏幕截图)。如果你不能验证它,不要发布它。
- 无限探索。 你要求 Claude "调查"某些东西而不限定范围。Claude 读取数百个文件,填充 context。
修复:狭隘地限定调查或使用 subagents,以便探索不会消耗你的主 context。
培养你的直觉
有时你_应该_让 context 累积,因为你深入一个复杂的问题,历史很有价值。有时你应该跳过规划,让 Claude 弄清楚,因为任务是探索性的。有时模糊的提示正是你想要的,因为你想看看 Claude 如何解释问题,然后再限制它。
注意什么有效。当 Claude 产生很好的输出时,注意你做了什么:提示结构、你提供的 context、你所在的模式。当 Claude 遇到困难时,问为什么。Context 太嘈杂了吗?提示太模糊了吗?任务对于一次通过来说太大了吗?
随着时间的推移,你会培养没有指南能捕捉的直觉。你会知道何时具体,何时开放,何时规划,何时探索,何时清除 context,何时让它累积。
常见工作流
使用 Claude Code 进行代码库探索、修复错误、重构、测试和其他日常任务的逐步指南。
日常开发的简短技巧:
- 用于探索代码、修复漏洞、重构代码、进行测试、处理合并请求以及编写文档的实用教程。
- 继续之前的对话,这样整个任务就可以在多次会面中完成。
- 通过并行会话和独立的工作区来实现多个操作的同时进行,这样就能避免并发编辑时产生冲突。
- 在编辑之前先规划好方案,确保在修改文件内容之前已经对更改进行了充分的审查。
- 将研究任务分配给SubAgent,这样就能让你专注于核心工作,而不需要一直关注这些琐碎事务。
- 让 Claude 参与持续集成和批处理操作的脚本编写工作。
快捷提示词
这些都是用于日常任务的提示模式,比如探索陌生的代码、调试程序、重构代码、编写测试代码以及创建 Pull 请求等。这些提示模式可以在任何 Claude 代码界面中使用;你可以根据你的项目需求来调整这些提示的文字表述。
熟悉新的代码库
快速了解代码库的基本情况
假设你刚刚加入了一个新项目,需要快速了解其结构。
- 请进入项目的根目录。
- Start Claude Code 开始 Claude 代码编写工作吧。claude
- 请提供一个高层次的概述。give me an overview of this codebase
- 深入探究各个具体组件。比如:explain the main architecture patterns used here。what are the key data models?how is authentication handled?
提示:
从宏观的问题开始,然后逐步聚焦到具体的领域。
请询问关于该项目所使用的编码规范和模式。
请提供一份包含项目相关术语的词汇表。
找到相关的代码
假设你需要找到与某个特定功能或特性相关的代码。
- 询问Claude相关功能代码
- 了解各个组件之间的交互方式。
- 了解执行流程
请明确说明你希望得到什么。
使用项目中的领域术语
为你的语言安装代码智能插件,这样 Claude 就能实现精确的"进入定义界面"和"查找参考文献"功能。
高效地修复漏洞
假设你遇到了一些错误信息,需要找到并修复其根源。
- 与Claude分享这个错误吧。
- 请提出修复建议。
- 应用修复方案
告诉Claude执行那个命令,以重现问题并获取堆栈跟踪信息。
请列出所有可能导致该错误发生的步骤。
如果错误是间歇性的还是持续存在的,请告知Claude。
重构代码
假设你需要更新旧的代码,以使其符合现代的设计模式和实践。
- 识别需要重构的遗留代码。find deprecated API usage in our codebase
- 获取重构建议。suggest how to refactor utils.js to use modern JavaScript features。
- 请安全地应用这些更改。refactor utils.js to use ES2024 features while maintaining the same behavior
- 确认重构操作已成功执行。run tests for the refactored code
请Claude解释一下现代方法所带来的好处。
请确保在需要的情况下,这些更改能够保持向后兼容性。
以小规模、可测试的方式进行重构工作。
进行测试相关工作
假设你需要为那些尚未覆盖的代码添加测试。
- 找出未经过测试的代码
- 生成测试框架。add tests for the notification service
- 添加有意义的测试用例。add test cases for edge conditions in the notification service
- 运行并验证测试结果。run the new tests and fix any failures
Claude 能够生成符合你项目现有模式和约定的测试案例。在提出测试需求时,请明确说明你想验证的行为。Claude 会检查你现有的测试文件,确保其风格、框架以及断言模式与项目中的其他代码保持一致。
对于全面的覆盖测试,请让 Claude 帮忙找出你可能忽略的边界情况。Claude 可以分析你的代码执行路径,并建议针对各种错误情况、边界值以及容易忽视的异常输入进行测试。
创建合并请求
你可以直接向 Claude 提出创建拉取请求的请求("为我的修改创建一个私有项目"),或者一步步指导 Claude 来完成这项工作。
- 请总结一下你的修改内容。summarize the changes I've made to the authentication module
- 生成合并请求。create a pr
- 回顾并完善方案。enhance the PR description with more context about the security improvements
当你使用 gh pr create 创建一个公共仓库时,该会话会自动与该公共仓库关联。之后要返回该会话,可以运行 claude --from-pr ,或者将公共仓库的 URL 粘贴到 /resume 搜索框中。
在提交之前,请先审核 Claude 生成的公关材料,并请 Claude 指出可能存在的风险或注意事项。
处理文档资料
假设你需要添加或更新与代码相关的文档内容:
- 识别无文档记录的代码。find functions without proper JSDoc comments in the auth module
- 生成文档资料。add JSDoc comments to the undocumented functions in auth.js
- 审查并改进。improve the generated documentation with more context and examples
- 验证文件真实性。check if the documentation follows our project standards
请指定所需的文档格式(如 JSDoc、文档字符串等)。
请在文档中找出相关的例子。
请提供公共 API 的文档说明,包括相关接口和复杂逻辑的实现细节。
将文件整理在笔记本和非编码文件夹中存放。
Claude Code 可以在任何目录下运行。你可以将其放在笔记库、文档文件夹,或者任何包含 Markdown 文件的集合里,以与编写代码相同的方式来搜索、编辑和整理内容。
.claude/ 目录和 CLAUDE.md 目录与其他工具的配置目录不会冲突。每次调用工具时,Claude 都会重新读取相关文件,因此当它再次读取该文件时,就能看到你在其他应用程序中进行的修改。
处理图像
假设你的代码库中有需要处理图片的情况,你希望借助 Claude 来分析图片的内容。
- 在对话中添加一张图片
- 分析图片
- 使用图片来提供上下文信息
- 从视觉内容中获取代码建议
当文字描述不够清晰或繁琐时,可以使用图片来辅助说明。
请附上错误情况的截图、用户界面设计图或示意图,以便更好地理解情况。
你可以在一个对话中同时处理多张图片。
图像分析功能可以处理图表、截图、设计稿等多种格式的数据。
当Claude提到图片时(例如, Image #1 ), Cmd+Click (Mac 系统)或 Ctrl+Click (Windows/Linux 系统),那么就会弹出链接,你可以点击该链接在默认浏览器中打开图片。
参考文件和目录
使用@符号可以快速包含文件或目录,无需等待 Claude 读取它们。
- 引用一个文件。Explain the logic in @src/utils/auth.js
- 引用一个目录。What's the structure of @src/components?
- 参考 MCP 资源。Show me the data from @github:repos/owner/repo/issues。该系统能够使用@server:resource 格式从连接的 MCP 服务器中获取数据。详情请参阅 MCP 资源说明。
文件路径可以是相对的,也可以是绝对的。
@ 在文件的目录及其父目录中添加了 CLAUDE.md 这一引用项,以纳入上下文处理。
目录引用显示的是文件列表,而非文件的具体内容。
你可以在一条消息中引用多个文件(例如:"@file1.js 和 @file2.js")
按照计划运行 Claude 程序
假设您希望 Claude 能够自动定期执行某些任务,比如每天早晨检查未处理的 Pull 请求,每周审核依赖关系,或者夜间检测 CI 过程中的故障。
根据您希望任务在何处执行的情况,选择相应的调度选项:
| 选项 | 运行位置 | 最适合 |
|---|---|---|
| Routines | 托管基础设施 | 即使你的电脑关机也需要运行的任务。除了按计划触发,也可以通过 API 调用或 GitHub 事件触发。在 claude.ai/code/routines 配置。 |
| 桌面计划任务 | 你的机器,通过桌面应用运行 | 需要直接访问本地文件、工具或未提交改动的任务。 |
| GitHub Actions | 你的 CI 流水线 | 与仓库事件相关的任务,例如 PR 打开时触发,或应与工作流配置一起存放的 cron 定时任务。 |
| /loop | 当前 CLI 会话 | 会话打开期间的快速轮询任务。开始新对话后任务会停止;--resume 和 --continue 可以恢复未过期的任务。 |
在编写定时任务的提示时,需要明确什么是成功的标准,以及处理结果时应采取什么行动。由于任务会自主运行,因此不会提出需要澄清的问题。例如:"审核标记为 needs-review 的开放 Pull 请求,对任何问题发表评论,并在 #eng-reviews 的 Slack 频道中发布总结。"
Claude 提供了对文档的内置访问功能,用户可以轻松查询有关其特性和限制的信息。
Claude 为这些问题提供了基于文档的解答。如需动手实践演示,可以运行 /powerup 以获得带有动画演示的互动课程,或者参考上述关于具体工作流程的章节。
长时间运行的构建和测试套件不必阻塞你的工作。只要在任意 Bash 命令后面加上 &,它就会在后台运行------你可以继续聊天,Claude 会在任务完成时通知你。
运行 /tasks 可以查看当前所有正在进行的任务。Claude 可以在任务运行过程中读取任务输出,并在出现失败时自动作出反应。
子代理和工作流也会作为任务运行------它们都在同一个队列中。

Claude 始终能够获取最新的 Claude 代码文档信息,无论您使用的是哪个版本。
提出具体的问题,就能得到详细的答案。
Claude 能够解释复杂的功能,比如 MCP 集成、企业配置以及高级工作流程等方面的问题。
继续之前的对话
当一项任务需要多次参与时,无需重新解释上下文,只需继续之前的工作即可。Claude Code 会将每次对话的内容本地保存下来。
这代表了当前目录中最新的会话信息;如果还没有会话,则会打印 No conversation found to continue 并退出。可以使用 claude --resume 从列表中选择,或者 /resume 在正在运行的会话中操作。有关命名、分支处理以及完整的选择工具的使用说明,请参考"管理会话"部分。
运行具有不同工作树的并行会话
可以在一个终端中处理某个功能,同时让 Claude 在另一个终端修复错误,这样两者的修改就不会发生冲突。每个工作树都是独立分支上的单独版本。
worktree
将并行的 Claude 代码会话隔离在不同的 git 工作树中,以防止更改冲突。涵盖 --worktree 标志、子代理隔离、.worktreeinclude、清理和非 git VCS 挂钩。
Git 工作树是一个独立的工作目录,拥有自己的文件和分支。它共享与主分支相同的仓库历史和远程仓库连接。在每个 Claude 会话中运行自己的工作树意味着,一个会话中的修改不会影响到另一个会话中的文件。因此,你可以在一个终端中构建功能代码,同时又在另一个终端修复错误。
在工作树中启动claude
通过 --worktree 或 -w 创建一份独立的工作树,然后在该工作树中运行 Claude。默认情况下,工作树会被创建在仓库根的 .claude/worktrees// 目录下,使用名为 worktree- 的新分支进行运行。如下图示例所示:

要将工作树移动到其他地方,请配置一个 WorktreeCreate 钩子函数。然后在另一个终端中使用不同的名称再次运行该命令,以启动第二个独立会话:claude --worktree bugfix-123
如果你省略名字,Claude 就会生成一个类似 bright-running-fox 这样的标识符:claude --worktree
在会话过程中,你还可以要求 Claude 在某个工作目录下进行操作。它会使用 EnterWorktree 工具创建一个工作目录。一旦进入某个工作目录后,Claude 可以通过调用 EnterWorktree 并指定目标路径,直接切换到另一个工作目录下。之前的工作目录则仍然保存在磁盘上,不会受到任何影响。
在首次在某个目录中使用 --worktree 之前,请先运行 claude 一次,以接受工作空间信任的对话框提示。如果信任尚未被接受,那么 --worktree 将会以错误退出,并提示您先在该目录中运行 claude ,这其中包括与 -p 结合使用的情形。
请将 .claude/worktrees/ 添加到你的 .gitignore 中,这样工作树的内容就不会出现在主检算目录中作为未跟踪的文件。
选择基础分支
工作树是从你的仓库的默认分支 origin/HEAD 分出的,因此它们起始时是一个与远程仓库一致的干净树状结构。如果未配置远程仓库或获取失败,工作树就会回退到你当前的本地分支 HEAD 。如果你想始终从本地分支 HEAD 分支出工作树,可以在设置中将 worktree.baseRef 设置为 "head" 。将 baseRef 设置为 "head" 意味着新的工作树会保留你未推送的提交记录以及功能分支的状态,这在需要隔离出来处理正在进行中的工作的子代理节点时非常有用。该设置仅允许使用 "fresh" 或 "head" 作为分支目标,不允许使用任意的 Git 引用。
默认 fresh:从远程默认分支 origin/HEAD 创建 worktree。
设置 head:从当前本地 HEAD 创建 worktree。
所以如果你当前分支上有一些还没推送的 commit,或者你正在某个 feature 分支上继续开发,那么设置成 "head" 后,新 worktree 会基于你当前本地状态创建。
这对 SubAgent 很有用。因为如果 SubAgent 要审查你当前正在开发的内容,它需要看到你的本地进度。否则默认从远程默认分支创建,可能看不到你本地还没推送的工作。
只想当前项目生效:放项目目录的 .claude/settings.json。
想所有项目都生效:放用户目录的 .claude/settings.json。
windows需要在用户目录下的settings.json文件里面去添加这个json格式。
{
"worktree": {
"baseRef": "head"
}
}
编辑之前先计划好方案
在做出更改之前,建议您先切换到计划模式进行审批。Claude 会读取文件并提出一个计划,但在您批准之前不会进行任何编辑。
claude --permission-mode plan
您也可以在会话过程中按下 Shift+Tab 按钮,以切换到计划模式。有关审批流程以及如何使用文本编辑器编辑计划的详细信息,请参见"计划模式"部分。
将研究任务委托给Subagent负责
在庞大的代码库中探索时,大量的文件读取工作会充斥着你的工作场景。将探索任务委托给他人处理吧,这样只有发现的结果才会返回过来。
子代理会在自己的上下文窗口中读取文件,并报告一份摘要。
管道Claude进入脚本模式
在持续集成、预提交钩子或批量处理过程中,以非交互方式运行 Claude。标准输入和标准输出与任何 Unix 工具一样使用。
git log --oneline -20 | claude -p "summarize these recent commits"