万少的 Claude Code 入门教程

万少的 Claude Code 入门教程

安装 Claude Code

前言

code.claude.com/docs/zh-CN/...

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

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

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

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

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

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

安装

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

  • macOS, Linux, WSL:

    arduino 复制代码
    curl -fsSL https://claude.ai/install.sh | bash
  • Windows PowerShell

    arduino 复制代码
    irm https://claude.ai/install.ps1 | iex
  • Windows CMD

    arduino 复制代码
    curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

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

检查版本

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

css 复制代码
 claude --version

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

复制代码
claude 

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

利用 cc switch 配置大模型

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 模式,这样就不会频繁停下来要求你授权。这个模式风险很高,只建议在隔离容器、虚拟机或明确可丢弃的测试目录里使用。

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

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

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

Claude Code 基本使用

直接对话

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

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

修正方向

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

常用斜杠命令汇总

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

在 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/

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

Skill

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

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

你可以把 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 中安装它。

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

我们继续下载并安装 findskill

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

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

bash 复制代码
/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 是做什么的,以及什么时候应该使用它
---

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

比较常用的字段有:

字段 作用
name Skill 名称,如果不写,默认使用目录名
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 的工作原理

flowchart TD A["👤 你(用户)"] -->|"自然语言指令"| B["🤖 Claude Code"] B -->|"判断需要调用工具"| C["🔌 MCP 客户端
(内置在 Claude Code 中)"] C -->|"发送请求"| D["☁️ MCP 服务器
(各种外部服务)"] 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 "#local-scope") 仅当前项目 ~/.claude.json
[项目](#范围 作用域 版本控制 配置文件位置 本地 仅当前项目 否 ~/.claude.json 项目 仅当前项目 是,通过版本控制 项目根目录中的 .mcp.json 用户 您的所有项目 否 ~/.claude.json "#project-scope") 仅当前项目 是,通过版本控制 项目根目录中的 .mcp.json
[用户](#范围 作用域 版本控制 配置文件位置 本地 仅当前项目 否 ~/.claude.json 项目 仅当前项目 是,通过版本控制 项目根目录中的 .mcp.json 用户 您的所有项目 否 ~/.claude.json "#user-scope") 您的所有项目 ~/.claude.json

常用 MCP 服务器推荐

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

如何配置 MCP

1. 查看当前已配置的 MCP

在 Claude Code 终端中输入:

bash 复制代码
/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。你也可以主动要求:

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

MCP 和 Skill 的区别

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

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

subAgents

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

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

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

为什么需要 subAgents

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

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

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

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

subAgents 的典型场景

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

如何使用 subAgents

1. Claude 自动使用

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

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

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

2. 手动指定 subAgents

你也可以明确要求:

css 复制代码
用两个子代理并行处理:
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

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

自定义 Command / Skills 文档:code.claude.com/docs/en/sla...

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 了解

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

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

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

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 就够了。

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

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

这种就更适合做成 Plugin。

如何管理 Plugin

在 Claude Code 中可以输入:

text 复制代码
/plugin

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

AgentTeams

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

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 的区别

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

万少的建议是:日常开发先用 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 用得炉火纯青了!

相关推荐
这是谁的博客?9 小时前
AI 领域精选新闻(2026-05-24)
人工智能·ai·大模型·agent·ai安全
SP FA9 小时前
深度强化学习与控制(二):无模型强化学习
人工智能·强化学习·dqn
蓦然回首却已人去楼空9 小时前
深度学习进阶:自然语言处理|4.2.3 QA|交叉熵、激活函数与 y − t:一套数学框架的三个侧面
人工智能·深度学习·自然语言处理
malog_9 小时前
Milvus向量数据库:AI时代的搜索革命
数据库·人工智能·后端·milvus
lizhihai_999 小时前
股市学习心得-技术指标学习(布林线+MACD)
大数据·人工智能·学习
এ慕ོ冬℘゜9 小时前
JS 前端基础高频面试题
开发语言·前端·javascript
徐安安_ye19 小时前
FlashAttention遇上旋转位置编码:RoPE是怎么跟注意力计算配合的?
人工智能·深度学习·机器学习
放下华子我只抽RuiKe59 小时前
React 从入门到生产(八):测试与部署
前端·javascript·深度学习·react.js·前端框架·ecmascript·集成学习
invicinble9 小时前
springboot提供的机制大全
java·spring boot·后端