我们最近发布了 Claude Code,这是一个用于智能体编程(Agentic coding)的命令行工具。作为研究项目开发,Claude Code 为 Anthropic 的工程师和研究人员提供了一种更原生的方式,将 Claude 集成到他们的编码工作流中。
Claude Code 刻意设计得比较底层且无预设偏好(unopinionated),提供接近原始模型的访问能力,而不强制用户遵循特定的工作流程。这种设计理念创造了一个灵活、可定制、可脚本化且安全的强大工具。虽然功能强大,但这种灵活性对于刚接触智能体编程工具的工程师来说,意味着需要一定的学习曲线——至少在他们形成自己的最佳实践之前是这样。
本文概述了一些已被证明行之有效的通用模式,这些模式不仅适用于 Anthropic 内部团队,也适用于在各种代码库、语言和环境中使用 Claude Code 的外部工程师。列表中的任何内容都不是一成不变的,也不是普遍适用的;请将这些建议视为起点。我们鼓励你进行实验,找到最适合你的方法!
# Bash commands - npm run build: Build the project - npm run typecheck: Run the typechecker
# Code style - Use ES modules (import/export) syntax, not CommonJS (require) - Destructure imports when possible (eg. import { foo } from'bar')
# Workflow - Be sure to typecheck when you’redonemaking a series of code changes - Prefer running single tests, and not the wholetestsuite,forperformance
1. Use `gh issue view` to get the issue details 2. Understand the problem describedinthe issue 3. Search the codebaseforrelevant files 4. Implement the necessary changes to fix the issue 5. Write and run tests to verify the fix 6. Ensure code passes linting andtypechecking 7. Create a descriptive commit message 8. Push and create a PR
Remember to use the GitHub CLI (`gh`)forall GitHub-related tasks.
将上述内容放入.claude/commands/fix-github-issue.md文件中,使其在 Claude Code 中作为/project:fix-github-issue命令可用。然后你就可以例如使用/project:fix-github-issue 1234来让 Claude 修复 issue #1234。类似地,你可以将自己的个人命令添加到~/.claude/commands文件夹中,以便在所有会话中使用。
3. 尝试常见工作流程
Claude Code 不强加特定的工作流程,让你能够灵活地按自己的方式使用它。在这种灵活性提供的空间内,我们的用户社区中涌现了几种成功有效使用 Claude Code 的模式:
a. 探索、计划、编码、提交 (Explore, plan, code, commit)
这个通用的工作流程适用于许多问题:
让 Claude 阅读相关文件、图片或 URL,可以提供一般性指引(“阅读处理日志的文件”)或具体文件名(“阅读 logging.py”),但明确告诉它暂时不要编写任何代码。
这是工作流程中应该考虑重点使用子智能体(subagents)的部分,特别是对于复杂问题。让 Claude 使用子智能体来验证细节或调查它可能有的特定问题,尤其是在对话或任务的早期,往往可以在不牺牲太多效率的情况下保留上下文的可用性。
让 Claude 制定解决特定问题的计划。我们建议使用“思考 (think)”这个词来触发扩展思考模式 (extended thinking mode),这会给 Claude 额外的计算时间来更彻底地评估备选方案。这些特定的短语直接映射到系统中不断增加的思考预算级别:“思考 (think)” < “深入思考 (think hard)” < “更深入思考 (think harder)” < “极致思考 (ultrathink)”。每个级别都会分配逐步增加的思考预算供 Claude 使用。
如果这一步的结果看起来合理,你可以让 Claude 用它的计划创建一个文档或一个 GitHub issue,这样如果实现(步骤 3)不符合你的要求,你可以重置到这个点。
让 Claude 用代码实现其解决方案。这也是一个好时机,让它在实现方案的各个部分时明确验证其解决方案的合理性。
让 Claude 提交结果并创建一个 pull request。如果相关,这也是让 Claude 更新任何 README 或变更日志,解释它刚刚做了什么的好时机。
步骤 #1-#2 至关重要——没有它们,Claude 往往会直接跳到编码解决方案。虽然有时这就是你想要的,但要求 Claude 先研究和计划,对于需要更深入前期思考的问题,可以显著提高性能。
b. 编写测试、提交;编码、迭代、提交 (Write tests, commit; code, iterate, commit)
当 Claude 有一个明确的目标可以迭代时——一个视觉模型、一个测试用例或其他类型的输出——它的表现最好。通过提供像测试这样的预期输出,Claude 可以进行更改、评估结果,并逐步改进直到成功。
c. 编写代码、截图结果、迭代 (Write code, screenshot result, iterate)
与测试工作流程类似,你可以为 Claude 提供视觉目标:
给 Claude 一种截取浏览器屏幕截图的方法(例如,使用Puppeteer MCP 服务器、iOS 模拟器 MCP 服务器,或者手动复制/粘贴截图给 Claude)。
**通过复制/粘贴或拖放图像,或者提供图像文件路径,给 Claude 一个视觉模型 (visual mock)**。
让 Claude 用代码实现设计,截取结果的屏幕截图,并迭代直到其结果与模型匹配。
当你满意时,让 Claude 提交。
像人类一样,Claude 的输出通常会通过迭代显著改善。虽然第一个版本可能不错,但经过 2-3 次迭代后,通常会看起来好得多。给 Claude 工具让它能看到自己的输出,以获得最佳结果。
图:在隔离的容器中使用安全 YOLO 模式
d. 安全 YOLO 模式 (Safe YOLO mode)
你可以不监督 Claude,而是使用claude --dangerously-skip-permissions来绕过所有权限检查,让 Claude 不间断地工作直到完成。这对于修复 lint 错误或生成样板代码等工作流程非常有效。
警告:让 Claude 运行任意命令是有风险的,可能导致数据丢失、系统损坏甚至数据泄露(例如,通过提示注入攻击)。为了最小化这些风险,请在没有互联网访问的容器中使用--dangerously-skip-permissions。你可以遵循这个使用 Docker Dev Containers 的参考实现。
e. 代码库问答 (Codebase Q&A)
在接触新的代码库时,使用 Claude Code 进行学习和探索。你可以像在结对编程时问项目中的其他工程师一样,向 Claude 提出各种问题。Claude 可以智能地搜索代码库来回答一般性问题,例如:
日志记录是如何工作的?
如何创建一个新的 API 端点?
foo.rs 文件第 134 行的async move { ... }是做什么的?
CustomerOnboardingFlowImpl处理了哪些边缘情况?
为什么我们在第 333 行调用foo()而不是bar()?
baz.py文件第 334 行在 Java 中的等价实现是什么?
在 Anthropic,以这种方式使用 Claude Code 已成为我们的核心入职工作流程,显著缩短了熟悉项目的时间,并减轻了其他工程师的负担。无需特殊的提示!只需提问,Claude 就会探索代码以找到答案。
图:使用 Claude 编写 git commit 消息
f. 使用 Claude 与 git 交互
Claude 可以有效地处理许多 git 操作。许多 Anthropic 工程师使用 Claude 来处理 90% 以上的git交互:
搜索git历史记录以回答诸如“v1.2.3 版本包含了哪些更改?”、“这个特定功能是谁负责的?”或“为什么这个 API 是这样设计的?”等问题。明确提示 Claude 查找 git 历史记录来回答这类查询很有帮助。
对开放的 issue 进行分类和分流,通过让 Claude 遍历开放的 GitHub issue 来实现。
这消除了记住gh命令行语法的需要,同时自动化了常规任务。
h. 使用 Claude 处理 Jupyter notebook
Anthropic 的研究人员和数据科学家使用 Claude Code 来读取和编写 Jupyter notebook。Claude 可以解释输出,包括图像,为探索和与数据交互提供了一种快速的方法。没有必需的提示或工作流程,但我们推荐的一个工作流程是在 VS Code 中并排打开 Claude Code 和一个.ipynb文件。
你也可以让 Claude 在向同事展示之前清理或美化你的 Jupyter notebook。明确告诉它让 notebook 或其数据可视化“美观 (aesthetically pleasing)”往往有助于提醒它,它正在为人类的观看体验进行优化。
4. 优化你的工作流程
以下建议适用于所有工作流程:
a. 在指令中要具体
Claude Code 的成功率会随着更具体的指令而显著提高,尤其是在初次尝试时。预先给出明确的方向可以减少后续修正的需要。
使用 git worktrees 使你能够同时在项目的不同部分运行多个 Claude 会话,每个会话都专注于其独立的任务。例如,你可能让一个 Claude 重构你的身份验证系统,而另一个则构建一个完全不相关的数据可视化组件。由于任务不重叠,每个 Claude 都可以全速工作,而无需等待对方的更改或处理合并冲突: