Claude Code Cli 使用教程2(官方最佳实践)
参考的是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。四种管理允许工具的方式会话提示授权在会话期间出现权限提示时选择「始终允许」将该工具加入白名单。命令行管理启动 Claude Code 后使用/permissions命令添加或移除工具。示例添加Edit允许文件编辑添加Bash(git commit:*)允许 git 提交添加mcp_puppeteer_puppeteer_navigate允许 Puppeteer MCP 导航。配置文件编辑手动编辑.claude/settings.json或~/.claude.json。建议将.claude/settings.json纳入版本控制便于团队共享权限配置。CLI 标志临时设置使用--allowedToolsCLI 标志为当前会话设置特定权限。d. 如果使用 GitHub安装 gh CLIClaude 知道如何使用ghCLI 与 GitHub 交互用于创建问题、打开 Pull Request、读取评论等没有安装gh时Claude 仍然可以使用 GitHub API 或 MCP 服务器如果您已安装。CC 提示词帮我安装 gh CLI之后重启 CC 终端然后执行 gh --version或者执行命令安装winget install --id GitHub.cligh 登录授权gh auth login 获取 github token2. 为 Claude 提供更多工具Claude 可以访问您的 shell 环境您可以在其中为它构建便利脚本和函数集合就像您日常开发时自己会为自己做的那样。它还可以通过 MCP 和 REST API 利用更复杂的工具。a. 与 bash 工具一起使用 ClaudeClaude Code 继承了您的 bash 环境让它可以访问您的所有工具。虽然 Claude 了解常见实用程序如 unix 工具和gh但它不会在没有指令的情况下了解您的自定义 bash 工具告诉 Claude 工具名称和使用示例告诉 Claude 运行--help来查看工具文档在CLAUDE.md中记录常用工具b. 与 MCP 一起使用 ClaudeClaude 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 中检查服务器状态 /mcpc. 使用自定义斜杠命令创建项目提示词在当前工作空间创建一个超级马里奥 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. 探索、规划、编码、提交这种多功能工作流程适合许多问题要求 Claude 阅读相关文件、图像或 URL提供一般指引阅读处理日志记录的文件或具体文件名阅读 logging.py但明确告诉它暂时不要编写任何代码。a. 这是工作流程中应该考虑大量使用子智能体的部分特别是对于复杂问题。告诉 Claude 使用子智能体来验证细节或调查它可能有的特定问题特别是在对话或任务的早期往往能在不损失效率的情况下保持上下文可用性。要求 Claude 制定解决特定问题的计划。我们建议使用 think 一词来触发扩展思维模式这为 Claude 提供额外的计算时间来更彻底地评估替代方案。这些特定短语直接映射到系统中递增的思维预算级别think think hard think harder ultrathink。每个级别为 Claude 分配越来越多的思维预算。a. 如果这一步的结果看起来合理您可以让 Claude 创建一个文档或 GitHub 问题记录其计划这样如果实施第 3 步不是您想要的您可以重置到这个位置。要求 Claude 在代码中实施其解决方案。这也是一个可以要求它在实施解决方案的各个部分时明确验证其解决方案的合理性的好地方。要求 Claude 提交结果并创建拉取请求。如果有需要这也是让 Claude 更新任何 README 或变更日志以说明它刚才所做工作的好时机。第 1-2 步至关重要 —— 没有它们Claude 倾向于直接跳到编码解决方案。虽然有时这正是您想要的但要求 Claude 首先进行研究和规划显著改善了需要深度前期思考的问题的性能。b. 编写测试提交编码迭代提交这是 Anthropic 推荐的工作流程适用于可通过单元测试、集成测试或端到端测试轻松验证的变更。测试驱动开发TDD在智能体编程中变得更加强大编写测试要求 Claude 基于预期的输入 / 输出编写测试。明确说明正在进行测试驱动开发避免它创建 mock 实现即使功能尚未存在。验证测试失败告诉 Claude 运行测试并确认它们失败此阶段不要编写任何实现代码。提交测试满意后要求 Claude 将测试提交到 git。实现代码要求 Claude 编写通过测试的代码并指示它不要修改测试通常需要多次迭代编码→运行测试→调整→再测试。此阶段可要求使用独立子智能体验证实现未过度拟合测试。提交代码满意变更后要求 Claude 将代码提交到 git。c. 编写代码截图结果迭代与测试工作流程类似您可以为 Claude 提供视觉输入为 Claude 提供拍摄浏览器截图的方法例如使用 Puppeteer MCP 服务器、iOS 模拟器 MCP 服务器或手动复制 / 粘贴截图到 Claude 中。通过复制 / 粘贴或拖放图像为 Claude 提供视觉输入或给 Claude 图像文件路径。要求 Claude 在代码中实现设计拍摄结果截图并迭代直到其结果与模拟匹配。在您满意时要求 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 Issuesh. 使用 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 中按cmdctrlshift4截图到剪贴板然后按ctrlv粘贴。注意这不是通常在 mac 上用来粘贴的cmdv并且无法远程工作。拖放图像直接到提示输入中提供图像的文件路径这在将设计图作为 UI 开发参考点以及用于分析和调试的可视化图表时特别有用。如果您不向上下文中添加视觉内容您仍然可以明确告诉 Claude 视觉吸引力的重要性这也会有帮助。c. 提及您希望 Claude 查看或处理的文件使用 tab 补全快速引用代码库中任何地方的文件或文件夹帮助 Claude 找到或更新正确的资源。d. 给 Claude 提供网址在提示中粘贴特定的网址供 Claude 获取和阅读。为了避免对相同域名例如docs.foo.com的权限提示使用/permissions将域名添加到您的允许列表中。e. 尽早且经常地修正方向虽然自动接受模式shifttab 切换让 Claude 自主工作但通过成为积极的协作者并指导 Claude 的方法您通常会得到更好的结果。您可以通过在开始时向 Claude 彻底解释任务来获得最佳结果但您也可以随时纠正 Claude 的方向。这四个工具有助于修正方向要求 Claude 在编码前制定计划。明确告诉它在您确认其计划看起来不错之前不要编码。按 Escape 中断Claude 在任何阶段思考、工具调用、文件编辑保留上下文以便您可以纠偏或扩展指令。双击 Escape 跳回历史编辑之前的提示词并探索不同的方向。您可以编辑提示词并重复直到获得您要寻找的结果。要求 Claude 撤销更改通常与选项 #2 结合使用以采取不同的方法。虽然 Claude Code 偶尔会在第一次尝试时完美解决问题但使用这些修正工具通常能更快地产生更好的解决方案f. 使用/clear保持上下文聚焦在长时间会话期间Claude 的上下文窗口可能会充满不相关的对话、文件内容和命令。这可能会降低性能有时会分散 Claude 的注意力。在任务间频繁使用/clear命令来重置上下文窗口。g. 为复杂工作流程使用检查清单和草稿板对于具有多个步骤或需要详尽解决方案的大型任务 —— 如代码迁移、修复大量代码检查错误或运行复杂构建脚本 —— 通过让 Claude 使用 Markdown 文件或甚至 GitHub Issue 功能作为检查清单和工作草稿板来提高性能例如要修复大量代码检查问题您可以执行以下操作告诉 Claude 运行代码检查命令并将所有结果错误包括文件名和行号写入 Markdown 检查清单指示 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 编写代码而另一个审查或测试它。与多个工程师合作类似有时拥有独立的上下文是有益的使用 Claude 编写代码运行/clear或在另一个终端中启动第二个 Claude让第二个 Claude 审查第一个 Claude 的工作启动另一个 Claude或再次/clear来阅读代码和审查反馈让这个 Claude 根据反馈编辑代码您可以对测试做类似的事情让一个 Claude 编写测试然后让另一个 Claude 编写通过测试的代码。您甚至可以让 Claude 实例通过给它们单独的工作草稿板并告诉它们写入哪一个和从哪一个读取来彼此通信。这种分离通常比让单个 Claude 处理所有事情产生更好的结果。b. 拥有代码库的多个 checkout与等待 Claude 完成每个步骤不同Anthropic 的许多工程师所做的是在单独的文件夹中创建 3-4 个 git checkout在单独的终端标签中打开每个文件夹在每个文件夹中启动 Claude 执行不同的任务轮流检查各个 Claude 进度并批准 / 拒绝权限请求c. 使用 git 工作树这种方法在多个独立任务中表现出色为多个检出提供了轻量级的替代方案。Git 工作树允许您从同一代码库将多个分支检出到单独的目录中。每个工作树都有自己的工作目录和隔离的文件同时共享相同的 Git 历史和 reflog。使用 git 工作树使您能够在项目的不同部分同时运行多个 Claude 会话每个都专注于自己的独立任务。例如您可能让一个 Claude 重构您的身份验证系统而另一个构建完全不相关的数据可视化组件。由于任务不重叠每个 Claude 都可以全速工作无需等待其他的更改或处理合并冲突创建工作树git worktree add ../project-feature-a feature-a在每个工作树中启动 Claudecd ../project-feature-a claude根据需要创建额外的工作树在新终端标签中重复步骤 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-ad. 使用自定义工具的无头模式claude -p无头模式将 Claude Code 以编程方式集成到更大的工作流程中同时利用其内置工具和系统提示。使用无头模式有两种主要模式1. 扇出处理大型迁移或分析例如分析数百个日志中的情感或分析数千个 CSV让 Claude 编写脚本生成任务列表。例如生成需要从框架 A 迁移到框架 B 的 2k 文件列表。循环遍历任务为每个任务以编程方式调用 Claude给它一个任务和一组可以使用的工具。例如claude -p 将foo.py从React迁移到Vue。完成后如果成功则必须返回字符串OK如果任务失败则返回FAIL。 --allowedTools Edit Bash(git commit:*)运行脚本多次并完善您的提示以获得所需的结果。2. 管道将 Claude 集成到现有的数据 / 处理管道中调用claude -p 您的提示 --json | your_command其中your_command是处理管道的下一步。就这样JSON 输出可以帮助提供结构以便更容易的自动化处理。对于这两个用例使用--verbose标志调试 Claude 调用会很有帮助。我们通常建议在生产中关闭详细模式以获得更清洁的输出。