万少的 Claude Code 入门教程
安装 Claude Code

前言
什么是 Claude Code,为什么要使用 Claude Code
Claude Code 是一个代理编码工具,可以读取你的代码库、编辑文件、运行命令,并与你的开发工具集成。可在终端、IDE、桌面应用和浏览器中使用。
Claude Code 是一个由 AI 驱动的编码助手,可帮助你构建功能、修复错误和自动化开发任务。它理解你的整个代码库,可以跨多个文件和工具工作以完成任务。
终端形式,随处可用,方便和各种 CLI 集成,如 GitHub 的
gh、飞书的lark-cli等众多 Skill,可以实现常见办公能力,如 PPT、DOCX、图文处理等
Claude Code 是官方主线产品,很多 Agent 新特性会优先出现在这里,可以第一时间体验。
安装
根据自己的操作系统在终端中进行安装;
macOS, Linux, WSL:
curl -fsSL https://claude.ai/install.sh | bashWindows PowerShell
irm https://claude.ai/install.ps1 | iexWindows 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 配置大模型
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 | 读取、文件编辑和常见文件系统命令(mkdir、touch、mv、cp 等) | 迭代您正在审查的代码 |
plan | 仅读取 | 在更改代码库前进行探索 |
auto | 所有操作,带后台安全检查 | 长时间任务、减少提示疲劳 |
dontAsk | 仅预先批准的工具 | 锁定的 CI 和脚本 |
bypassPermissions | 跳过权限提示,允许执行所有操作 | 仅隔离容器和 VM |
在你已经在终端启动 Claude 时,可以使用 Shift + Tab 切换常用模式。默认主要在
default、acceptEdits、plan之间切换;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 键停止任务,然后直接告诉它需要调整的信息;

常用斜杠命令汇总
在 Claude Code 会话里,以 / 开头的命令叫做 slash command(斜杠命令)。
你可以把它理解成 Claude Code 的快捷键:有些命令用来管理项目记忆,有些命令用来切换模型,有些命令用来查看上下文、管理权限、做代码审查。
进入 Claude Code 后,直接输入:
/就可以看到当前环境可用的命令列表。继续输入关键词,还可以筛选命令。比如输入 /mo,通常就能快速找到 /model。
需要注意:不同版本、不同平台、不同账号计划下,可用命令可能不完全一样。如果你看不到某个命令,先执行:
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 行为异常、登录或配置出问题 |
按使用阶段记忆
如果上面的表太多,可以按工作流来记:
第一次进入项目:
/init
/memory
/permissions先让 Claude 了解项目,再配置权限,避免后续每一步都反复确认。
做任务过程中:
/model
/effort
/context
/compact
/goal任务复杂就换更强模型或调高 effort;上下文快满了,就看 /context,必要时用 /compact。如果你希望 Claude 不要每完成一小步就停下来,而是持续工作到一个明确结果,可以使用 /goal。
/goal 怎么用
/goal 的作用是给当前会话设置一个“完成条件”。设置后,Claude 会围绕这个目标持续推进,直到它判断目标已经达成。
比如你可以输入:
/goal 修复当前项目的测试失败,直到 pnpm test 全部通过也可以写得更具体:
/goal CHANGELOG.md 包含本周所有已合并 PR 的更新记录,并且 pnpm lint 通过如果想清除当前目标,可以输入:
/goal clear使用 /goal 时,最重要的是把“完成条件”写清楚。不要只写:
/goal 优化这个项目更好的写法是:
/goal 首页首屏加载性能改善,要求 Lighthouse Performance 达到 90 分以上,并且现有测试全部通过简单说,/goal 适合长任务,尤其适合那些有明确验收标准的任务,比如测试通过、构建通过、文档补齐、某个功能完整可用。
这里也要区分一下 /memory 和 /goal:
/memory更偏当前项目的记忆和规则,比如这个项目用什么包管理器、测试命令是什么/goal更偏当前任务的完成条件,比如“测试全部通过”“文档包含某些内容”“功能可以端到端运行”
如果你的 Claude Code 版本里暂时看不到 /goal,先升级 Claude Code。斜杠命令更新比较快,最终以你输入 / 后看到的本机列表为准。
改完代码准备检查:
/diff
/code-review
/security-review先看 diff,再做 review。涉及安全边界的改动,比如登录、权限、数据导出、支付回调,建议额外跑一次 /security-review。
配置生态能力:
/mcp
/agents
/skills
/hooks
/plugin这几个命令分别对应前面和后面会讲到的 MCP、subAgents、Skills、Hooks 和 Plugins。刚开始不用全会,知道它们是入口即可。
万少的使用习惯
我的建议是:刚开始不要追求把所有命令背下来,只要记住一个动作:
/所有命令都从这里找。真正高频的命令,其实就几个:/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.md 或 api-design.md。所有 .md 文件都会被递归发现,因此你可以将规则组织到子目录中,如 frontend/ 或 backend/。
your-project/
├── .claude/
│ ├── CLAUDE.md # 主项目指令
│ └── rules/
│ ├── code-style.md # 代码样式指南
│ ├── testing.md # 测试约定
│ └── security.md # 安全要求Skill
Skill 是技能。在编程或者日常办公中,一些可以固化的流程都可以封装成 Skill;同时,网络上也有大量已经封装好的 Skill 可以复用。
你可以把 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 文件。
常见位置有两个:
# 个人 Skill,所有项目都能用
~/.claude/skills/<skill-name>/SKILL.md
# 项目 Skill,只在当前项目中使用,适合提交给团队
项目根目录/.claude/skills/<skill-name>/SKILL.md例如你想创建一个项目内的文章润色 Skill,可以这样放:
your-project/
├── .claude/
│ └── skills/
│ └── polish-article/
│ └── SKILL.md这个时候,polish-article 就是 Skill 名称。你在 Claude Code 里可以输入:
/polish-article如果你把 Skill 放在个人目录 ~/.claude/skills/ 下,那么以后在任何项目里都可以用。
一个最简单的 Skill 示例
比如我们创建一个“总结当前 git 改动”的 Skill:
.claude/
└── skills/
└── summarize-changes/
└── SKILL.mdSKILL.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 通常由两部分组成:
- 顶部的 YAML frontmatter
- 下面的 markdown 指令正文
常见写法如下:
---
name: my-skill
description: 这个 skill 是做什么的,以及什么时候应该使用它
---
这里写具体执行步骤、输出格式、注意事项。比较常用的字段有:
| 字段 | 作用 |
|---|---|
name | Skill 名称,如果不写,默认使用目录名 |
description | 描述 Skill 的用途,Claude 会根据它判断是否自动使用 |
allowed-tools | 预先批准这个 Skill 可直接使用的工具,减少权限确认 |
disable-model-invocation | 设置为 true 后,Claude 不会自动触发,只能手动调用 |
user-invocable | 设置为 false 后,不在 / 菜单中显示 |
arguments | 定义参数,方便 /skill-name 参数 调用 |
context | 可以设置为 fork,让 Skill 在 subagent 中执行 |
对新手来说,前期重点掌握 name 和 description 就够了。尤其是 description,它要写清楚两个问题:
- 这个 Skill 能做什么
- 用户说什么话时应该触发它
如果 description 写得太泛,比如“帮助用户处理问题”,Claude 就很难判断什么时候该用。
如何手动调用 Skill
在 Claude Code 中,Skill 可以自动触发,也可以手动触发。
手动触发方式是:
/skill-name如果 Skill 支持参数,也可以这样:
/polish-article 万少的 Claude Code 入门教程.md在 SKILL.md 中可以使用 $ARGUMENTS 接收你传入的所有参数:
---
name: polish-article
description: 润色中文技术文章,保持原意,优化表达和结构。
---
请润色下面指定的文章或内容:
$ARGUMENTS
要求:
1. 保持作者原有表达风格
2. 不要改变技术事实
3. 保留 markdown 标题层级和图片链接
4. 输出修改建议,必要时直接给出可替换文本这样你就可以通过 /polish-article 文件名 来调用它。
什么时候应该做成 Skill
如果你不确定某个提示词要不要做成 Skill,可以用下面几个判断标准:
- 这个任务你一周会重复使用多次
- 这个任务有固定步骤,比如先读取文件、再检查、再输出报告
- 这个任务有固定输出格式,比如文章、周报、PR review、测试报告
- 这个任务需要附带模板、示例、脚本或参考资料
- 你希望团队成员都按照同一个流程使用 Claude Code
举几个适合做成 Skill 的例子:
review-code 检查本次代码改动,按严重程度输出问题
write-article 按固定风格写技术文章
generate-ppt 根据 markdown 生成演示文稿
wechat-post 把文章整理成公众号可发布格式
frontend-audit 检查前端页面的视觉、交互和响应式问题
release-note 根据 git log 生成版本发布说明这些都不是单纯的“记忆”,而是一套可以重复执行的流程,所以更适合放到 Skill。
Skill 可以带支持文件
复杂一点的 Skill 不一定只写一个 SKILL.md。你可以在目录里放模板、示例、脚本、参考文档:
my-skill/
├── SKILL.md
├── template.md
├── examples/
│ └── sample.md
└── scripts/
└── validate.ps1例如你做一个“公众号文章发布”Skill,就可以把固定排版模板放在 template.md,把历史优秀案例放在 examples/,把图片压缩脚本放在 scripts/。
这样 SKILL.md 只需要写清楚流程和入口,不需要把所有资料都堆进去。Claude 需要时再读取对应文件,上下文会更干净。
新手建议
刚开始使用 Skill,不要一上来就写很复杂的自动化。万少建议先从这三类开始:
- 总结类:总结 git diff、总结会议纪要、总结长文档
- 检查类:代码 review、文章错别字检查、前端 UI 检查
- 生成类:生成 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 的工作原理
flowchart TD
A["👤 你(用户)"] -->|"自然语言指令"| B["🤖 Claude Code"]
B -->|"判断需要调用工具"| C["🔌 MCP 客户端<br/>(内置在 Claude Code 中)"]
C -->|"发送请求"| D["☁️ MCP 服务器<br/>(各种外部服务)"]
D -->|"返回结果"| B
B -.->|"展示给你"| AMCP 服务器的类型
这里要注意: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 | 数据库操作 | 查询本地或远程数据库 |
| GitHub | GitHub API | Issue、PR、仓库管理 |
| Fetch | HTTP 请求 | 调用任意 API |
| 自定义业务 MCP | 公司内部工具 | CRM、订单、知识库、私有接口 |
如何配置 MCP
1. 查看当前已配置的 MCP
在 Claude Code 终端中输入:
/mcp2. 添加 MCP 服务器
推荐用 claude mcp add 命令添加 MCP,这样不容易写错配置文件。Claude Code 的 MCP 配置通常分为三种 scope:
# 只在当前项目可用,默认写入用户级配置中的当前项目记录
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。示例:
{
"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 的区别
| 对比项 | MCP | Skill |
|---|---|---|
| 本质 | 外部工具接口 | 内部流程封装 |
| 功能 | 连接外部服务 | 定义执行步骤 |
| 配置 | 需要安装和配置服务器 | 只需编写 SKILL.md |
| 使用方式 | Claude 自动调用或你指定 | /skill-name 手动调用 |
| 示例 | 浏览器控制、数据库查询 | 文章润色、代码审查 |
一句话总结:MCP 让 Claude 能操作外部世界,Skill 让 Claude 能按固定流程执行任务。两者可以配合使用 —— Skill 里也可以调用 MCP 工具。
subAgents
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 配置文件:
# 项目级,只在当前项目生效,适合提交给团队
.claude/agents/security-reviewer.md
# 用户级,所有项目都能用
~/.claude/agents/security-reviewer.md一个 subagent 文件通常包含名称、描述、可用工具和具体职责。例如:
---
name: security-reviewer
description: 检查代码中的安全风险,包括 SQL 注入、XSS、硬编码密钥和权限绕过。
tools: Read, Grep, Glob
---
你是安全审查专家。审查代码时优先输出可验证的问题、影响范围和修复建议,不要输出泛泛而谈的安全建议。以后你可以直接说:
请使用 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 --version、claude --help 不一样。终端命令是启动或配置 Claude Code 用的;slash command 是进入 Claude Code 会话之后,用来控制当前会话、管理上下文、切换模式、执行固定工作流的。
比如你已经进入了 Claude Code,可以直接输入:
/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 最适合处理三类事情:
控制当前会话
比如清空上下文、压缩上下文、切换模型、查看状态、继续历史会话。这些不是具体的代码任务,而是对 Claude Code 运行状态的控制。
打开配置入口
比如
/permissions、/mcp、/agents。这些命令背后通常会进入一个交互式界面,让你配置权限、工具、子代理和自动化规则。执行固定工作流
比如代码审查、调试、检查 diff、运行某个团队约定流程。固定流程重复出现时,就很适合封装成一个 Command。
可以这样理解:如果 CLAUDE.md 是项目记忆,Skill 是一套能力说明,那么 Command 更像是一个快捷入口。你不需要每次都打一大段提示词,只要输入 /xxx 就可以触发。
自定义 Command
现在 Claude Code 推荐用 Skill 的方式来写自定义 Command。目录名就是你输入的命令名,比如创建一个代码审查命令:
.claude/skills/review/SKILL.md文件内容可以写成:
---
description: 审查当前代码改动
argument-hint: [focus]
allowed-tools: Bash(git diff *)
---
当前改动如下:
!`git diff`
请审查当前 git diff,重点关注:
1. 是否有明显 bug
2. 是否有安全风险
3. 是否有遗漏的错误处理
4. 是否需要补测试
如果用户传入了重点方向,请优先关注:$ARGUMENTS
最后按“问题 / 影响 / 建议修改”的格式输出。之后在 Claude Code 里输入:
/reviewClaude 就会把这个 markdown 文件当成固定提示词来执行。
如果你想指定审查重点,也可以输入:
/review 安全风险这里有两个细节很有用:
$ARGUMENTS会接收/review后面输入的全部参数!开头的 Bash 命令会先执行,并把结果放进 Command 的上下文里
除了项目级 Command,也可以创建个人 Command,放到:
~/.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 了解
Hooks(钩子)是 Claude Code 的"自动化触发器"。你可以配置在特定事件发生时,自动执行某些操作。
Hooks 能做什么
| 触发时机 | 示例操作 |
|---|---|
| 编辑代码后 | 自动类型检查、运行测试 |
| 响应完成后 | 自动构建项目、运行检查 |
| 会话结束时 | 清理临时文件、发送通知 |
| 工具调用前 | 验证参数、拦截危险操作 |
Hooks 的类型
1. PostToolUse(工具使用后)
最常用的钩子,在 Claude 使用工具后自动执行:
{
"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:
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 使用工具前执行,可用于验证或拦截:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "echo '即将执行 Bash 命令'"
}
]
}
]
}
}3. Stop(Claude 响应完成时)
在 Claude Code 主 agent 完成响应时执行:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "pnpm build"
}
]
}
]
}
}如果你要在整个会话结束时执行清理动作,应使用 SessionEnd,而不是 Stop。
配置 Hooks
Hooks 配置在 ~/.claude/settings.json 或项目的 .claude/settings.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 配置示例
前端项目
{
"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 项目
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "python .claude/hooks/format_edited_file.py"
}
]
}
]
}
}注意事项
- Hooks 使用项目的本地工具(如
pnpm prettier),不要依赖全局安装 - 复杂的 Hooks 可能影响响应速度,保持简洁
- 可以使用
"matcher": "*"匹配所有工具 - 如果要读取被修改的文件路径,推荐写脚本解析 hook 的 JSON stdin。
Write、Edit、Read等工具的文件路径通常在tool_input.file_path
Plugins
Claude Code 里的 Plugins(插件)不是指 VS Code 或 JetBrains 的编辑器插件,而是一种可分发的扩展包。一个 Claude Code Plugin 可以把多种能力打包在一起,比如:
- slash commands
- skills
- subagents
- hooks
- MCP servers
你可以把它理解成“把一套 Claude Code 工作流打包后分享给别人安装”。
Plugins 和 MCP、Skill 的区别
| 对比项 | Plugins | MCP | Skill |
|---|---|---|---|
| 本质 | 扩展包 | 外部工具协议 | 任务流程说明 |
| 功能 | 打包 commands、skills、agents、hooks、MCP 等 | 连接外部工具和数据源 | 让 Claude 按固定流程做事 |
| 适合场景 | 团队共享一整套工作流 | 浏览器、数据库、API、GitHub 等外部能力 | 文章润色、代码审查、生成周报等流程 |
| 配置方式 | /plugin 安装和管理 | claude mcp add 或 .mcp.json | 放到 .claude/skills/ 或 ~/.claude/skills/ |
什么时候需要 Plugin
如果你只有一个固定流程,用 Skill 就够了。
如果你想把一整套能力打包,例如:
前端项目插件:
- /review-ui 命令
- frontend-audit Skill
- ui-reviewer subagent
- 自动截图 MCP
- 保存后格式化 hook这种就更适合做成 Plugin。
如何管理 Plugin
在 Claude Code 中可以输入:
/plugin然后按界面提示安装、启用或管理插件。
AgentTeams
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,你可以先检查版本:
claude --version然后在 ~/.claude/settings.json 里加入环境变量:
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}如果你想先用最兼容的显示模式,可以顺便指定:
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
},
"teammateMode": "in-process"
}配置完成后,重启终端,再进入项目启动 Claude Code。
如何创建一个 Agent Team
开启后,不需要记复杂命令,直接用自然语言告诉 Claude:
创建一个 agent team 来审查这个项目:
1. 一个 teammate 负责安全风险
2. 一个 teammate 负责性能问题
3. 一个 teammate 负责测试覆盖
让他们分别检查,最后由 team lead 汇总成一份报告。或者做功能开发时可以这样说:
创建一个 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 的区别
| 对比项 | subAgents | AgentTeams |
|---|---|---|
| 工作方式 | 主 agent 派发任务 | team lead 组织一个团队 |
| 上下文 | 子代理有独立上下文,结果回到主 agent | 每个 teammate 都是独立 Claude Code 会话 |
| 沟通方式 | 子代理主要向主 agent 汇报 | teammate 可以互相发消息 |
| 协调方式 | 主 agent 统一管理 | 共享任务列表,队友可协作推进 |
| 成本 | 相对低 | 更高,因为多个 Claude 实例同时工作 |
| 适合任务 | 明确、短小、只需要结果 | 复杂、多角度、需要互相讨论的任务 |
万少的建议是:日常开发先用 subAgents。只有当你发现一个任务天然能拆成多个独立方向,而且这些方向之间需要互相交流时,再考虑 AgentTeams。
显示模式
AgentTeams 有两种常见显示方式:
in-process
所有 teammate 都在当前终端里运行。你可以用
Shift + ↓在 lead 和 teammate 之间切换。这个模式兼容性最好,适合新手先体验。split panes
每个 teammate 在独立 pane 里显示,适合同时观察多个 agent 的输出。但它依赖
tmux或 iTerm2,环境要求更高。在 Windows Terminal、VS Code 集成终端这类环境中,通常不适合强行使用 split panes。
如果你只是想先跑通,建议用:
{
"teammateMode": "in-process"
}使用 AgentTeams 的关键提示词
AgentTeams 最重要的是把职责边界说清楚。不要只说:
帮我创建一个 agent team 开发这个功能更好的写法是:
创建一个 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 用得炉火纯青了!