第 10 章 · 插件与技能系统
Claude Code 的可扩展性建立在两个相互协作的机制之上:插件系统(Plugin System)负责从外部市场加载功能包,技能系统(Skill System)负责管理可被模型调用的提示词命令。两者共同构成了一个开放的扩展架构,让用户和开发者能够在不修改核心代码的前提下,为 Claude Code 添加新能力。
术语表
| 术语 | 含义 |
|---|---|
| Plugin(插件) | 从市场(Marketplace)安装的功能包,可包含命令、技能、MCP 服务器、Hooks 等组件 |
| Skill(技能) | 一段以 Markdown 编写的提示词,模型可通过 SkillTool 调用 |
| Bundled Skill(内置技能) | 编译进 CLI 二进制文件的技能,随 CLI 一起发布 |
| Built-in Plugin(内置插件) | 随 CLI 发布、可在 /plugin UI 中启用/禁用的插件 |
| SkillTool | 核心工具,让模型能够发现并执行技能 |
| Marketplace(市场) | 插件的分发渠道,通常是一个 Git 仓库 |
| LoadedPlugin | 已加载到内存中的插件对象,包含路径、清单、启用状态等信息 |
整体架构概览
插件系统
插件的基本概念
插件是 Claude Code 的外部扩展单元。每个插件本质上是一个目录,包含以下可选组件:
my-plugin/
├── plugin.json # 插件清单(可选)
├── commands/ # 自定义斜杠命令(.md 文件)
├── agents/ # 自定义 AI 代理定义
├── skills/ # 技能文件(SKILL.md 格式)
├── hooks/ # Hooks 配置(hooks.json)
└── output-styles/ # 输出样式定义
插件通过"市场"(Marketplace)分发,市场通常是一个 Git 仓库,其中包含插件的索引文件。插件 ID 采用 {name}@{marketplace} 格式,例如 my-tool@github。
插件加载机制
插件加载的核心逻辑位于 src/utils/plugins/pluginLoader.ts。加载流程分为以下几个阶段:
第一阶段:发现(Discovery)
系统从两个来源发现插件:
- 市场插件:从用户设置(
~/.claude/settings.json)、项目设置(.claude/settings.json)和托管设置中读取enabledPlugins字段