参考的是b站博主:码士集团-马小雪,博主写这个就是为了方便查找。

1. 自定义您的设置

Claude Code 是一个智能体编程助手,会自动将上下文拉入提示中。这种上下文收集会消耗时间和令牌,但您可以通过环境调优来优化它。

a. 创建 CLAUDE.md 文件

CLAUDE.md 是一个特殊文件,Claude 在开始对话时会自动将其拉入上下文。这使其成为记录以下内容的理想场所:

  • 常用 bash 命令
  • 核心文件和实用函数
  • 代码风格指南
  • 测试说明
  • 代码库规范(例如,分支命名、合并与变基等)
  • 开发环境设置(例如,pyenv 使用、哪些编译器有效)
  • 项目特有的任何意外行为或警告
  • 您希望 Claude 记住的其他信息

当您运行 /init 命令时,Claude 会自动为您生成一个 CLAUDE.md 文件。

b. 调优您的 CLAUDE.md 文件

CLAUDE.md 文件会成为 Claude 提示的一部分,因此应该像任何经常使用的提示一样进行精心完善。一个常见的错误是添加大量内容而不迭代其有效性。请花时间实验并确定什么能产生模型最佳的指令遵循效果。

  • 编辑方式:您可以手动向 CLAUDE.md 添加内容,或按 # 键给 Claude 一个指令,它会自动将其纳入相关的 CLAUDE.md 中。许多工程师在编码时频繁使用 # 来记录命令、文件和风格指南,然后在提交中包含 CLAUDE.md 的更改,以便团队成员也能受益。
  • 优化实践:在 Anthropic,工程师偶尔会通过提示词改进器运行 CLAUDE.md 文件,并经常调优指令(例如,添加 “重要” 或 “您必须” 的强调)以提高遵循度。

c. 管理 Claude 的允许工具列表

默认情况下,Claude Code 会对任何可能修改系统的操作请求权限(如文件写入、bash 命令、MCP 工具等),这是一种以安全性为优先的保守设计。您可以自定义允许列表,以放行已知安全的额外工具,或允许容易撤销的潜在不安全工具(如文件编辑、git commit)。

四种管理允许工具的方式

  1. 会话提示授权:在会话期间出现权限提示时,选择「始终允许」,将该工具加入白名单。
  2. 命令行管理:启动 Claude Code 后,使用 /permissions 命令添加或移除工具。示例:添加 Edit 允许文件编辑;添加 Bash(git commit:*) 允许 git 提交;添加 mcp_puppeteer_puppeteer_navigate 允许 Puppeteer MCP 导航。
  3. 配置文件编辑:手动编辑 .claude/settings.json ~/.claude.json。建议将 .claude/settings.json 纳入版本控制,便于团队共享权限配置。
  4. CLI 标志临时设置:使用 --allowedTools CLI 标志,为当前会话设置特定权限。

d. 如果使用 GitHub,安装 gh CLI

  • Claude 知道如何使用 gh CLI 与 GitHub 交互,用于创建问题、打开 Pull Request、读取评论等
  • 没有安装 gh 时,Claude 仍然可以使用 GitHub API 或 MCP 服务器(如果您已安装)。
  • CC 提示词:帮我安装 gh CLI,之后重启 CC 终端,然后执行 gh --version
  • 或者执行命令安装:winget install --id GitHub.cli
  • gh 登录授权:gh auth login 获取 github token

2. 为 Claude 提供更多工具

Claude 可以访问您的 shell 环境,您可以在其中为它构建便利脚本和函数集合,就像您日常开发时自己会为自己做的那样。它还可以通过 MCP 和 REST API 利用更复杂的工具。


a. 与 bash 工具一起使用 Claude

Claude Code 继承了您的 bash 环境,让它可以访问您的所有工具。虽然 Claude 了解常见实用程序如 unix 工具和 gh,但它不会在没有指令的情况下了解您的自定义 bash 工具:

  1. 告诉 Claude 工具名称和使用示例
  2. 告诉 Claude 运行 --help 来查看工具文档
  3. CLAUDE.md 中记录常用工具

b. 与 MCP 一起使用 Claude

Claude Code 既是 MCP 服务器又是客户端。作为客户端,它可以连接到任意数量的 MCP 服务器以通过三种方式访问它们的工具:

  • 在项目配置中(在该目录中运行 Claude Code 时可用)
  • 在全局配置中(在所有项目中可用)
  • 在检入的 .mcp.json 文件中(对在您代码库中工作的任何人都可用)。例如,您可以将 Puppeteer 和 Sentry 服务器添加到您的 .mcp.json 中,这样在您代码库工作的每个工程师都可以开箱即用地使用这些。

使用 MCP 时,使用 claude --mcp-debug 标志启动 Claude 也会有帮助,以帮助识别配置问题。

管理您的服务器

配置完成后,您可以使用以下命令管理您的 MCP 服务器:

# 列出所有配置的服务器
claude mcp list

claude mcp add --transport sse github-server https://api.github.com/mcp

# 获取特定服务器的详细信息
claude mcp get github

# 删除服务器
claude mcp remove github

# (在 Claude Code 中)检查服务器状态
/mcp

c. 使用自定义斜杠命令

创建项目提示词:在当前工作空间创建一个超级马里奥 html5 小游戏项目,项目名为英文,创建完成后使用 gh 命令推送到 github

提 issue 提示词:给当前目录下 cc-project 项目提一个 issue,要求用中文,使用 gh 命令

对于重复的工作流程 —— 调试循环、日志分析等 —— 将提示模板存储在 .claude/commands 文件夹内的 Markdown 文件中。当您输入 / 时,这些会通过斜杠命令菜单变得可用。您可以将这些命令检入 git,使其对团队的其他成员可用。

自定义斜杠命令可以包含特殊关键字 $ARGUMENTS 来从命令调用传递参数。

示例:自动拉取和修复 GitHub 问题的斜杠命令

例如,这里是一个可以用来自动拉取和修复 Github 问题的斜杠命令:

请分析并修复GitHub问题:$ARGUMENTS。

按照这些步骤:
1. 使用 `gh issue view` 获取问题详情
2. 理解问题中描述的问题
3. 搜索代码库中的相关文件
4. 实施必要的更改来修复问题
5. 编写并运行测试来验证修复
6. 确保代码通过代码检查和类型检查
7. 创建描述性的提交消息
8. 推送并创建PR

记住对所有GitHub相关任务使用GitHub CLI (`gh`)。

将上述内容放入 .claude/commands/fix-github-issue.md 中,使其在 Claude Code 中作为 /project:fix-github-issue 命令可用。然后您可以使用 /project:fix-github-issue 1234 来让 Claude 修复问题 #1234。类似地,您可以将自己的个人命令添加到 ~/.claude/commands 文件夹中,以便在所有会话中使用。

3. 尝试常见工作流程

Claude Code 不强制特定的工作流程,为您提供了按照自己的方式使用它的灵活性。在这种灵活性提供的空间内,我们的用户社区中已经出现了几种有效使用 Claude Code 的成功模式:

a. 探索、规划、编码、提交

这种多功能工作流程适合许多问题:

  1. 要求 Claude 阅读相关文件、图像或 URL,提供一般指引("阅读处理日志记录的文件")或具体文件名("阅读 logging.py"),但明确告诉它暂时不要编写任何代码。
    a. 这是工作流程中应该考虑大量使用子智能体的部分,特别是对于复杂问题。告诉 Claude 使用子智能体来验证细节或调查它可能有的特定问题,特别是在对话或任务的早期,往往能在不损失效率的情况下保持上下文可用性。

  2. 要求 Claude 制定解决特定问题的计划。我们建议使用 "think" 一词来触发扩展思维模式,这为 Claude 提供额外的计算时间来更彻底地评估替代方案。这些特定短语直接映射到系统中递增的思维预算级别:"think" < "think hard" < "think harder" < "ultrathink"。每个级别为 Claude 分配越来越多的思维预算。
    a. 如果这一步的结果看起来合理,您可以让 Claude 创建一个文档或 GitHub 问题,记录其计划,这样如果实施(第 3 步)不是您想要的,您可以重置到这个位置。

  3. 要求 Claude 在代码中实施其解决方案。这也是一个可以要求它在实施解决方案的各个部分时明确验证其解决方案的合理性的好地方。

  4. 要求 Claude 提交结果并创建拉取请求。如果有需要,这也是让 Claude 更新任何 README 或变更日志以说明它刚才所做工作的好时机。

第 1-2 步至关重要 —— 没有它们,Claude 倾向于直接跳到编码解决方案。虽然有时这正是您想要的,但要求 Claude 首先进行研究和规划显著改善了需要深度前期思考的问题的性能。

b. 编写测试,提交;编码,迭代,提交

这是 Anthropic 推荐的工作流程,适用于可通过单元测试、集成测试或端到端测试轻松验证的变更。测试驱动开发(TDD)在智能体编程中变得更加强大:

  1. 编写测试:要求 Claude 基于预期的输入 / 输出编写测试。明确说明正在进行测试驱动开发,避免它创建 mock 实现(即使功能尚未存在)。
  2. 验证测试失败:告诉 Claude 运行测试并确认它们失败,此阶段不要编写任何实现代码。
  3. 提交测试:满意后,要求 Claude 将测试提交到 git。
  4. 实现代码:要求 Claude 编写通过测试的代码,并指示它不要修改测试;通常需要多次迭代(编码→运行测试→调整→再测试)。
    • 此阶段可要求使用独立子智能体验证实现未过度拟合测试。
  5. 提交代码:满意变更后,要求 Claude 将代码提交到 git。

c. 编写代码,截图结果,迭代

与测试工作流程类似,您可以为 Claude 提供视觉输入:

  1. 为 Claude 提供拍摄浏览器截图的方法(例如,使用 Puppeteer MCP 服务器、iOS 模拟器 MCP 服务器,或手动复制 / 粘贴截图到 Claude 中)。
  2. 通过复制 / 粘贴或拖放图像为 Claude 提供视觉输入,或给 Claude 图像文件路径。
  3. 要求 Claude 在代码中实现设计,拍摄结果截图,并迭代直到其结果与模拟匹配。
  4. 在您满意时要求 Claude 提交。

像人类一样,Claude 的输出通过迭代往往会显著改善。虽然第一版可能很好,但经过 2-3 次迭代后通常看起来会好得多。为 Claude 提供查看其输出的工具以获得最佳结果。

d. 安全 YOLO 模式

您可以使用 claude --dangerously-skip-permissions 绕过所有权限检查,让 Claude 不受干扰地工作直到完成。

这对修复代码检查错误或生成样板代码等工作流程效果很好。

让 Claude 运行任意命令是有风险的,可能导致数据丢失、系统损坏,甚至数据泄露(例如,通过提示注入攻击)。为了最小化这些风险,请在没有互联网访问的容器中使用 --dangerously-skip-permissions。您可以遵循这个使用 Docker Dev Containers 的参考实现。

e. 代码库问答

在接触新代码库时,使用 Claude Code 进行学习和探索。您可以向 Claude 提出与其他项目工程师进行结对编程时相同类型的问题。Claude 可以智能地搜索代码库来回答一般性问题,例如:

  • 日志记录是如何工作的?
  • 我如何创建一个新的 API 端点?
  • foo.rs 第 134 行的 async move { ... } 做什么?
  • CustomerOnboardingFlowImpl 处理哪些边缘情况?
  • 为什么我们在第 333 行调用 foo() 而不是 bar()
  • baz.py 第 334 行在 Java 中的等价物是什么?

在 Anthropic,以这种方式使用 Claude Code 已经成为我们核心的入职工作流程,显著改善了入门时间并减少了对其他工程师的负担。无需特殊提示!只需提问,Claude 就会探索代码来找到答案。

f. 使用 Claude 与 git 交互

Claude 可以有效处理许多 git 操作。许多 Anthropic 工程师使用 Claude 进行 90% 以上的git交互:

  • 搜索 git 历史来回答诸如 "v1.2.3 中包含了哪些更改?"、"谁拥有这个特定功能?" 或 "为什么这个 API 被设计成这样?" 等问题。明确提示 Claude 查看 git 历史来回答此类查询会有帮助。

  • 编写提交消息。Claude 会自动查看您的更改和最近的历史,以考虑所有相关上下文来编写消息。

  • 处理复杂的 git 操作,如恢复文件、解决变基冲突以及比较和移植补丁。

g. 使用 Claude 与 GitHub 交互

Claude Code 可以管理许多 GitHub 交互:

  • 创建拉取请求:Claude 理解 "pr" 简写,并将根据差异和周围上下文生成适当的提交消息。
  • 实施简单代码审查评论的一次性解决方案:只需告诉它修复 PR 上的评论(或者也可以给它更具体的指令),完成后推送回 PR 分支。
  • 修复失败的构建或代码检查警告
  • 分类和整理 Open 的 Issues,要求 Claude 循环遍历开放的 GitHub Issues

h. 使用 Claude 处理 Jupyter 笔记本

Anthropic 的研究人员和数据科学家使用 Claude Code 来读取和编写 Jupyter 笔记本。Claude 可以解释输出(包括图像),并提供探索和与数据交互的快速方式。

这里没有固定的提示词或工作流程,但我们推荐的工作流程是在 VS Code 中并排打开 Claude Code 和.ipynb文件。

在向同事展示之前,您还可以要求 Claude 清理或对 Jupyter 笔记本进行美学改进。

具体地要求它 “把笔记本或数据可视化变‘美观’”,往往能有助于提醒它正在为人类观看体验进行优化。

4. 优化您的工作流程

以下建议适用于所有工作流程:

a. 在指令中要具体

Claude Code 的成功率随着更具体的指令而显著提高,特别是在首次尝试时。预先给出明确的方向减少了后续需要修正方向的必要。

例如:

为 foo.py 添加测试 为 foo.py 编写新的测试用例,覆盖用户已注销的边缘情况。避免使用模拟
为什么 ExecutionFactory 有这么奇怪的 api? 查看 ExecutionFactory 的 git 历史并总结其 api 是如何形成的
添加日历小部件 查看首页上现有小部件的实现方式,了解模式以及代码和接口如何分离。HotDogWidget.php 是一个很好的开始示例。然后,遵循模式实现一个新的日历小部件,让用户选择月份并向前 / 向后翻页选择年份。从头构建,不使用代码库中已使用的库之外的其他库

Claude 可以推断意图,但它不会读心术。“具体的指令” 能够帮助 Claude 更好地满足你的期望。

b. 给 Claude 提供图像

可以通过以下方式给 Claude 添加图像:

  • 粘贴截图(专业提示:在 macOS 中按cmd+ctrl+shift+4截图到剪贴板,然后按ctrl+v粘贴。注意这不是通常在 mac 上用来粘贴的cmd+v,并且无法远程工作。)
  • 拖放图像直接到提示输入中
  • 提供图像的文件路径

这在将设计图作为 UI 开发参考点以及用于分析和调试的可视化图表时特别有用。

如果您不向上下文中添加视觉内容,您仍然可以明确告诉 Claude 视觉吸引力的重要性,这也会有帮助。

c. 提及您希望 Claude 查看或处理的文件

使用 tab 补全快速引用代码库中任何地方的文件或文件夹,帮助 Claude 找到或更新正确的资源。

d. 给 Claude 提供网址

在提示中粘贴特定的网址供 Claude 获取和阅读。为了避免对相同域名(例如docs.foo.com)的权限提示,使用 /permissions 将域名添加到您的允许列表中。

e. 尽早且经常地修正方向

虽然自动接受模式(shift+tab 切换)让 Claude 自主工作,但通过成为积极的协作者并指导 Claude 的方法,您通常会得到更好的结果。您可以通过在开始时向 Claude 彻底解释任务来获得最佳结果,但您也可以随时纠正 Claude 的方向。

这四个工具有助于修正方向:

  • 要求 Claude 在编码前制定计划。明确告诉它在您确认其计划看起来不错之前不要编码。
  • 按 Escape 中断Claude 在任何阶段(思考、工具调用、文件编辑),保留上下文以便您可以纠偏或扩展指令。
  • 双击 Escape 跳回历史,编辑之前的提示词,并探索不同的方向。您可以编辑提示词并重复直到获得您要寻找的结果。
  • 要求 Claude 撤销更改,通常与选项 #2 结合使用以采取不同的方法。

虽然 Claude Code 偶尔会在第一次尝试时完美解决问题,但使用这些修正工具通常能更快地产生更好的解决方案

f. 使用 /clear 保持上下文聚焦

在长时间会话期间,Claude 的上下文窗口可能会充满不相关的对话、文件内容和命令。这可能会降低性能,有时会分散 Claude 的注意力。在任务间频繁使用 /clear 命令来重置上下文窗口。


g. 为复杂工作流程使用检查清单和草稿板

对于具有多个步骤或需要详尽解决方案的大型任务 —— 如代码迁移、修复大量代码检查错误或运行复杂构建脚本 —— 通过让 Claude 使用 Markdown 文件(或甚至 GitHub Issue 功能)作为检查清单和工作草稿板来提高性能:

例如,要修复大量代码检查问题,您可以执行以下操作:

  1. 告诉 Claude 运行代码检查命令并将所有结果错误(包括文件名和行号)写入 Markdown 检查清单
  2. 指示 Claude 逐一解决每个问题,修复并验证后勾选并移至下一个

h. 向 Claude 传递数据

向 Claude 提供数据有几种方法:

  • 复制和粘贴直接到您的提示中(最常见的方法)
  • 管道输入到 Claude Code(例如,cat foo.txt | claude),特别适用于日志、CSV 和大数据
  • 告诉 Claude 通过bash 命令、MCP 工具或自定义斜杠命令拉取数据
  • 要求 Claude读取文件或获取 URLs(也适用于图像)

大多数时候会组合使用这些方法。例如,您可以管道输入日志文件,然后告诉 Claude 使用工具拉取额外上下文来调试日志。

5. 使用无头模式自动化您的基础设施

Claude Code 包含 AI Claude Code overview - Anthropic,可用于 CI、预提交钩子、构建脚本和自动化等非交互式上下文。

使用 -p 标志与提示词来启用无头模式,并使用 --output-format stream-json 进行流式 JSON 输出。注意无头模式不在会话间持续。您必须每次会话都触发它。

Claude Code 的 -p 参数是无头模式(非交互模式),用法如下:

基本语法:

claude -p "你的提示内容"

主要特点:

  • 直接执行查询后退出,不进入交互模式
  • 支持多种输出格式:text、json、stream-json
  • 可以通过管道接收输入

常用示例:

# 直接提问
claude -p "解释这个函数的功能"

# JSON格式输出
claude -p "分析代码,使用中文输出" --output-format json
claude -p "分析代码,使用中文输出" --output-format stream-json --verbose

# 通过管道传入文件内容
cat file.js | claude -p"优化这段代码”

#结合其他参数
claude -p "查询内容” --max-turns 1

这种模式特别适合脚本自动化和CI/CD流程中使用。

a. 使用 Claude 进行问题分类

无头模式可以支持由 GitHub 事件触发的自动化,例如在您的代码库中创建新问题时。例如,公共 Claude Code 代码库使用 Claude 检查传入的新问题并分配适当的标签。


b. 使用 Claude 作为代码检查器

Claude Code 可以提供超出传统代码检查工具检测范围的主观代码审查,识别诸如拼写错误、过时注释、误导性函数或变量名等问题。

6. 通过 “多 Claude 协作” 工作流来更进一步

除了独立使用外,一些最强大的应用涉及并行运行多个 Claude 实例:

a. 让一个 Claude 编写代码;使用另一个 Claude 进行验证

一种简单但有效的方法是让一个 Claude 编写代码,而另一个审查或测试它。与多个工程师合作类似,有时拥有独立的上下文是有益的:

  1. 使用 Claude 编写代码
  2. 运行 /clear 或在另一个终端中启动第二个 Claude
  3. 让第二个 Claude 审查第一个 Claude 的工作
  4. 启动另一个 Claude(或再次 /clear)来阅读代码和审查反馈
  5. 让这个 Claude 根据反馈编辑代码

您可以对测试做类似的事情:让一个 Claude 编写测试,然后让另一个 Claude 编写通过测试的代码。您甚至可以让 Claude 实例通过给它们单独的工作草稿板并告诉它们写入哪一个和从哪一个读取来彼此通信。

这种分离通常比让单个 Claude 处理所有事情产生更好的结果。

b. 拥有代码库的多个 checkout

与等待 Claude 完成每个步骤不同,Anthropic 的许多工程师所做的是:

  1. 在单独的文件夹中创建 3-4 个 git checkout
  2. 在单独的终端标签中打开每个文件夹
  3. 在每个文件夹中启动 Claude 执行不同的任务
  4. 轮流检查各个 Claude 进度并批准 / 拒绝权限请求

c. 使用 git 工作树

这种方法在多个独立任务中表现出色,为多个检出提供了轻量级的替代方案。Git 工作树允许您从同一代码库将多个分支检出到单独的目录中。每个工作树都有自己的工作目录和隔离的文件,同时共享相同的 Git 历史和 reflog。

使用 git 工作树使您能够在项目的不同部分同时运行多个 Claude 会话,每个都专注于自己的独立任务。例如,您可能让一个 Claude 重构您的身份验证系统,而另一个构建完全不相关的数据可视化组件。由于任务不重叠,每个 Claude 都可以全速工作,无需等待其他的更改或处理合并冲突:

  1. 创建工作树:git worktree add ../project-feature-a feature-a
  2. 在每个工作树中启动 Claude:cd ../project-feature-a && claude
  3. 根据需要创建额外的工作树(在新终端标签中重复步骤 1-2)

提示词:切换到 dev 分支,创建两个工作树:tree-a、tree-b,然后 tree-a 完成一个新增 a.md 文件的任务,tree-b 完成一个新增 b.md 文件的任务,之后将这两个工作树推送到 github

一些提示:

  • 使用一致的命名约定
  • 为每个工作树维护一个终端标签
  • 如果您在 Mac 上使用 iTerm2,设置通知以便在 Claude 需要注意时收到提醒
  • 为不同的工作树使用单独的 IDE 窗口
  • 完成后清理:git worktree remove ../project-feature-a

d. 使用自定义工具的无头模式

claude -p(无头模式)将 Claude Code 以编程方式集成到更大的工作流程中,同时利用其内置工具和系统提示。使用无头模式有两种主要模式:

1. 扇出:处理大型迁移或分析(例如,分析数百个日志中的情感或分析数千个 CSV)
  1. 让 Claude 编写脚本生成任务列表。例如,生成需要从框架 A 迁移到框架 B 的 2k 文件列表。
  2. 循环遍历任务,为每个任务以编程方式调用 Claude,给它一个任务和一组可以使用的工具。例如:
    claude -p "将foo.py从React迁移到Vue。完成后,如果成功则必须返回字符串OK,如果任务失败则返回FAIL。" --allowedTools Edit Bash(git commit:*)
    
  3. 运行脚本多次并完善您的提示以获得所需的结果。
2. 管道:将 Claude 集成到现有的数据 / 处理管道中
  1. 调用 claude -p "<您的提示>" --json | your_command,其中 your_command 是处理管道的下一步。
  2. 就这样!JSON 输出可以帮助提供结构以便更容易的自动化处理。

对于这两个用例,使用 --verbose 标志调试 Claude 调用会很有帮助。我们通常建议在生产中关闭详细模式以获得更清洁的输出。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐