Claude Code 是 Anthropic 官方推出的命令行界面(CLI)工具,作为通用 AI 工作助手可以帮助你完成各类任务,尤其在软件开发领域表现出色。本文介绍核心功能的使用方法,让 AI 真正成为你的得力助手。
什么是 Claude Code
Claude Code 是一个运行在命令行中的 AI 助手,基于 Claude 模型提供智能交互能力。它采用对话式交互方式,能够理解复杂的多步骤任务,并自主调用工具完成工作。
核心特点
- 文件操作能力 - 可以读取、编写、搜索项目中的文件
- 命令执行 - 能够运行 shell 命令,如测试、构建、git 操作等
- 智能代码搜索 - 支持 Glob 模式和正则表达式搜索代码
- 任务管理 - 自动创建 TODO 列表跟踪复杂任务的执行进度
- 多工具协同 - 可以并行调用多个工具,高效完成任务
- 上下文理解 - 理解项目结构和代码逻辑,提供针对性建议
基本概念
- Session/Conversation(会话):Session 是一次完整的交互周期,从启动 Claude Code 到退出为止。每个 Session 都有唯一的 ID,用于标识和恢复历史对话。Session 包含了所有的对话历史、上下文信息和执行状态。
- Conversation History(对话历史):Conversation History 是当前 Session 中所有交互的记录,包括你的输入和 Claude 的回复。对话历史会影响 Claude 的理解和回复,因为 Claude 会根据之前的对话内容来理解当前的任务需求。使用
/clear命令可以清除当前的对话历史,重新开始对话。 - Message(消息):Message 是对话中的单个消息单元,可以是用户发送的指令,也可以是 Claude 的回复。每个 Message 都包含消息内容、发送者信息和时间戳。
- Turn(轮次):Turn 是一次完整的交互轮次,包含一个用户消息和 Claude 的回复。例如,你问"读取 config.json 文件",Claude 读取并回复内容,这构成一个 Turn。多个 Turn 组成了完整的对话历史。
安装与配置
Claude Code 通过 npm 安装,需要 Node.js 环境(建议 18 或更高版本)。安装完成后需要配置 Anthropic API Key 才能使用。
使用 npm 安装:
npm install -g @anthropic-ai/claude-code
安装完成后,运行以下命令验证安装:
claude-code --version
配置 API Key:首次运行时,Claude Code 会引导你配置 API Key:
claude
配置完成后,在任意项目目录运行 claude 即可开始使用。你会看到一个交互式命令行界面,可以直接输入任务描述,Claude 会理解你的需求并开始工作。
MCP:连接外部服务
本章介绍 MCP 协议如何让 Claude Code 连接外部服务,扩展其访问数据库、文件系统和 API 的能力。
什么是 MCP
MCP(Model Context Protocol)是一种开放协议,允许 AI 模型与外部数据源和服务进行通信。通过 MCP,Claude Code 可以突破本地项目的限制,访问数据库、远程文件系统、API 等资源。
MCP 的核心作用是扩展 Claude Code 的能力边界。默认情况下,Claude Code 只能操作当前项目目录中的文件和执行本地命令。但在实际工作中,我们常需要访问外部资源:查询数据库、调用第三方 API、读取其他目录的文件等。MCP 服务器充当了 Claude Code 与这些外部服务之间的桥梁。
配置 MCP 服务器
要使用 MCP,需要在项目中配置 MCP 服务器。在项目根目录创建 .claude/settings.json 文件:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/username/documents"]
}
}
}
配置说明:
mcpServers- MCP 服务器配置对象filesystem- 服务器名称(可自定义)command- 启动服务器的命令(通常使用 npx)args- 命令参数,包含 npm 包名和服务器特定参数
配置完成后,重启 Claude Code 即可加载 MCP 服务器。
常用 MCP 服务器
以下是社区常用的 MCP 服务器:
| 服务器名称 | 功能描述 | npm 包名 | 使用场景 |
|---|---|---|---|
| filesystem | 访问指定目录的文件系统 | @modelcontextprotocol/server-filesystem | 读写项目外的文件、访问文档目录 |
| postgres | 连接和查询 PostgreSQL 数据库 | @modelcontextprotocol/server-postgres | 数据库查询、数据分析 |
| github | 使用 GitHub API 管理仓库 | @modelcontextprotocol/server-github | 管理 issues、PRs、查看代码 |
| sqlite | 访问 SQLite 数据库 | @modelcontextprotocol/server-sqlite | 本地数据库操作 |
配置多个 MCP 服务器示例:
{
"mcpServers": {
"docs": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/username/docs"]
},
"database": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}
MCP 的使用
配置 MCP 服务器后,在对话中直接描述需求,Claude 会自动调用相应的 MCP 工具。
使用 filesystem 服务器:
你: 读取我文档目录中的 meeting-notes.md 文件
Claude: [通过 MCP filesystem 服务器读取文件内容]
Claude: 这是会议笔记的内容:...
使用 postgres 服务器:
你: 查询数据库中最近一周注册的用户数量
Claude: [通过 MCP postgres 服务器执行 SQL 查询]
Claude: 最近一周有 245 个新用户注册
使用 github 服务器:
你: 列出我的仓库中所有打开的 issues
Claude: [通过 MCP github 服务器调用 GitHub API]
Claude: 找到 12 个打开的 issues:...
MCP 让 Claude Code 能够无缝集成各种外部服务,大大扩展了它的应用场景。无论是数据分析、文档管理还是 DevOps 自动化,MCP 都能提供强大的支持。
Slash Commands:自定义工作流程
本章介绍如何使用内置命令和创建自定义命令,将重复性工作流程封装成快捷命令。
什么是 Slash Commands
Slash Commands 是 Claude Code 中的命令系统,允许你通过输入 /命令名 快速触发特定功能。Claude Code 提供了一些内置命令用于常见操作,同时支持创建自定义命令来封装你的工作流程。
Slash Commands 的优势在于标准化和效率提升。对于重复性的任务,如代码 review、测试运行、文档生成等,你可以将整个流程写成一个命令,每次只需输入命令名即可执行,节省大量时间。
创建 Slash Commands
创建自定义 Slash Commands 只需在项目的 .claude/commands/ 目录下创建 markdown 文件。文件名即为命令名,文件内容为任务描述。
基本结构:
在 .claude/commands/review.md 中:
---
description: Review current code changes
---
请帮我 review 当前的代码变更:
1. 运行 git diff 查看所有修改
2. 分析每个修改的目的和影响
3. 检查是否有潜在的 bug 或性能问题
4. 检查代码风格是否一致
5. 给出具体的改进建议
文件结构说明:
- Front Matter(
---之间的部分)- 包含命令的元数据 description- 命令的简短描述,会显示在命令列表中- 正文 - 详细的任务描述,Claude 会按照这个描述执行任务
CC 内置的 Slash Commands
Claude Code 提供了一些内置命令用于常见操作:
| 命令 | 功能描述 |
|---|---|
/help | 显示帮助信息和可用命令列表 |
/clear | 清除当前 Session 的 Conversation History,开始新的对话 |
/resume | 恢复之前的 Session,继续历史对话 |
/continue | 继续最近一次 Session 的 Conversation History |
/bashes | 查看后台运行的 shell 进程状态 |
/settings | 打开或查看设置配置 |
使用 Slash Commands
在 Claude Code 的对话界面中,输入 / 会自动显示可用的命令列表(包括内置命令和自定义命令)。选择或输入完整命令名即可执行。
使用示例:
你: /review
Claude: 我会 review 你的代码变更
[Claude 执行 review 命令中定义的所有步骤]
Claude: 已完成 code review,发现以下问题:...
命令最佳实践:
- 命令名简短易记(如
/test、/review、/docs) - 任务描述清晰具体,分步骤列出
- 将常用的复杂工作流都封装成命令
- 为团队创建统一的命令规范,提交到项目仓库
- 可以在全局目录(
~/.claude/commands/)创建个人常用命令 - 项目级命令(
.claude/commands/)优先级高于全局命令
通过合理使用 Slash Commands,可以将 Claude Code 打造成适合自己团队的定制化工作流工具。
Hooks:自动化你的工作流
本章介绍如何配置 Hooks 在特定事件触发时自动执行命令,实现代码格式化、测试等自动化流程。
什么是 Hooks
Hooks 是 Claude Code 中的事件驱动机制,允许你在特定事件发生时自动执行 shell 命令。通过配置 Hooks,可以实现工作流的自动化,例如在文件创建后自动格式化、在 git commit 前运行测试等。
Hooks 的核心价值在于减少人工干预,确保代码质量和一致性。你不需要每次都手动运行格式化工具或检查脚本,Hooks 会在合适的时机自动执行这些操作,让工作流更加流畅。
配置 Hooks
Hooks 配置在 .claude/settings.json 文件中。基本配置结构如下:
{
"hooks": {
"afterToolUse": {
"Write": "prettier --write {{file_path}}",
"Edit": "eslint --fix {{file_path}}"
}
}
}
配置说明:
hooks- Hooks 配置对象afterToolUse- Hook 类型(在工具使用后触发)Write、Edit- 工具名称,指定在哪个工具执行后触发- 命令字符串 - 要执行的 shell 命令
{{file_path}}- 变量,会被替换为实际的文件路径
配置完成后,无需重启,Claude Code 会自动加载新的 Hooks 配置。
常用 Hooks 类型
Claude Code 支持以下 Hook 类型:
| Hook 类型 | 触发时机 | 使用场景 |
|---|---|---|
afterToolUse | 在特定工具使用后 | 文件创建后格式化、代码修改后检查 |
beforeCommit | 在 git commit 前 | 运行测试、代码检查、格式验证 |
onError | 发生错误时 | 错误日志记录、通知发送 |
afterToolUse 可用的工具名称:
Write- 创建新文件后Edit- 编辑文件后Read- 读取文件后(较少使用)Bash- 执行命令后Grep- 搜索后Glob- 文件查找后
Hooks 使用示例
以下是一些常见的 Hooks 配置示例:
自动格式化代码:
{
"hooks": {
"afterToolUse": {
"Write": "prettier --write {{file_path}}",
"Edit": "prettier --write {{file_path}}"
}
}
}
这个配置会在每次创建或编辑文件后,自动运行 Prettier 格式化工具。
在 JavaScript/TypeScript 项目中,自动修复代码风格问题。
Commit 前运行测试:
{
"hooks": {
"beforeCommit": "npm test"
}
}
在 git commit 前自动运行测试,确保不会提交有问题的代码。
可用变量:
在 Hook 命令中可以使用以下变量:
{{file_path}}- 当前操作的文件路径{{tool_name}}- 触发 Hook 的工具名称
注意事项:
- Hook 命令执行失败不会阻止原操作(如文件仍会被创建)
- 可以使用
&&连接多个命令,前一个失败时后续不执行 - Hook 命令在项目根目录执行
- 建议只配置快速执行的命令,避免影响工作流
通过合理配置 Hooks,可以构建自动化的代码质量保障体系,让 Claude Code 在帮你写代码的同时,也自动维护代码质量。
Skills 技能系统:让 AI 遵循最佳实践
Skills 是 Claude Code 内置的专业工作流程库,帮助 AI 在执行任务时遵循行业最佳实践。通过使用 Skills,Claude Code 能够系统化地处理复杂任务,如测试驱动开发、代码审查、系统调试等,确保工作质量和流程规范。
什么是 Skills
Skills 是预定义的工作流程文档,描述了如何正确执行某类专业任务。每个 Skill 包含详细的步骤说明、注意事项和最佳实践。当你要求 Claude Code 执行某个任务时,如果存在相关的 Skill,AI 会自动或根据提示使用该 Skill 来指导任务执行。
Skills 的核心价值在于标准化和专业化。没有 Skills 时,AI 可能会凭借一般知识处理任务,容易遗漏关键步骤或违反最佳实践。使用 Skills 后,AI 会严格按照经过验证的工作流程执行,就像有一位经验丰富的工程师在指导工作。
Skills 与 Slash Commands 的区别:
- Slash Commands 是你自定义的任务描述,适合项目特定的重复性工作
- Skills 是系统内置的专业工作流程,适合通用的软件工程任务
- Slash Commands 存储在项目的
.claude/commands/目录 - Skills 由 Claude Code 或插件提供,通过
Skill工具调用
如何使用 Skills
使用 Skills 有两种方式:让 AI 自动识别,或手动明确指定。
方式 1:自动识别(推荐)
描述任务时,如果任务类型明确,Claude Code 会自动判断并使用相应的 Skill:
你: 我想给用户模块添加邮箱验证功能
Claude: 我将使用 test-driven-development Skill 来实现这个功能。
首先编写测试用例...
[按照 TDD 流程:写测试 → 看失败 → 写代码 → 测试通过]
方式 2:明确指定 Skill
如果希望确保使用特定 Skill,可以在任务描述中明确提及:
你: 使用 systematic-debugging skill 帮我调试登录失败的问题
Claude: 我将使用系统化调试流程来定位问题...
[执行调试的四个阶段:根因调查 → 模式分析 → 假设验证 → 实施修复]
使用 Skills 的最佳实践:
- 信任 Skill 的流程 - Skills 经过验证,即使某些步骤看似繁琐,也应完整执行
- 组合使用 Skills - 复杂项目可能需要多个 Skills 配合(如先 brainstorming,再 writing-plans,最后 executing-plans)
- 理解 Skill 的触发时机 - 某些 Skills(如 requesting-code-review)有明确的使用时机(完成功能后)
- 配合 TodoWrite - Skills 执行过程中会创建 TODO 列表,可随时查看进度
- 注意 Skill 的约束 - 有些 Skills 有严格规则(如 TDD 必须先写测试),AI 会拒绝跳过步骤
Subagents 子代理系统:多 AI 协作完成任务
Subagents 是 Claude Code 的多代理协作能力,允许主 AI 派遣专门的子代理来处理特定类型的任务。通过 Task 工具,可以启动不同专长的 AI 代理并行或串行工作,实现复杂任务的高效分解和执行。
什么是 Subagents
Subagents(子代理)是独立运行的 AI 代理,由主对话中的 Claude 派遣来处理特定任务。每个 Subagent 都是一个全新的 AI 实例,有自己的专长领域、工具集和执行上下文。主 Claude 通过 Task 工具创建 Subagent,提供任务描述,然后 Subagent 自主完成任务并返回结果。
Subagents 的核心优势在于专业化和并行化。不同类型的任务需要不同的思维方式和工具集,例如探索代码库需要快速浏览和模式识别,而代码审查需要深入分析和质量检查。通过派遣专门的 Subagent,可以用最合适的方式处理每个子任务。同时,多个 Subagent 可以并行工作,大幅提升整体效率。
Subagents 与主对话的关系:
- 主对话中的 Claude 负责理解用户需求、制定计划、协调 Subagents
- Subagent 是无状态的,完成任务后返回结果,不保留会话历史
- 主 Claude 可以看到 Subagent 的执行结果,但 Subagent 之间互相独立
- 主 Claude 决定何时派遣 Subagent、派遣哪种类型、提供什么任务描述
可用的 Subagent 类型
Claude Code 提供了多种专门化的 Subagent 类型,每种都针对特定场景优化:
通用型 Subagents:
| Subagent 类型 | 专长领域 | 可用工具 | 使用场景 |
|---|---|---|---|
general-purpose | 通用复杂任务 | 所有工具 | 多步骤任务、需要文件读写和命令执行的复杂操作 |
Explore | 代码库探索 | 所有工具 | 快速探索项目结构、搜索代码模式、理解架构 |
Plan | 制定计划 | 所有工具 | 分析需求、设计方案、创建详细实施计划 |
专门型 Subagents:
| Subagent 类型 | 专长领域 | 可用工具 | 使用场景 |
|---|---|---|---|
superpowers:code-reviewer | 代码审查 | 所有工具 | 审查代码质量、检查是否符合需求、提出改进建议 |
statusline-setup | 状态栏配置 | Read, Edit | 配置 Claude Code 的状态栏显示设置 |
如何使用 Subagents
使用 Subagents 主要通过在任务描述中提出需求,Claude 会自动判断是否需要派遣 Subagent。你也可以明确要求使用 Subagent。
方式 1:自动派遣
描述任务时,如果任务适合由 Subagent 处理,Claude 会自动派遣:
你: 这个项目中的错误处理是怎么实现的?
Claude: 我将派遣 Explore 代理来探索项目的错误处理机制。
[派遣 Explore Subagent]
Claude: 探索完成。项目使用了自定义的错误处理中间件...
方式 2:明确要求
你可以在任务描述中明确要求使用特定类型的 Subagent:
你: 派遣 code-reviewer 代理审查我刚才写的认证模块
Claude: 我将派遣代码审查代理...
[派遣 code-reviewer Subagent]
Claude: 审查完成。发现以下问题:1. 缺少输入验证...
并行派遣多个 Subagents:
对于多个独立的任务,可以同时派遣多个 Subagent 并行处理:
你: 我需要同时了解三个模块的实现:用户认证、数据缓存、日志记录
Claude: 我将派遣 3 个 Explore 代理并行探索这些模块。
[同时派遣 3 个 Explore Subagents]
Claude: 所有探索已完成。以下是各模块的实现总结...
Subagent 的任务描述技巧:
给 Subagent 的任务描述应该:
- 明确任务目标 - 清楚说明需要 Subagent 完成什么
- 提供必要上下文 - 包含 Subagent 需要的背景信息
- 指定返回内容 - 说明希望 Subagent 返回哪些信息
- 设定探索深度 - 对于 Explore 类型,可以指定 "quick"、"medium" 或 "very thorough"
示例:良好的任务描述
派遣 Explore 代理,medium 深度:
- 探索项目中的 API 路由定义方式
- 找出所有定义路由的文件
- 总结路由的组织结构和命名规范
- 返回主要的路由文件路径和路由定义模式