第2集:扩展体系的层次结构

⏱ 预计阅读 7 分钟 更新于 2026/5/7
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)

从用户输入到执行完成,经过了哪些层?本集通过 Mermaid 图拆解完整调用链。

调用链全景

sequenceDiagram
    participant User as 用户
    participant CLI as Claude Code CLI
    participant Hook as Hook 系统
    participant Skill as Skill 引擎
    participant Claude as Claude AI
    participant Tool as Tool 系统
    participant MCP as MCP Server

    Note over User,MCP: 场景1:用户输入 /gsd-quick

    User->>CLI: /gsd-quick 修复按钮颜色
    CLI->>Hook: UserPromptSubmit 事件
    Hook-->>CLI: 注入上下文(如 claude-mem 记忆)
    CLI->>Skill: 匹配 gsd-quick SKILL.md
    Skill->>Claude: 注入 Skill 指令 + 用户输入
    Claude->>Tool: 调用 Read(读文件)
    Tool-->>Claude: 返回文件内容
    Claude->>Tool: 调用 Edit(修改文件)
    Tool-->>Hook: PostToolUse 事件
    Hook-->>CLI: 记录操作日志

    Note over User,MCP: 场景2:用户输入 /mem-search

    User->>CLI: /mem-search terminal comparison
    CLI->>Hook: UserPromptSubmit 事件
    Hook-->>CLI: 注入上下文
    CLI->>Skill: 匹配 mem-search SKILL.md
    Skill->>Claude: 注入 Skill 指令
    Claude->>Tool: 调用 MCP Tool: search("terminal comparison")
    Tool->>MCP: stdio 请求 → mcp-server.cjs
    MCP-->>Tool: 返回搜索结果
    Tool-->>Claude: 结果呈现给 AI
    Claude-->>User: 整理后的回答

三个层次

┌──────────────────────────────────────────────┐
│ 第1层:分发层(Plugin)                        │
│   打包 Skill + Hook + MCP + Command           │
│   安装一条命令,所有组件自动注册                 │
│ ├──────────────────────────────────────────────┤
│ 第2层:功能层(Skill + Hook + MCP)            │
│   Skill = 定义工作流(Markdown)               │
│   Hook = 自动化脚本(Shell/Node)              │
│   MCP = 外部工具服务(独立进程)                │
│ ├──────────────────────────────────────────────┤
│ 第3层:能力层(Tool)                          │
│   内置原子操作:Read/Write/Edit/Bash/Glob/...  │
│   MCP Tool:search/get_observations/analyze    │
└──────────────────────────────────────────────┘

文件系统映射

graph LR
    subgraph "~/.claude/"
        A[settings.json
全局配置
hooks + MCP servers] B[skills/
Skill 文件夹
每个含 SKILL.md] C[plugins/
插件缓存
installed_plugins.json] end subgraph "项目/.claude/" D[settings.json
项目级配置
hooks + permissions] E[settings.local.json
本地配置
MCP servers] end subgraph "项目根目录" F[CLAUDE.md
项目约束
所有会话自动加载] end A -->|全局生效| G[Claude Code] D -->|项目生效| G B -->|技能注册| G C -->|插件注册| G F -->|项目上下文| G style A fill:#e74c3c,color:#fff style D fill:#f39c12,color:#fff style F fill:#2ecc71,color:#fff
配置位置 作用范围 典型内容
~/.claude/settings.json 全局所有项目 全局 hooks、MCP servers、权限
项目/.claude/settings.json 当前项目 项目级 hooks、权限
项目/.claude/settings.local.json 当前项目(不提交 git) 本地 MCP servers(含密钥)
~/.claude/skills/ 全局 手动安装的 Skill
~/.claude/plugins/ 全局 Plugin 自动安装
项目/CLAUDE.md 当前项目 项目约束和说明