内容来源:alexop.dev。https://alexop.dev/posts/understanding-claude-code-full-stack/
原题:Claude Code Explained (2026): MCP, Skills, Subagents, Hooks & Plugins
原发布时间:2025-11-09
全面介绍 Claude Code 的 MCP、CLAUDE.md、斜杠命令、子智能体、Hooks、插件、Skills 和定时任务。2026 年 4 月更新,加入延迟工具加载、Worktree 隔离、智能体团队等内容。
兼容性说明(核对于 2026-07-20):当前子智能体文档称,
Task在 v2.1.63 中更名为Agent,同时保留Task(...)作为别名。原文的claude trigger create --schedule示例具有版本时效性;当前云端自动化文档使用/schedule和 Routines。下文保留来源命令。

几个月里,我只是把 Claude Code 当成高级自动补全:快速修改、生成样板,以及氛围编程。
后来,我深入研究 MCP 服务器、斜杠命令、插件、Skills、Hooks、子智能体和 CLAUDE.md。Claude Code 实际上是一套 AI 智能体编排框架,但大多数人只使用一两个功能,没有看到它们如何层层组合。现在它还可以运行在 CLI、VS Code、JetBrains、独立桌面应用、claude.ai/code Web 应用和 iOS 上。
本文会按照各概念的依赖顺序逐一解释,从外部连接一直讲到自动行为。如果刚开始使用大语言模型开发,可以先阅读我的大语言模型使用方式概览。
回头来看,Claude Code 这个名字并不准确。它不只是编程工具,而是通用计算机自动化工具。任何能够通过在计算机中输入命令完成的事情,如今都可以由 Claude Code 自动执行。称它为通用智能体更合适,而 Skills 让这一点变得更加直观。
——Simon Willison,Claude Skills 很棒,重要性可能超过 MCP
✨ 简明总结
• → CLAUDE.md 为 Claude 提供项目记忆和上下文
• → Skills 是统一扩展模型,命令和 Skills 现在已经合并
• → 子智能体在隔离上下文中处理并行工作
• → Hooks 无须手动触发,会响应生命周期事件
• → 插件把命令、Hooks 和 Skills 打包共享
• → MCP 通过通用协议连接外部工具
• → Skills 根据任务上下文激活
• → 定时任务会在用户不在场时按 Cron 计划运行 Claude
功能技术栈
1、模型上下文协议(MCP)——连接外部工具和数据源的基础
2、Claude Code 核心功能——项目记忆、Skills、子智能体和 Hooks
3、插件——打包 Skills、Hooks 和元数据的可共享组件
4、Skills——统一扩展模型,取代旧的命令/Skill 二分法
5、定时任务——按 Cron 计划运行 Claude 的云端触发器

Claude 前辈知道所有功能!
1)模型上下文协议(MCP):连接外部系统
它是什么。模型上下文协议把 Claude Code 与外部工具和数据源连接起来,可以把它理解为适配 GitHub、数据库、API 和其他系统的通用接口。
**如何工作。**连接 MCP 服务器后,就能通过斜杠命令使用它的工具、资源和提示词:
# 安装服务器
claude mcp add playwright npx @playwright/mcp@latest
# 使用
/mcp__playwright__create-test [args]
延迟工具加载(2026)
Claude Code 不再在启动时加载完整 MCP 工具 Schema,而是只加载工具名称,再通过
ToolSearch按需取得完整 Schema。运行 50 多项 MCP 工具时,上下文开销可以降低一个数量级。使用/context查看剩余用量。
**远程服务器。**MCP 规范增加了 Streamable HTTP 传输,取代 SSE,并使用带 PKCE 的 OAuth 2.1 进行身份验证。现在,无须运行本地 stdio 进程也能连接远程 MCP 服务器。
**注意事项。**MCP 服务器只会公开自己的工具,不会自动继承 Claude 的 Read、Write 或 Bash,除非主动提供。
**真实示例。**想看 MCP 的实际应用,可以阅读如何使用 Playwright MCP 构建像真实用户一样测试应用的 AI QA 工程师。
2)Claude Code 核心功能
2.1)使用 CLAUDE.md 提供项目记忆
**它是什么。**Claude 启动时加载的 Markdown 文件,用来记住项目约定、架构和模式。
**如何工作。**文件按照企业 → 用户(~/.claude/CLAUDE.md)→ 项目(./CLAUDE.md)的层级合并。引用 @components/Button.vue 时,Claude 还会读取相应目录及父目录中的 CLAUDE.md。
发布后又新增了两项能力:CLAUDE.local.md 与 CLAUDE.md 位于同一位置但被 Git 忽略,可以加入不影响团队的个人偏好;~/.claude/rules/ 则允许把全局指令拆成多个文件,不必全部塞进一份大型 ~/.claude/CLAUDE.md。
Vue 应用的示例结构:
└── my-vue-app/
├── CLAUDE.md 整个项目的约定、技术栈和构建命令
└── src/
├── components/
│ ├── CLAUDE.md 组件模式、命名约定和 Prop 类型
│ ├── Button.vue
│ └── Card.vue
└── pages/
├── CLAUDE.md 路由模式、页面结构和数据获取
├── Home.vue
└── About.vue
处理 src/components/Button.vue 时,Claude 会加载:
1、企业 CLAUDE.md,如已配置
2、用户 ~/.claude/CLAUDE.md,包含个人偏好
3、项目根目录 CLAUDE.md,包含整个项目的信息
4、src/components/CLAUDE.md,包含组件特定模式
**应该放什么。**常用命令、编码标准和架构模式。内容应当简洁,把它当作参考指南而不是完整文档。需要帮助时,可以阅读这份 CLAUDE.md 创建指南。
下面是我的博客所用的 CLAUDE.md:
# CLAUDE.md
## 项目概览
Alexander Opalic 的个人博客,基于 AstroPaper,即使用 TypeScript、React 和 TailwindCSS 的 Astro 博客主题。
**技术栈**:Astro 5、TypeScript、React、TailwindCSS、Shiki、FuseJS、Playwright
## 开发命令
```bash
npm run dev # 构建 + Pagefind + 开发服务器(localhost:4321)
npm run build # 生产构建
npm run lint # 对 .astro、.ts、.tsx 运行 ESLint
---
```
2.2)Skills:统一扩展模型
命令和 Skills 现在已经合并
到 2026 年,斜杠命令和 Skills 已经统一。
.claude/commands/中的文件仍能工作,但建议使用.claude/skills/。每个 Skill 都会获得/slash-command接口。Frontmatter 控制 Claude 能否自动调用、用户能否在/菜单中看到,以及它是否在子智能体中运行。
**它们是什么。**包含 SKILL.md 和可选辅助脚本的目录,用于定义可复用行为。Frontmatter 控制调用方式:Claude 可以根据任务上下文自动调用,用户可以用 /skill-name 手动触发,也可以同时支持两者。
主要 Frontmatter 字段:
| 字段 | 用途 |
|---|---|
name |
显示名称并成为 /slash-command;小写、连字符,最多 64 个字符,默认使用目录名 |
description |
Skill 的用途,Claude 依据它决定是否自动调用 |
disable-model-invocation |
设为 true,阻止 Claude 自动调用,例如部署、提交 |
user-invocable |
设为 false,从 / 菜单隐藏,只作为后台知识 |
allowed-tools |
Claude 无须询问即可使用的工具 |
context |
设为 fork,在隔离的子智能体上下文中运行 |
agent |
context: fork 时的子智能体类型:Explore、Plan、general-purpose |
model |
覆盖模型:haiku、sonnet、opus |
argument-hint |
自动补全中显示的参数提示 |
paths |
限制 Skill 自动加载位置的 Glob,例如 src/**/*.ts |
参数替换:$ARGUMENTS 表示全部参数,$0、$1、$2 表示位置参数,${CLAUDE_SKILL_DIR} 表示 Skill 目录。
主要功能:
• 使用 @file 语法内联代码
• 使用 allowed-tools: Bash(...) 运行预执行脚本
• 使用 XML 标签提示词提高输出可靠性
**适用场景。**可重复工作流、领域专业知识和自动化约束。完整 Git 工作流示例请参阅我的斜杠命令指南,也可以使用这份 Skill 创建指南自行创建。
示例:只能由用户触发的部署 Skill:
---
name: deploy
description: 把应用部署到生产环境
disable-model-invocation: true
allowed-tools: Bash(npm:*), Bash(git:*)
---
部署到生产环境:
1. 运行测试
2. 构建
3. 推送到部署目标
这会创建只能由用户调用的 /deploy,Claude 无法自动触发。
示例:在子智能体中运行的 Skill:
---
name: deep-research
description: 深入研究某个主题
context: fork
agent: Explore
allowed-tools: Read, Grep, Glob
---
深入研究 $ARGUMENTS。查找相关文件、阅读并分析,再总结发现。
调用时会生成独立上下文窗口,主对话保持干净。
2.3)子智能体:用于委派的专业 AI 角色
**它们是什么。**预先配置、拥有特定专业领域的 AI 角色。每个子智能体都有自己的系统提示词、允许工具和独立上下文窗口。当任务与其专业能力匹配时,Claude 会进行委派。
**为什么使用。**把专业工作交出去,同时保持主对话干净。每个子智能体在自己的上下文窗口中工作,避免 Token 膨胀;多个子智能体还可以并行分析。
💪 避免上下文污染
子智能体可以防止详细实现工作堵塞主对话。安全审计、测试生成和重构等深入任务很容易让主上下文充满噪声,适合交给子智能体。
示例结构:
---
name: security-auditor
description: 分析代码中的安全漏洞
tools: Read, Grep, Bash # 控制该角色可以访问什么
model: sonnet # 可选:sonnet、opus、haiku、inherit
---
你是一名专注安全的代码审计人员。
识别漏洞,包括 XSS、SQL 注入、CSRF 等
检查依赖项和软件包
验证身份验证和授权
审查数据验证
按照严重、较高、中等、较低给出严重程度。
重点关注 OWASP Top 10。
系统提示词决定子智能体行为,description 告诉 Claude 何时委派,tools 字段限制访问。
**最佳实践:**每个子智能体只负责一个专业领域;只授予最低工具权限;简单任务使用 haiku,复杂分析使用 sonnet;相互独立的工作并行运行。需要模板时,请查看子智能体创建指南。
Worktree 隔离(2026)
设置
isolation: worktree,让子智能体拥有自己的 Git Worktree。每个子智能体都在仓库的隔离副本中工作,因此可以并行编辑文件而不发生冲突。没有产生修改时 Worktree 会被清理;产生修改后,系统会返回 Worktree 路径和分支。
Claude 还内置三种无须配置文件即可使用的子智能体:Explore,速度快、只读、使用 Haiku;Plan,用于研究和架构,只读;General-purpose,拥有完整工具权限。
💪 智能体团队与子智能体
子智能体向父级汇报。智能体团队则不同:多个 Claude 会话作为同级相互协调、发送消息和共享任务。子智能体代表委派,智能体团队代表协作。
2.4)Hooks:自动执行的事件驱动操作
**它们是什么。**在 .claude/settings.json 中使用 JSON 配置的处理程序,在生命周期事件发生时触发,无须手动调用。
可用事件,已从最初的七种扩展:
• 工具生命周期:PreToolUse、PostToolUse
• 会话生命周期:SessionStart、Stop、SubagentStart、SubagentStop
• 任务生命周期:TaskCreated、TaskCompleted
• 环境:CwdChanged、FileChanged
• 权限:PermissionDenied
• 上下文:PreCompact、PostCompact
• 用户输入:UserPromptSubmit、Notification
处理程序类型:
• **Command:**运行 Shell 命令,速度快且可预测
• **Prompt:**让 Claude 使用大语言模型判断,灵活且理解上下文
• **HTTP:**使用身份验证请求头向外部服务 POST JSON
• **Async:**加入 "async": true,让 Hook 在后台运行而不阻塞
PreToolUse Hooks 还可以返回 updatedInput,在执行前修改工具参数。
**示例:**编辑文件后自动运行 Lint。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/run-oxlint.sh"
}
]
}
]
}
}
#!/usr/bin/env bash
file_path="$(jq -r '.tool_input.file_path // ""')"
if [[ "$file_path" =~ \.(js|jsx|ts|tsx|vue)$ ]]; then
pnpm lint:fast
fi
**常见用途:**编辑后自动格式化、要求批准 Bash 命令、验证写入、初始化会话。实际示例请参阅如何在 Claude 需要用户注意时设置桌面通知。也可以使用这份 Hook 创建指南自行构建。
3)插件:可共享的打包配置
**它们是什么。**由 Skills、Hooks 和元数据组成的可分发软件包。可以把配置分享给团队成员,也可以安装别人预先构建的配置。
基本结构:
└── my-plugin/
├── .claude-plugin/
│ └── plugin.json 清单:名称、版本、作者
├── skills/
│ ├── greet/
│ │ └── SKILL.md
│ └── my-skill/
│ └── SKILL.md
└── hooks/
└── hooks.json
**适用场景。**共享团队配置、打包领域工作流、分发带有明确主张的模式、安装社区工具。
**如何工作。**安装插件后立即获得全部功能。Hooks 会组合,Skills 会出现在自动补全中并根据上下文匹配激活。想自行构建,可以阅读插件创建指南。
4)深入理解 Skills:放在哪里以及如何组合
第 2.2 节已经介绍 Skills,本节重点讨论发现、存放位置和组合模式。
**Claude 如何发现 Skills。**用户提供任务后,Claude 会查看可用 Skill 描述,寻找相关能力。如果某个 Skill 的 description 与任务上下文匹配,Claude 就会加载完整指令。自动调用的 Skills 不需要用户说出名称,Claude 会自行发现。
官方 Skill 示例
Anthropic 官方 Skills 仓库提供可以直接使用的示例。
Claude Skills 很棒,重要性可能超过 MCP。
——Simon Willison,Claude Skills 很棒,重要性可能超过 MCP
💪 高级 Skills:Superpowers 库
如果需要严格的规格驱动开发,可以查看 obra 的 Superpowers。这是一个强制系统化工作流的完整 Skills 库。
**提供内容:**TDD 工作流(红—绿—重构)、系统化调试、代码审查流程、Git Worktree 管理和头脑风暴框架。每个 Skill 都会推动基于验证的开发,而不是“相信我,它能运行”。
**理念:**实现前先测试,用证据验证,按照四阶段系统调试,编程前先规划,不走捷径。
**适用场景:**希望 Claude 在开发实践中更加严格,尤其是处理生产代码时。
存放位置:
• ~/.claude/skills/——个人级,适用于所有项目
• .claude/skills/——项目专用
• 插件内部——可分发
**Skills 与 CLAUDE.md。**Skills 相当于模块化的 CLAUDE.md 片段。Claude 不必为每个任务读取大型文档,只在任务匹配时加载特定 Skill 指令,从而在保持自动行为的同时提高上下文效率。
**通过 Frontmatter 控制调用。**旧的命令/Skill 二分法已经消失,一份使用不同 Frontmatter 的 SKILL.md 可以覆盖全部用例:
| 模式 | Frontmatter | 结果 |
|---|---|---|
| 仅自动调用,旧“Skill” | 设置 description:,使用默认值 |
Claude 在相关时调用 |
| 仅手动调用,旧“命令” | disable-model-invocation: true |
只有输入 /name 时运行 |
| 后台知识 | user-invocable: false |
Claude 可以读取,用户在 / 菜单中看不到 |
| 自动和手动调用 | 设置 description: 和 user-invocable: true |
Claude 与用户都能调用 |
| 隔离执行 | context: fork、agent: Explore |
在拥有独立上下文的子智能体中运行 |
🚨 迁移旧命令
.claude/commands/中的文件仍能工作,并以/slash-commands形式显示。但新工作应放在.claude/skills/中。Skill 格式支持命令的全部能力,还增加自动调用、context: fork、paths筛选和模型覆盖。
5)定时任务与触发器:用户不在场时运行 Claude
**它们是什么。**在 Anthropic 基础设施上运行 Claude Code 的云端 Cron 任务。用户定义计划和提示词,Claude 按 Cron 间隔执行,并拥有完整项目访问权。
**如何配置。**使用 /schedule 命令,或者在 CLI 中运行 claude trigger create,定义 Cron 表达式和任务提示词:
claude trigger create --schedule "0 9 * * 1" --prompt "审查所有未关闭 PR 并汇总状态"
**会话内轮询。**对于生存时间较短的重复工作,/loop 5m /your-command 会在当前会话中按间隔运行斜杠命令。
Channels(研究预览)
Channels 让 MCP 服务器可以向 Claude 会话推送消息。Telegram、Discord、Webhook 等外部服务可以触发 Claude 的注意。截至 2026 年 4 月,它仍处于研究预览阶段。
把所有功能组合起来
这些功能在实践中的协作方式如下:
1、记忆(CLAUDE.md)——建立 Claude 始终了解的项目上下文和约定
2、Skills——定义从手动工作流到自动调用专业知识的可复用行为
3、子智能体——把并行或隔离工作交给专业智能体
4、Hooks——在关键生命周期事件中强制规则并自动执行重复操作
5、插件——打包整套配置并分发给其他人
6、MCP——连接外部系统,把它们的能力作为命令提供
7、定时任务——按 Cron 计划运行 Claude,处理重复工作
示例:任务式开发工作流
下面是一套组合多个功能的真实工作流:
配置阶段:
• CLAUDE.md 包含实现标准,例如“未经批准不得提交”“先编写测试”
• /load-context Skill(disable-model-invocation: true)使用项目状态初始化新聊天
• update-documentation Skill 在实现完成后自动调用
• Hook 在文件编辑后触发 Lint
规划阶段(聊天 1):
• 主智能体规划缺陷修复或新功能
• 输出包含具体方案的详细任务文件
实现阶段(聊天 2):
• 使用 /load-context 启动全新上下文
• 输入聊天 1 生成的计划
• 实现子智能体执行计划
• update-documentation Skill 自行更新文档
• /resolve-task Skill 把任务标记为完成
**有效原因:**主上下文专注于规划,繁重实现工作在隔离上下文中完成,Skills 处理文档,Hooks 强制执行质量标准。
决策指南:选择正确工具
社区资源:Claude Code Driver 仓库
🎉 非常感谢 @thewiredbear 创建 Claude Code Driver 仓库!这个社区项目收录了基于本文的示例、模板和资源,适合快速入门或寻找配置灵感,也欢迎贡献自己的模式。
快速参考速查表
如需全部 Claude Code 功能的完整可视化指南,请查看 Awesome Claude Code Cheat Sheet。
💪 自定义终端
想在终端显示模型名称、上下文用量和成本?请阅读如何自定义 Claude Code 状态栏。
💡 快速参考
• 使用
CLAUDE.md定义持久项目上下文,包括架构、约定和 Claude 应始终记住的模式。最适合很少变化的静态知识。
• **使用 Skills**定义可复用工作流和专业知识。仅限手动触发时设置disable-model-invocation: true;自动调用时不设置;使用context: fork可在子智能体中运行。适用于从部署脚本到风格约束的各种任务。
• 使用子智能体进行并行执行或隔离繁重计算,最适合防止上下文污染和专业深入研究。
• 使用 Hooks强制标准或响应特定事件,最适合质量关卡及与工具使用相关的操作。
• 使用插件跨团队或项目打包并共享完整配置,最适合团队标准化和分发特定工作方式。
• 使用 MCP集成外部系统,并把它们的能力公开为原生命令,最适合连接数据库、API 和第三方工具。
• 使用定时任务处理应当在用户不在场时运行的重复工作,最适合夜间审计、周报和周期维护。
功能对比
来源
下表改编自 IndyDevDan 的视频 “I finally CRACKED Claude Agent Skills”。
| 类别 | Skill | MCP | 子智能体 | Trigger |
|---|---|---|---|---|
| 触发者 | 智能体、工程师或两者 | 两者 | 两者 | 计划 |
| 上下文效率 | 高 | 低 | 高 | 高 |
| 上下文持久性 | ✅ | ✅ | ✅ | ❌ |
| 能否并行 | ✅(context: fork) |
❌ | ✅ | ✅ |
| 能否专业化 | ✅ | ✅ | ✅ | ✅ |
| 能否共享 | ✅ | ✅ | ✅ | ❌ |
| 模块化程度 | 高 | 高 | 中 | 低 |
| 工具权限 | ✅ | ❌ | ✅ | ✅ |
| 能否使用提示词 | ✅ | ✅ | ✅ | ✅ |
| 能否使用 Skills | ✅ | 某种程度上 | ✅ | ✅ |
| 能否使用 MCP 服务器 | ✅ | ✅ | ✅ | ✅ |
| 能否使用子智能体 | ✅ | ✅ | ✅ | ✅ |
真实用例
| 用例 | 最佳工具 | 原因 |
|---|---|---|
| “Vue 应用始终使用 Pinia 管理状态” | CLAUDE.md |
适用于全部对话的持久上下文 |
| 生成标准化提交消息 | Skill(disable-model-invocation: true) |
准备提交时显式触发 |
| 同时检查 Jira 工单并分析安全 | 子智能体 | 在隔离上下文中并行执行 |
| 每次编辑文件后运行 Linter | Hook | 自动响应生命周期事件 |
| 分享团队的 Vue 测试模式 | 插件 | 包含命令和 Skills 的可分发软件包 |
| 查询 PostgreSQL 数据库生成报告 | MCP | 集成外部系统 |
| 通过浏览器测试自动执行 SEO 审计 | MCP | 集成外部系统 |
| 在编辑时检测风格指南违规 | Skill | 根据任务上下文自动执行 |
| 根据模板创建 React 组件 | Skill(disable-model-invocation: true) |
结构可重复的手动工作流 |
“TypeScript 中绝不使用 any” |
Hook | 代码修改后自动强制执行 |
| 保存时自动格式化代码 | Hook | 事件驱动自动化 |
| 连接 GitHub 管理 Issue | MCP | 集成外部 API |
| 并行运行完整测试套件 | 子智能体 | 隔离且资源密集的工作 |
| 部署到预发布环境 | Skill(disable-model-invocation: true) |
带有安全措施的手动触发 |
| 自动强制执行 TDD 工作流 | Skill | 理解上下文的自动行为 |
| 使用团队标准初始化新项目 | 插件 | 可共享的完整配置 |
| 每晚执行依赖项审计 | Trigger | 按 Cron 计划重复运行 |
| 每周一早晨汇总未关闭 PR | Trigger | 无须手动调用的定时报告 |