Claude Code 简述

309 阅读15分钟

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 类型(在工具使用后触发)
  • WriteEdit - 工具名称,指定在哪个工具执行后触发
  • 命令字符串 - 要执行的 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 的最佳实践:

  1. 信任 Skill 的流程 - Skills 经过验证,即使某些步骤看似繁琐,也应完整执行
  2. 组合使用 Skills - 复杂项目可能需要多个 Skills 配合(如先 brainstorming,再 writing-plans,最后 executing-plans)
  3. 理解 Skill 的触发时机 - 某些 Skills(如 requesting-code-review)有明确的使用时机(完成功能后)
  4. 配合 TodoWrite - Skills 执行过程中会创建 TODO 列表,可随时查看进度
  5. 注意 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 的任务描述应该:

  1. 明确任务目标 - 清楚说明需要 Subagent 完成什么
  2. 提供必要上下文 - 包含 Subagent 需要的背景信息
  3. 指定返回内容 - 说明希望 Subagent 返回哪些信息
  4. 设定探索深度 - 对于 Explore 类型,可以指定 "quick"、"medium" 或 "very thorough"

示例:良好的任务描述

派遣 Explore 代理,medium 深度:
- 探索项目中的 API 路由定义方式
- 找出所有定义路由的文件
- 总结路由的组织结构和命名规范
- 返回主要的路由文件路径和路由定义模式