Skip to content
🌊海洋蓝
🌸樱花粉
🍃森林绿
🔮幻夜紫
🌙暗夜黑

万少的 Claude Code 入门教程

安装 Claude Code

前言

https://code.claude.com/docs/zh-CN/overview

什么是 Claude Code,为什么要使用 Claude Code

Claude Code 是一个代理编码工具,可以读取你的代码库、编辑文件、运行命令,并与你的开发工具集成。可在终端、IDE、桌面应用和浏览器中使用。

Claude Code 是一个由 AI 驱动的编码助手,可帮助你构建功能、修复错误和自动化开发任务。它理解你的整个代码库,可以跨多个文件和工具工作以完成任务。

  1. 终端形式,随处可用,方便和各种 CLI 集成,如 GitHub 的 gh、飞书的 lark-cli

  2. 众多 Skill,可以实现常见办公能力,如 PPT、DOCX、图文处理等

  3. Claude Code 是官方主线产品,很多 Agent 新特性会优先出现在这里,可以第一时间体验。

Claude Code 工作流概览

安装

根据自己的操作系统在终端中进行安装;

  • 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

如果你本地已有 AI 编辑器,也可以直接复制命令给它,让它帮忙安装;

检查版本

安装成功后,在你的终端中输入命令查看版本

 claude --version

在终端中输入命令也可以启动;

claude

需要注意的是,Claude Code 官方默认需要登录或配置官方支持的模型服务。上图万少是通过第三方工具 cc switch 接入了其他大模型,所以界面里显示的是对应的大模型名称。如果你是首次启动,并且没有配置第三方路由或官方模型服务,那么它会引导你先完成登录或认证。

利用 cc switch 配置大模型

https://www.ccswitch.io/zh/

Claude Code 官方默认需要登录 Claude 账号,或者配置 Anthropic API、Amazon Bedrock、Google Vertex AI 等官方支持的模型服务。对于国内用户,如果官方链路不方便,也可以用第三方路由工具接入其他大模型,不过这属于非官方方案,稳定性和兼容性要以实际工具为准。

cc switch 就是一个方便管理各种大模型的路由工具。有了它,我们可以随时接入其他厂商的大模型,方便切换;否则就需要手动修改配置文件,太麻烦了。

下载好后,直接打开即可,开始接入你的第三方大模型;

需要注意的是,不同的大模型厂商,填写字段不同,一般都可以在其官网上查看,如果不会配置,可以私聊万少;

比如 Kimi

配置成功后,下次启动 Claude Code,便会出现你的大模型名称

为了测试是否真的成功,你可以直接对话:

集成 VS Code 插件

用户可以直接在终端中使用 Claude Code;

也可以在 VS Code 中通过安装插件的方式来使用它;


在 VS Code 的插件市场中搜索和安装 Claude Code for VS Code

Claude Code 的权限模式

当 Claude 想要编辑文件、运行 shell 命令或发出网络请求时,它会暂停并要求您批准该操作。

每种模式在便利性和监督之间做出不同的权衡。下表显示了在每种模式中 Claude 无需权限提示即可执行的操作。

模式无需询问即可运行的操作最适合
default仅读取入门、敏感工作
acceptEdits读取、文件编辑和常见文件系统命令(mkdirtouchmvcp 等)迭代您正在审查的代码
plan仅读取在更改代码库前进行探索
auto所有操作,带后台安全检查长时间任务、减少提示疲劳
dontAsk仅预先批准的工具锁定的 CI 和脚本
bypassPermissions跳过权限提示,允许执行所有操作仅隔离容器和 VM
  • 在你已经在终端启动 Claude 时,可以使用 Shift + Tab 切换常用模式。默认主要在 defaultacceptEditsplan 之间切换;bypassPermissions 需要用启动参数开启,dontAsk 则需要通过 --permission-mode dontAsk 等方式指定;

  • 如果你还没有启动 Claude,可以在启动时输入以下命令直接进入 bypassPermissions 模式,这样就不会频繁停下来要求你授权。这个模式风险很高,只建议在隔离容器、虚拟机或明确可丢弃的测试目录里使用。

    claude --dangerously-skip-permissions
  • 如果命令太长你记不住,也可以像万少一样设置 alias,这样以后便可以直接输入 ccd 进入拥有所有权限的 Claude Code 中;

    在 Claude Code 中输入以下提示词即可

    我希望在终端中输入 `ccd` 时,等同于 `claude --dangerously-skip-permissions`

Claude Code 基本使用

直接对话

普通的需求,简单的需求,你就可以直接用自然语言的方式去沟通即可

帮我在桌面上创建一个网页,里面显示一段 3D 文字:万少的 Claude Code 入门教程

修正方向

在 Claude Code 执行任务过程中,如果你发现它出现偏差,可以按下 Esc 键停止任务,然后直接告诉它需要调整的信息;

常用斜杠命令汇总

官方文档:https://code.claude.com/docs/en/commands

在 Claude Code 会话里,以 / 开头的命令叫做 slash command(斜杠命令)

你可以把它理解成 Claude Code 的快捷键:有些命令用来管理项目记忆,有些命令用来切换模型,有些命令用来查看上下文、管理权限、做代码审查。

进入 Claude Code 后,直接输入:

text
/

就可以看到当前环境可用的命令列表。继续输入关键词,还可以筛选命令。比如输入 /mo,通常就能快速找到 /model

需要注意:不同版本、不同平台、不同账号计划下,可用命令可能不完全一样。如果你看不到某个命令,先执行:

text
claude --version

确认版本,再用 /help/ 查看本机实际支持的命令。

新手最常用的一组命令

命令作用什么时候用
/help查看帮助不知道怎么操作时先看它
/init初始化 CLAUDE.md第一次在项目里使用 Claude Code
/memory管理项目记忆想修改 Claude 记住的项目规则
/goal设置持续目标希望 Claude 一直工作到某个完成条件达成
/clear开新会话当前上下文太乱,准备换一个任务
/compact压缩上下文长对话快撑满上下文,但还想继续当前任务
/context查看上下文占用想知道上下文主要被哪些内容占用了
/model切换模型需要更强推理或想节省成本
/effort调整推理强度复杂任务调高,简单任务调低
/permissions管理权限想控制哪些命令能自动执行
/mcp管理 MCP连接外部工具、数据源、浏览器、数据库等
/agents管理 subAgents创建或查看子代理
/skills查看 Skills想知道当前有哪些可用技能
/hooks查看 Hooks 配置检查自动化触发器
/plugin管理插件安装、启用、关闭 Plugin
/diff查看改动Claude 改完代码后先看差异
/code-review审查当前 diff提交前让 Claude 做 correctness review
/security-review安全审查涉及登录、权限、支付、接口时使用
/usage/cost查看用量想知道 token、成本或额度情况
/doctor检查环境Claude Code 行为异常、登录或配置出问题

按使用阶段记忆

如果上面的表太多,可以按工作流来记:

第一次进入项目:

text
/init
/memory
/permissions

先让 Claude 了解项目,再配置权限,避免后续每一步都反复确认。

做任务过程中:

text
/model
/effort
/context
/compact
/goal

任务复杂就换更强模型或调高 effort;上下文快满了,就看 /context,必要时用 /compact。如果你希望 Claude 不要每完成一小步就停下来,而是持续工作到一个明确结果,可以使用 /goal

/goal 怎么用

/goal 的作用是给当前会话设置一个“完成条件”。设置后,Claude 会围绕这个目标持续推进,直到它判断目标已经达成。

比如你可以输入:

text
/goal 修复当前项目的测试失败,直到 pnpm test 全部通过

也可以写得更具体:

text
/goal CHANGELOG.md 包含本周所有已合并 PR 的更新记录,并且 pnpm lint 通过

如果想清除当前目标,可以输入:

text
/goal clear

使用 /goal 时,最重要的是把“完成条件”写清楚。不要只写:

text
/goal 优化这个项目

更好的写法是:

text
/goal 首页首屏加载性能改善,要求 Lighthouse Performance 达到 90 分以上,并且现有测试全部通过

简单说,/goal 适合长任务,尤其适合那些有明确验收标准的任务,比如测试通过、构建通过、文档补齐、某个功能完整可用。

这里也要区分一下 /memory/goal

  • /memory 更偏当前项目的记忆和规则,比如这个项目用什么包管理器、测试命令是什么
  • /goal 更偏当前任务的完成条件,比如“测试全部通过”“文档包含某些内容”“功能可以端到端运行”

如果你的 Claude Code 版本里暂时看不到 /goal,先升级 Claude Code。斜杠命令更新比较快,最终以你输入 / 后看到的本机列表为准。

改完代码准备检查:

text
/diff
/code-review
/security-review

先看 diff,再做 review。涉及安全边界的改动,比如登录、权限、数据导出、支付回调,建议额外跑一次 /security-review

配置生态能力:

text
/mcp
/agents
/skills
/hooks
/plugin

这几个命令分别对应前面和后面会讲到的 MCP、subAgents、Skills、Hooks 和 Plugins。刚开始不用全会,知道它们是入口即可。

万少的使用习惯

我的建议是:刚开始不要追求把所有命令背下来,只要记住一个动作:

text
/

所有命令都从这里找。真正高频的命令,其实就几个:/init/memory/goal/clear/compact/model/permissions/diff/usage。等你开始折

腾 MCP、subAgents、Hooks、Plugins,再去记对应的管理命令。

常用斜杠命令工作流

CLAUDE.md 和 rules

CLAUDE.md

CLAUDE.md 是你工程中的永久信息文件,它会在每一次对话开始时读取和加载(也会出现偶尔记忆失灵的情况),就像你的记忆系统一样。

它可以手动创建,也可以在 Claude Code 的终端中输入 /init 自动创建;

伴随工程开发,CLAUDE.md 文件可以一直迭代,就像你的记忆会随着时间推移而增加一样。需要注意的是:

  • CLAUDE.md 不是越大越好,因为所有大模型的上下文容量都有限。
  • 尽量只记录长期稳定、反复有用的内容

你可以在多个位置放置 CLAUDE.md 文件:

  • 主文件夹(~/.claude/CLAUDE.md):适用于所有 Claude 会话

  • 项目根目录(./CLAUDE.md):检入 git 以与你的团队共享

  • 项目根目录(./CLAUDE.local.md):个人项目特定的笔记;将此文件添加到你的 .gitignore,以便它不会与你的团队共享

  • 父目录:对于 monorepos 有用,其中 root/CLAUDE.md 和 root/foo/CLAUDE.md 都会自动拉入

  • 子目录:当处理这些目录中的文件时,Claude 按需拉入子 CLAUDE.md 文件


每个 CLAUDE.md 文件建议控制在 200 行以下。较长的文件会消耗更多上下文并降低遵守度。如果你的指令变得很大,可以使用路径范围规则,让指令仅在 Claude 处理匹配文件时加载。

项目 CLAUDE.md 可以存储在 ./CLAUDE.md 或 ./.claude/CLAUDE.md 中

rules

对于较大的项目,你可以使用 .claude/rules/ 目录将指令组织到多个文件中。

可以在你的项目 .claude/rules/ 目录中放置 markdown 文件。每个文件应涵盖一个主题,并使用描述性文件名,如 testing.mdapi-design.md。所有 .md 文件都会被递归发现,因此你可以将规则组织到子目录中,如 frontend/backend/

your-project/
├── .claude/
│   ├── CLAUDE.md           # 主项目指令
│   └── rules/
│       ├── code-style.md   # 代码样式指南
│       ├── testing.md      # 测试约定
│       └── security.md     # 安全要求

Skill

Skill 是技能。在编程或者日常办公中,一些可以固化的流程都可以封装成 Skill;同时,网络上也有大量已经封装好的 Skill 可以复用。

官方文档:https://code.claude.com/docs/zh-CN/skills

你可以把 Skill 理解成:给 Claude Code 安装一个“专门处理某类任务的说明书”。

比如你经常让它做这些事情:

  • 根据 git diff 总结本次改动,并提醒风险
  • 按照固定格式写公众号文章
  • 把 markdown 转成 PPT
  • 帮你检查前端页面的 UI、无障碍和响应式问题
  • 连接飞书、GitHub、浏览器等工具完成一套固定流程

如果每次都要把同一段提示词复制给 Claude,那就说明这个流程可以做成 Skill。

Skill 和 CLAUDE.md、rules 的区别

前面说过,CLAUDE.md 更像项目记忆,适合存放长期稳定的背景信息,比如项目结构、技术栈、编码规范。

rules 更像分门别类的项目规则,适合把测试规范、接口规范、前端规范拆开管理。

Skill 则更像一个可以被调用的能力包,适合放“做某件事的步骤”。它不一定每次都加载,只有 Claude 判断相关时才会使用,或者你手动输入 /skill-name 直接调用。

简单来说:

类型适合放什么什么时候加载
CLAUDE.md项目背景、长期记忆、全局约定会话开始时加载
.claude/rules/按主题拆分的规则,如测试、接口、安全根据规则配置和上下文加载
skill固定流程、专项任务、可复用能力相关时自动触发,或手动 /skill-name 调用

所以,不要把所有内容都塞进 CLAUDE.md。能变成流程的,就拆成 Skill;只在特定目录或任务中需要的,就不要长期占用上下文。

findskill

findskill 是一个根据你的需求来寻找 Skill 的 Skill,你可以先在 Claude Code 中安装它。

https://skillsmp.com/zh/search 是一个专门用来托管第三方 Skill 的网站,你可以在这里找到想要的 Skill

我们继续下载并安装 findskill

帮我下载和安装这个 skill  https://skillsmp.com/zh/skills/dtyq-magic-backend-super-magic-agents-skills-find-skill-skill-md

安装好后,在终端中输入 /findskill,看到有智能提示就表示安装好了,以后可以这样来使用它:

/findskill 帮我找一个用来美化 HTML 的 skill

新手可以先学会使用 Skill,再根据需求去封装 Skill。

Skill 放在哪里

Claude Code 的 Skill 本质上是一个目录,目录里必须有一个 SKILL.md 文件。

常见位置有两个:

text
# 个人 Skill,所有项目都能用
~/.claude/skills/<skill-name>/SKILL.md

# 项目 Skill,只在当前项目中使用,适合提交给团队
项目根目录/.claude/skills/<skill-name>/SKILL.md

例如你想创建一个项目内的文章润色 Skill,可以这样放:

text
your-project/
├── .claude/
│   └── skills/
│       └── polish-article/
│           └── SKILL.md

这个时候,polish-article 就是 Skill 名称。你在 Claude Code 里可以输入:

text
/polish-article

如果你把 Skill 放在个人目录 ~/.claude/skills/ 下,那么以后在任何项目里都可以用。

一个最简单的 Skill 示例

比如我们创建一个“总结当前 git 改动”的 Skill:

text
.claude/
└── skills/
    └── summarize-changes/
        └── SKILL.md

SKILL.md 内容可以这样写:

md
---
name: summarize-changes
description: 总结当前项目未提交的 git 改动,并指出潜在风险。用户询问改了什么、帮我写提交信息、检查本次改动时使用。
---

## 当前改动

!`git diff HEAD`

## 处理要求

请用中文总结上面的改动:

1. 用 2-3 条说明本次主要改了什么
2. 标出可能的风险,比如遗漏测试、硬编码、异常处理不足
3. 如果适合提交,给出一个简洁的 commit message

这里最关键的是 !`git diff HEAD` 这一行。它表示在 Skill 加载时,Claude Code 会先运行这条命令,把当前真实的 diff 结果放进上下文里,然后 Claude 再基于结果进行总结。

这就比你手动复制 diff 方便很多。

SKILL.md 的基本结构

一个 Skill 通常由两部分组成:

  1. 顶部的 YAML frontmatter
  2. 下面的 markdown 指令正文

常见写法如下:

md
---
name: my-skill
description: 这个 skill 是做什么的,以及什么时候应该使用它
---

这里写具体执行步骤、输出格式、注意事项。

比较常用的字段有:

字段作用
nameSkill 名称,如果不写,默认使用目录名
description描述 Skill 的用途,Claude 会根据它判断是否自动使用
allowed-tools预先批准这个 Skill 可直接使用的工具,减少权限确认
disable-model-invocation设置为 true 后,Claude 不会自动触发,只能手动调用
user-invocable设置为 false 后,不在 / 菜单中显示
arguments定义参数,方便 /skill-name 参数 调用
context可以设置为 fork,让 Skill 在 subagent 中执行

对新手来说,前期重点掌握 namedescription 就够了。尤其是 description,它要写清楚两个问题:

  • 这个 Skill 能做什么
  • 用户说什么话时应该触发它

如果 description 写得太泛,比如“帮助用户处理问题”,Claude 就很难判断什么时候该用。

如何手动调用 Skill

在 Claude Code 中,Skill 可以自动触发,也可以手动触发。

手动触发方式是:

text
/skill-name

如果 Skill 支持参数,也可以这样:

text
/polish-article 万少的 Claude Code 入门教程.md

SKILL.md 中可以使用 $ARGUMENTS 接收你传入的所有参数:

md
---
name: polish-article
description: 润色中文技术文章,保持原意,优化表达和结构。
---

请润色下面指定的文章或内容:

$ARGUMENTS

要求:

1. 保持作者原有表达风格
2. 不要改变技术事实
3. 保留 markdown 标题层级和图片链接
4. 输出修改建议,必要时直接给出可替换文本

这样你就可以通过 /polish-article 文件名 来调用它。

什么时候应该做成 Skill

如果你不确定某个提示词要不要做成 Skill,可以用下面几个判断标准:

  • 这个任务你一周会重复使用多次
  • 这个任务有固定步骤,比如先读取文件、再检查、再输出报告
  • 这个任务有固定输出格式,比如文章、周报、PR review、测试报告
  • 这个任务需要附带模板、示例、脚本或参考资料
  • 你希望团队成员都按照同一个流程使用 Claude Code

举几个适合做成 Skill 的例子:

text
review-code        检查本次代码改动,按严重程度输出问题
write-article      按固定风格写技术文章
generate-ppt       根据 markdown 生成演示文稿
wechat-post        把文章整理成公众号可发布格式
frontend-audit     检查前端页面的视觉、交互和响应式问题
release-note       根据 git log 生成版本发布说明

这些都不是单纯的“记忆”,而是一套可以重复执行的流程,所以更适合放到 Skill。

Skill 可以带支持文件

复杂一点的 Skill 不一定只写一个 SKILL.md。你可以在目录里放模板、示例、脚本、参考文档:

text
my-skill/
├── SKILL.md
├── template.md
├── examples/
│   └── sample.md
└── scripts/
    └── validate.ps1

例如你做一个“公众号文章发布”Skill,就可以把固定排版模板放在 template.md,把历史优秀案例放在 examples/,把图片压缩脚本放在 scripts/

这样 SKILL.md 只需要写清楚流程和入口,不需要把所有资料都堆进去。Claude 需要时再读取对应文件,上下文会更干净。

新手建议

刚开始使用 Skill,不要一上来就写很复杂的自动化。万少建议先从这三类开始:

  1. 总结类:总结 git diff、总结会议纪要、总结长文档
  2. 检查类:代码 review、文章错别字检查、前端 UI 检查
  3. 生成类:生成 commit message、生成周报、生成文章大纲

等你发现某个 Skill 每天都会用,再慢慢给它增加支持文件、脚本、参数和工具权限。

记住一句话:CLAUDE.md 管记忆,rules 管规则,Skill 管流程。

MCP

MCP(Model Context Protocol,模型上下文协议)是 Claude Code 连接外部世界的"万能插头"。

简单来说:MCP 让 Claude Code 能够调用外部工具和服务,比如查询数据库、操作浏览器、调用 API、读写文件系统等。没有 MCP,Claude 只能和你对话;有了 MCP,Claude 可以操作你的开发环境和第三方服务

你也可以充分利用 AI 帮你查找以及安装需要的 MCP 服务;

为什么需要 MCP

想象这些场景:

  • 你让 Claude "帮我查一下数据库里今天的订单数量" —— 需要连接数据库
  • 你让 Claude "帮我截图看看网页现在的样子" —— 需要控制浏览器
  • 你让 Claude "把这段代码提交到 GitHub" —— 需要调用 GitHub API
  • 你让 Claude "帮我查一下天气" —— 需要调用天气 API

这些都需要 MCP 服务器来实现。

MCP 的工作原理

mermaid
flowchart TD
    A["👤 你(用户)"] -->|"自然语言指令"| B["🤖 Claude Code"]
    B -->|"判断需要调用工具"| C["🔌 MCP 客户端<br/>(内置在 Claude Code 中)"]
    C -->|"发送请求"| D["☁️ MCP 服务器<br/>(各种外部服务)"]
    D -->|"返回结果"| B
    B -.->|"展示给你"| A

MCP 服务器的类型

这里要注意:Claude Code 自带的文件读写、Bash 命令、Web 搜索等属于内置工具,不等于 MCP 服务器。MCP 主要用于把外部工具、数据源或服务接入 Claude Code。

类型说明示例
第三方 MCP社区或厂商提供,需要配置浏览器控制、数据库连接、GitHub 操作
自定义 MCP你自己开发的 MCP 服务器公司内部 API、私有工具
远程 MCP通过 URL 连接的远程服务远程数据平台、SaaS 工具

MCP 的配置范围

MCP 服务器可以根据配置位置分为三种范围,优先级从低到高为:用户 < 项目 < 本地。当同一个 MCP 在多个层级配置时,优先级高的会覆盖优先级低的配置。

范围作用域版本控制配置文件位置
本地仅当前项目~/.claude.json
项目仅当前项目是,通过版本控制项目根目录中的 .mcp.json
用户您的所有项目~/.claude.json

常用 MCP 服务器推荐

MCP 服务器功能适用场景
Playwright / Puppeteer浏览器自动化网页截图、E2E 测试、爬虫
SQLite / PostgreSQL数据库操作查询本地或远程数据库
GitHubGitHub APIIssue、PR、仓库管理
FetchHTTP 请求调用任意 API
自定义业务 MCP公司内部工具CRM、订单、知识库、私有接口

如何配置 MCP

1. 查看当前已配置的 MCP

在 Claude Code 终端中输入:

/mcp

2. 添加 MCP 服务器

推荐用 claude mcp add 命令添加 MCP,这样不容易写错配置文件。Claude Code 的 MCP 配置通常分为三种 scope:

bash
# 只在当前项目可用,默认写入用户级配置中的当前项目记录
claude mcp add my-server -- npx -y my-mcp-server

# 用户级,所有项目都可用
claude mcp add my-server --scope user -- npx -y my-mcp-server

# 项目级,写入项目根目录 .mcp.json,适合提交给团队共享
claude mcp add my-server --scope project -- npx -y my-mcp-server

如果需要手动写配置,项目级配置一般写在项目根目录的 .mcp.json。示例:

json
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest"]
    },
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/path/to/db.sqlite"]
    },
    "github": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your-token-here"
      }
    }
  }
}

个人级和本地级配置通常记录在 ~/.claude.json 中,不建议新手手动改,优先用命令添加。

3. 使用 MCP 工具

配置好后,Claude 会自动判断何时调用 MCP。你也可以主动要求:

帮我用 Playwright 截图 https://example.com
查一下数据库里用户表有多少条记录

MCP 和 Skill 的区别

对比项MCPSkill
本质外部工具接口内部流程封装
功能连接外部服务定义执行步骤
配置需要安装和配置服务器只需编写 SKILL.md
使用方式Claude 自动调用或你指定/skill-name 手动调用
示例浏览器控制、数据库查询文章润色、代码审查

一句话总结:MCP 让 Claude 能操作外部世界,Skill 让 Claude 能按固定流程执行任务。两者可以配合使用 —— Skill 里也可以调用 MCP 工具。

subAgents

官方文档:https://code.claude.com/docs/zh-CN/agents

subAgents(子代理)是 Claude Code 的“分身术”。当你给 Claude 一个复杂任务时,它可以创建多个子代理,让它们并行工作,最后汇总结果。

而且子 Agent 不会占用主 Agent 的上下文;

为什么需要 subAgents

想象你要装修房子,你会找:

  • 水电工处理电路
  • 瓦工贴瓷砖
  • 木工做柜子
  • 油漆工刷墙

他们同时开工,而不是一个人做完所有事。

Claude Code 的 subAgents 也是这个思路 —— 把大任务拆成多个子任务,分配给不同的子代理并行执行,大幅提升效率。

subAgents 的典型场景

场景说明
代码审查一个子代理检查安全性,一个检查性能,一个检查代码风格
多文件重构不同子代理负责不同模块的修改
调研任务多个子代理分别搜索不同方面的资料
测试覆盖一个子代理写单元测试,一个写集成测试
多语言项目前端子代理处理 React,后端子代理处理 API

如何使用 subAgents

1. Claude 自动使用

当你提出一个复杂任务时,Claude 会自动判断是否创建 subAgents。例如:

帮我审查这个项目的代码质量,包括安全性、性能和代码风格

Claude 可能会自动创建 3 个子代理分别处理这三个方面。

2. 手动指定 subAgents

你也可以明确要求:

用两个子代理并行处理:
1. 子代理 A:检查所有 API 接口的安全性
2. 子代理 B:检查数据库查询是否有 N+1 问题

3. 创建专用 subagent

如果某类任务会反复出现,可以用 /agents 创建专用 subagent。Claude Code 会把它保存为一个 markdown 配置文件:

text
# 项目级,只在当前项目生效,适合提交给团队
.claude/agents/security-reviewer.md

# 用户级,所有项目都能用
~/.claude/agents/security-reviewer.md

一个 subagent 文件通常包含名称、描述、可用工具和具体职责。例如:

markdown
---
name: security-reviewer
description: 检查代码中的安全风险,包括 SQL 注入、XSS、硬编码密钥和权限绕过。
tools: Read, Grep, Glob
---

你是安全审查专家。审查代码时优先输出可验证的问题、影响范围和修复建议,不要输出泛泛而谈的安全建议。

以后你可以直接说:

text
请使用 security-reviewer 检查这次改动的安全问题

subAgents 的特点

  • 并行执行:多个子代理同时工作,节省时间
  • 独立上下文:每个子代理有自己的上下文,互不干扰
  • 结果汇总:Claude 会自动整合所有子代理的结果
  • 职责专一:每个子代理最好只负责一个明确方向,比如安全、性能、测试或文档

使用建议

  • 任务足够复杂时才使用 subAgents,简单任务反而会增加额外开销
  • 给每个子代理明确的职责边界,避免重复工作
  • 子代理之间如果有依赖关系,需要说明执行顺序

Command

官方文档:https://code.claude.com/docs/en/commands

自定义 Command / Skills 文档:https://code.claude.com/docs/en/slash-commands

Command 在 Claude Code 里通常指 slash command,也就是在对话框里以 / 开头的命令。

它和你在终端里输入的 claude --versionclaude --help 不一样。终端命令是启动或配置 Claude Code 用的;slash command 是进入 Claude Code 会话之后,用来控制当前会话、管理上下文、切换模式、执行固定工作流的。

比如你已经进入了 Claude Code,可以直接输入:

text
/help

它会显示当前可用的命令。也可以只输入 /,Claude Code 会弹出命令列表,再继续输入关键词进行筛选。

常用内置 Command

新手不用一开始记住所有命令,先掌握下面这些就够了:

命令用途
/help查看帮助和可用命令
/init为当前项目生成 CLAUDE.md,让 Claude 了解项目规则
/clear开启一个新的干净会话,适合切换到新任务
/compact压缩当前上下文,长对话快爆上下文时很有用
/config查看或修改 Claude Code 配置
/doctor检查 Claude Code 安装和运行状态
/memory编辑 CLAUDE.md 记忆文件
/goal设置持续目标,让 Claude 工作到完成条件达成
/model切换当前会话使用的模型
/permissions管理工具权限,比如哪些命令可以自动执行
/mcp管理 MCP server 连接
/agents管理 subAgents
/review让 Claude 对当前代码进行 review
/status查看账号和系统状态
/usage/cost查看会话成本、token 用量、计划限制和活动统计

我的建议是:刚开始用 Claude Code 时,每次不知道能不能做某件事,就先敲 / 看一下有没有现成命令。很多人一上来就让 Claude 自己“帮我清理上下文”“帮我看改动”,其实这些场景已经有内置命令了。

Command 适合解决什么问题

Command 最适合处理三类事情:

  1. 控制当前会话

    比如清空上下文、压缩上下文、切换模型、查看状态、继续历史会话。这些不是具体的代码任务,而是对 Claude Code 运行状态的控制。

  2. 打开配置入口

    比如 /permissions/mcp/agents。这些命令背后通常会进入一个交互式界面,让你配置权限、工具、子代理和自动化规则。

  3. 执行固定工作流

    比如代码审查、调试、检查 diff、运行某个团队约定流程。固定流程重复出现时,就很适合封装成一个 Command。

可以这样理解:如果 CLAUDE.md 是项目记忆,Skill 是一套能力说明,那么 Command 更像是一个快捷入口。你不需要每次都打一大段提示词,只要输入 /xxx 就可以触发。

自定义 Command

现在 Claude Code 推荐用 Skill 的方式来写自定义 Command。目录名就是你输入的命令名,比如创建一个代码审查命令:

text
.claude/skills/review/SKILL.md

文件内容可以写成:

md
---
description: 审查当前代码改动
argument-hint: [focus]
allowed-tools: Bash(git diff *)
---

当前改动如下:

!`git diff`

请审查当前 git diff,重点关注:

1. 是否有明显 bug
2. 是否有安全风险
3. 是否有遗漏的错误处理
4. 是否需要补测试

如果用户传入了重点方向,请优先关注:$ARGUMENTS

最后按“问题 / 影响 / 建议修改”的格式输出。

之后在 Claude Code 里输入:

text
/review

Claude 就会把这个 markdown 文件当成固定提示词来执行。

如果你想指定审查重点,也可以输入:

text
/review 安全风险

这里有两个细节很有用:

  • $ARGUMENTS 会接收 /review 后面输入的全部参数
  • ! 开头的 Bash 命令会先执行,并把结果放进 Command 的上下文里

除了项目级 Command,也可以创建个人 Command,放到:

text
~/.claude/skills/review/SKILL.md

项目级 Command 适合团队共享,个人 Command 适合放自己的常用提示词。

如果你以前见过 .claude/commands/ 这种写法,也不用紧张。官方文档里说明它仍然可以工作,只是现在 Skill 是更推荐的组织方式;如果 Skill 和旧 Command 重名,Skill 会优先生效。

Command、Skill、CLAUDE.md 怎么选

这几个概念很容易混,万少建议按下面这个标准判断:

场景推荐方式
项目长期规则,比如技术栈、目录结构、代码规范CLAUDE.md
一个可复用流程,比如审查代码、生成周报、发布检查Skill
想在会话中快速手动触发某个 Skill/command
只是临时提一个需求直接对话

比如“这个项目使用 pnpm,不要用 npm”应该写进 CLAUDE.md;“每次提交前按固定清单检查代码”可以做成 precommit-check 这个 Skill;“现在马上执行一次提交前检查”就可以通过 /precommit-check 触发。

如果你只是想做一个快捷提示词,写一个简单的 Command 就够了。如果这个流程需要很多背景说明、模板、脚本和支持文件,再整理成完整的 Skill。

Command 使用建议

  • 不要把 Command 写得太宽泛,比如 /do-work/fix,Claude 不容易判断你到底想做什么
  • 命令名尽量短,但要能看出用途,比如 /review/commit-msg/release-check
  • 固定流程写进 Command,不固定的需求直接对话
  • 团队共用的 Command 建议放在项目 .claude/skills/ 里,个人习惯放在 ~/.claude/skills/
  • 如果 Command 需要执行脚本或读取外部文件,优先做成完整 Skill 目录,不要只写一个单文件提示词

对于新手来说,先会用内置命令,再把自己经常复制粘贴的提示词沉淀成 /xxx,就已经能明显提高 Claude Code 的使用效率了。

Hooks 了解

官方文档:https://code.claude.com/docs/zh-CN/hooks

Hooks(钩子)是 Claude Code 的"自动化触发器"。你可以配置在特定事件发生时,自动执行某些操作。

Hooks 能做什么

触发时机示例操作
编辑代码后自动类型检查、运行测试
响应完成后自动构建项目、运行检查
会话结束时清理临时文件、发送通知
工具调用前验证参数、拦截危险操作

Hooks 的类型

1. PostToolUse(工具使用后)

最常用的钩子,在 Claude 使用工具后自动执行:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "node .claude/hooks/format-edited-file.mjs"
          }
        ]
      }
    ]
  }
}

实际使用时要注意:Claude Code 会把工具调用信息以 JSON 形式传给 hook 命令。不同工具的字段不完全一样,如果要稳定拿到文件路径,建议写一个脚本从 stdin 里读取 tool_input.file_path,不要盲目假设所有场景都有 $FILE_PATH

比如你可以新建 .claude/hooks/format-edited-file.mjs

js
import { execFileSync } from "node:child_process";

let input = "";
process.stdin.on("data", chunk => input += chunk);
process.stdin.on("end", () => {
  const data = JSON.parse(input || "{}");
  const filePath = data.tool_input?.file_path;
  if (!filePath) process.exit(0);
  execFileSync("pnpm", ["prettier", "--write", filePath], { stdio: "inherit" });
});

2. PreToolUse(工具使用前)

在 Claude 使用工具前执行,可用于验证或拦截:

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo '即将执行 Bash 命令'"
          }
        ]
      }
    ]
  }
}

3. Stop(Claude 响应完成时)

在 Claude Code 主 agent 完成响应时执行:

json
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "pnpm build"
          }
        ]
      }
    ]
  }
}

如果你要在整个会话结束时执行清理动作,应使用 SessionEnd,而不是 Stop

配置 Hooks

Hooks 配置在 ~/.claude/settings.json 或项目的 .claude/settings.json 中:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "node .claude/hooks/format-edited-file.mjs"
          }
        ]
      },
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "node .claude/hooks/eslint-edited-file.mjs"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "pnpm type-check"
          }
        ]
      }
    ]
  }
}

常用 Hooks 配置示例

前端项目

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "node .claude/hooks/format-edited-file.mjs"
          },
          {
            "type": "command",
            "command": "node .claude/hooks/eslint-edited-file.mjs"
          }
        ]
      }
    ]
  }
}

Python 项目

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "python .claude/hooks/format_edited_file.py"
          }
        ]
      }
    ]
  }
}

注意事项

  • Hooks 使用项目的本地工具(如 pnpm prettier),不要依赖全局安装
  • 复杂的 Hooks 可能影响响应速度,保持简洁
  • 可以使用 "matcher": "*" 匹配所有工具
  • 如果要读取被修改的文件路径,推荐写脚本解析 hook 的 JSON stdin。WriteEditRead 等工具的文件路径通常在 tool_input.file_path

Plugins

官方文档:https://code.claude.com/docs/zh-CN/plugins

Claude Code 里的 Plugins(插件)不是指 VS Code 或 JetBrains 的编辑器插件,而是一种可分发的扩展包。一个 Claude Code Plugin 可以把多种能力打包在一起,比如:

  • slash commands
  • skills
  • subagents
  • hooks
  • MCP servers

你可以把它理解成“把一套 Claude Code 工作流打包后分享给别人安装”。

Plugins 和 MCP、Skill 的区别

对比项PluginsMCPSkill
本质扩展包外部工具协议任务流程说明
功能打包 commands、skills、agents、hooks、MCP 等连接外部工具和数据源让 Claude 按固定流程做事
适合场景团队共享一整套工作流浏览器、数据库、API、GitHub 等外部能力文章润色、代码审查、生成周报等流程
配置方式/plugin 安装和管理claude mcp add.mcp.json放到 .claude/skills/~/.claude/skills/

什么时候需要 Plugin

如果你只有一个固定流程,用 Skill 就够了。

如果你想把一整套能力打包,例如:

text
前端项目插件:
- /review-ui 命令
- frontend-audit Skill
- ui-reviewer subagent
- 自动截图 MCP
- 保存后格式化 hook

这种就更适合做成 Plugin。

如何管理 Plugin

在 Claude Code 中可以输入:

text
/plugin

然后按界面提示安装、启用或管理插件。

AgentTeams

官方文档:https://code.claude.com/docs/en/agent-teams

AgentTeams 是 Claude Code 里更进一步的并行协作能力。它不是简单地让一个主 agent 派几个 subAgents 去干活,而是让多个 Claude Code 会话组成一个“团队”。

在这个团队里,会有一个 team lead(团队负责人),负责拆任务、分配任务、汇总结果;也会有多个 teammates(队友),每个队友都是独立的 Claude Code 实例,有自己的上下文窗口,可以处理自己的任务,也可以互相发消息。

可以这样理解:

  • subAgents:主 agent 叫几个分身去做事,分身做完后把结果汇报给主 agent
  • AgentTeams:多个 Claude Code 实例组成团队,有共享任务列表,队友之间可以直接沟通

所以 AgentTeams 更像一个小型 AI 开发小组,而不是普通的工具调用。

开启 AgentTeams

AgentTeams 目前属于实验功能,默认是关闭的。官方要求 Claude Code 版本至少是 v2.1.32,你可以先检查版本:

bash
claude --version

然后在 ~/.claude/settings.json 里加入环境变量:

json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

如果你想先用最兼容的显示模式,可以顺便指定:

json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  },
  "teammateMode": "in-process"
}

配置完成后,重启终端,再进入项目启动 Claude Code。

如何创建一个 Agent Team

开启后,不需要记复杂命令,直接用自然语言告诉 Claude:

text
创建一个 agent team 来审查这个项目:

1. 一个 teammate 负责安全风险
2. 一个 teammate 负责性能问题
3. 一个 teammate 负责测试覆盖

让他们分别检查,最后由 team lead 汇总成一份报告。

或者做功能开发时可以这样说:

text
创建一个 agent team 来实现用户设置页:

1. 前端 teammate 负责页面和交互
2. 后端 teammate 负责接口和数据结构
3. 测试 teammate 负责单测和集成测试

每个 teammate 只修改自己负责的文件,完成后由 lead 汇总并运行测试。

这类任务适合 AgentTeams,因为每个角色都有相对独立的职责,不需要所有人同时改同一个文件。

AgentTeams 适合什么场景

AgentTeams 适合“可以并行探索”的任务:

场景示例
多角度代码审查安全、性能、测试覆盖分别检查
复杂 bug 排查多个 teammate 分别验证不同假设
跨层功能开发前端、后端、测试分开负责
技术方案评审架构、成本、风险、反对意见分别分析
大型重构前调研每个 teammate 负责一个模块或目录

不适合的场景也要说清楚:

  • 简单改一个小 bug,不需要 AgentTeams
  • 多个 teammate 都要改同一个文件,容易冲突
  • 任务强依赖顺序,前一步不完成后一步没法做
  • 你只是想让 Claude 快速查一个问题,用 subAgents 就够了

AgentTeams 会明显增加 token 消耗,也会带来协调成本。不是人越多越快,任务拆得清楚才有意义。

AgentTeams 和 subAgents 的区别

对比项subAgentsAgentTeams
工作方式主 agent 派发任务team lead 组织一个团队
上下文子代理有独立上下文,结果回到主 agent每个 teammate 都是独立 Claude Code 会话
沟通方式子代理主要向主 agent 汇报teammate 可以互相发消息
协调方式主 agent 统一管理共享任务列表,队友可协作推进
成本相对低更高,因为多个 Claude 实例同时工作
适合任务明确、短小、只需要结果复杂、多角度、需要互相讨论的任务

万少的建议是:日常开发先用 subAgents。只有当你发现一个任务天然能拆成多个独立方向,而且这些方向之间需要互相交流时,再考虑 AgentTeams。

subAgents 和 AgentTeams 的区别

显示模式

AgentTeams 有两种常见显示方式:

  1. in-process

    所有 teammate 都在当前终端里运行。你可以用 Shift + ↓ 在 lead 和 teammate 之间切换。这个模式兼容性最好,适合新手先体验。

  2. split panes

    每个 teammate 在独立 pane 里显示,适合同时观察多个 agent 的输出。但它依赖 tmux 或 iTerm2,环境要求更高。在 Windows Terminal、VS Code 集成终端这类环境中,通常不适合强行使用 split panes。

如果你只是想先跑通,建议用:

json
{
  "teammateMode": "in-process"
}

使用 AgentTeams 的关键提示词

AgentTeams 最重要的是把职责边界说清楚。不要只说:

text
帮我创建一个 agent team 开发这个功能

更好的写法是:

text
创建一个 agent team 开发这个功能。

请分成 3 个 teammate:

1. frontend-owner:只负责 src/pages/settings 和 src/components/settings
2. api-owner:只负责 src/api/settings 和后端路由
3. test-owner:只负责测试文件和测试数据

要求:
- 每个 teammate 先说明自己的计划
- 不要修改别人负责的文件
- 完成后 lead 汇总改动并运行测试
- 如果发现职责冲突,先发消息确认,不要直接改

这个提示词的核心不是“创建团队”,而是提前规定:

  • 谁负责什么
  • 哪些文件归谁改
  • 是否需要先出计划
  • 什么时候汇总
  • 冲突怎么处理

这些信息越清楚,AgentTeams 越不容易乱。

常见问题和注意事项

  • AgentTeams 是实验功能,可能存在恢复会话、任务状态、关闭清理等限制
  • 一个 lead 同一时间通常只管理一个 team,做完后要让它清理团队
  • teammate 不会继承 lead 的完整聊天历史,只会加载项目上下文、CLAUDE.md、Skills、MCP 等信息
  • teammate 默认继承 lead 的权限模式,如果 lead 是高权限模式,teammate 也会更危险
  • 如果某个 teammate 卡住了,可以切换过去直接补充指令
  • 如果任务完成但状态没更新,可以让 lead 检查任务列表并同步状态
  • 如果使用 split panes,结束后注意清理可能残留的 tmux session

最后记住一句话:AgentTeams 不是新手每天都必须用的功能,它更适合复杂任务、并行审查、方案碰撞和跨模块开发。普通任务先用单个 Claude Code,会更稳、更省钱。


以上就是 Claude Code 的核心功能介绍。记住这些概念的比喻:

  • CLAUDE.md = 记忆系统(记住你是谁,项目是什么)
  • rules = 家规(编码规范、安全要求)
  • Skill = 绝活(固定流程,一键执行)
  • MCP = 万能插头(连接外部世界)
  • subAgents = 分身术(并行处理复杂任务)
  • Command = 快捷入口(用 /xxx 快速触发能力)
  • Hooks = 自动化触发器(省时省力)
  • Plugins = 扩展包(把 Commands、Skills、agents、Hooks、MCP 打包共享)
  • AgentTeams = AI 小队(多个 Claude Code 会话协作完成复杂任务)

Claude Code 能力地图

掌握这些,你就能把 Claude Code 用得炉火纯青了!

Released under the MIT License.