一、CLAUDE.md
定义
项目 / 用户级持久系统提示文件,每一次会话启动自动加载,注入模型上下文。
本质:给 Claude 长期记忆,不用每次聊天重复交代项目规则。
加载优先级(由宽→窄,后加载覆盖前者)
- 用户全局:
~/.claude/CLAUDE.md(本机所有项目生效) - 项目共享:
./CLAUDE.md(提交 Git,团队共用) - 本地私有:
./CLAUDE.local.md(加入.gitignore,个人本地配置)
能力与特点
✅ 自动加载,全程生效,贯穿整个对话生命周期 ✅ 适合:项目架构、编码规范、构建命令、目录结构、固定约束 ❌ 不适合:多步骤复杂工作流、按需触发功能(这类交给 Skill) ⚠️ 上下文开销:常驻占用上下文窗口,不要无限堆砌内容
示例片段
# 项目基础规则 项目为SpringBoot3 + MyBatis-Plus,统一返回包装类Result<T> 禁止使用e.printStackTrace(),捕获异常抛出BusinessException 代码注释使用JavaDoc,提交前执行mvn spotless:apply选型建议
凡是每次对话都必须遵守的规则,放到 CLAUDE.md;按需执行的流程不要放这里。
二、Skill(技能)
定义
可按需加载、可复用的模块化指令包,支持斜杠命令/skillname手动唤起,也可由模型自动调用。 文件标准:SKILL.md,支持放在项目目录或插件内。
核心特性
- 懒加载:会话启动不占用上下文;调用后才载入,结束后可释放
- 触发方式
- 手动:
/code-review - 自动:模型识别任务匹配描述自动加载
- 手动:
- 支持元配置(文件头部 frontmatter)
--- name: code-review description: 执行代码静态审查,检查规范、安全漏洞 disable-model-invocation: false # true=禁止模型自动调用,只能用户手动执行 --- 审查变更代码,重点检查:SQL注入、空指针、事务边界...使用场景
- 代码评审、接口文档生成、日志分析、架构梳理
- 团队标准化工作流,跨项目复用
Skill vs CLAUDE.md 关键区别
表格
| CLAUDE.md | Skill |
|---|---|
| 会话启动立刻加载,常驻上下文 | 按需加载,不调用无开销 |
| 全局永久生效 | 临时生效,只本次任务 |
| 基础通用约束 | 专项任务流程 |
三、Subagent(子代理)
定义
独立隔离的 AI Agent 实例,拥有独立上下文窗口、独立系统提示、独立工具权限;主 Agent 可以委派任务给它。
类比:主工程师把专项任务外包给独立实习生,实习生独立干活,只返回最终摘要,不污染主对话上下文。
核心能力
- 上下文隔离:子 Agent 对话历史不会灌入主会话,仅汇总结果传回
- 独立权限:可以限制子 Agent 可用工具(只读文件、禁止执行 shell 等)
- 支持并行执行:同时启动多个子代理并行分析
- 可嵌套:子代理内部还能继续调用 Skill、甚至再拉起子代理
调用方式
- 自动委派:主 Agent 判断任务适合专项子代理自动调用
- 手动唤起:
/agents list查看、显式调用
典型场景
- 安全审计子代理、单元测试生成子代理、日志深度分析子代理
- 耗时、大量探索、产生海量中间信息的任务(避免撑满主上下文)
🔥 极易混淆:Skill VS Subagent(面试高频区分)
表格
| Skill | Subagent |
|---|---|
| 只是一段 Prompt / 指令集合,运行在主 Agent 内部 | 独立完整 AI 会话实例,拥有独立上下文 |
| 没有独立思考循环,依附主 Agent 执行 | 拥有独立思考、工具调用循环 |
| 适合:操作规范、检查清单、流程模板 | 适合:复杂多步骤、深度探索、隔离任务 |
| 轻量,低开销 | 较重,启动新模型会话 |
简单口诀:流程模板用 Skill;独立专项小组、需要隔离上下文用 Subagent。
四、MCP(Model Context Protocol)模型上下文协议
定义
Anthropic 开源双向标准化协议(JSON-RPC over stdio/websocket/http),Claude ↔ 外部系统的通用桥梁。
类比:LSP(语言服务协议)给 IDE 提供代码能力;MCP 给 AI 提供外部数据与工具能力。
架构:客户端 / 服务端
- Client:Claude Code(内置 MCP 客户端)
- MCP Server:独立进程,向外暴露工具、资源、提示模板
MCP Server 可以实现:
- 访问 PostgreSQL、Redis、Git 仓库
- 对接 Jira、Slack、Github、监控平台
- 本地自定义脚本、内部业务 API
核心价值
- 统一标准,不用为每个系统单独开发集成
- 权限集中管控:MCP 服务层限制 AI 能执行哪些操作
- 实时外部数据,突破模型静态知识库限制
配置方式
项目.mcp.json/ 插件内置 MCP 服务配置,声明要启动的服务进程。
{ "mcpServers": { "postgres": { "command": "node", "args": ["./mcp-postgres/server.js"] } } }边界区分
- MCP ≠ Skill:MCP 提供工具能力;Skill 教模型怎么使用这些工具例:MCP 提供数据库查询工具;Skill 定义 “如何规范查询、如何校验 SQL”
五、Hooks(生命周期钩子)
定义
事件驱动拦截机制,在 Claude Agent 生命周期关键节点注入自定义逻辑,确定性执行,不受模型随机性影响。
类似 Git pre-commit、前端生命周期钩子;用来强制策略、自动化、拦截危险操作。
四大 Hook 类型
- command:运行 shell 脚本
- http:调用远程接口
- prompt:调用模型做条件判断
- agent:拉起 subagent 执行校验
常用核心事件
表格
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
SessionStart | 会话初始化 | 环境检查、预加载信息 |
PreToolUse | 工具执行之前 | ⭐高危命令拦截、权限校验(禁止 rm -rf) |
PostToolUse | 工具执行完成后 | 格式化输出、日志上报、自动 lint |
UserPromptSubmit | 用户发送消息时 | 输入过滤、内容补全 |
Stop | Agent 准备结束输出 | 输出规范校验、查漏补缺 |
SubagentStart / SubagentStop | 子代理启停 | 子任务监控 |
关键特点
✅强制执行,不受模型是否 “听话” 影响(Prompt 规则模型可能忽略,Hook 不会) ⚠️ 不要重度业务逻辑;适合安全策略、自动化校验、监控告警
示例配置 hooks.json
json
{ "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "./scripts/check-danger-cmd.sh" } ] } ] }六、Plugin(插件)
定义
打包分发容器,把上面所有组件统一封装:Skill、Subagent、Hooks、MCP Server、LSP 服务、样式配置。
Plugin = 扩展分发包,本身不提供能力,承载所有扩展组件。
插件标准目录结构
my-plugin/ ├── plugin.json # 插件清单(名称、版本、描述) ├── skills/ # 存放多个SKILL.md技能 ├── agents/ # Subagent定义文件 ├── hooks/hooks.json # 钩子配置 ├── .mcp.json # 内置MCP服务 └── scripts/ # 脚本依赖作用
- 一键安装、卸载、启用 / 禁用整套扩展
- 团队、社区共享成套工作流(不再零散复制各种 md、配置)
- 作用域隔离:插件能力可以选择全局 / 当前项目生效
运行逻辑
Claude Code 启动时扫描插件目录,自动发现并加载内部 Skill、Agent、Hook、MCP 服务。
组件协作全景流程(一次编码任务)
- 新建会话 →加载 CLAUDE.md
- 用户需求触发任务
- 模型判断需要代码评审 → 自动加载Skill(code-review)
- Skill 要求查询数据库 → 调用MCP(postgres)获取数据
- 执行 shell 查询前 →
PreToolUseHook拦截高危命令检查 - 识别任务复杂,委派 → 启动Subagent (安全审计)
- 整套能力打包后,可封装为Plugin分享给团队
快速选型决策表(开发必看)
- 每次会话通用基础规则 →CLAUDE.md
- 可复用专项任务流程模板 →Skill
- 需要独立上下文、并行、深度专项任务 →Subagent
- 需要访问数据库、外部 API、第三方系统 →MCP Server
- 需要强制拦截、校验、自动化(不受模型随机影响) →Hooks
- 需要打包以上所有组件,分发共享 →Plugin