2025年6月7日 作者 D.Sheep 0

Claude Code:代理式编程最佳实践


Claude Code 是一款用于代理式编码的命令行工具。本帖汇总了在不同代码库、语言与环境中实践验证有效的技巧与窍门。

我们最近发布了 Claude Code——一款面向代理式编码的 CLI。作为一项研究项目,Claude Code 为 Anthropic 的工程师与研究人员提供了一种更贴近本地开发流程的方式,将 Claude 集成进日常编码工作。

Claude Code 故意设计得低抽象、无预设,几乎像直接访问大模型一样,不强加特定工作流。这种设计理念造就了灵活、可定制、可脚本化且安全的强力工具。不过,灵活性也意味着第一次接触代理式编码工具的工程师需要一段学习曲线——直到摸索出自己的最佳实践为止。

本文总结了 Anthropic 内部团队与外部用户在使用 Claude Code 时行之有效的一般模式。它们并非定律,而是起点;欢迎你大胆实验,找到最适合自己的方式!

想了解更详细的内容?请查看 claude.ai/code 的完整文档,其中涵盖本文提到的全部功能,并提供更多示例、实现细节与高级技巧。


1. 自定义你的环境

Claude Code 作为代理式助手,会自动将上下文拉入提示词。这虽耗时耗 token,但通过调优环境可显著优化。

a. 创建 

CLAUDE.md

CLAUDE.md 会在会话启动时自动纳入上下文,适合记录:

  • 常用 bash 命令
  • 核心文件与工具函数
  • 代码风格指南
  • 测试指令
  • 仓库规范(分支命名、merge vs rebase 等)
  • 开发环境配置(如 pyenv、编译器)
  • 本项目特有的异常行为或警告
  • 其他希望 Claude “记住” 的信息

文件无固定格式,保持简洁、可读。例如:

# Bash 命令
- npm run build: 构建项目
- npm run typecheck: 运行类型检查

# 代码风格
- 使用 ES modules(import/export),避免 CommonJS(require)
- 尽量使用解构式导入(import { foo } from 'bar')

# 工作流
- 完成一系列改动后务必运行 typecheck
- 为提升速度,优先单测而非完整测试套件

CLAUDE.md 可放置的位置:

  1. 仓库根目录(最常见)。命名 CLAUDE.md 并提交至 git(推荐)或命名 CLAUDE.local.md 并加入 .gitignore。
  2. 运行 claude 目录的任意父级(适合 monorepo)。
  3. 运行目录的子目录。Claude 会在访问子目录文件时按需拉取对应 CLAUDE.md。
  4. 用户主目录 ~/.claude/CLAUDE.md(对所有会话生效)。

执行 /init 命令可自动生成 CLAUDE.md。

b. 打磨 

CLAUDE.md

CLAUDE.md 会直接进入 Claude 的提示词,应像常用 prompt 一样不断迭代。常见误区是一次性塞入大量内容却不检验效果。可手动编辑,或按 # 键让 Claude 将指令自动写入对应 CLAUDE.md,并将文件随提交共享给团队。Anthropic 工程师常用 prompt improver 并通过 “IMPORTANT”“YOU MUST” 等强调词提升遵循度。

c. 管理允许的工具列表

默认任何可能修改系统的操作(写文件、运行 bash、MCP 工具等)都会请求确认,以保证安全。你可通过以下四种方式调整 allowlist:

  1. 弹窗提示时选择 Always allow
  2. 会话中执行 /permissions 添加/移除工具
  3. 编辑 .claude/settings.json 或 ~/.claude.json(建议将前者纳入版本控制以团队共享)
  4. CLI 参数 –allowedTools(仅对本次会话生效)

d. 使用 GitHub 时安装 

gh

 CLI

Claude 了解 gh CLI,可用其创建 issue、PR、读取评论等。若未安装,Claude 仍可调用 GitHub API 或 MCP 服务器。


2. 让 Claude 拥有更多工具

Claude 继承你的 shell 环境,可像你对自己一样为其编写脚本与函数,也能通过 MCP 或 REST API 接入复杂工具。

a. 结合 bash 工具

Claude 天生会用常见 Unix 工具与 gh,但对自制脚本并不熟悉。需:

  1. 告诉 Claude 工具名及示例
  2. 让 Claude 运行 –help 阅读文档
  3. 在 CLAUDE.md 记录常用工具

b. 结合 MCP

Claude Code 既是 MCP 服务器也是客户端,能通过三种方式连接外部 MCP 服务器:

  • 项目配置
  • 全局配置
  • .mcp.json(随仓库共享)

调试 MCP 时可加 –mcp-debug。

c. 自定义 Slash 命令

将 Markdown 模板存于 .claude/commands,即可通过 / 调用。例如 fix-github-issue.md 定义后,可用 /project:fix-github-issue 1234 自动修复 Issue #1234。个人命令可放 ~/.claude/commands,在所有会话可用。


3. 常见工作流

Claude Code 不强加流程,但社区沉淀出多种高效模式:

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

  1. 让 Claude 阅读相关文件/URL/图片,但不要写代码
  2. 要求制定方案,用 think / think hard / ultrathink 提升思考预算
  3. 实现代码并自检
  4. 提交并创建 PR,更新文档

前两步可显著提升深度问题的成功率。

b. 先写测试再写代码(TDD)

  1. 让 Claude 编写期望的输入/输出测试,并确认失败
  2. 提交测试
  3. 指示 Claude 编码至测试通过,反复迭代
  4. 提交实现

c. 写代码 → 截图结果 → 迭代

为视觉任务提供设计稿截图或自动截屏,让 Claude 比对并改进,直至满意。

d. “安全 YOLO” 模式

在受限、离线的容器里,用 claude –dangerously-skip-permissions 跳过所有确认,适用于批量修 lint 或生成模板。

e. 代码问答 / f. Git 交互 / g. GitHub 交互 / h. Jupyter Notebook 支持

Claude 能:

  • 答代码库问题,加速新人上手
  • 编写提交信息、处理 rebase 冲突
  • 创建 PR、修复 CI、整理 Issue
  • 阅读/写入 .ipynb,并美化可视化

4. 优化技巧

  • 指令具体:越具体越准;模糊指令常需回退修正。
  • 加入图片:截图、拖拽、文件路径皆可,提升 UI 迭代效果。
  • 明确文件:用 Tab 补全文件名,方便 Claude 精准定位。
  • 提供 URL:贴链接并在 /permissions 允许域名,避免重复确认。
  • 及时纠偏:用计划、Escape、双击 Escape 回溯、undo、/clear 重置上下文。
  • 用清单/草稿:大型任务让 Claude 生成 Markdown 清单逐项勾选。
  • 多种数据输入:粘贴、管道、bash、读取文件或 URL。

5. 无头模式自动化基础设施

在 CI、预提交钩子等非交互场景,用 claude -p “<提示>” –output-format stream-json。常见用法:

  • Issue 分类:监听 GitHub 事件,由 Claude 自动贴标签
  • 主观 Lint:检测拼写、陈旧注释、误导命名等

6. 多 Claude 协作

a. 编写 vs 审核

让一个 Claude 写代码,另一个审核/写测试,再第三个整合反馈。多实例隔离上下文往往优于单实例包揽。

b. 多仓库副本 / c. git worktree

在不同目录或 worktree 启动多会话并行作业,各自独立,减少等待与冲突。

d. 无头模式流水线

用脚本批量调用 Claude:

  1. 生成任务清单
  2. 循环调用 claude -p 处理每个任务
  3. –verbose 调试,生产环境关闭

结语与致谢

本文作者 Boris Cherny,汇聚了 Claude Code 用户社区的最佳实践。特别感谢 Daisy Hollman、Ashwin Bhat、Cat Wu、Sid Bidasaria、Cal Rueb、Nodir Turakulov、Barry Zhang、Drew Hodun 及众多 Anthropic 工程师的宝贵经验与建议。