Claude Code 是 Anthropic 推出的 AI 驱动编程助手,它能理解整个代码库,通过自然语言命令帮助开发者构建功能、修复 bug 和自动化开发任务。与传统的代码补全工具不同,Claude Code 采用 Agent 架构,可以跨多个文件和工具自主完成复杂任务。
目录
什么是 Claude Code?
Claude Code 是一个智能编程助手,它直接集成到你的开发环境中,无需额外的服务器或复杂配置。通过理解你的整个代码库,Claude Code 可以执行日常任务、解释复杂代码、处理 Git 工作流,并进行多文件编辑。
核心特点
- 全代码库理解:分析整个项目结构和代码关系,而不仅仅是当前文件
- 多文件协同编辑:跨文件进行协调一致的修改,保持代码一致性
- 自主任务执行:从问题分析到测试验证的完整流程,无需人工干预每一步
- 自然语言交互:用日常语言描述需求即可,无需学习复杂命令
- 多平台支持:终端、VS Code、JetBrains、桌面应用和 Web 全覆盖
- 可扩展架构:通过 MCP、Skills、Hooks 等机制扩展功能
与传统工具的区别
传统的代码补全工具(如 Copilot)主要基于当前文件的上下文进行预测,而 Claude Code 采用完全不同的方法:
- 全局视野:理解整个项目的架构和依赖关系
- 主动执行:不仅生成代码,还能运行命令、执行测试、提交代码
- 多步骤推理:将复杂任务分解为多个步骤,自主完成
- 工具集成:可以使用文件操作、搜索、命令执行、Web 访问等多种工具
快速开始
系统要求
使用 Claude Code 之前,确保你的系统满足以下要求:
- 操作系统:macOS、Linux、Windows(WSL 或原生)
- 网络连接:需要访问 Anthropic API
- Claude 订阅:大多数功能需要付费订阅(Pro、Max、Team 或 Enterprise)
- Git:Windows 用户需要安装 Git for Windows
安装方式
Claude Code 提供多种安装方式,选择适合你的平台:
1. 终端 CLI(推荐)
终端 CLI 是功能最完整的版本,支持直接在命令行中编辑文件、运行命令和管理整个项目。
macOS、Linux、WSL:
curl -fsSL https://claude.ai/install.sh | bash
Windows PowerShell:
irm https://claude.ai/install.ps1 | iex
Windows CMD:
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
注意:Windows 需要先安装 Git for Windows。
Homebrew(macOS):
brew install --cask claude-code
WinGet(Windows):
winget install Anthropic.ClaudeCode
安装完成后,在任何项目目录中运行:
claude
首次使用时会提示登录。登录后即可开始使用。
2. VS Code 扩展
VS Code 扩展提供内联差异显示、@-提及、计划审查和对话历史记录。
安装方法:
- 在 VS Code 扩展市场搜索 “Claude Code” 并安装
- 或在扩展视图(Cmd+Shift+X / Ctrl+Shift+X)中搜索
- 也支持 Cursor 编辑器
安装后,打开命令面板(Cmd+Shift+P / Ctrl+Shift+P),输入 “Claude Code”,选择 “Open in New Tab”。
3. 桌面应用
独立应用程序,可在 IDE 或终端之外运行 Claude Code。支持可视化审查差异、并行运行多个会话、安排定期任务和启动云会话。
下载地址:
安装后,启动 Claude,登录,然后点击 Code 标签开始编码。需要付费订阅。
4. Web 版本
在浏览器中运行 Claude Code,无需本地设置。适合启动长时间运行的任务、处理本地没有的仓库或并行运行多个任务。支持桌面浏览器和 Claude iOS 应用。
访问 claude.ai/code 即可开始使用。
5. JetBrains 插件
支持 IntelliJ IDEA、PyCharm、WebStorm 和其他 JetBrains IDE,提供交互式差异查看和选择上下文共享。
从 JetBrains Marketplace 安装 Claude Code 插件并重启 IDE。
选择合适的环境
每个环境都连接到相同的 Claude Code 引擎,因此你的 CLAUDE.md 文件、设置和 MCP 服务器在所有环境中都可以使用。
| 需求 | 最佳选择 |
|---|---|
| 从手机或其他设备继续本地会话 | Remote Control |
| 在移动设备上启动任务 | Web 或 Claude iOS 应用 |
| 自动化 PR 审查和问题分类 | GitHub Actions 或 GitLab CI/CD |
| 每个 PR 自动代码审查 | GitHub Code Review |
| 从 Slack 路由 bug 报告到 PR | Slack 集成 |
| 调试实时 Web 应用 | Chrome 扩展 |
| 为自己的工作流构建自定义 Agent | Agent SDK |
工作原理
Agent 循环架构
Claude Code 采用 Agent 架构,当你给 Claude 一个任务时,它会经历三个阶段:收集上下文、执行操作、验证结果。这些阶段相互融合,Claude 会根据任务需求灵活调整。
1. 收集上下文
Claude 首先需要理解你的代码库和任务需求:
- 搜索文件:使用模糊搜索和正则表达式查找相关文件
- 读取代码:分析文件内容、理解代码结构
- 探索依赖:追踪函数调用、类继承、模块导入
- 查看 Git 状态:了解当前分支、未提交的更改
2. 执行操作
基于收集的上下文,Claude 采取行动:
- 编辑文件:修改代码、添加功能、修复 bug
- 运行命令:执行测试、构建项目、运行脚本
- 创建文件:生成新的源文件、配置文件、文档
- Web 搜索:查找文档、错误信息、最佳实践
3. 验证结果
Claude 会检查自己的工作:
- 运行测试:确保修改没有破坏现有功能
- 检查错误:查看编译错误、类型错误、警告
- 审查差异:比较修改前后的代码
- 迭代改进:根据结果调整方法
这个循环会根据任务复杂度重复多次。一个简单的问题可能只需要收集上下文,而一个 bug 修复可能需要多次循环所有三个阶段。
模型与工具
Claude Code 的 Agent 能力由两个核心组件驱动:推理模型和执行工具。
推理模型
Claude Code 使用 Claude 模型来理解代码和推理任务:
- Sonnet:处理大多数编码任务,速度快、效果好
- Opus:提供更强的推理能力,适合复杂的架构决策
可以在会话期间使用 /model 命令切换,或启动时指定:
claude --model opus
内置工具
工具让 Claude Code 具备 Agent 能力。没有工具,Claude 只能生成文本;有了工具,Claude 可以执行操作。
工具分为五大类:
1. 文件操作
- 读取文件内容
- 编辑代码
- 创建新文件
- 重命名和重组文件
2. 搜索
- 按模式查找文件
- 使用正则表达式搜索内容
- 探索代码库结构
3. 执行
- 运行 Shell 命令
- 启动服务器
- 运行测试
- 使用 Git
4. Web 访问
- 搜索网络
- 获取文档
- 查找错误信息
5. 代码智能
- 查看类型错误和警告
- 跳转到定义
- 查找引用(需要代码智能插件)
Claude 根据你的提示和学到的信息选择使用哪些工具。例如,当你说”修复失败的测试”时,Claude 可能会:
- 运行测试套件查看失败情况
- 读取错误输出
- 搜索相关源文件
- 读取这些文件理解代码
- 编辑文件修复问题
- 再次运行测试验证
每次工具使用都会给 Claude 提供新信息,指导下一步操作。这就是 Agent 循环的实际应用。
Claude 可以访问什么
当你在目录中运行 claude 时,Claude Code 获得以下访问权限:
你的项目
- 目录和子目录中的文件
- 经你许可的其他位置的文件
你的终端
- 任何你可以运行的命令:构建工具、git、包管理器、系统工具、脚本
- 如果你能从命令行做到,Claude 也能做到
你的 Git 状态
- 当前分支
- 未提交的更改
- 最近的提交历史
CLAUDE.md 文件
一个 Markdown 文件,用于存储项目特定的指令、约定和上下文,Claude 在每个会话中都会读取。
自动记忆
Claude 在工作时自动保存的学习内容,如项目模式和你的偏好。每个会话开始时会加载 MEMORY.md 的前 200 行。
你配置的扩展
- MCP 服务器:连接外部服务
- Skills:工作流程和知识库
- Subagents:委托的工作
- Chrome 扩展:浏览器交互
因为 Claude 可以看到整个项目,所以它可以跨项目工作。当你要求 Claude “修复身份验证 bug” 时,它会搜索相关文件、读取多个文件理解上下文、跨文件进行协调编辑、运行测试验证修复,如果你要求还会提交更改。
这与只能看到当前文件的内联代码助手不同。
执行环境和界面
执行环境
Claude Code 在三种环境中运行,每种环境对代码执行位置有不同的权衡:
| 环境 | 代码运行位置 | 使用场景 |
|---|---|---|
| Local(本地) | 你的机器 | 默认选项。完全访问你的文件、工具和环境 |
| Cloud(云端) | Anthropic 管理的虚拟机 | 卸载任务、处理本地没有的仓库 |
| Remote Control(远程控制) | 你的机器,从浏览器控制 | 使用 Web UI 同时保持一切在本地 |
访问界面
你可以通过多种界面访问 Claude Code:
- 终端:全功能 CLI
- 桌面应用:独立应用程序
- IDE 扩展:VS Code、JetBrains
- claude.ai/code:Web 界面
- Remote Control:远程访问本地会话
- Slack:团队协作
- CI/CD:自动化流程
界面决定了你如何查看和交互,但底层的 Agent 循环是相同的。
会话管理
会话保存
Claude Code 在你工作时将对话保存在本地。每条消息、工具使用和结果都会存储,这使得回退、恢复和分叉会话成为可能。在 Claude 进行代码更改之前,它还会快照受影响的文件,以便你可以在需要时恢复。
会话独立性
会话是独立的。每个新会话都以全新的上下文窗口开始,不包含之前会话的对话历史。Claude 可以使用自动记忆跨会话持久化学习内容,你也可以在 CLAUDE.md 中添加自己的持久指令。
跨分支工作
每个 Claude Code 对话都是一个与当前目录绑定的会话。当你恢复时,只会看到该目录的会话。
Claude 看到当前分支的文件。当你切换分支时,Claude 看到新分支的文件,但对话历史保持不变。Claude 记得你讨论的内容,即使在切换后也是如此。
由于会话与目录绑定,你可以使用 git worktrees 运行并行的 Claude 会话,它为各个分支创建单独的目录。
恢复或分叉会话
当你使用 claude --continue 或 claude --resume 恢复会话时,你会从离开的地方继续,使用相同的会话 ID。新消息会附加到现有对话中。你的完整对话历史会恢复,但会话范围的权限不会。你需要重新批准这些权限。
要分叉并尝试不同的方法而不影响原始会话,使用 --fork-session 标志:
claude --continue --fork-session
这会创建一个新的会话 ID,同时保留到该点的对话历史。原始会话保持不变。与恢复一样,分叉的会话不会继承会话范围的权限。
注意:如果你在多个终端中恢复同一个会话,两个终端都会写入同一个会话文件。来自两者的消息会交错,就像两个人在同一个笔记本上写字。不会损坏任何东西,但对话会变得混乱。对于从同一起点开始的并行工作,使用 --fork-session 为每个终端提供自己的干净会话。
上下文窗口管理
上下文窗口的内容
Claude 的上下文窗口包含:
- 对话历史
- 文件内容
- 命令输出
- CLAUDE.md
- 加载的 Skills
- 系统指令
随着工作的进行,上下文会填满。Claude 会自动压缩,但对话早期的指令可能会丢失。将持久规则放在 CLAUDE.md 中,运行 /context 查看什么在占用空间。
上下文填满时
Claude Code 在接近限制时自动管理上下文。它首先清除较旧的工具输出,然后在需要时总结对话。你的请求和关键代码片段会保留;对话早期的详细指令可能会丢失。将持久规则放在 CLAUDE.md 中,而不是依赖对话历史。
要控制压缩期间保留的内容,在 CLAUDE.md 中添加 “Compact Instructions” 部分,或使用焦点运行 /compact(如 /compact focus on the API changes)。
运行 /context 查看什么在占用空间。MCP 服务器会在每个请求中添加工具定义,因此几个服务器在你开始工作之前就可能消耗大量上下文。运行 /mcp 检查每个服务器的成本。
使用 Skills 和 Subagents 管理上下文
除了压缩,你还可以使用其他功能来控制加载到上下文中的内容。
Skills 按需加载:Claude 在会话开始时看到 Skill 描述,但完整内容仅在使用 Skill 时加载。对于手动调用的 Skills,设置 disable-model-invocation: true 以在需要之前将描述排除在上下文之外。
Subagents 获得自己的新上下文:完全独立于你的主对话。他们的工作不会使你的上下文膨胀。完成后,他们返回摘要。这种隔离是 Subagents 帮助长会话的原因。
安全机制
检查点:撤销更改
每次文件编辑都是可逆的。在 Claude 编辑任何文件之前,它会快照当前内容。如果出现问题,按两次 Esc 键回退到之前的状态,或要求 Claude 撤销。
检查点是会话本地的,与 git 分开。它们只覆盖文件更改。影响远程系统(数据库、API、部署)的操作无法检查点,这就是为什么 Claude 在运行具有外部副作用的命令之前会询问。
权限控制
按 Shift+Tab 循环切换权限模式:
- Default(默认):Claude 在文件编辑和 Shell 命令之前询问
- Auto-accept edits(自动接受编辑):Claude 编辑文件无需询问,仍然询问命令
- Plan mode(计划模式):Claude 仅使用只读工具,创建一个你可以在执行前批准的计划
你还可以在 .claude/settings.json 中允许特定命令,这样 Claude 就不会每次都询问。这对于受信任的命令(如 npm test 或 git status)很有用。设置可以从组织范围的策略到个人偏好进行范围限定。
扩展 Claude Code
Claude Code 的内置工具涵盖了大多数编码任务,但你可以通过扩展层自定义它的功能。
扩展功能概览
| 功能 | 作用 | 使用场景 | 示例 |
|---|---|---|---|
| CLAUDE.md | 每个会话加载的持久上下文 | 项目约定、“始终执行 X” 规则 | ”使用 pnpm,不是 npm。提交前运行测试。“ |
| Skills | Claude 可以使用的指令、知识和工作流 | 可重用内容、参考文档、可重复任务 | /deploy 运行部署检查清单;API 文档 Skill 包含端点模式 |
| Subagents | 返回摘要结果的隔离执行上下文 | 上下文隔离、并行任务、专门工作者 | 读取许多文件但仅返回关键发现的研究任务 |
| Agent Teams | 协调多个独立的 Claude Code 会话 | 并行研究、新功能开发、使用竞争假设进行调试 | 同时生成审查者检查安全性、性能和测试 |
| MCP | 连接到外部服务 | 外部数据或操作 | 查询数据库、发布到 Slack、控制浏览器 |
| Hooks | 在事件上运行的确定性脚本 | 可预测的自动化,不涉及 LLM | 每次文件编辑后运行 ESLint |
CLAUDE.md:项目指令
CLAUDE.md 是一个 Markdown 文件,用于存储 Claude 在每个会话中应该知道的项目特定指令。
使用场景:
- 编码约定和风格指南
- 构建和测试命令
- 项目架构说明
- “永远不要做 X” 规则
示例 CLAUDE.md:
# 项目约定
## 包管理器
使用 pnpm,不是 npm 或 yarn。
## 测试
提交前始终运行 `pnpm test`。
## 代码风格
- 使用 TypeScript 严格模式
- 优先使用函数式编程模式
- 所有公共 API 必须有 JSDoc 注释
## 架构
- `/src/components` - React 组件
- `/src/utils` - 工具函数
- `/src/api` - API 客户端代码
最佳实践:
- 保持 CLAUDE.md 在 200 行以下
- 如果增长,将参考内容移到 Skills 或拆分为
.claude/rules/文件 - 使用
/init命令引导创建 CLAUDE.md
Skills:可重用知识和工作流
Skills 是包含知识、工作流或指令的 Markdown 文件。你可以使用 /<name> 命令调用 Skills,或者 Claude 可以在相关时自动加载它们。
Skills 类型:
- 参考 Skills:提供 Claude 在整个会话中使用的知识(如 API 风格指南)
- 操作 Skills:告诉 Claude 执行特定操作(如运行部署工作流的
/deploy)
示例 Skill(deploy.md):
---
name: deploy
description: 部署应用到生产环境
disable-model-invocation: false
---
# 部署工作流
1. 确保所有测试通过:`pnpm test`
2. 构建生产版本:`pnpm build`
3. 检查构建输出大小
4. 运行生产环境检查:`pnpm check:prod`
5. 部署到 Vercel:`vercel --prod`
6. 验证部署成功
7. 通知团队
使用方法:
/deploy
上下文成本:
- 默认情况下,Skill 描述在会话开始时加载,完整内容在使用时加载
- 设置
disable-model-invocation: true的 Skills 在调用之前上下文成本为零
MCP:连接外部服务
Model Context Protocol (MCP) 允许 Claude Code 连接到外部服务和工具。
使用场景:
- 查询数据库
- 发布到 Slack
- 控制浏览器
- 访问 API
- 读取外部数据源
配置 MCP:
MCP 配置文件位于:
- 用户级别:
~/.kiro/settings/mcp.json - 工作区级别:
.kiro/settings/mcp.json
示例配置:
{
"mcpServers": {
"database": {
"command": "uvx",
"args": ["mcp-server-postgres"],
"env": {
"DATABASE_URL": "postgresql://localhost/mydb"
},
"disabled": false,
"autoApprove": []
}
}
}
MCP 与 Skills 的结合:
MCP 提供连接能力,Skills 提供使用知识。例如:
- MCP 服务器连接到数据库
- Skill 记录数据模型、常见查询模式和使用哪些表
Subagents:隔离的工作者
Subagents 在自己的新上下文中运行,完全独立于主对话。他们的工作不会使你的上下文膨胀,完成后返回摘要。
使用场景:
- 需要读取许多文件的任务
- 并行工作
- 专门的工作者(如安全审查、性能分析)
- 上下文窗口接近满时
示例:
# Claude 可以自动生成 subagent
"请创建一个 subagent 来审查这个 PR 的安全问题"
Subagent vs Agent Team:
| 特性 | Subagent | Agent Team |
|---|---|---|
| 上下文 | 自己的上下文窗口;结果返回给调用者 | 自己的上下文窗口;完全独立 |
| 通信 | 仅向主 Agent 报告结果 | 团队成员直接互相发消息 |
| 协调 | 主 Agent 管理所有工作 | 共享任务列表,自我协调 |
| 最佳用途 | 仅结果重要的专注任务 | 需要讨论和协作的复杂工作 |
| Token 成本 | 较低:结果摘要返回主上下文 | 较高:每个团队成员是单独的 Claude 实例 |
Hooks:事件驱动的自动化
Hooks 是在特定事件发生时运行的确定性脚本,完全在 Agent 循环之外运行。
触发事件:
fileEdited:保存代码文件时fileCreated:创建新文件时fileDeleted:删除文件时promptSubmit:向 Agent 发送消息时agentStop:Agent 执行完成时preToolUse:工具即将执行前postToolUse:工具执行后userTriggered:用户手动触发
Hook 操作:
askAgent:向 Agent 发送新消息runCommand:执行 Shell 命令
示例 Hook(lint-on-save.json):
{
"name": "Lint on Save",
"version": "1.0.0",
"when": {
"type": "fileEdited",
"patterns": ["*.ts", "*.tsx"]
},
"then": {
"type": "runCommand",
"command": "npm run lint"
}
}
使用场景:
- 保存后自动运行 linter
- 编辑关键文件时发送通知
- 工具使用前的访问控制检查
- 任务完成后运行测试
实际使用场景
构建新功能
场景:为应用添加用户认证功能
claude
我需要为应用添加用户认证。使用 JWT,支持注册、登录和密码重置。
相关代码在 src/auth/ 目录。
Claude 会:
- 探索现有的 auth 目录结构
- 创建必要的路由和控制器
- 实现 JWT 生成和验证
- 添加密码哈希和验证
- 创建数据库迁移
- 编写测试
- 更新 API 文档
修复 Bug
场景:修复支付流程中的 bug
结账流程对于卡过期的用户失败了。
相关代码在 src/payments/。你能调查并修复吗?
Claude 会:
- 搜索 payments 目录
- 读取相关文件理解流程
- 识别问题(可能是令牌刷新逻辑)
- 先编写失败的测试
- 修复代码
- 运行测试验证
- 如果你要求,提交更改
代码重构
场景:重构遗留代码
src/legacy/ 中的代码需要现代化。
将类组件转换为函数组件,使用 hooks,改进类型定义。
Claude 会:
- 分析现有代码结构
- 识别所有类组件
- 逐个转换为函数组件
- 将生命周期方法转换为 hooks
- 添加 TypeScript 类型
- 更新测试
- 确保所有测试通过
文档编写
场景:为 API 生成文档
为 src/api/ 中的所有端点生成 API 文档。
使用 OpenAPI 3.0 格式。
Claude 会:
- 读取所有 API 路由文件
- 提取端点、参数、响应
- 生成 OpenAPI 规范
- 创建示例请求和响应
- 添加描述和注释
测试编写
场景:为现有代码添加测试
src/utils/validation.ts 缺少测试。
请添加全面的单元测试,覆盖所有边缘情况。
Claude 会:
- 读取 validation.ts 理解功能
- 识别所有函数和边缘情况
- 创建测试文件
- 编写测试用例
- 运行测试确保通过
- 报告代码覆盖率
性能优化
场景:优化慢查询
/api/users 端点很慢。
请分析并优化性能。
Claude 会:
- 检查端点代码
- 识别数据库查询
- 分析查询性能
- 添加索引或优化查询
- 实现缓存策略
- 运行基准测试比较
- 记录改进
有效使用技巧
1. 这是一个对话
Claude Code 是对话式的。你不需要完美的提示。从你想要的开始,然后细化:
修复登录 bug
[Claude 调查,尝试某些东西]
不太对。问题在会话处理中。
[Claude 调整方法]
当第一次尝试不对时,你不需要重新开始。你迭代。
2. 中断和引导
你可以随时中断 Claude。如果它走错了路,只需输入你的更正并按 Enter。Claude 会停止正在做的事情,根据你的输入调整方法。你不必等它完成或重新开始。
3. 前期要具体
初始提示越精确,需要的更正就越少。
模糊提示:
修复认证
具体提示:
过期卡用户的结账流程失败了。
检查 src/payments/ 中的问题,特别是令牌刷新。
先编写失败的测试,然后修复。
模糊提示有效,但你会花更多时间引导。像上面这样的具体提示通常第一次就成功。
4. 给 Claude 验证依据
当 Claude 可以检查自己的工作时表现更好。包括测试用例、粘贴预期 UI 的截图或定义你想要的输出。
对于视觉工作,粘贴设计截图并要求 Claude 将其实现与之比较。
5. 先探索后实现
对于复杂问题,将研究与编码分开。使用计划模式(按两次 Shift+Tab)先分析代码库:
读取 src/auth/ 并理解我们如何处理会话。
然后创建添加 OAuth 支持的计划。
审查计划,通过对话细化,然后让 Claude 实现。这种两阶段方法比直接跳到代码产生更好的结果。
6. 委托,不要指示
把它想象成委托给一个有能力的同事。给出上下文和方向,然后信任 Claude 弄清楚细节:
过期卡用户的结账流程失败了。
相关代码在 src/payments/。你能调查并修复吗?
你不需要指定读取哪些文件或运行哪些命令。Claude 会弄清楚。
7. 使用计划模式进行大型更改
对于重大重构或架构更改,使用计划模式(按两次 Shift+Tab)让 Claude 先创建计划:
我想将认证系统从会话迁移到 JWT。
请创建详细的迁移计划。
审查计划,讨论权衡,然后批准执行。
8. 利用 Git 集成
Claude 理解你的 Git 状态。你可以要求它:
审查我未提交的更改
为这些更改创建一个提交消息
创建一个 PR 描述
9. 寻求帮助
Claude Code 可以教你如何使用它。问这样的问题:
如何设置 hooks?
构建 CLAUDE.md 的最佳方式是什么?
如何配置 MCP 服务器?
内置命令也会引导你完成设置:
/init- 为项目创建 CLAUDE.md/agents- 配置自定义 subagents/doctor- 诊断常见问题
常用命令
会话管理
# 启动新会话
claude
# 继续上一个会话
claude --continue
# 恢复特定会话
claude --resume <session-id>
# 分叉会话
claude --continue --fork-session
# 使用特定模型
claude --model opus
会话内命令
# 切换模型
/model opus
# 查看上下文使用情况
/context
# 压缩上下文
/compact
# 查看 MCP 服务器
/mcp
# 初始化 CLAUDE.md
/init
# 调用 Skill
/deploy
# 配置 Agents
/agents
# 诊断问题
/doctor
权限模式
按 Shift+Tab 循环切换:
- Default - 询问编辑和命令
- Auto-accept edits - 自动接受编辑
- Plan mode - 仅只读工具
中断和撤销
- 按
Enter- 中断并提供新指令 - 按两次
Esc- 回退到之前的检查点 - 要求 Claude 撤销更改
最佳实践
项目设置
1. 创建 CLAUDE.md
为每个项目创建 CLAUDE.md 文件,包含:
# 项目名称
## 技术栈
- Node.js 18+
- TypeScript 5.0
- React 18
- PostgreSQL 14
## 开发命令
- `pnpm dev` - 启动开发服务器
- `pnpm test` - 运行测试
- `pnpm build` - 构建生产版本
- `pnpm lint` - 运行 linter
## 代码约定
- 使用 TypeScript 严格模式
- 所有组件使用函数式组件和 hooks
- 优先使用组合而非继承
- 测试覆盖率保持在 80% 以上
## 项目结构
- `/src/components` - React 组件
- `/src/hooks` - 自定义 hooks
- `/src/utils` - 工具函数
- `/src/api` - API 客户端
- `/src/types` - TypeScript 类型定义
## 重要规则
- 永远不要直接修改 production 分支
- 提交前必须运行测试
- 使用语义化提交消息
2. 配置 .gitignore
确保 Claude 不会访问不必要的文件:
node_modules/
.env
.env.local
dist/
build/
.DS_Store
*.log
3. 设置权限
在 .claude/settings.json 中配置允许的命令:
{
"allowedCommands": [
"npm test",
"npm run lint",
"git status",
"git diff",
"git log"
]
}
提示工程
1. 提供上下文
不好:
修复 bug
好:
用户报告在 Safari 中登录失败。
错误信息是 "Invalid token"。
相关代码在 src/auth/login.ts。
我们使用 JWT 进行认证。
2. 指定约束
不好:
添加搜索功能
好:
添加搜索功能到用户列表页面。
要求:
- 实时搜索(输入时过滤)
- 搜索名称和邮箱
- 大小写不敏感
- 使用现有的 Input 组件
- 添加单元测试
3. 包含示例
不好:
格式化日期
好:
格式化日期显示。
输入:2026-03-18T12:00:00Z
期望输出:March 18, 2026 at 12:00 PM
使用 date-fns 库。
4. 分解复杂任务
不好:
构建完整的用户管理系统
好:
第一步:创建用户模型和数据库迁移
完成后,我会要求你继续下一步。
代码审查
使用 Claude Code 进行代码审查:
审查我未提交的更改。
关注:
- 安全问题
- 性能问题
- 代码风格一致性
- 测试覆盖率
或创建审查 Skill:
---
name: review
description: 全面的代码审查
---
# 代码审查清单
## 安全
- [ ] 没有硬编码的密钥或密码
- [ ] 输入验证正确
- [ ] SQL 注入防护
- [ ] XSS 防护
## 性能
- [ ] 没有 N+1 查询
- [ ] 适当的索引
- [ ] 缓存策略
- [ ] 资源清理
## 代码质量
- [ ] 遵循项目约定
- [ ] 适当的错误处理
- [ ] 有意义的变量名
- [ ] 适当的注释
## 测试
- [ ] 单元测试覆盖
- [ ] 边缘情况测试
- [ ] 错误情况测试
测试策略
1. 测试驱动开发
为用户注册功能编写测试。
测试场景:
- 成功注册
- 重复邮箱
- 无效邮箱格式
- 弱密码
- 缺少必填字段
然后实现功能使测试通过。
2. 测试现有代码
src/utils/validation.ts 缺少测试。
请分析代码并添加全面的测试覆盖。
包括:
- 正常情况
- 边缘情况
- 错误情况
- 边界值
性能优化
1. 分析性能
/api/users 端点响应慢(>2秒)。
请:
1. 分析代码识别瓶颈
2. 检查数据库查询
3. 建议优化方案
4. 实现最有效的优化
5. 运行基准测试比较
2. 数据库优化
分析 src/models/User.ts 中的查询。
检查:
- 缺少的索引
- N+1 查询问题
- 不必要的 JOIN
- 可以缓存的查询
实现优化并测量改进。
文档维护
1. 自动生成文档
为 src/api/ 中的所有端点生成 API 文档。
格式:OpenAPI 3.0
包括:
- 端点描述
- 请求参数
- 响应格式
- 错误代码
- 示例请求/响应
2. 更新 README
更新 README.md 反映最新的项目状态。
包括:
- 新功能
- 更新的依赖
- 新的环境变量
- 更改的命令
故障排除
常见问题
1. Claude 看不到我的文件
原因:
- 文件在 .gitignore 中
- 权限问题
- 文件在项目目录外
解决方案:
# 检查文件是否被 git 忽略
git check-ignore -v <file>
# 确保在正确的目录中启动 Claude
cd /path/to/project
claude
2. 上下文窗口填满
症状:
- Claude 忘记早期指令
- 响应变慢
- 错误消息关于上下文限制
解决方案:
# 查看上下文使用情况
/context
# 压缩上下文
/compact
# 使用 subagent 进行大型任务
"创建一个 subagent 来研究这个问题"
# 将持久指令移到 CLAUDE.md
3. MCP 服务器连接失败
检查步骤:
# 查看 MCP 状态
/mcp
# 检查配置文件
cat ~/.kiro/settings/mcp.json
# 验证服务器可执行
uvx --version
# 重启 Claude Code
4. 权限被拒绝
原因:
- 文件权限问题
- 需要 sudo 的命令
- 受保护的目录
解决方案:
# 检查文件权限
ls -la <file>
# 更改权限
chmod +x <file>
# 在 settings.json 中允许命令
5. Git 冲突
处理方法:
我有 Git 合并冲突。
文件:src/components/Header.tsx
请帮我解决冲突,保留两个分支的更改。
性能问题
1. Claude 响应慢
可能原因:
- 上下文窗口太大
- 太多 MCP 服务器
- 大型文件
优化:
# 减少 MCP 服务器
/mcp
# 压缩上下文
/compact
# 使用 Skills 而不是在 CLAUDE.md 中放置大量内容
2. 工具执行超时
解决方案:
# 增加超时设置
# 在 .claude/settings.json 中
{
"timeout": 60000
}
调试技巧
1. 使用计划模式
# 按两次 Shift+Tab 进入计划模式
# Claude 会创建计划而不执行
2. 查看执行日志
显示你刚才执行的所有工具调用
3. 逐步执行
让我们一步一步来。
首先,只读取相关文件并告诉我你发现了什么。
高级用法
1. 多项目工作流
使用 git worktrees 并行处理多个分支:
# 创建 worktree
git worktree add ../feature-branch feature-branch
# 在每个 worktree 中运行 Claude
cd ../feature-branch
claude
2. CI/CD 集成
在 GitHub Actions 中使用 Claude Code:
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Claude Code
run: curl -fsSL https://claude.ai/install.sh | bash
- name: Review PR
run: |
claude --non-interactive "审查这个 PR 的更改"
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
3. 团队协作
共享 CLAUDE.md
将 CLAUDE.md 提交到 git,团队成员共享相同的上下文:
git add CLAUDE.md
git commit -m "Add Claude Code project instructions"
git push
共享 Skills
在 .claude/skills/ 中创建团队 Skills:
.claude/
skills/
deploy.md
review.md
test.md
组织级别配置
使用管理策略配置组织范围的设置。
4. 自定义 Subagents
创建专门的 subagents:
/agents
定义 subagent:
{
"name": "security-reviewer",
"description": "专注于安全审查的 agent",
"skills": ["security-checklist"],
"model": "opus"
}
使用:
@security-reviewer 审查这段代码的安全问题
5. 插件开发
创建可重用的插件包:
my-plugin/
PLUGIN.md # 插件描述
skills/ # Skills
hooks/ # Hooks
mcp-servers/ # MCP 服务器配置
与其他工具对比
Claude Code vs GitHub Copilot
| 特性 | Claude Code | GitHub Copilot |
|---|---|---|
| 工作方式 | Agent 架构,自主完成任务 | 代码补全和建议 |
| 代码库理解 | 理解整个项目 | 主要基于当前文件 |
| 多文件编辑 | 跨文件协调编辑 | 单文件编辑 |
| 命令执行 | 可以运行命令、测试 | 不能执行命令 |
| 任务自主性 | 高度自主,完成多步骤任务 | 需要持续人工指导 |
| 交互方式 | 自然语言对话 | 代码补全提示 |
| 最佳用途 | 复杂任务、重构、bug 修复 | 快速代码补全 |
Claude Code vs Cursor
| 特性 | Claude Code | Cursor |
|---|---|---|
| 平台 | 终端、多 IDE、Web | 专用编辑器 |
| Agent 能力 | 完整 Agent 循环 | 有限的 Agent 功能 |
| 扩展性 | MCP、Skills、Hooks | 有限的扩展 |
| 命令执行 | 完整终端访问 | 有限的命令执行 |
| 多会话 | 支持并行会话 | 单一编辑器会话 |
| 最佳用途 | 复杂项目、自动化 | 快速编辑和迭代 |
Claude Code vs ChatGPT Code Interpreter
| 特性 | Claude Code | ChatGPT Code Interpreter |
|---|---|---|
| 代码库访问 | 完整项目访问 | 上传的文件 |
| 持久性 | 本地会话,可恢复 | 会话临时 |
| 文件编辑 | 直接编辑项目文件 | 生成代码供复制 |
| 工具集成 | Git、构建工具、测试 | 隔离的 Python 环境 |
| 扩展性 | 高度可扩展 | 有限的扩展 |
| 最佳用途 | 实际项目开发 | 数据分析、原型 |
定价和订阅
订阅计划
Claude Code 需要 Anthropic 订阅或 Console 账户:
- Pro:个人开发者,标准使用配额
- Max:更高的使用配额,优先访问新功能
- Team:团队协作,共享资源
- Enterprise:企业级,自定义配额和支持
第三方提供商
终端 CLI 和 VS Code 也支持第三方 API 提供商,允许使用其他 LLM 服务。
使用配额
- 标准聊天:正常消耗
- Claude Code 任务:消耗更多配额(复杂的多步骤任务需要更多计算)
- Cowork 任务:类似 Code,用于知识工作
优化配额使用:
- 将简单任务保留在标准聊天中
- 将 Code/Cowork 用于真正需要文件访问的复杂工作
- 使用 Subagents 隔离大型任务
- 压缩上下文以减少 token 使用
安全和隐私
数据处理
- 本地执行:代码在你的机器上运行(Local 模式)
- 云执行:代码在 Anthropic 管理的 VM 中运行(Cloud 模式)
- 数据传输:与 Anthropic API 的通信经过加密
权限控制
- 文件访问:你明确控制 Claude 可以访问哪些文件
- 命令执行:可以配置允许的命令列表
- 外部服务:MCP 连接需要明确配置
最佳安全实践
-
不要共享敏感信息
- 使用环境变量存储密钥
- 将 .env 文件添加到 .gitignore
- 在 CLAUDE.md 中使用占位符
-
审查更改
- 在接受前审查所有文件编辑
- 使用计划模式进行重大更改
- 利用检查点功能
-
限制权限
- 仅允许必要的命令
- 使用 .gitignore 限制文件访问
- 定期审查权限设置
-
保护凭证
# CLAUDE.md 中 ## API 配置 使用环境变量: - DATABASE_URL - API_KEY - SECRET_KEY 永远不要硬编码这些值。
社区和资源
官方资源
- 官方文档:code.claude.com/docs
- GitHub 仓库:github.com/anthropics/claude-code
- 产品页面:code.claude.com
- 支持中心:support.claude.com
学习资源
- 快速入门指南:官方文档中的分步教程
- 常见工作流:实际使用模式和最佳实践
- 视频教程:官方 YouTube 频道
- 博客文章:Anthropic 工程博客
社区
- Discord:与其他用户交流
- GitHub Discussions:功能请求和讨论
- Twitter/X:关注 @AnthropicAI 获取更新
贡献
- 报告 Bug:通过 GitHub Issues
- 功能请求:通过 GitHub Discussions
- 分享 Skills:贡献到社区 Skills 库
- 编写插件:创建和分享插件
未来展望
即将推出的功能
根据官方路线图和社区反馈,Claude Code 可能会添加:
- 更多 IDE 集成:支持更多编辑器
- 增强的团队协作:实时协作功能
- 改进的插件市场:更容易发现和安装插件
- 更好的性能:更快的响应时间
- 扩展的 MCP 生态系统:更多预构建的集成
发展方向
- 更强的推理能力:新模型提供更好的代码理解
- 更好的上下文管理:更智能的上下文压缩
- 增强的自主性:更少的人工干预
- 企业功能:更好的团队管理和审计
实战案例
案例 1:从零构建 REST API
任务:为博客系统构建完整的 REST API
claude
创建一个博客 REST API。
要求:
- Node.js + Express + TypeScript
- PostgreSQL 数据库
- 端点:文章 CRUD、用户认证、评论
- JWT 认证
- 输入验证
- 错误处理
- 单元测试
- API 文档
项目结构:
src/
routes/
controllers/
models/
middleware/
utils/
Claude 会执行:
- 初始化项目和依赖
- 设置 TypeScript 配置
- 创建数据库模式
- 实现认证中间件
- 创建所有路由和控制器
- 添加输入验证
- 实现错误处理
- 编写测试
- 生成 API 文档
- 创建 README
结果:完整的、可运行的 REST API,包含测试和文档。
案例 2:遗留代码现代化
任务:将 jQuery 应用迁移到 React
将 public/js/legacy/ 中的 jQuery 代码迁移到 React。
要求:
- 使用 React 18 + TypeScript
- 保持相同的功能
- 改进代码结构
- 添加类型定义
- 编写测试
- 逐步迁移,确保每步都可工作
Claude 会执行:
- 分析现有 jQuery 代码
- 创建 React 项目结构
- 逐个组件迁移
- 添加 TypeScript 类型
- 实现状态管理
- 编写组件测试
- 验证功能等效性
- 清理旧代码
案例 3:性能优化项目
任务:优化慢速应用
应用性能差。请进行全面优化。
关注:
- 数据库查询
- API 响应时间
- 前端渲染
- 资源加载
提供前后基准测试。
Claude 会执行:
- 运行性能分析
- 识别瓶颈
- 优化数据库查询(添加索引、优化 JOIN)
- 实现缓存策略
- 优化前端(代码分割、懒加载)
- 压缩资源
- 运行基准测试
- 生成性能报告
案例 4:自动化测试套件
任务:为现有项目添加全面测试
项目缺少测试。请添加全面的测试覆盖。
包括:
- 单元测试(所有函数和组件)
- 集成测试(API 端点)
- E2E 测试(关键用户流程)
目标覆盖率:80%+
Claude 会执行:
- 分析代码库
- 设置测试框架
- 编写单元测试
- 编写集成测试
- 设置 E2E 测试
- 配置 CI/CD
- 生成覆盖率报告
- 记录测试策略
总结
Claude Code 代表了 AI 辅助编程的新范式。与传统的代码补全工具不同,它采用 Agent 架构,能够理解整个代码库、自主完成复杂任务、跨文件协调编辑,并与开发工具深度集成。
核心优势
- 全局理解:分析整个项目而不仅仅是当前文件
- 自主执行:从问题分析到测试验证的完整流程
- 高度可扩展:通过 MCP、Skills、Hooks 等机制定制
- 多平台支持:终端、IDE、Web 全覆盖
- 安全可控:检查点、权限控制、本地执行
适用场景
- 新功能开发:快速构建完整功能
- Bug 修复:自动定位和修复问题
- 代码重构:大规模代码现代化
- 测试编写:自动生成全面测试
- 文档维护:自动生成和更新文档
- 性能优化:识别和解决性能瓶颈
开始使用
- 安装 Claude Code(终端、VS Code 或桌面应用)
- 创建 CLAUDE.md 定义项目约定
- 从简单任务开始熟悉工作流
- 逐步探索高级功能(Skills、MCP、Subagents)
- 根据团队需求定制配置
持续学习
- 查阅官方文档了解最新功能
- 加入社区交流经验
- 尝试不同的工作流程
- 分享你的 Skills 和最佳实践
Claude Code 不仅是一个工具,更是一个编程伙伴。它不会替代开发者,而是增强开发者的能力,让你专注于创造性工作,将重复性任务交给 AI。
本文内容基于 Claude Code 官方文档编写,遵循内容许可限制。
参考资源: