<p align="right"><font color="#3f3f3f">2025年04月18日</font></p> > 原文链接:https://www.anthropic.com/engineering/claude-code-best-practices 我们最近发布了 Claude Code,这是一个用于代理编程的命令行工具。作为一个研究项目开发,Claude Code 为 Anthropic 的工程师和研究人员提供了一种更原生的方式来将 Claude 集成到他们的编程工作流程中。 Claude Code 有意设计得低层次且不带偏见,提供接近原始模型访问而不强制特定的工作流程。这种设计理念创造了一个灵活、可定制、可脚本化且安全的强大工具。虽然功能强大,但这种灵活性对于新接触代理编程工具的工程师来说存在学习曲线——至少在他们形成自己的最佳实践之前。 本文概述了已被证明有效的一般模式,这些模式既适用于 Anthropic 的内部团队,也适用于在各种代码库、语言和环境中使用 Claude Code 的外部工程师。这个列表中的任何内容都不是一成不变的,也不是普遍适用的;将这些建议视为起点。我们鼓励你实验并找到最适合你的方法! 寻找更详细的信息?我们在 claude.ai/code 的综合文档涵盖了本文提到的所有功能,并提供了额外的示例、实现细节和高级技术。 ### 1. 自定义你的设置 Claude Code 是一个代理编程助手,会自动将上下文拉入提示中。这种上下文收集消耗时间和 token,但你可以通过环境调优来优化它。 > 代理编程是指AI系统能够自主执行编程任务,包括阅读代码、理解需求、编写代码、运行测试等。Claude Code的上下文机制类似于为AI提供"工作记忆",让它了解当前项目的背景信息。 #### a. 创建 CLAUDE.md 文件 CLAUDE.md 是一个特殊文件,Claude 在开始对话时会自动将其拉入上下文。这使它成为记录以下内容的理想位置: - 常用 bash 命令 - 核心文件和实用函数 - 代码风格指南 - 测试说明 - 仓库礼仪(例如,分支命名、merge vs. rebase 等) - 开发环境设置(例如,pyenv use,哪些编译器有效) - 项目特有的任何意外行为或警告 - 你希望 Claude 记住的其他信息 > CLAUDE.md 文件本质上是项目的"知识库"。类比一下,这就像给新同事一份项目说明书,让他们快速了解项目的规范和特殊之处。这种做法可以显著减少重复解释和错误操作。 CLAUDE.md 文件没有必需的格式。我们建议保持其简洁且人类可读。例如: ```markdown # Bash 命令 - npm run build: 构建项目 - npm run typecheck: 运行类型检查器 # 代码风格 - 使用 ES 模块 (import/export) 语法,而不是 CommonJS (require) - 尽可能解构导入 (例如 import { foo } from 'bar') # 工作流程 - 完成一系列代码更改后务必进行类型检查 - 为了性能考虑,优先运行单个测试,而不是整个测试套件 ``` 你可以将 CLAUDE.md 文件放在几个位置: - 仓库的根目录,或你运行 `claude` 的地方(最常见的用法)。将其命名为 `CLAUDE.md` 并检入 git,以便你可以在会话间共享并与团队分享(推荐),或将其命名为 `CLAUDE.local.md` 并 `.gitignore` 它 - 运行 `claude` 目录的任何父目录。这对于 monorepo 最有用,你可能从 `root/foo` 运行 `claude`,并在 `root/CLAUDE.md` 和 `root/foo/CLAUDE.md` 中都有 CLAUDE.md 文件。这两个都会自动拉入上下文 - 运行 `claude` 目录的任何子目录。这与上面相反,在这种情况下,当你处理子目录中的文件时,Claude 会按需拉入 CLAUDE.md 文件 - 你的主文件夹(`~/.claude/CLAUDE.md`),这会应用到你所有的 claude 会话 当你运行 `/init` 命令时,Claude 会自动为你生成一个 CLAUDE.md。 > 这种分层的配置文件系统很聪明,类似于Git的配置机制。全局配置适用于所有项目,项目配置覆盖全局设置,这样既保证了一致性又允许项目特定的定制。 #### b. 调优你的 CLAUDE.md 文件 你的 CLAUDE.md 文件成为 Claude 提示的一部分,所以它们应该像任何经常使用的提示一样进行优化。一个常见的错误是在不迭代其有效性的情况下添加大量内容。花时间实验并确定什么能从模型中产生最佳的指令跟随效果。 你可以手动向 CLAUDE.md 添加内容,或按 `#` 键给 Claude 一个指令,它会自动将其纳入相关的 CLAUDE.md。许多工程师在编程时经常使用 `#` 来记录命令、文件和风格指南,然后在提交中包含 CLAUDE.md 更改,这样团队成员也能受益。 在 Anthropic,我们偶尔通过提示改进器运行 CLAUDE.md 文件,并经常调整指令(例如,添加"重要"或"你必须"的强调)以提高遵循性。 > 这里体现了prompt engineering的重要原则:迭代优化。就像调试代码一样,CLAUDE.md也需要根据实际使用效果进行调整。添加强调词汇可以提高AI对重要指令的注意力,这是prompt engineering的常用技巧。 #### c. 策划 Claude 的允许工具列表 默认情况下,Claude Code 会为任何可能修改你系统的操作请求权限:文件写入、许多 bash 命令、MCP 工具等。我们有意设计 Claude Code 采用这种保守方法来优先考虑安全性。你可以自定义允许列表以允许你知道安全的额外工具,或允许容易撤销的潜在不安全工具(例如,文件编辑、`git commit`)。 > 这种权限管理机制类似于移动应用的权限系统,默认拒绝,按需授权。这确保了AI不会意外执行危险操作,同时允许用户根据信任程度逐步开放权限。 有四种方式管理允许的工具: - 在会话期间被提示时选择"始终允许" - 启动 Claude Code 后使用 `/permissions` 命令从允许列表中添加或删除工具 - 手动编辑你的 `.claude/settings.json` 或 `~/.claude.json` - 使用 `--allowedTools` CLI 标志进行会话特定权限 #### d. 如果使用 GitHub,安装 gh CLI Claude 知道如何使用 `gh` CLI 与 GitHub 交互,用于创建问题、打开拉取请求、阅读评论等。没有安装 `gh`,Claude 仍然可以使用 GitHub API 或 MCP 服务器(如果你已安装)。 > gh CLI是GitHub的官方命令行工具,它为AI提供了与GitHub交互的标准化接口。这比让AI直接调用REST API更可靠,因为CLI工具通常有更好的错误处理和认证机制。 ### 2. 给 Claude 更多工具 Claude 可以访问你的 shell 环境,在那里你可以为它构建便利脚本和函数集,就像你为自己做的一样。它还可以通过 MCP 和 REST API 利用更复杂的工具。 #### a. 将 Claude 与 bash 工具一起使用 Claude Code 继承了你的 bash 环境,让它可以访问你所有的工具。虽然 Claude 知道常见的实用程序如 unix 工具和 `gh`,但它不会在没有指令的情况下知道你的自定义 bash 工具: - 告诉 Claude 工具名称和使用示例 - 告诉 Claude 运行 `--help` 查看工具文档 - 在 CLAUDE.md 中记录经常使用的工具 #### b. 将 Claude 与 MCP 一起使用 Claude Code 既作为 MCP 服务器也作为客户端。作为客户端,它可以通过三种方式连接到任意数量的 MCP 服务器来访问它们的工具: - 在项目配置中(在该目录中运行 Claude Code 时可用) - 在全局配置中(在所有项目中可用) - 在检入的 `.mcp.json` 文件中(对在你代码库中工作的任何人都可用) > MCP (Model Context Protocol) 是一种标准化协议,允许AI模型与外部工具和服务进行交互。类似于API,但专门为AI代理设计。这种架构使Claude可以操作浏览器、查询数据库、调用云服务等。 使用 MCP 时,使用 `--mcp-debug` 标志启动 Claude 也很有帮助,这有助于识别配置问题。 #### c. 使用自定义斜杠命令 对于重复的工作流程——调试循环、日志分析等——将提示模板存储在 `.claude/commands` 文件夹内的 Markdown 文件中。当你输入 `/` 时,这些会通过斜杠命令菜单变得可用。你可以将这些命令检入 git,使其对团队的其他成员可用。 自定义斜杠命令可以包含特殊关键字 `$ARGUMENTS` 来从命令调用传递参数。 > 这个功能类似于IDE中的代码模板或片段。通过预定义常用的工作流程,可以大大提高效率。$ARGUMENTS机制提供了参数化模板的能力,使得同一个模板可以适应不同的具体任务。 例如,这是一个你可以用来自动拉取和修复 Github 问题的斜杠命令: ```markdown 请分析并修复 GitHub 问题:$ARGUMENTS。 按照以下步骤: 1. 使用 `gh issue view` 获取问题详情 2. 理解问题中描述的问题 3. 搜索代码库中的相关文件 4. 实施必要的更改来修复问题 5. 编写并运行测试来验证修复 6. 确保代码通过 linting 和类型检查 7. 创建描述性的提交消息 8. 推送并创建 PR 记住对所有 GitHub 相关任务使用 GitHub CLI (`gh`)。 ``` ### 3. 尝试常见工作流程 Claude Code 不强加特定的工作流程,给你使用它的灵活性。在这种灵活性提供的空间内,在我们的用户社区中出现了几种有效使用 Claude Code 的成功模式: #### a. 探索、计划、编码、提交 这个多用途工作流程适合许多问题: - 要求 Claude 读取相关文件、图像或 URL,提供一般指针("读取处理日志的文件")或特定文件名("读取 logging.py"),但明确告诉它暂时不要编写任何代码。 - 这是工作流程中你应该考虑大量使用子代理的部分,特别是对于复杂问题。告诉 Claude 使用子代理来验证细节或调查它可能有的特定问题,特别是在对话或任务的早期,往往会保留上下文可用性,而在效率损失方面没有太多不利因素。 - 要求 Claude 制定解决特定问题的计划。我们建议使用"think"一词来触发扩展思考模式,这给 Claude 额外的计算时间来更彻底地评估替代方案。这些特定短语直接映射到系统中增加的思考预算级别:"think" < "think hard" < "think harder" < "ultrathink"。每个级别逐渐分配更多的思考预算供 Claude 使用。 - 如果这一步的结果看起来合理,你可以让 Claude 创建一个文档或 GitHub 问题,包含它的计划,这样如果实施(步骤3)不是你想要的,你可以重置到这个点。 - 要求 Claude 在代码中实施它的解决方案。这也是要求它在实施解决方案片段时明确验证其解决方案合理性的好地方。 - 要求 Claude 提交结果并创建拉取请求。如果相关,这也是让 Claude 更新任何 README 或变更日志并解释它刚刚做了什么的好时机。 > 这个工作流程体现了软件开发的最佳实践:需求分析 → 设计规划 → 编码实现 → 版本控制。子代理概念类似于将复杂任务分解给不同的专家处理,避免单一上下文过载。 步骤 #1-#2 是关键的——没有它们,Claude 倾向于直接跳到编码解决方案。虽然有时这是你想要的,但要求 Claude 首先研究和计划显著提高了需要前期深入思考的问题的性能。 #### b. 写测试,提交;编码,迭代,提交 这是 Anthropic 最喜欢的工作流程,适用于可以通过单元、集成或端到端测试轻松验证的更改。测试驱动开发(TDD)在代理编程中变得更加强大: - 要求 Claude 基于预期的输入/输出对编写测试。明确说明你正在进行测试驱动开发,这样它就避免创建模拟实现,即使对于代码库中还不存在的功能也是如此。 - 告诉 Claude 运行测试并确认它们失败。在这个阶段明确告诉它不要编写任何实现代码通常很有帮助。 - 当你对测试满意时,要求 Claude 提交测试。 - 要求 Claude 编写通过测试的代码,指示它不要修改测试。告诉 Claude 继续直到所有测试通过。它通常需要几次迭代来编写代码、运行测试、调整代码并再次运行测试。 - 在这个阶段,要求它用独立的子代理验证实现没有过度拟合测试可能会有帮助 - 一旦你对更改满意,要求 Claude 提交代码。 > TDD with AI 是一个强大的组合。AI擅长生成测试用例,而测试为AI提供了明确的成功标准。这种方法确保代码质量,同时给AI一个清晰的目标来迭代优化。 Claude 在有明确目标进行迭代时表现最佳——视觉模型、测试用例或另一种输出。通过提供像测试这样的预期输出,Claude 可以进行更改、评估结果并逐步改进直到成功。 #### c. 编写代码,截图结果,迭代 类似于测试工作流程,你可以为 Claude 提供视觉目标: - 给 Claude 一种获取浏览器截图的方法(例如,使用 Puppeteer MCP 服务器、iOS 模拟器 MCP 服务器,或手动复制/粘贴截图到 Claude) - 通过复制/粘贴或拖放图像,或给 Claude 图像文件路径,给 Claude 一个视觉模型 - 要求 Claude 在代码中实现设计,获取结果的截图,并迭代直到其结果与模型匹配 - 当你满意时要求 Claude 提交 > 视觉驱动开发对UI/UX工作特别有效。AI可以"看到"界面效果并进行调整,这比纯文字描述更直观。这种方法特别适合前端开发和原型制作。 像人类一样,Claude 的输出往往通过迭代显著改进。虽然第一个版本可能不错,但经过 2-3 次迭代后通常看起来会好得多。给 Claude 查看其输出的工具以获得最佳结果。 #### d. 安全 YOLO 模式 除了监督 Claude,你可以使用 `claude --dangerously-skip-permissions` 绕过所有权限检查,让 Claude 不间断地工作直到完成。这对于修复 lint 错误或生成样板代码等工作流程效果很好。 让 Claude 运行任意命令是有风险的,可能导致数据丢失、系统损坏,甚至数据泄露(例如,通过提示注入攻击)。为了最小化这些风险,在没有互联网访问的容器中使用 `--dangerously-skip-permissions`。 > "YOLO"(You Only Live Once)模式是一个幽默的命名,但反映了实际需求——有时需要快速自动化处理大量重复任务。容器化运行是关键的安全措施,提供了沙盒环境。 #### e. 代码库问答 当适应新代码库时,使用 Claude Code 进行学习和探索。你可以向 Claude 询问你在结对编程时会向项目中的另一个工程师询问的同样问题。Claude 可以代理搜索代码库来回答一般问题,如: - 日志记录是如何工作的? - 如何创建新的 API 端点? - `foo.rs` 第 134 行的 `async move { ... }` 是做什么的? - `CustomerOnboardingFlowImpl` 处理什么边缘情况? - 为什么我们在第 333 行调用 `foo()` 而不是 `bar()`? - `baz.py` 第 334 行在 Java 中的等价物是什么? > 这种用法将AI变成了一个永远可用的高级同事,可以即时回答代码库相关问题。相比传统的代码搜索和文档查阅,AI可以提供更具语境的解释。 在 Anthropic,以这种方式使用 Claude Code 已成为我们的核心入职工作流程,显著改善了上手时间并减少了其他工程师的负担。不需要特殊的提示!只需提问,Claude 就会探索代码来寻找答案。 #### f. 使用 Claude 与 git 交互 Claude 可以有效处理许多 git 操作。许多 Anthropic 工程师将 Claude 用于我们 90% 以上的 git 交互: - 搜索 git 历史来回答诸如"v1.2.3 中包含了哪些更改?"、"谁拥有这个特定功能?"或"为什么这个 API 是这样设计的?"等问题。明确提示 Claude 查看 git 历史来回答这类查询会有帮助。 - 编写提交消息。Claude 会自动查看你的更改和最近的历史,以便组合一个考虑所有相关上下文的消息 - 处理复杂的 git 操作,如还原文件、解决 rebase 冲突以及比较和移植补丁 > Git是复杂的版本控制系统,即使经验丰富的开发者也经常遇到困难。AI可以理解git历史的语义,生成有意义的提交消息,并处理复杂的分支操作,这大大降低了git的使用门槛。 #### g. 使用 Claude 与 GitHub 交互 Claude Code 可以管理许多 GitHub 交互: - 创建拉取请求:Claude 理解简写"pr",并将基于差异和周围上下文生成适当的提交消息 - 为简单的代码审查评论实现一次性解决方案:只需告诉它修复你 PR 上的评论(可选地,给它更具体的指令),完成后推送回 PR 分支 - 修复失败的构建或 linter 警告 - 通过要求 Claude 循环处理打开的 GitHub 问题来分类和分流打开的问题 这消除了记住 `gh` 命令行语法的需要,同时自动化日常任务。 #### h. 使用 Claude 处理 Jupyter notebooks Anthropic 的研究人员和数据科学家使用 Claude Code 来读写 Jupyter notebooks。Claude 可以解释输出,包括图像,提供了一种快速探索和交互数据的方法。没有必需的提示或工作流程,但我们推荐的工作流程是在 VS Code 中并排打开 Claude Code 和 `.ipynb` 文件。 > Jupyter notebooks是数据科学的重要工具,但经常变得混乱难懂。AI可以帮助清理代码、改进可视化效果、添加解释性文本,使notebooks更适合分享和展示。 你也可以要求 Claude 在向同事展示之前清理或美化你的 Jupyter notebook。具体告诉它使 notebook 或其数据可视化"美观"往往有助于提醒它正在为人类观看体验进行优化。 ### 4. 优化你的工作流程 以下建议适用于所有工作流程: #### a. 在指令中要具体 Claude Code 的成功率通过更具体的指令显著提高,特别是在首次尝试时。预先给出清晰的方向减少了稍后需要纠正路线的需要。 > 这反映了prompt engineering的核心原则:具体性胜过模糊性。清晰的指令帮助AI理解确切期望,减少误解和返工。 例如: |差的指令|好的指令| |---|---| |为 foo.py 添加测试|为 foo.py 编写一个新的测试用例,覆盖用户登出的边缘情况。避免模拟| |为什么 ExecutionFactory 有如此奇怪的 api?|查看 ExecutionFactory 的 git 历史并总结其 api 是如何形成的| |添加日历小部件|查看主页上现有小部件的实现方式以了解模式,特别是代码和接口如何分离。HotDogWidget.php 是一个很好的起始示例。然后,按照模式实现一个新的日历小部件,让用户选择月份并向前/向后分页选择年份。除了代码库中已经使用的库之外,从头构建而不使用其他库。| Claude 可以推断意图,但它无法读心。具体性导致与期望更好的对齐。 #### b. 给 Claude 图像 Claude 通过几种方法在图像和图表方面表现出色: - 粘贴截图(专业提示:在 macOS 中按 cmd+ctrl+shift+4 截图到剪贴板,ctrl+v 粘贴。注意这不是你通常在 mac 上用来粘贴的 cmd+v,并且远程操作无效) - 直接拖放图像到提示输入 - 为图像提供文件路径 这在使用设计模型作为 UI 开发的参考点以及用于分析和调试的视觉图表时特别有用。如果你没有向上下文添加视觉效果,明确告诉 Claude 结果的视觉吸引力有多重要仍然很有帮助。 #### c. 提及你希望 Claude 查看或处理的文件 使用制表符补全快速引用仓库中任何地方的文件或文件夹,帮助 Claude 找到或更新正确的资源。 #### d. 给 Claude URL 在提示中粘贴特定 URL 供 Claude 获取和阅读。为了避免相同域的权限提示(例如,docs.foo.com),使用 `/permissions` 将域添加到你的允许列表。 #### e. 及早且经常纠正路线 虽然自动接受模式(shift+tab 切换)让 Claude 自主工作,但通过成为积极的协作者并指导 Claude 的方法,你通常会得到更好的结果。你可以通过在开始时彻底向 Claude 解释任务来获得最佳结果,但你也可以随时纠正 Claude 的路线。 > 这强调了human-in-the-loop的重要性。虽然AI很强大,但人类的判断和指导仍然是获得最佳结果的关键。早期纠正比后期重构更有效率。 这四个工具有助于纠正路线: - 要求 Claude 在编码前制定计划。明确告诉它在你确认其计划看起来不错之前不要编码 - 按 Escape 在任何阶段(思考、工具调用、文件编辑)中断 Claude,保留上下文以便你可以重新指导或扩展指令 - 双击 Escape 跳回历史,编辑之前的提示,并探索不同的方向。你可以编辑提示并重复直到得到你寻找的结果 - 要求 Claude 撤销更改,通常与选项 #2 结合使用不同的方法 虽然 Claude Code 偶尔在第一次尝试时完美解决问题,但使用这些纠正工具通常更快地产生更好的解决方案。 #### f. 使用 /clear 保持上下文聚焦 在长会话期间,Claude 的上下文窗口可能会被无关的对话、文件内容和命令填满。这可能会降低性能,有时会分散 Claude 的注意力。在任务之间频繁使用 `/clear` 命令来重置上下文窗口。 > 上下文窗口类似于人的工作记忆,信息过载会影响注意力和决策质量。定期清理上下文就像整理工作台一样,保持效率和专注。 #### g. 对复杂工作流程使用检查清单和草稿本 对于具有多个步骤或需要详尽解决方案的大型任务——如代码迁移、修复众多 lint 错误或运行复杂构建脚本——通过让 Claude 使用 Markdown 文件(甚至 GitHub 问题!)作为检查清单和工作草稿本来提高性能: 例如,要修复大量 lint 问题,你可以执行以下操作: - 告诉 Claude 运行 lint 命令并将所有结果错误(带文件名和行号)写入 Markdown 检查清单 - 指示 Claude 逐一解决每个问题,在移动到下一个之前修复和验证并将其勾选 #### h. 将数据传递给 Claude 向 Claude 提供数据存在几种方法: - 直接复制粘贴到你的提示中(最常见的方法) - 管道传输到 Claude Code(例如,`cat foo.txt | claude`),对于日志、CSV 和大数据特别有用 - 告诉 Claude 通过 bash 命令、MCP 工具或自定义斜杠命令拉取数据 - 要求 Claude 读取文件或获取 URL(对图像也有效) 大多数会话涉及这些方法的组合。例如,你可以管道传输一个日志文件,然后告诉 Claude 使用工具拉入额外的上下文来调试日志。 ### 5. 使用无头模式自动化你的基础设施 Claude Code 包含无头模式,用于非交互式上下文,如 CI、预提交钩子、构建脚本和自动化。使用 `-p` 标志和提示来启用无头模式,使用 `--output-format stream-json` 进行流式 JSON 输出。 注意无头模式不会在会话间持续。你必须每次会话都触发它。 > 无头模式是指没有图形用户界面的自动化运行模式,常用于CI/CD流水线和批处理任务。这使得AI可以集成到现有的自动化工作流程中。 #### a. 使用 Claude 进行问题分流 无头模式可以支持由 GitHub 事件触发的自动化,例如当在你的仓库中创建新问题时。例如,公共 Claude Code 仓库使用 Claude 来检查新进来的问题并分配适当的标签。 #### b. 使用 Claude 作为 linter Claude Code 可以提供超越传统 linting 工具检测的主观代码审查,识别诸如拼写错误、过时评论、误导性函数或变量名等问题。 ### 6. 使用多 Claude 工作流程提升水平 除了独立使用之外,一些最强大的应用涉及并行运行多个 Claude 实例: #### a. 让一个 Claude 写代码;使用另一个 Claude 验证 一个简单但有效的方法是让一个 Claude 写代码,而另一个审查或测试它。类似于与多个工程师合作,有时拥有独立的上下文是有益的: - 使用 Claude 写代码 - 运行 `/clear` 或在另一个终端中启动第二个 Claude - 让第二个 Claude 审查第一个 Claude 的工作 - 启动另一个 Claude(或再次 `/clear`)来阅读代码和审查反馈 - 让这个 Claude 基于反馈编辑代码 > 这种分工协作模式模拟了软件开发中的代码审查流程。不同的AI实例可以保持独立的视角,避免确认偏差,提供更客观的评估。 你可以对测试做类似的事情:让一个 Claude 写测试,然后让另一个 Claude 写代码来使测试通过。你甚至可以通过给它们独立的工作草稿本并告诉它们写入哪一个和读取哪一个来让你的 Claude 实例相互通信。 这种分离通常比让单个 Claude 处理所有事情产生更好的结果。 #### b. 拥有多个仓库检出 而不是等待 Claude 完成每个步骤,许多 Anthropic 工程师做的事情是: - 在独立文件夹中创建 3-4 个 git 检出 - 在独立的终端标签中打开每个文件夹 - 在每个文件夹中用不同任务启动 Claude - 循环检查进度并批准/拒绝权限请求 #### c. 使用 git worktree 这种方法对多个独立任务很出色,提供了多个检出的轻量级替代方案。Git worktree 允许你将同一仓库的多个分支检出到独立目录。每个 worktree 都有自己的工作目录和独立的文件,同时共享相同的 Git 历史和 reflog。 > Git worktree是一个相对较新但非常有用的Git功能,它允许同时在同一仓库的不同分支上工作,而无需来回切换分支或维护多个仓库副本。 使用 git worktree 使你能够在项目的不同部分同时运行多个 Claude 会话,每个专注于自己的独立任务。例如,你可能让一个 Claude 重构你的认证系统,而另一个构建完全无关的数据可视化组件。由于任务不重叠,每个 Claude 都可以全速工作,无需等待另一个的更改或处理合并冲突: - 创建 worktree:`git worktree add ../project-feature-a feature-a` - 在每个 worktree 中启动 Claude:`cd ../project-feature-a && claude` - 根据需要创建额外的 worktree(在新的终端标签中重复步骤 1-2) 一些提示: - 使用一致的命名约定 - 每个 worktree 维护一个终端标签 - 如果你在 Mac 上使用 iTerm2,设置通知,以便 Claude 需要关注时收到通知 - 为不同的 worktree 使用独立的 IDE 窗口 - 完成后清理:`git worktree remove ../project-feature-a` #### d. 使用自定义工具的无头模式 `claude -p`(无头模式)将 Claude Code 程序化地集成到更大的工作流程中,同时利用其内置工具和系统提示。使用无头模式有两种主要模式: 1. **扇出处理**大型迁移或分析(例如,分析数百个日志的情感或分析数千个 CSV): - 让 Claude 写一个脚本来生成任务列表。例如,生成需要从框架 A 迁移到框架 B 的 2k 文件列表。 - 循环遍历任务,为每个任务程序化地调用 Claude,给它一个任务和一套它可以使用的工具。例如: ```bash claude -p "将 foo.py 从 React 迁移到 Vue。完成后,如果成功你必须返回字符串 OK,如果任务失败则返回 FAIL。" --allowedTools Edit Bash(git commit:*) ``` - 多次运行脚本并优化你的提示以获得期望的结果。 2. **流水线**将 Claude 集成到现有的数据/处理流水线中: - 调用 `claude -p "<你的提示>" --json | your_command`,其中 `your_command` 是处理流水线的下一步 - 就是这样!JSON 输出(可选)可以帮助为更容易的自动化处理提供结构。 **注解:** 这种批处理模式特别适合大规模代码迁移、数据处理等任务。通过将AI集成到脚本化工作流程中,可以自动化原本需要大量手工劳动的任务。 对于这两种用例,使用 `--verbose` 标志来调试 Claude 调用可能会有帮助。我们通常建议在生产中关闭详细模式以获得更清洁的输出。 ## 总结 这篇文章提供了使用 Claude Code 的全面指南,从基础设置到高级工作流程。关键要点包括: 1. **配置优化**:通过 CLAUDE.md 文件、权限管理和工具集成来定制环境 2. **工作流程模式**:探索-计划-编码-提交、TDD、视觉驱动开发等成熟模式 3. **协作技巧**:具体指令、图像使用、及时纠错等提高效率的方法 4. **自动化应用**:无头模式用于 CI/CD 和批处理任务 5. **规模化策略**:多实例并行、git worktree 等高级技术 Claude Code 体现了 AI 辅助编程的新范式,它不是要替代开发者,而是成为一个强大的编程伙伴,能够理解上下文、执行复杂任务并与现有工具链无缝集成。