理解 Claude Code 的全栈能力

我使用 Claude Code 已经有几个月了。主要用于快速编辑和生成样板代码。就是大家都在谈论的那个氛围编程工具。

然后我真正探索了它的功能。MCP 服务器、Slash 命令、插件、Skills、Hooks、Subagents、CLAUDE.md 文件。

我被震撼了。Claude Code 不仅仅是一个编程助手。它是一个用于编排 AI Agent 的框架。它以我从未见过的方式加速开发。

大多数人只使用一两个功能。他们忽略了这些功能如何叠加在一起。本指南按照它们相互构建的顺序解释每个概念——从外部连接到自动化行为。

事后看来,Claude Code 这个名字起得不好。它不纯粹是一个编码工具:它是一个通用计算机自动化工具。任何你可以通过在计算机上输入命令来实现的事情,现在都可以通过 Claude Code 自动化。它最好被描述为一个通用 Agent。Skills 使这一点更加明显和明确。

— Simon Willison,Claude Skills 很棒,可能比 MCP 更重要

✨ TLDR

功能栈

  1. Model Context Protocol (MCP) — 连接外部工具和数据源的基础
  2. Claude Code 核心功能 — 项目记忆、slash 命令、subagents 和 hooks
  3. 插件 — 打包命令、hooks 和 skills 的可共享包
  4. Agent Skills — 基于任务上下文自动激活的模型调用能力

Claude Senpai 机器人带着知晓的表情

Claude Senpai 知道所有功能!


1) Model Context Protocol (MCP) — 连接外部系统

它是什么。 Model Context Protocol 将 Claude Code 连接到外部工具和数据源。可以想象成 GitHub、数据库、API 和其他系统的通用适配器。

它如何工作。 连接一个 MCP 服务器,就可以通过 slash 命令访问其工具、资源和 prompts:

# 安装服务器
claude mcp add playwright npx @playwright/mcp@latest

# 使用它
/mcp__playwright__create-test [args]

🚨 Context Window 管理

每个 MCP 服务器都会消耗上下文。使用 /context 监控并移除未使用的服务器。

注意事项。 MCP 服务器暴露它们自己的工具——除非明确提供,否则它们不会继承 Claude 的 Read、Write 或 Bash。


2) Claude Code 核心功能

2.1) 使用 CLAUDE.md 实现项目记忆

它是什么。 Claude 在启动时加载的 Markdown 文件。它们为 Claude 提供关于你项目的约定、架构和模式的记忆。

它如何工作。 文件从企业级 → 用户级 (~/.claude/CLAUDE.md) → 项目级 (./CLAUDE.md) 分层合并。当你引用 @components/Button.vue 时,Claude 也会读取该目录及其父目录的 CLAUDE.md。

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 构建——基于 Astro 的博客主题,使用 TypeScript、React、TailwindCSS。

**技术栈**: 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) Slash 命令 — 显式、可重用的 prompts

**它们是什么。** `.claude/commands/` 中的 Markdown 文件,你通过输入 `/name [args]` 手动触发。用户控制的工作流。

**关键特性:**

* `$ARGUMENTS` 或 `$1`、`$2` 用于参数传递
* `@file` 语法用于内联代码
* `allowed-tools: Bash(...)` 用于预执行脚本
* [XML 标签 prompts](/posts/xml-tagged-prompts-framework-reliable-ai-responses/) 用于可靠输出

**何时使用。** 你按需触发的可重复工作流——代码审查、commit 消息、脚手架。想创建你自己的吗?使用这个 [slash 命令创建指南](/prompts/claude/claude-create-command)。

**示例结构:**

```markdown
---
description: 创建新的 slash 命令
argument-hint: [name] [purpose]
allowed-tools: Bash(mkdir:*), Bash(tee:*)
---

# /create-command

生成具有适当结构的 slash 命令文件。

**输入:** `$1` = 名称,`$2` = 目的
**输出:** `STATUS=WROTE PATH=.claude/commands/{name}.md`

[... 指令 ...]

命令可以创建命令。很 Meta,但很强大。


2.3) Subagents — 用于委派的专业化 AI 角色

它们是什么。 具有特定专业领域的预配置 AI 角色。每个 subagent 都有自己的 system prompt、允许的工具和独立的 context window。当 Claude 遇到与 subagent 专业知识匹配的任务时,它会自动委派。

为什么使用它们。 保持主对话清晰,同时卸载专业工作。每个 subagent 在自己的 context window 中独立工作,防止 token 膨胀。并行运行多个 subagents 以进行并发分析。

💪 避免上下文污染

Subagents 防止”上下文污染”——当详细的实现工作使你的主对话变得混乱时。对于会用噪音填充主要上下文的深入研究(安全审计、测试生成、重构)使用 subagents。

示例结构:

---
name: security-auditor
description: 分析代码中的安全漏洞
tools: Read, Grep, Bash # 控制这个角色可以访问什么
model: sonnet # 可选: sonnet、opus、haiku、inherit
---

你是一个专注于安全的代码审计员。

识别漏洞(XSS、SQL 注入、CSRF 等)
检查依赖和包
验证身份验证/授权
审查数据验证

提供严重性级别:关键、高、中、低。
专注于 OWASP Top 10。

system prompt 塑造 subagent 的行为。description 帮助 Claude 知道何时委派。tools 限制角色可以访问的内容。

最佳实践: 每个 subagent 一个专业领域。授予最小工具访问权限。对简单任务使用 haiku,对复杂分析使用 sonnet。并行运行独立工作。需要模板吗?查看这个 subagent 创建指南


2.4) Hooks — 自动事件驱动操作

它们是什么。 .claude/settings.json 中的 JSON 配置处理器,在生命周期事件上自动触发。无需手动调用。

可用事件: PreToolUsePostToolUseUserPromptSubmitNotificationStopSubagentStopSessionStart

两种模式:

示例: 文件编辑后自动 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 命令需要批准、验证写入、初始化会话。想创建你自己的 hooks 吗?使用这个 hook 创建指南


3) 插件 — 可共享配置

它们是什么。 命令、hooks、skills 和 metadata 的可分发包。与团队成员共享你的设置或安装预构建的配置。

基本结构:

何时使用。 共享团队配置,打包领域工作流,分发固定模式,安装社区工具。

它如何工作。 安装插件,立即获得访问权限。组件无缝合并——hooks 组合、命令出现在自动完成中、skills 自动激活。准备好构建你自己的吗?查看这个插件创建指南


4) Agent Skills — 自动的、任务驱动的能力

它们是什么。 包含 SKILL.md 描述符以及可选脚本的文件夹。与 slash 命令不同,skills 在其描述与任务上下文匹配时自动激活。

Claude 如何发现它们。 当你给 Claude 一个任务时,它会查看可用的 skill 描述以找到相关的。如果 skill 的 description 字段与任务上下文匹配,Claude 会加载完整的 skill 指令并应用它们。这是透明发生的——你永远不会显式调用 skills。

Claude Skills 很棒,可能比 MCP 更重要

— Simon Willison,Claude Skills 很棒,可能比 MCP 更重要

💪 高级 Skills:Superpowers 库

想要严格的、规范驱动的开发?查看 obra 的 superpowers——一个强制执行系统化工作流的综合 skills 库。

它提供什么: TDD 工作流(RED-GREEN-REFACTOR)、系统化调试、代码审查流程、git worktree 管理和头脑风暴框架。每个 skill 都推动你走向基于验证的开发,而不是”相信我,它能工作”。

理念: 实现前先测试。用证据验证。通过四个阶段系统化调试。编码前先计划。没有捷径。

这些 skills 一起工作以防止常见错误。头脑风暴 skill 在实现前激活。TDD skill 强制先编写测试。验证 skill 在没有证明的情况下阻止完成声明。

使用场景: 你希望 Claude 对开发实践更有纪律性,特别是对于生产代码。

放置位置:

你需要什么:

想创建你自己的 skill 吗?使用这个 skill 创建指南

为什么它们强大。 Skills 打包了 Claude 自动应用的专业知识。样式强制、文档更新、测试卫生、框架模式——全部无需手动触发。

Skills vs CLAUDE.md。 将 skills 视为 CLAUDE.md 文件的模块化块。Claude 不是每次都查看庞大的文档,而是只在需要时访问特定的专业知识。这提高了上下文效率,同时保持自动化行为。

关键区别。 Skills 是”始终开启”的。Claude 根据上下文激活它们。命令需要手动调用。

🚨 Skills vs 命令:灰色地带

某些工作流可以是 skill 或命令。例如:git worktree 管理。

如果符合以下情况,将其设为 skill: 你希望 Claude 在与对话相关时自动考虑 git worktrees。

如果符合以下情况,将其设为命令: 你希望对 worktree 逻辑运行的时间进行显式控制(例如,/create-worktree feature-branch)。

重叠是真实存在的——根据你是喜欢自动激活还是手动控制来选择。

自动 vs 手动触发

Subagents 和 Skills 自动激活,当 Claude 确定它们与任务相关时。你不需要手动调用它们——Claude 在认为它们有用时主动使用它们。

Slash 命令需要手动触发——你输入 /command-name 来运行它们。

这是根本区别:自动化 vs 显式控制。


整合在一起

以下是这些功能在实践中如何协同工作:

  1. 记忆(CLAUDE.md) — 建立 Claude 始终知道的项目上下文和约定
  2. Slash 命令 — 为你想按需触发的工作流创建显式快捷方式
  3. Subagents — 将并行或隔离的工作卸载给专业化 agents
  4. Hooks — 在关键生命周期事件中强制执行规则并自动化重复操作
  5. 插件 — 打包并分发你的整个设置给其他人
  6. MCP — 连接外部系统并使其能力作为命令可用
  7. Skills — 定义基于任务上下文激活的自动行为

示例:基于任务的开发工作流

这是一个结合多个功能的真实工作流:

设置阶段:

计划阶段(聊天 1):

实现阶段(聊天 2):

为什么这有效: 主上下文保持专注于计划。繁重的实现工作在隔离的上下文中进行。Skills 处理文档。Hooks 强制执行质量标准。没有上下文污染。

决策指南:选择正确的工具

功能比较

类别 Skill MCP Subagent Slash 命令
触发方式 Agent 两者 两者 工程师
上下文效率
上下文持久性
可并行化
可专业化
可共享
模块化
工具权限
可使用 Prompts
可使用 Skills 有点
可使用 MCP 服务器
可使用 Subagents

真实世界示例

用例 最佳工具 原因
”在 Vue 应用中始终使用 Pinia 进行状态管理” CLAUDE.md 适用于所有对话的持久上下文
生成标准化 commit 消息 Slash 命令 当你准备好 commit 时触发的显式操作
同时检查 Jira tickets 和分析安全性 Subagents 具有隔离上下文的并行执行
每次文件编辑后运行 linter Hook 对生命周期事件的自动响应
共享你团队的 Vue 测试模式 插件 包含命令 + skills 的可分发包
查询 PostgreSQL 数据库生成报告 MCP 外部系统集成
在任何编辑期间检测样式指南违规 Skill 基于任务上下文的自动行为
从模板创建 React 组件 Slash 命令 具有可重复结构的手动工作流
”永远不要在 TypeScript 中使用 any 类型” Hook 代码更改后的自动强制执行
保存时自动格式化代码 Hook 事件驱动的自动化
连接到 GitHub 进行 issue 管理 MCP 外部 API 集成
并行运行综合测试套件 Subagent 隔离的、资源密集型工作
部署到 staging 环境 Slash 命令 带有保护措施的手动触发
自动强制执行 TDD 工作流 Skill 上下文感知的自动行为
使用团队标准初始化新项目 插件 可共享的完整配置