在 AI 辅助编程工具快速发展的今天,开发者面临一个共同的挑战:如何从”能用”到”用好”?Claude Code 作为 Anthropic 推出的终端优先的自主 AI 编程代理,凭借其强大的推理能力和 200k+ token 的上下文窗口,已经成为处理复杂代码任务的利器。但工具再强大,也需要正确的使用方式才能发挥最大价值。
本文将系统性地介绍 Claude Code 的最佳实践与高级技巧,帮助你从基础使用提升到专家级别,真正释放 AI 辅助编程的生产力。
Claude Code 核心理解
什么是 Claude Code
Claude Code 是 Anthropic 开发的自主编程代理(Agentic Coding Tool),而非传统的代码补全工具。它的核心特点包括:
- 终端优先:通过
claude 命令在终端中交互,也支持 Web、桌面应用、IDE 插件等多种形式
- 自主执行:能够独立规划任务、执行多文件操作、运行命令、验证结果
- 大上下文:支持 200k+ token 的上下文窗口,适合处理大型代码库
- 多模态能力:不仅限于编程,还能处理文档编写、构建运行、文件搜索、主题研究等任何可从命令行执行的任务
Claude Code vs Cursor:选择指南
理解两者的差异有助于选择合适的工具:
| 维度 |
Claude Code |
Cursor |
| 核心定位 |
终端自主代理 |
AI 增强 IDE |
| 工作方式 |
探索式、并行执行 |
聚焦式、精准控制 |
| 最佳场景 |
复杂重构、架构决策、多文件任务 |
快速原型、MVP 开发、实时补全 |
| 上下文窗口 |
200k+ tokens |
相对较小 |
| 学习曲线 |
需要理解 Agent 工作方式 |
熟悉 VS Code 即可上手 |
| 定价 |
Pro 订阅 $17-20/月,无免费版 |
有免费 Hobby 计划 |
选择建议:
- 需要处理大型代码库的复杂重构 → Claude Code
- 快速迭代和原型开发 → Cursor
- 深度代码审查和理解 → Cursor
- 并行处理多个独立任务 → Claude Code
两者并非互斥,很多团队同时使用两者,根据任务特点灵活选择。
环境配置与初始化
快速安装
1 2 3 4 5 6 7 8
| brew install anthropics/claude/claude
curl -fsSL https://code.claude.com/install.sh | sh
winget install Anthropic.Claude
|
安装后运行 claude 命令即可开始使用,首次运行需要登录 Claude 账号(需要 Pro、Max、Teams 或 Enterprise 订阅)。
创建 CLAUDE.md:项目上下文的关键
CLAUDE.md 是 Claude Code 最重要的配置文件,它为 Claude 提供持久化的项目上下文。这个文件应该放在项目根目录或父目录(适用于 monorepo)。
CLAUDE.md 应该包含什么
1 2 3 4 5 6 7 8 9 10 11 12 13
| # CLAUDE.md
This file provides guidance to Claude Code when working with code in this repository.
## Project Overview [项目简介、技术栈、架构概述]
## Common Commands ```bash # Development npm run dev # Start dev server npm run test # Run tests npm run build # Production build
|
Code Style Guidelines
- Use TypeScript strict mode
- Follow ESLint rules in .eslintrc.js
- Prefer functional components with hooks
- Write tests for all business logic
Testing Instructions
- Unit tests:
npm run test:unit
- E2E tests:
npm run test:e2e
- Coverage threshold: 80%
Repository Etiquette
- Create feature branches from
main
- Squash commits before merging
- Update CHANGELOG.md for user-facing changes
Developer Environment Setup
- Node.js 18+
- PostgreSQL 14+
- Redis for caching
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #### CLAUDE.md 最佳实践
1. **保持更新**:随着项目演进及时更新 CLAUDE.md 2. **团队共识**:CLAUDE.md 应该反映团队的开发规范,纳入代码审查流程 3. **分层配置**:Monorepo 可以在根目录放通用配置,子项目放特定配置 4. **避免过度详细**:聚焦高频操作和容易出错的地方,不要写成完整文档
### 环境优化配置
#### 跳过权限提示(谨慎使用)
```bash # 开发环境快速迭代时可以跳过权限确认 claude --dangerously-skip-permissions
# 或设置别名 alias cc='claude --dangerously-skip-permissions'
|
⚠️ 警告:此选项会让 Claude 直接执行文件修改、命令运行等操作,仅在信任的项目中使用。
企业代理配置
1 2 3 4 5 6
| export HTTP_PROXY=http://proxy.company.com:8080 export HTTPS_PROXY=http://proxy.company.com:8080
claude config set proxy http://proxy.company.com:8080
|
核心工作流程与最佳实践
黄金法则:探索 → 规划 → 编码
不要直接让 Claude 开始编码,这是最常见的误区。正确的流程是:
1. 探索阶段(Exploration)
1 2 3 4 5 6 7 8
| claude "分析这个项目的认证流程实现"
claude "找出所有使用 Redis 缓存的地方"
claude "这个 UserService 被哪些模块依赖?"
|
2. 规划阶段(Planning)
1 2 3 4 5 6
| claude "我需要添加用户登录限流功能,请先制定一个实现计划"
|
为什么规划重要?
- 让你有机会在代码修改前调整方向
- Claude 会考虑更全面的影响范围
- 避免返工和错误修改
3. 编码阶段(Coding)
1 2 3 4 5
| claude "按照刚才的计划实现登录限流功能"
claude "实现第一步后,写个测试验证是否工作"
|
使用 Plan Mode 进行安全分析
Plan Mode 是一个只读模式,适合在不修改代码的情况下进行深度分析:
1 2 3 4 5 6 7 8
| claude plan "分析这个重构方案的影响范围"
- 复杂重构前的影响分析 - 代码审查和安全检查 - 架构决策评估 - 性能瓶颈诊断
|
Plan Mode 会给出详细的分析报告,但不会修改任何文件,让你可以安全地探索各种可能性。
频繁使用 /clear 保持会话清晰
长对话会让 AI 代理变得不可预测,这是所有 LLM 的共性问题。最佳实践:
1 2 3 4 5 6 7 8
| /clear
/clear
/clear
|
何时应该 /clear?
- ✅ 完成一个独立功能
- ✅ 开始新的不相关任务
- ✅ Claude 的回复开始偏离预期
- ✅ 上下文已经很长(>10 轮对话)
何时不应该 /clear?
- ❌ 正在进行多步骤的复杂任务中途
- ❌ 需要 Claude 记住之前的决策和上下文
- ❌ 正在调试一个问题的过程中
提供丰富的上下文
好的提示词 = 清晰的意图 + 丰富的上下文
差的提示词示例
1 2 3 4 5 6 7 8
| claude "优化这个函数"
claude "修复这个 bug"
claude "添加缓存功能"
|
好的提示词示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| claude "优化 src/utils/parser.ts 中的 parseUserData 函数, 目标是将处理 10000 条记录的时间从 5 秒降低到 1 秒以内。 当前瓶颈是 JSON.parse 调用过于频繁。"
claude "修复登录失败的问题。错误信息: Error: Invalid token signature at jwt.verify (auth.ts:45) 环境:Node.js 18, JWT 库版本 9.0.0 复现步骤:使用过期 token 调用 /api/user 接口"
claude "为 UserService 添加 Redis 缓存。 要求: 1. 缓存用户基本信息,TTL 5分钟 2. 提供缓存失效机制 3. 添加单元测试验证缓存命中率 4. 实现后运行 npm test 验证所有测试通过"
|
让 Claude 验证自己的工作
不要假设 Claude 的输出是正确的,而是给它验证的方式:
1 2 3 4 5 6 7 8 9 10 11
| claude "实现用户注册功能,完成后运行 npm test 验证"
claude "重构这个组件,完成后运行 eslint 检查是否有错误"
claude "修改 Webpack 配置,完成后运行 npm run build 确保构建成功"
claude "添加新的 API 端点,完成后用 curl 测试并展示响应"
|
Claude 会自动执行这些验证命令,并根据结果调整代码,直到验证通过。
高级技巧与模式
使用 Subagents 进行任务委派
Subagent 是 Claude Code 的杀手级特性,允许你将复杂任务分解为并行的子任务:
1 2 3 4 5 6 7 8
| claude "我需要重构整个认证模块,包括: 1. 将 JWT 验证逻辑从 controller 移到 middleware 2. 添加 refresh token 机制 3. 更新所有相关的单元测试 4. 更新 API 文档
请创建 subagents 并行处理这些任务"
|
Claude 会自动:
- 创建多个 subagent
- 为每个 subagent 分配明确的任务
- 监控各个 subagent 的进度
- 整合所有结果
Subagent 适用场景:
- ✅ 多个独立模块的修改
- ✅ 大规模重构
- ✅ 并行的测试编写
- ✅ 多文件的格式化和清理
Subagent 不适用场景:
- ❌ 有强依赖关系的任务(必须按顺序执行)
- ❌ 需要频繁交互的任务
- ❌ 简单的单文件修改
使用 Git Worktrees 进行并行开发
Git Worktrees 允许你在同一个仓库的不同分支上同时工作,结合 Claude Code 可以实现真正的并行开发:
1 2 3 4 5 6 7 8 9 10
| git worktree add ../myproject-feature-auth feature/auth
cd ../myproject-feature-auth claude "实现 OAuth2 登录功能"
cd ../myproject claude "修复用户头像上传的 bug"
|
Worktrees 的优势:
- 无需频繁切换分支
- 可以同时运行多个 Claude 会话
- 避免未提交代码的冲突
- 方便对比不同实现方案
使用 Extended Thinking Mode
对于特别复杂的问题,可以启用扩展思考模式,让 Claude 进行更深入的分析:
1 2 3
| claude --extended-thinking "分析这个分布式事务的死锁问题, 考虑所有可能的竞态条件和解决方案"
|
Extended Thinking Mode 会:
- 花费更多时间分析问题
- 考虑更多边缘情况
- 提供更详细的推理过程
- 适合架构级别的复杂决策
何时使用:
- 复杂的并发问题
- 性能优化决策
- 架构重构方案
- 安全漏洞分析
Checkpointing:时光机功能
Checkpointing 允许你保存会话状态并随时回退:
1 2 3 4 5 6 7 8 9 10 11
| /checkpoint save "完成用户认证基础功能"
claude "添加多因素认证"
/checkpoint restore "完成用户认证基础功能"
/checkpoint list
|
Checkpointing 最佳实践:
- 在每个重要里程碑创建检查点
- 使用描述性的检查点名称
- 尝试激进方案前先创建检查点
- 定期清理不再需要的检查点
Model Context Protocol (MCP) 集成
什么是 MCP
MCP(Model Context Protocol)是 AI 应用的”USB-C 接口”,提供标准化的方式让 Claude Code 连接外部系统:
- 数据源:本地文件、数据库、API
- 工具:搜索引擎、计算器、代码分析工具
- 工作流:GitHub、Sentry、Jira、Slack
配置 MCP 服务器
MCP 服务器通过 JSON 配置文件连接:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| { "github": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_TOKEN": "your_token_here" } }, "postgres": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-postgres"], "env": { "DATABASE_URL": "postgresql://localhost/mydb" } }, "figma": { "type": "http", "url": "https://mcp.figma.com", "headers": { "Authorization": "Bearer your_figma_token" } } }
|
MCP 实际应用场景
场景 1:从 GitHub Issue 生成代码
1 2
| claude "读取 GitHub Issue #123,根据需求实现对应功能"
|
场景 2:数据库驱动开发
1 2 3
| claude "连接到生产数据库(只读),分析 users 表的查询性能问题, 找出慢查询并优化索引"
|
场景 3:从设计稿生成代码
1 2
| claude "从 Figma 设计稿 'User Dashboard' 生成 React 组件"
|
常用 MCP 服务器
| MCP 服务器 |
用途 |
安装 |
@modelcontextprotocol/server-github |
GitHub 集成 |
npx -y @modelcontextprotocol/server-github |
@modelcontextprotocol/server-postgres |
PostgreSQL 数据库 |
npx -y @modelcontextprotocol/server-postgres |
@modelcontextprotocol/server-sentry |
错误追踪 |
npx -y @modelcontextprotocol/server-sentry |
@modelcontextprotocol/server-filesystem |
文件系统访问 |
npx -y @modelcontextprotocol/server-filesystem |
完整的 MCP 服务器列表:https://github.com/modelcontextprotocol/servers
自定义与扩展
Hooks:自动化工作流
Hooks 是在 Claude Code 生命周期特定点执行的 Shell 命令,提供确定性的自动化控制:
创建 Hooks 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| { "pre-edit": { "command": "npm run lint", "description": "Run linter before editing" }, "post-edit": { "command": "npm run format", "description": "Auto-format after editing" }, "pre-commit": { "command": "npm test", "description": "Run tests before commit" }, "on-error": { "command": "notify-send 'Claude Code Error' '$ERROR_MESSAGE'", "description": "Desktop notification on error" } }
|
Hooks 应用场景
- 自动格式化:每次编辑后运行 Prettier
- 自动测试:提交前运行测试套件
- 通知集成:任务完成后发送 Slack 通知
- 日志记录:记录所有 Claude 操作到审计日志
- 自定义权限:根据文件路径实现细粒度权限控制
Skills:扩展 Claude 的能力
Skills 是 Claude Code 最强大的扩展机制之一,它允许你创建可重用的指令集,让 Claude 自动获得特定领域的知识和能力。
什么是 Skills
Skills 是遵循 Agent Skills 开放标准的扩展,通过创建 SKILL.md 文件来定义。Claude 会:
- 自动发现:在相关场景下自动加载 Skills
- 手动调用:通过
/skill-name 命令直接调用
- 跨工具兼容:Skills 标准可在多个 AI 工具中使用
创建第一个 Skill
让我们创建一个代码解释 Skill,教会 Claude 用可视化图表和类比来解释代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| mkdir -p ~/.claude/skills/explain-code
cat > ~/.claude/skills/explain-code/SKILL.md << 'EOF' --- name: explain-code description: 用可视化图表和类比解释代码。当用户询问"这段代码如何工作"或需要理解代码逻辑时使用。 ---
当解释代码时,始终包含以下内容:
将代码与日常生活中的事物进行比较,帮助理解抽象概念。
使用 ASCII 艺术展示流程、结构或关系:
|
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 输入数据 │ ──> │ 处理逻辑 │ ──> │ 输出结果 │
└─────────┘ └─────────┘ └─────────┘
1 2 3 4 5 6 7 8 9
| ## 3. 逐步讲解 分步骤解释代码执行过程,标注关键决策点。
## 4. 指出常见陷阱 说明容易出错的地方或常见误解。
保持解释对话化,对于复杂概念使用多个类比。 EOF
|
Skill 存放位置
Skills 可以放在不同位置,影响其作用范围:
| 位置 |
路径 |
适用范围 |
| 企业级 |
通过管理配置部署 |
组织内所有用户 |
| 个人级 |
~/.claude/skills/<skill-name>/SKILL.md |
你的所有项目 |
| 项目级 |
.claude/skills/<skill-name>/SKILL.md |
当前项目 |
| 插件级 |
<plugin>/skills/<skill-name>/SKILL.md |
插件启用的地方 |
优先级:企业级 > 个人级 > 项目级。插件 Skills 使用 plugin-name:skill-name 命名空间,不会冲突。
Skill 结构最佳实践
基础结构:
1 2 3 4 5 6 7 8
| --- name: skill-name description: 简洁描述 Skill 的功能和使用场景 ---
# Skill 主体内容
[具体的指令和指导]
|
高级结构(支持文件):
1 2 3 4 5 6 7
| my-skill/ ├── SKILL.md # 主指令(必需) ├── reference.md # 详细参考文档(按需加载) ├── examples.md # 使用示例(按需加载) └── scripts/ ├── validate.sh # 验证脚本(可执行) └── helper.py # 辅助脚本
|
渐进式披露模式:
SKILL.md 作为概览,指向详细资料:
1 2 3 4 5 6 7 8
| # PDF 处理 Skill
## 快速开始 使用 pdfplumber 提取文本: ```python import pdfplumber with pdfplumber.open("file.pdf") as pdf: text = pdf.pages[0].extract_text()
|
高级功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Claude 只在需要时才加载这些额外文件,节省 token。
#### Skill 配置选项
通过 frontmatter 控制 Skill 行为:
```yaml --- name: deploy description: 部署应用到生产环境 disable-model-invocation: true # 仅允许手动调用 allowed-tools: Bash(*) # 限制可用工具 context: fork # 在独立上下文中运行 agent: Explore # 指定使用的 agent 类型 ---
|
关键配置项:
| 配置项 |
说明 |
使用场景 |
disable-model-invocation: true |
禁止 Claude 自动调用 |
有副作用的操作(部署、提交) |
user-invocable: false |
从菜单隐藏,仅 Claude 可用 |
背景知识类 Skills |
allowed-tools |
限制可用工具 |
只读模式、安全限制 |
context: fork |
在子 agent 中运行 |
隔离执行、并行任务 |
实用 Skill 示例
示例 1:Git Commit 消息生成器
1 2 3 4 5 6 7 8 9 10
| --- name: commit-message description: 分析 git diff 生成规范的 commit 消息。当用户需要提交代码或询问如何写 commit 消息时使用。 ---
# Commit 消息生成器
## 格式规范 遵循 Conventional Commits 标准:
|
():