










本文是 Crazyrouter Claude Code 系列第 02 篇。本文会围绕「Claude Code 接入 Crazyrouter 的工程实践」展开,重点覆盖 Claude Code官方最佳实践。
统一接入口径:Claude Code / Anthropic 原生客户端使用
ANTHROPIC_BASE_URL=https://cn.crazyrouter.com;OpenAI 兼容 SDK、HTTP 请求和前后端应用使用base_url=https://cn.crazyrouter.com/v1。
/v1/v1/... 问题。Claude Code,一个用于智能体编程的命令行工具。
作为一个内部实验性项目,Claude Code为Anthropic的工程师和研究人员提供了一种更原生的方式来将Claude集成到他们的编程工作流程中。
Claude Code被有意设计为 low-level(低级别) 且 unopinionated(无特定偏好) ,提供接近原始模型的访问权限,而不强制使用特定的工作流程。
这种设计哲学创造了一个灵活、可定制、可脚本化且安全的强大工具。
虽然功能强大,但这种灵活性为初次接触智能体编程工具的工程师带来了学习曲线 —— 至少直到他们形成自己的最佳实践。
本文档概述了已被证明有效的通用模式,无论是对于Anthropic的内部团队,还是对于在各种代码库、语言和环境中使用Claude Code的外部工程师。
此列表中的内容都不是一成不变的,也不普遍适用;请将这些建议视为起点。我们鼓励您进行实验,找到最适合您的方法!
Claude Code是一个智能体编程助手,会自动将上下文拉入提示中。这种上下文收集会消耗时间和令牌,但您可以通过环境调优来优化它。
CLAUDE.md 文件#CLAUDE.md 是一个特殊文件,Claude在开始对话时会自动将其拉入上下文。这使其成为记录以下内容的理想场所:
CLAUDE.md 文件没有要求的格式。我们建议保持简洁且人类可读。例如:
您可以将 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 文件。CLAUDE.md 文件#您的 CLAUDE.md 文件会成为Claude提示的一部分,因此应该像任何经常使用的提示一样进行精心完善。一个常见的错误是添加大量内容而不迭代其有效性。请花时间实验并确定什么能产生模型最佳的指令遵循效果。
您可以手动向 CLAUDE.md 添加内容,或按 # 键给Claude一个指令,它会自动将其纳入相关的 CLAUDE.md 中。许多工程师在编码时频繁使用 # 来记录命令、文件和风格指南,然后在提交中包含 CLAUDE.md 的更改,以便团队成员也能受益。
在Anthropic,我们偶尔会通过 提示词改进器运行 CLAUDE.md 文件,并经常调优指令(例如,添加"重要"或"您必须"的强调)以提高遵循度。
默认情况下,Claude Code会为任何可能修改您系统的操作请求权限:文件写入、许多bash命令、MCP工具等。我们有意采用这种保守的方法设计Claude Code,以优先考虑安全性。您可以自定义允许列表,许可您知道安全的额外工具,或允许容易撤销的潜在不安全工具(例如,文件编辑、 git commit )。
有四种方式管理允许的工具:
/permissions 命令 向允许列表添加或移除工具。例如,您可以添加 Edit 以始终允许文件编辑, Bash(git commit:*) 以允许git提交,或 mcp__puppeteer__puppeteer_navigate 以允许使用Puppeteer MCP服务器导航。.claude/settings.json 或 ~/.claude.json (我们建议将前者检入源代码控制以与团队分享) 。--allowedTools CLI标志 进行会话特定的权限设置。Claude知道如何使用 gh CLI与GitHub交互,用于创建问题、打开Pull Request、读取评论等。
没有安装 gh 时,Claude仍然可以使用GitHub API或MCP服务器(如果您已安装)。
或者执行命令安装:winget install --id GitHub.cli
gh登录授权:gh auth login 获取github token
Claude可以访问您的shell环境,您可以在其中为它构建便利脚本和函数集合,就像您日常开发时自己会为自己做的那样。
它还可以通过MCP和REST API利用更复杂的工具。
Claude Code继承了您的bash环境,让它可以访问您的所有工具。
虽然Claude了解常见实用程序如unix工具和 gh ,但它不会在没有指令的情况下了解您的自定义bash工具:
--help 来查看工具文档CLAUDE.md 中记录常用工具Claude Code既是MCP服务器又是客户端。作为客户端,它可以连接到任意数量的MCP服务器以通过三种方式访问它们的工具:
.mcp.json 文件中 (对在您代码库中工作的任何人都可用)。例如,您可以将Puppeteer和Sentry服务器添加到您的 .mcp.json 中,这样在您代码库工作的每个工程师都可以开箱即用地使用这些。使用MCP时,使用 claude --mcp-debug 标志启动Claude也会有帮助,以帮助识别配置问题。
参考官方文档:
配置完成后,您可以使用以下命令管理您的 MCP 服务器:
许多基于云的 MCP 服务器需要身份验证。Claude Code 支持 OAuth 2.0 进行安全连接。
1添加需要身份验证的服务器
2在 Claude Code 中使用 /mcp 命令
在 Claude Code 中,使用命令:
然后按照浏览器中的步骤登录。
您可以将 Claude Code 本身用作其他应用程序可以连接的 MCP 服务器:
您可以通过将此配置添加到 claude_desktop_config.json 在 Claude Desktop 中使用此功能:
对于重复的工作流程 —— 调试循环、日志分析等 —— 将提示模板存储在 .claude/commands 文件夹内的Markdown文件中。当您输入 / 时,这些会通过斜杠命令菜单变得可用。您可以将这些命令检入git,使其对团队的其他成员可用。
自定义斜杠命令可以包含特殊关键字 $ARGUMENTS 来从命令调用传递参数。 例如,这里是一个可以用来自动拉取和修复Github问题的斜杠命令:
Claude Code不强制特定的工作流程,为您提供了按照自己的方式使用它的灵活性。
在这种灵活性提供的空间内,我们的用户社区中已经出现了几种有效使用Claude Code的成功模式:
这种多功能工作流程适合许多问题:
要求Claude阅读相关文件、图像或URL ,提供一般指引("阅读处理日志记录的文件")或具体文件名("阅读logging.py"),但明确告诉它暂时不要编写任何代码。
要求Claude制定解决特定问题的计划 。我们建议使用"think"一词来触发扩展思维模式,这为Claude提供额外的计算时间来更彻底地评估替代方案。这些特定短语直接映射到系统中递增的思维预算级别:"think" < "think hard" < "think harder" < "ultrathink"。每个级别为Claude分配越来越多的思维预算。
要求Claude在代码中实施其解决方案 。这也是一个可以要求它在实施解决方案的各个部分时明确验证其解决方案的合理性的好地方。
要求Claude提交结果并创建拉取请求 。如果有需要,这也是让Claude更新任何README或变更日志以说明它刚才所做工作的好时机。
第1-2步至关重要 —— 没有它们,Claude倾向于直接跳到编码解决方案。虽然有时这正是您想要的,但要求Claude首先进行研究和规划显著改善了需要深度前期思考的问题的性能。
这是Anthropic最喜欢的工作流程,用于可以通过单元测试、集成测试或端到端测试轻松验证的更改。测试驱动开发(TDD)在智能体编程中变得更加强大:
要求Claude基于预期的输入/输出对编写测试 。明确说明您正在进行测试驱动开发,这样它就会避免创建mock实现,即使对于代码库中尚不存在的功能也是如此。
告诉Claude运行测试并确认它们失败 。明确告诉它在这个阶段不要编写任何实现代码通常是有帮助的。
要求Claude在您满意时把测试提交到git 。
要求Claude编写通过测试的代码 ,指示它不要修改测试。告诉Claude继续直到所有测试通过。Claude通常需要几次迭代来编写代码、运行测试、调整代码并再次运行测试。
在您满意更改后要求Claude提交代码到git 。
Claude在有明确目标进行迭代时表现最佳 —— 有视觉设计图、测试用例或其他类型的输出。通过提供像测试用例这样的预期输出,Claude可以进行更改、评估结果,并逐步改进直到成功。
与测试工作流程类似,您可以为Claude提供视觉输入:
像人类一样,Claude的输出通过迭代往往会显著改善。虽然第一版可能很好,但经过2-3次迭代后通常看起来会好得多。为Claude提供查看其输出的工具以获得最佳结果。
您可以使用 claude --dangerously-skip-permissions 绕过所有权限检查,让Claude不受干扰地工作直到完成。 这对修复代码检查错误或生成样板代码等工作流程效果很好。
让Claude运行任意命令是有风险的,可能导致数据丢失、系统损坏,甚至数据泄露(例如,通过提示注入攻击)。为了最小化这些风险,请在没有互联网访问的容器中使用 --dangerously-skip-permissions 。您可以遵循这个使用Docker Dev Containers的 参考实现。
在接触新代码库时,使用Claude Code进行学习和探索。您可以向Claude提出与其他项目工程师进行结对编程时相同类型的问题。Claude可以智能地搜索代码库来回答一般性问题,例如:
foo.rs 第134行的 async move { ... } 做什么?CustomerOnboardingFlowImpl 处理哪些边缘情况?foo() 而不是 bar() ?baz.py 第334行在Java中的等价物是什么?在Anthropic,以这种方式使用Claude Code已经成为我们核心的入职工作流程,显著改善了入门时间并减少了对其他工程师的负担。无需特殊提示!只需提问,Claude就会探索代码来找到答案。
Claude可以有效处理许多git操作。许多Anthropic工程师使用Claude进行90%以上的 git 交互:
Claude Code可以管理许多GitHub交互:
这让开发者无需记忆如何使用 gh 命令行,也能自动化进行常规任务。
Anthropic的研究人员和数据科学家使用Claude Code来读取和编写Jupyter笔记本。Claude可以解释输出(包括图像),并提供探索和与数据交互的快速方式。
这里没有固定的提示词或工作流程,但我们推荐的工作流程是在VS Code中并排打开Claude Code和 .ipynb 文件。
在向同事展示之前,您还可以要求Claude清理或对Jupyter笔记本进行美学改进。
具体地要求它“把笔记本或数据可视化变"美观"”,往往能有助于提醒它正在为人类观看体验进行优化。
以下建议适用于所有工作流程:
Claude Code的成功率随着更具体的指令而显著提高,特别是在首次尝试时。预先给出明确的方向减少了后续需要修正方向的必要。
例如:
| 差 | 好 | | 为 foo.py添加测试 | 为 foo.py编写新的测试用例,覆盖用户已注销的边缘情况。避免使用模拟 | | 为什么ExecutionFactory有这么奇怪的api? | 查看ExecutionFactory的git历史并总结其api是如何形成的 | | 添加日历小部件 | 查看首页上现有小部件的实现方式,了解模式以及代码和接口如何分离。HotDogWidget.php是一个很好的开始示例。然后,遵循模式实现一个新的日历小部件,让用户选择月份并向前/向后翻页选择年份。从头构建,不使用代码库中已使用的库之外的其他库。 |
Claude可以推断意图,但它不会读心术。“具体的指令”能够帮助Claude更好地满足你的期望。
可以通过以下方式给Claude添加图像:
这在将设计图作为UI开发参考点以及用于分析和调试的可视化图表时特别有用。
如果您不向上下文中添加视觉内容,您仍然可以明确告诉Claude视觉吸引力的重要性,这也会有帮助。
使用tab补全快速引用代码库中任何地方的文件或文件夹,帮助Claude找到或更新正确的资源。
在提示中粘贴特定的网址供Claude获取和阅读。为了避免对相同域名(例如 docs.foo.com )的权限提示,使用 /permissions 将域名添加到您的允许列表中。
虽然自动接受模式(shift+tab切换)让Claude自主工作,但通过成为积极的协作者并指导Claude的方法,您通常会得到更好的结果。您可以通过在开始时向Claude彻底解释任务来获得最佳结果,但您也可以随时纠正Claude的方向。
这四个工具有助于修正方向:
虽然Claude Code偶尔会在第一次尝试时完美解决问题,但使用这些修正工具通常能更快地产生更好的解决方案。
/clear 保持上下文聚焦#在长时间会话期间,Claude的上下文窗口可能会充满不相关的对话、文件内容和命令。这可能会降低性能,有时会分散Claude的注意力。在任务间频繁使用 /clear 命令来重置上下文窗口。
对于具有多个步骤或需要详尽解决方案的大型任务 —— 如代码迁移、修复大量代码检查错误或运行复杂构建脚本 —— 通过让Claude使用Markdown文件(或甚至GitHub Issue功能)作为检查清单和工作草稿板来提高性能:
例如,要修复大量代码检查问题,您可以执行以下操作:
向Claude提供数据有几种方法:
cat foo.txt | claude ),特别适用于日志、CSV和大数据大多数时候会组合使用这些方法。例如,您可以管道输入日志文件,然后告诉Claude使用工具拉取额外上下文来调试日志。
Claude Code包含 Claude Code overview - Anthropic,可用于CI、预提交钩子、构建脚本和自动化等非交互式上下文。 使用 -p 标志与提示词来启用无头模式,并使用 --output-format stream-json 进行流式JSON输出。
注意无头模式不在会话间持续。您必须每次会话都触发它。
Claude Code的 -p 参数是无头模式(非交互模式),用法如下:
基本语法:
这种模式特别适合脚本自动化和CI/CD流程中使用。
无头模式可以支持由GitHub事件触发的自动化,例如在您的代码库中创建新问题时。例如,公共 Claude Code代码库使用Claude检查传入的新问题并分配适当的标签。
Claude Code可以提供超出传统代码检查工具检测范围的 主观代码审查,识别诸如拼写错误、过时注释、误导性函数或变量名等问题。
除了独立使用外,一些适合当前场景大的应用涉及并行运行多个Claude实例:
一种简单但有效的方法是让一个Claude编写代码,而另一个审查或测试它。与多个工程师合作类似,有时拥有独立的上下文是有益的:
/clear 或在另一个终端中启动第二个Claude/clear )来阅读代码和审查反馈您可以对测试做类似的事情:让一个Claude编写测试,然后让另一个Claude编写通过测试的代码。您甚至可以让Claude实例通过给它们单独的工作草稿板并告诉它们写入哪一个和从哪一个读取来彼此通信。
这种分离通常比让单个Claude处理所有事情产生更好的结果。
与等待Claude完成每个步骤不同,Anthropic的许多工程师所做的是:
这种方法在多个独立任务中表现出色,为多个检出提供了轻量级的替代方案。Git工作树允许您从同一代码库将多个分支检出到单独的目录中。每个工作树都有自己的工作目录和隔离的文件,同时共享相同的Git历史和reflog。
使用git工作树使您能够在项目的不同部分同时运行多个Claude会话,每个都专注于自己的独立任务。例如,您可能让一个Claude重构您的身份验证系统,而另一个构建完全不相关的数据可视化组件。由于任务不重叠,每个Claude都可以全速工作,无需等待其他的更改或处理合并冲突:
git worktree add ../project-feature-a feature-acd ../project-feature-a && claudegit worktree remove ../project-feature-aclaude -p (无头模式)将Claude Code以编程方式集成到更大的工作流程中,同时利用其内置工具和系统提示。使用无头模式有两种主要模式:
扇出: 处理大型迁移或分析(例如,分析数百个日志中的情感或分析数千个CSV):
claude -p "将foo.py从React迁移到Vue。完成后,如果成功则必须返回字符串OK,如果任务失败则返回FAIL。" --allowedTools Edit Bash(git commit:*)管道: 将Claude集成到现有的数据/处理管道中:
claude -p "<您的提示>" --json | your_command ,其中 your_command 是处理管道的下一步对于这两个用例,使用 --verbose 标志调试Claude调用会很有帮助。我们通常建议在生产中关闭详细模式以获得更清洁的输出。
/v1 用法如果你准备把 Claude Code、国产模型或自己的应用统一接入 Crazyrouter,可以按这个顺序推进:
https://cn.crazyrouter.com;OpenAI 兼容 SDK 使用:https://cn.crazyrouter.com/v1。/v1。需要评估模型成本或选择不同模型时,可以先查看 Crazyrouter 价格与模型页,再把常用模型加入 Token 白名单。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。