简介¶

安装¶

需要一个 Claude 账号,当然现在国内很多厂家(DeepSeek/Minimax/GLM)已经适配,后文会介绍怎么切换。

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

安装完成后,验证一下:

claude --version

如果显示版本号,说明安装成功!

登录:

claude

启动后,系统会提示你登录,在 Claude Code 界面中输入:

/login

支持的账号类型
你可以使用以下任意一种账号类型登录:

1、Claude 订阅账号(推荐)
Claude Pro - 个人专业版
Claude Max - 最高级别订阅
Claude Teams - 团队版
Claude Enterprise - 企业版
2、Claude Console 账号
API 访问账号,使用预付费积分
适合开发者和 API 用户

注意:
同一个邮箱可以同时拥有两种账号类型
登录后,凭据会被保存,下次无需重复登录
如需切换账号,使用 /login 命令重新登录

其他登录¶

  1. 定位配置文件:在你的用户目录下找到 .claude.json 文件。

Windows: C:\Users\你的用户名.claude.json

  1. 编辑文件:用记事本或VS Code打开,如果文件是空的也没关系,直接覆盖写入以下内容:

    {
      "hasCompletedOnboarding": true
    }
    

    这一行相当于告诉软件“新手引导已通过”,直接跳过登录界面

  2. 配置第三方模型(需要购买CodingPlan)

找到并编辑配置文件 ~/.claude/settings.json,填入你的中转站地址和API Key,模型可以自己指定
json { "env": { "ANTHROPIC_BASE_URL": "你的中转站地址(如:https://api.siliconflow.cn/)", "ANTHROPIC_AUTH_TOKEN": "你的中转站API Key", "ANTHROPIC_DEFAULT_MODEL": "想用的模型名(如:Qwen/Qwen2.5-72B-Instruct)" } }

方法 B (智能路由 - Claude Code Router)  
如果需要在多个模型间灵活切换,可以安装一个路由器。先全局安装工具:
```bash
npm install -g @musistudio/claude-code-router
```
然后通过 ccr code 命令启动,在对话中输入 /model 提供商,模型名(如 /model openrouter,anthropic/claude-3.5-sonnet)就能即时切换。

方法 C (本地硬核 - vLLM)
对于技术高手,可以启动本地 vLLM 服务器:
```bash
vllm serve Qwen/Qwen2.5-7B-Instruct --enable-auto-tool-choice --tool-call-parser openai
```
然后设置环境变量指向本地地址:export ANTHROPIC_BASE_URL="http://localhost:8000"。    

使用claude¶

配置完成后,进入一个您的代码工作目录,在终端中执行 claude 命令即可开始使用 Claude Code

输入/会列出可用的命令

常用命令速查表¶

命令行命令¶

命令 功能 示例
claude 启动交互模式 claude
claude "task" 执行一次性任务 claude "fix the build error"
claude -p "query" 执行一次查询后退出 claude -p "explain this function"
claude -c 在当前目录继续最近的对话 claude -c
claude -r 恢复之前的对话 claude -r
claude commit 创建 Git 提交 claude commit

交互模式内命令¶

命令 功能 示例
/clear 清除对话历史 > /clear
/help 显示可用命令 > /help
/login 登录或切换账号 > /login
/resume 恢复之前的对话 > /resume
exit 或 Ctrl+C 退出 Claude Code > exit
/init 在项目根目录生成 CLAUDE.md 文件,用于定义项目级指令和上下文 /init
/status 查看当前模型、API Key、Base URL 等配置状态 /status
/model <模型名称> 切换模型 /model qwen3-coder-next
/plan 进入规划模式,仅分析和讨论方案,不修改代码 /plan
/compact 压缩对话历史,释放上下文窗口空间 /compact
/config 打开配置菜单,可设置语言、主题等 /config
/cost 查看当前会话消耗 -
/reset 重置会话 -
/docs 让 Claude 参考指定文档 -
/review 检查 Git 暂存区改动 -

模型¶

切换模型

  • 在提示框输入 /model
  • 或启动时用 claude --model sonnet

恢复或分叉会话¶

Claude Code 支持三种灵活的会话操作,让你随时接上之前的进度或尝试不同方案:

1、直接恢复会话(最常用)

claude --continue
# 或者
claude --resume
  • 使用相同的会话 ID,从上次中断的地方继续
  • 完整聊天历史全部恢复
  • 注意:会话范围的权限不会自动恢复,需要你重新批准一次

image.png

2、分叉会话(推荐!尝试新方案不影响原对话)

claude --continue --fork-session
  • 创建一个全新的会话 ID
  • 保留到目前为止的所有聊天历史
  • 原会话完全不受影响
  • 同样需要重新批准权限
  • 适用场景:想试试"另一种实现方式"又不想把原对话搞乱时,就用这个!

3、 多个终端同时使用同一个会话(小心使用)

  • 如果你在多个终端窗口都用 claude --continue 恢复同一个会话:
    • 所有消息会交错混在一起(就像两个人同时在同一个笔记本上写字)
    • 对话会变得混乱
    • 每个终端当时只能看到自己输入的消息,但后续恢复时会看到全部交错内容
  • 正确做法:想并行工作时,务必使用 --fork-session,给每个终端一个干净独立的新会话。

上下文窗口¶

你可以输入/compact手动压缩 输入 /context 查看当前占用情况

省空间秘诀:

  • 重要规则写进 CLAUDE.md
  • 用 skills 和 subagents 减少不必要的上下文占用

安全机制¶

1、检查点

Claude 修改文件前会自动备份。只要按两次 Esc,或说"撤销刚才的修改",就能回到之前状态。

2、权限模式(按 Shift + Tab 快速切换):

  • 默认:每次改文件或跑命令都问你
  • 自动接受编辑:只改文件不问,但命令仍会问
  • 计划模式:只分析、不动手,先给你完整计划

你还可以在 .claude/settings.json 里白名单信任命令(比如 npm test 永远不用问)。

API 管理¶

使用第三方工具 CC Switch 可以帮我们轻松管理这几个热门工具的 API 配置:https://github.com/farion1231/cc-switch/

CC Switch 是一个 Claude Code / Codex / Gemini CLI 的全方位辅助工具,所有的 API 配置都能在它这有序管理。

各平台安装包下载地址:https://github.com/farion1231/cc-switch/releases%E3%80%82

使用见 CC_Switch.ipynb

Claude Code for VS Code¶

在 VS Code 编辑器中安装 Claude Code

打开 VS Code,进入扩展市场,搜索 Claude Code 安装

安装完成后,点击右上角 Claude Code 图标,即可进入 Claude Code 页面

有账号的可以使用 /login 登录

也可以在设置中搜claudeCode,勾选 Disable Login Prompt 配置来关闭登录页面 image.png

我们可以选中文件中的代码,让 Claude Code 帮我们解析说明或修改,选中后,会提示已经选中的代码行数:

按 Option + K(Mac)或 Alt + K(Windows/Linux),就能插入带文件路径和行号的 @ 提及

image.png

当 Claude 需要修改文件时,它会自动打开并排对比视图,左边显示文件原始内容,右边显示建议修改后的内容,然后询问您是否同意修改。 image.png

提示框¶

1、权限模式:

点击提示框底部的模式指示器,就可以切换权限模式。

  • 正常模式(默认):Claude 每次要操作前都会先问你同不同意。
  • 计划模式(Plan Mode):Claude 先告诉你它打算怎么做,得到你批准后才动手修改。
  • 自动接受模式:Claude 直接编辑,不再每次询问。

你也可以在 VS Code 设置里搜索 claudeCode.initialPermissionMode 来设置默认模式。

2、命令菜单:

在提示框里输入 /(或点击输入框)就能打开命令菜单。

常用选项包括:附加文件、切换模型、开启扩展思考、查看使用量(输入 /usage)。

下方的"自定义"部分还能管理 MCP servers、hooks、记忆、权限和插件。

带有 终端图标 的命令,会在 VS Code 的集成终端里直接打开。

3、上下文用量指示器:

提示框下方会实时显示你已经用了多少 Claude 的上下文窗口(context)。

Claude 会自动帮你压缩内容;如果你想手动压缩,输入 /compact 即可。

4、扩展思考(Extended Thinking):

遇到复杂问题时,可以让 Claude 多花点时间深度思考。

通过命令菜单(输入 /)切换开启/关闭。

5、多行输入:

按 Shift + Enter 可以换行,不用立刻发送消息。

在弹出的"其他"自由文本框里也同样适用。

6、引用文件和文件夹(@ 提及功能)

输入 @ 后面跟文件名或文件夹名,Claude 就会自动读取内容,可以回答问题或直接修改。(支持模糊匹配,不用打全名)

项目结构¶

your-project/
├── CLAUDE.md                    ← 团队共享指令,提交到 git
├── CLAUDE.local.md              ← 个人覆盖,被 git 忽略
├── .claude/
│   ├── settings.json            ← 权限 + 配置,提交到 git
│   ├── settings.local.json      ← 个人权限,被 git 忽略
│   ├── commands/                ← 自定义斜杠命令
│   │   ├── review.md            →  /project:review
│   │   ├── fix-issue.md         →  /project:fix-issue
│   │   └── deploy.md            →  /project:deploy
│   ├── rules/                   ← 模块化指令文件(全局生效)
│   │   ├── code-style.md
│   │   ├── testing.md
│   │   └── api-conventions.md
│   ├── skills/                  ← 自动调用的工作流
│   │   ├── security-review/
│   │   │   └── SKILL.md
│   │   └── deploy/
│   │       └── SKILL.md
│   └── agents/                  ← 子代理角色定义
│       ├── code-reviewer.md
│       └── security-auditor.md
├── src/
│   └── CLAUDE.md          # 仅在处理 src/ 文件时加载
└── tests/
    └── CLAUDE.md          # 仅在处理 tests/ 文件时加载           

/init 项目初始化¶

在项目根目录执行 /init 命令,Claude 会自动扫描你的代码库——读取 package.json、现有文档、配置文件以及代码结构,然后生成一份专属于项目的 CLAUDE.md 文件。

CLAUDE.md¶

这是 Claude 进入项目时第一个读取的文件,相当于项目欢迎手册。

CLAUDE.md 放置在项目根目录,所有团队成员共享,它告诉 Claude:这个项目是什么、如何运行、有什么约定。

Claude 会自动递归读取父目录中的 CLAUDE.md。在 monorepo 中,子包内可再放一个 CLAUDE.md,Claude 会将两层指令合并理解。

CLAUDE.md 结构示例:

In [ ]:
# 项目名称

## 项目概述
简述这个项目的目的和功能。

## 技术栈
- Frontend: React + TypeScript
- Backend: Node.js + Express
- Database: PostgreSQL

## 目录结构
- `src/components/` - React 组件
- `src/api/`        - API 层
- `tests/`          - 测试文件

## 常用命令
- 启动开发服务器:`pnpm dev`
- 运行测试:`pnpm test`
- 代码检查:`pnpm lint`

## 开发规范
- 使用 TypeScript strict 模式
- 优先使用 interface 而非 type
- 禁止使用 any,使用 unknown 替代
```

### 文件位置与层级

项目的核心文件结构如下: 
```
your-project/
├── CLAUDE.md                  # 项目主记忆文件(团队共享)
├── .claude/
│   ├── settings.json          # Hooks、权限、环境配置
│   ├── settings.local.json    # 个人配置(建议加入 .gitignore)
│   └── commands/              # 自定义斜杠命令
│       └── my-command.md
└── .mcp.json                  # MCP 服务配置
```
In [ ]:
# 项目约定

## 技术栈
- 前端:Next.js 15、TypeScript 5.7、Tailwind CSS 4
- 后端:Node.js 22、Prisma 6
- 测试:Vitest 3.2

## 代码规范
- 始终使用函数式 React 组件
- 文件名使用 kebab-case
- 测试文件与源码放在同一目录

## 常用命令
- 构建:`pnpm build`
- 测试:`pnpm test`
- 启动开发服务器:`pnpm dev`

## API 约定
- 所有 API 路由以 `/api/v1/` 开头
- 错误响应格式:`{ error: string, code: number }`
  • 使用祈使句和简短列表,而非叙述性段落
  • 包含具体的版本号和命令
  • 加入代码示例(5 行示例胜过 50 字说明)
  • 控制在 200 行以内(超过部分不会在会话开始时加载)
  • 避免模糊指令如"遵循最佳实践"或"写干净的代码"
  • 避免过多通用规则(只放这个项目独有的约定)
  • 过时的信息(建议每月审查一次)

CLAUDE.local.md¶

个人专属的覆盖层,叠加在 CLAUDE.md 之上。

CLAUDE.local.md 存放只与你本人相关的偏好或临时指令,不应共享给团队。

示例如下:

In [ ]:
# 我的本地覆盖

本地数据库地址:localhost:5433(非默认端口)

调试时请优先输出详细日志。

## 临时规则(本次任务用)
目前专注于重构 auth/ 模块,其他模块暂时不要改动。

settings.json¶

团队共享的配置文件,控制 Claude 允许或禁止执行哪些操作,作为团队安全基线。

示例如下

In [ ]:
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(pytest:*)",
      "Bash(git diff:*)",
      "Bash(git log:*)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(curl * | bash)"
    ]
  }
}

settings.local.json¶

个人本地权限覆盖,临时放开或收紧某些权限,不影响团队其他成员。

示例如下

In [ ]:
{
  "permissions": {
    "allow": [
      "Bash(rm ./tmp/*)"
    ]
  }
}

.claude/commands/ 自定义斜杠命令¶

目录下每个 .md 文件自动映射为一条 /project:文件名 命令。

示例:commands/review.md

In [ ]:
# Code Review

请对当前修改执行完整的代码审查:

1. 检查是否有安全漏洞(SQL 注入、XSS 等)
2. 验证错误处理是否完整
3. 确认测试覆盖率是否达标
4. 检查是否符合代码风格规范
5. 评估性能影响

用中文输出结构化审查报告,按严重程度排列问题。

.claude/rules/ 模块化行为规则¶

将 CLAUDE.md 中的规则拆分模块化存放,Claude 在整个会话中始终遵守。适合存放长期稳定执行的行为约定,避免 CLAUDE.md 过于臃肿。

示例:rules/code-style.md

In [ ]:
# Code Style Rules

- TypeScript 严格模式,禁用 any 类型
- 函数长度不超过 40 行,超出则拆分
- 优先使用 const,避免使用 let
- 导入顺序:标准库 → 三方包 → 本地模块
- 所有 export 的函数/类型需要 JSDoc 注释
- 禁止使用 console.log,使用项目 logger

.claude/skills/ 自动调用的工作流¶

Skills 是更高级的复合工作流。当 Claude 判断某个任务适合某个 skill 时,会自动读取并执行对应的 SKILL.md,无需手动调用。

每个 skill 是一个子目录,目录内包含 SKILL.md。

示例:skills/security-review/SKILL.md

In [ ]:
# Security Review Skill

## 触发条件
当用户请求代码审查、代码涉及认证/授权/加密/用户输入处理时自动触发。

## 执行步骤
1. 扫描 SQL 注入风险(检查所有数据库查询)
2. 检查 XSS 防护(验证输出转义)
3. 审计权限边界(确认最小权限原则)
4. 检查敏感数据处理(日志、错误信息中是否泄露)
5. 输出 OWASP Top 10 对照检查表

## 输出格式
按 CVSS 评分排列,高危问题优先展示。

.claude/agents/ 子代理角色¶

定义可被主 Claude 实例派遣的专业子代理。在复杂任务中,主代理将子任务委派给对应专家角色,实现多代理协作。子代理在隔离上下文中运行,拥有独立的权限范围。

示例:agents/code-reviewer.md

In [ ]:
---
name: code-reviewer
description: 资深代码审查员,专注代码质量与可维护性
---

# 代码审查员

## 角色定位
你是一名拥有 10 年经验的资深工程师,专注于代码可读性、性能优化和最佳实践。

## 审查重点
- 命名是否清晰表达意图
- 函数/类的单一职责原则
- 边界条件和错误处理
- 性能瓶颈(N+1 查询、不必要的循环等)

## 权限
只读访问,不直接修改文件。

## 输出格式
使用 Markdown 表格输出,包含:问题位置、严重程度、建议方案。

交互模式¶

  • Ask 模式:只读分析
  • Plan 模式:只规划,不执行
  • Edit 模式:直接修改文件

在终端中使用 Claude Code 时,你不需要手动切换模式开关,Claude 会根据你的指令内容,自动判断当前应进入哪一种模式。

不过,作为使用者,你必须在 Prompt 中清楚表达自己的意图,否则 Claude 很容易做出与你预期不一致的行为。

操作说明¶

符号 类型 本质作用
/ Command(命令) 执行内置操作
@ Context(上下文) 引用文件/代码/目录
! Bash 模式 直接执行终端命令,stdout/stderr 自动注入上下文
# Memory(记忆注入) 把内容持久写入 CLAUDE.md 项目记忆,跨会话长期生效,例如:#config.yaml
& Async(异步任务) 后台/云端异步执行任务,不阻塞当前会话,可关闭终端后在 claude.ai/code 查看进度
+Enter Multiline(多行输入) 换行不发送,写多行内容,长需求描述一次性写完
无前缀 自然语言 普通任务指令

通过在输入前加上 ! 直接运行 bash 命令,无需通过 Claude,格式为:

! + Bash 命令

输入 ! 就会提示进入 Bash 命令模式:

常见命令¶

命令 作用
/help 查看全部能力
/clear 清空对话
/plan 进入规划模式
/model 切换模型
/context 查看上下文使用情况
/export 导出对话
/status 环境状态
/tasks 管理后台任务
/theme 主题切换
/memory 编辑 CLAUDE.md

MCP¶

核心命令:claude mcp

命令 作用
claude mcp add 添加一个 MCP 服务器
claude mcp list 查看所有已配置服务器
claude mcp get <name> 查看某个服务器详情
claude mcp remove <name> 删除服务器
/mcp 在 Claude Code 中查看状态 / 认证

安装 MCP 服务器¶

MCP 服务器支持 HTTP/SSE/stdio 三种接入方式,推荐优先使用 HTTP(SSE已弃用)。

  1. 远程 HTTP 服务器(推荐)

    适用于云服务类工具,是最通用的方式:

    # 基础语法
    claude mcp add --transport http <服务器名称> <服务器URL>
    
    # 示例1:连接Notion
    claude mcp add --transport http notion https://mcp.notion.com/mcp
    
    # 示例2:带身份验证的HTTP服务器
    claude mcp add --transport http secure-api https://api.example.com/mcp \
      --header "Authorization: Bearer 你的令牌"
    
  2. 本地 stdio 服务器

    适用于需要本地系统访问的工具(如本地数据库、自定义脚本):

    # 基础语法(注意:--前是Claude参数,--后是服务器命令)
    claude mcp add --transport stdio [--env 环境变量] <服务器名称> -- <启动命令>
    
    # 示例:连接Airtable(需替换自己的API密钥)
    claude mcp add --transport stdio --env AIRTABLE_API_KEY=你的密钥 airtable \
      -- npx -y airtable-mcp-server
    

注意:--transport/--env 等参数必须放在服务器名称前面,-- 用于分隔Claude参数和服务器命令,避免参数冲突。

管理 MCP 服务器¶

# 列出所有已配置的服务器
claude mcp list

# 查看指定服务器详情(如github)
claude mcp get github

# 删除指定服务器
claude mcp remove github

# 在Claude Code中检查服务器状态
/mcp

配置范围¶

优先级:local > project > user(同名服务器,本地配置覆盖共享配置)

范围 用途 配置命令示例
local(默认) 仅当前项目可用,私密配置(如敏感密钥) claude mcp add --scope local ...
project 团队共享(存储在.mcp.json,可提交版本库) claude mcp add --scope project ...
user 所有项目可用(个人全局配置) claude mcp add --scope user ...

示例¶

示例 1:GitHub 代码审查

claude mcp add --transport http github https://api.githubcopilot.com/mcp/

在 Claude Code 中:

> Review PR #456 and suggest improvements
> Show me all open PRs assigned to me

示例 2:Sentry 生产环境排错

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
> /mcp   # 完成 OAuth 登录
> What are the most common errors in the last 24 hours?

示例 3:直接查 PostgreSQL

claude mcp add --transport stdio db \
  -- npx -y @bytebase/dbhub \
  --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
> Show me the schema for the orders table
> Which users haven't purchased in 90 days?

在对话中使用 MCP¶

1、使用 @ 引用 MCP 资源

> Analyze @github:issue://123 and suggest a fix

支持多个资源对比:

> Compare @postgres:schema://users with @docs:file://user-model

2、MCP Prompt 作为斜杠命令
MCP 可以暴露命令:

/mcp__github__list_prs
/mcp__jira__create_issue "Login bug" high

Claude 会像执行内置命令一样执行它们。

注意¶

  • 身份验证:远程MCP服务器(如GitHub/Sentry)需在Claude Code中执行 /mcp 完成OAuth 2.0授权;
  • Windows兼容:本地stdio服务器若用npx,需加cmd /c包装(如-- cmd /c npx -y 包名),否则会报"Connection closed"错误;
  • 第三方风险:使用非官方MCP服务器时,需确认来源可信,避免提示注入/安全风险;
  • 参数顺序:stdio服务器配置时,-- 前后的参数不可颠倒,否则会执行失败。

子代理¶

子代理(Subagent),用于处理特定类型的任务,从而获得更好的上下文管理、更强的约束控制和更高的执行效率。

子代理是运行在独立上下文窗口中的专用 AI 助手。每个子代理都可以拥有:

  • 独立的系统提示(System Prompt)
  • 独立的上下文(不污染主对话)
  • 指定的模型(Sonnet / Haiku / Opus)
  • 明确的工具访问权限
  • 独立的权限模式
  • 生命周期钩子(Hooks)
  • 跨会话持久记忆(Memory)

当 Claude 判断你的请求符合某个子代理的描述(description)时,就会自动将任务委托给该子代理,由它独立完成并返回结果。

子代理只接收自身的系统提示和基础环境信息(如工作目录),不会继承完整的 Claude Code 系统提示。这保证了行为的纯净和可控。

内置的子代理¶

Claude Code 已内置多种子代理,通常会自动使用,你不需要手动配置。

1、Explore(探索代理)

用途:只读搜索与分析代码库

  • 模型:Haiku(速度快、延迟低)
  • 工具:只读工具(不能 Edit / Write)
  • 场景:搜索文件、理解代码结构、查找定义和引用

Claude 会在需要看代码但不改代码时自动使用 Explore。支持不同探索深度:quick / medium / very thorough。

2、Plan(规划代理)

用途:计划模式下的代码库研究

  • 模型:继承主对话
  • 工具:只读工具
  • 场景:在 Plan 模式中理解项目,为后续方案制定收集上下文

在不产生嵌套代理的前提下,安全收集规划所需信息。

3、General-purpose(通用代理)

用途:复杂、多步骤任务

  • 模型:继承主对话
  • 工具:全部工具
  • 场景:需要"看 + 改 + 推理"、多步骤代码修改、综合分析后给出结论

4、其他内部代理(无需手动使用) |代理 |说明| |---|---| |Bash |在独立上下文中运行命令| |statusline-setup |配置状态栏| |Claude Code Guide |解答 Claude Code 使用问题|

创建子代理¶

使用 /agents 命令

1、打开子代理管理界面

/agents

/agents 命令提供完整的子代理管理能力:查看所有可用子代理(内置/用户级/项目级/插件)、创建、编辑、查看同名冲突时哪个生效。

2、创建用户级子代理

  • 选择 Create new agent
  • 选择 User-level
  • 保存位置:~/.claude/agents/(所有项目可用)

3、使用 Claude 自动生成

示例描述:

一个代码改进代理,扫描项目文件,
针对可读性、性能和最佳实践提出建议,
并给出改进示例。

Claude 会生成系统提示和初始配置,你可以按 e 手动编辑。

4、选择工具权限

  • 只做代码审查 → 仅勾选只读工具
  • 需要改代码 → 保留 Edit / Write

5、选择模型

推荐:Sonnet(分析能力与速度平衡)

6、选择记忆范围(可选)

  • 选择 User:在 ~/.claude/agent-memory/ 建立持久记忆,跨所有项目积累经验
  • 选择 None:不保留学习成果,每次从零开始

7、保存并使用

使用 code-improver 子代理为此项目提出改进建议

子代理会独立运行并返回结果。

子代理的作用范围¶

子代理本质是带 YAML frontmatter 的 Markdown 文件,不同位置代表不同作用范围。

当同名子代理存在冲突时,优先级高的会覆盖低的。可通过 /agents 查看当前哪个版本生效。

位置 范围 优先级
CLI --agents 标志 当前会话(临时测试 / 自动化脚本,不保留到磁盘) 最高
.claude/agents/ 当前项目 高
~/.claude/agents/ 所有项目(用户级) 中
插件 agents 插件作用域 最低

文件结构¶

两部分组成:YAML frontmatter(元数据与配置)+ Markdown 正文(系统提示)。

字段 类型 说明
name string(必填) 唯一标识,也是显式调用时的名称
description string(必填) 决定 Claude 何时自动调用此代理,务必写清楚使用场景
tools string 工具白名单;设置后只能使用列出的工具,MCP 工具也会被排除
disallowedTools string 工具黑名单;继承主对话全部工具,但排除列出的工具(含 MCP)
model string haiku / sonnet / opus / 完整模型 ID / inherit(默认,继承主对话)
permissionMode enum 权限行为控制(见权限模式章节)
memory enum 持久记忆范围:user / project / local(见记忆章节)
background bool 为 true 时始终以后台方式运行
isolation string 设为 worktree 时在临时 git worktree 中运行,完全隔离主仓库
skills list 声明在此代理启动时自动加载的 Skills 列表
hooks object 生命周期钩子(SubagentStart / SubagentStop / PreToolUse / PostToolUse)

示例如下

In [ ]:
---
name: code-reviewer
description: Reviews code for quality, best practices, and security issues.
             Invoke when the user asks to review, audit, or check code quality.
tools: Read, Grep, Glob
model: sonnet
permissionMode: default
memory: project
---

You are a senior code reviewer.
Analyze code and provide actionable feedback organized by severity: Critical / Major / Minor.

Update your agent memory with recurring patterns, conventions, and known issues you discover.

tools 与 disallowedTools 的区别 | 配置方式 | 行为 | 典型场景 | | ---- | ---- | ---- | | 两者均不设置 | 继承主对话全部工具,含 MCP 工具 | 通用代理,不需要限制 | | 仅设置 tools | 只能使用白名单内的工具,MCP 工具被排除 | 只读分析代理、严格约束场景 | | 仅设置 disallowedTools | 继承全部工具,但排除黑名单内的工具(MCP 工具保留) | 保留 MCP 能力但禁止写操作 | | 两者同时设置 | 先应用 disallowedTools,再从剩余工具中按 tools 筛选 | 精细控制 |

权限模式(permissionMode) | 模式 | 行为 | 适用场景 | | ---- | ---- | ---- | | default | 正常权限提示,每次操作前询问 | 通用场景 | | acceptEdits | 自动接受文件编辑,无需每次确认 | 频繁改动文件的代理 | | dontAsk | 自动拒绝未授权操作,不中断流程 | 严格只读场景 | | bypassPermissions | 跳过所有权限检查 | 仅限完全可信、受控环境 | | plan | 只读规划模式,不执行任何写操作 | 方案制定、架构分析 |

注意;bypassPermissions 只适合完全可信的子代理。另外,子代理会继承父会话的权限模式——如果主会话开启了 bypass,所有子代理也会跟着 bypass。

持久记忆(Memory) | 范围值 | 存储位置 | 适用场景 | | ---- | ---- | ---- | | user | ~/.claude/agent-memory// | 代理的知识适用于所有项目(如通用代码审查规范) | | project | .claude/agent-memory// | 知识与项目绑定且可 git 共享(推荐默认值) | | local | .claude/agent-memory-local// | 知识与项目绑定但不提交 git(个人本地经验) |

示例

---
name: code-reviewer
description: Reviews code for quality and best practices
memory: user
---

You are a code reviewer.
As you review code, update your agent memory with patterns,
conventions, and recurring issues you discover.

使用技巧:

  • 开始任务时:请先查阅你的记忆,再开始审查
  • 任务结束时:任务完成后,把你发现的规律保存到记忆中
  • 也可直接在系统提示里写入"主动维护记忆"的指令,让代理自动执行

隔离模式(isolation: worktree)

设置 isolation: worktree 后,子代理会在临时 git worktree 中运行,与主仓库完全隔离。适合以下场景:

  • 需要大量文件修改但不确定结果的探索性任务
  • 并行跑多个方案对比,互不干扰
  • 自动化测试、CI 验证等需要干净环境的操作

后台运行(Background)

  • 前台(Foreground):阻塞主对话直到完成,权限提示和澄清问题会透传给你。无特殊限制
  • 后台(Background):并行执行,不打断主对话;启动前会预先确认所需权限。无 MCP、无交互式澄清;权限不足时任务失败而非暂停

Claude 会根据任务特性自动决定前台还是后台。你也可以主动控制:

  • Ctrl + B:将当前运行的子代理切换到后台
  • Ctrl + F(按两次确认):终止所有后台代理
  • 在 frontmatter 中设置 background: true:该代理始终以后台方式运行
  • 消息开头加 &:将该任务作为后台任务发送给 claude.ai 网页端
  • 通过 /tasks 命令随时查看后台任务进度

生命周期钩子(Hooks) | 钩子事件 | 触发时机 | 典型用途 | | ---- | ---- | ---- | | SubagentStart | 子代理启动时 | 记录启动日志、初始化环境 | | SubagentStop | 子代理完成时 | 记录结果、触发下游任务、发送通知;字段含 agent_id 和 agent_transcript_path | | PreToolUse | 工具调用前 | 校验操作合法性,退出码 2 可阻止执行 | | PostToolUse | 工具调用后 | 格式化输出、生成变更记录 |

高级用法:通过 PreToolUse 动态控制工具行为。例如,让代理只允许只读 SQL 查询:

---
name: db-analyst
description: Read-only database analysis agent
tools: Bash
---

You are a database analyst. Only run SELECT queries.

# hooks defined in .claude/settings.json:
# PreToolUse on Bash -> validate-readonly-query.sh
# Script exits with code 2 to block write operations

使用子代理¶

  1. 自动委托 Claude 会根据 description 字段自动判断,无需你手动指定:

    帮我检查最近的代码改动质量
    
  2. 显式调用 在提示中明确指定代理名称:

    让 code-reviewer 子代理检查最近的改动
    

使用示例¶

1、隔离高输出任务

使用子代理运行测试,只返回失败的测试和根因分析

2、并行研究

并行使用子代理分别分析认证模块、数据库模块和 API 模块,汇总后给出整体架构建议

3、串联子代理(流水线)

先用 code-reviewer 找问题,再用 optimizer 修复问题

串联工作流的设计原则:每个代理只做一件事,通过清晰的"输入 → 处理 → 输出 → 交接规则"定义接口。

完整流水线示例(来自 PubNub 的生产实践):

  • pm-spec:读取需求,生成工作规格,确认后标记 READY_FOR_ARCH
  • architect-review:验证设计约束,产出架构决策记录(ADR),标记 READY_FOR_BUILD
  • implementer-tester:实现代码和测试,更新文档,标记 DONE

通过 SubagentStop 钩子监听队列文件,自动触发下一个代理。

4、并行代码审查

同时启动 style-checker、security-scanner、test-coverage 三个子代理并行审查,
将审查时间从数分钟压缩到数十秒

子代理上下文与恢复¶

每次调用 = 新子代理实例(无法感知之前的调用)

子代理上下文独立存储,不污染主对话

中间工具调用和结果只留在子代理内部,主对话只收到最终摘要

可通过 session ID 和 agent ID 恢复继续执行(SDK 场景)

会话继续示例:

继续刚才的 code-reviewer 分析,重点看授权逻辑部分

存储位置示例:

~/.claude/projects/{project}/{sessionId}/subagents/

什么时候该用子代理?¶

用主对话,当:

  • 需要频繁来回调整,交互性强
  • 多阶段任务有强依赖关系,上下文需要连续
  • 快速、小改动,启动代理的开销不值得
  • 实际经验:超过 3~4 个子代理后,管理成本可能反而降低效率

用子代理,当:

  • 任务自包含,可以给出明确的输入和期望输出
  • 输出量很大,会显著占用主对话上下文
  • 需要强约束(只读、隔离 worktree 等)
  • 同类任务会重复出现,值得固化为代理
  • 涉及多个独立子域,可以并行处理

注意:子代理不能再创建子代理(防止无限嵌套)。如需嵌套逻辑,请使用 Skills。

插件¶

插件(Plugin)是 Claude Code 中最高级别的扩展机制,用于将命令、代理、Skills、钩子、MCP、LSP 等能力打包、版本化、共享和分发。

插件 = 一组可复用的 Claude Code 扩展能力集合

方式对比 命令形式 适合场景
独立配置(.claude/) /hello 个人使用、单项目、快速实验
插件(.claude-plugin/) /plugin-name:hello 团队共享、跨项目、版本化

先在 .claude/ 中迭代 → 稳定后打包为插件

结构¶

my-plugin/
├── .claude-plugin/
│   └── plugin.json     # 插件清单(必需)
├── commands/           # 斜杠命令
├── agents/             # 子代理
├── skills/             # Skills
├── hooks/              # 钩子
├── .mcp.json           # MCP 配置
└── .lsp.json           # LSP 配置

.claude-plugin/ 目录中只能放 plugin.json

其他目录必须在插件根目录

插件清单(plugin.json)¶

字段 作用
name 唯一标识 + 命令命名空间
description 插件市场中展示
version 语义化版本控制
author 可选,归属说明
In [ ]:
{
  "name": "my-first-plugin",
  "description": "A greeting plugin to learn the basics",
  "version": "1.0.0",
  "author": { "name": "Your Name" }
}

斜杠命令(commands/)¶

每个命令 = 一个 Markdown 文件

示例:commands/hello.md , 对应命令 /my-first-plugin:hello

commands/hello.md内容示例:

---
description: Greet the user with a friendly message
---

Greet the user warmly and ask how you can help them today.

本地测试插件¶

  • 不需要安装
  • 修改后需重启 Claude Code
  • 支持同时加载多个插件

使用 --plugin-dir 直接加载插件目录:claude --plugin-dir ./my-plugin

加载多个插件:claude --plugin-dir ./plugin-a --plugin-dir ./plugin-b

插件市场¶

插件通过市场分发,本质是一个插件目录仓库。

运行 /plugin → Discover

安装 /plugin install plugin-name@claude-plugins-official

安装范围 | 范围 | 说明 | |------------|-----------------------| | 用户范围 | 仅你自己,所有项目 | | 项目范围 | 当前仓库,团队共享 | | 本地范围 | 当前仓库,仅你 |

插件命令¶

/plugin                # 打开插件管理器
/plugin install         # 安装插件
/plugin uninstall       # 卸载
/plugin enable/disable  # 启用 / 禁用
/plugin marketplace add # 添加市场
/plugin marketplace rm  # 移除市场

从 .claude/ 迁移到插件¶

原来 迁移后
.claude/commands plugin/commands
.claude/agents plugin/agents
settings.json hooks plugin/hooks/hooks.json

迁移后:

  • 插件版本优先生效
  • 可删除旧 .claude/ 配置避免重复

什么时候用插件?¶

  • 已经有稳定的 Claude 工作流
  • 你在反复复制 .claude/
  • 团队成员开始问你:"这个怎么配置?"
  • 你希望 Claude 像 IDE 插件一样可控