Plugin(插件)是一种标准化的扩展打包与分发机制:它把散落在各处的 Agent 扩展能力(斜杠命令、子 Agent、Skill、Hook、MCP 服务器等)连同一份清单文件,打包成一个可整体安装、更新、卸载和分享的独立单元。如果说 Skill、Hook、MCP 分别解决了 Agent 的某一类能力问题,那么 Plugin 解决的就是这些能力的交付问题——让扩展像手机应用一样"一条命令装好、整体升级、不用即卸"。

本教程将系统讲解 Plugin 的概念定义、解剖结构、安装与加载机制,梳理它与 Skill、Hook、MCP 等扩展机制的分工,并结合主流 Agent 工具介绍插件市场的使用方式与团队插件的构建思路,最后对 Codex、Claude Code 与 DeepSeek Harness 三款主流工具在插件载入与使用上的差异作横向对比。

前置教程

如想快速开始学习本教程,你可能需要先完成以下前置教程:

  • Agent概念详解,插件打包的各类能力最终都服务于 Agent,先理解 Agent 的基本构成。
  • Harness概念详解,插件中的命令、Hook、MCP 服务器等组件挂载到 Harness 的执行链路上运行。
  • Skill概念详解,Skill 是插件中最常被打包的能力组件,理解 Skill 有助于理解插件的构成。
  • Hook钩子概念详解,Hook 是插件可包含的确定性控制组件,两者结合能体会插件的打包价值。

1. 什么是 Plugin

1.1 概念定义

Plugin(插件)在软件工程中泛指一种"不动宿主源码即可扩展宿主功能"的机制,这一思想在各类软件中早已成熟:

形态 宿主 打包内容 安装方式
浏览器扩展 Chrome、Firefox 脚本、页面、权限声明 应用商店一键安装
编辑器扩展 VS Code 语言支持、主题、调试器 扩展市场一键安装
手机应用 iOS、Android 完整功能的程序包 应用商店安装与卸载

它们的共同点是:功能以标准单元打包,通过清单文件声明自身,经统一渠道分发,装上即用、卸载即净。

在 AI Agent 语境下,Plugin 是把多种 Agent 扩展能力连同清单文件打包成一个标准单元的机制,用户通过一条命令即可完成安装,安装后各组件按各自的方式自动生效。

可以把 Agent 的扩展体系想象成一套厨具:Skill 是一本菜谱,Hook 是灶台上的定时器,MCP 是接通水电的管道。单买每一件都能用,但搬运和组装全靠自己。Plugin 则是"整套厨具礼盒"——开箱即是成套搭配好的工具,说明书(清单文件)告诉你每件装在哪、怎么用。

1.2 从"散装扩展"到"插件化"

在插件机制出现之前,Agent 的各类扩展能力各自为政:Skill 要手工下载文件放进目录,Hook 脚本要拷贝到项目里再修改配置注册,MCP 服务器要逐条编辑 JSON 配置。能力本身没问题,问题出在交付环节:

场景 散装扩展的做法 痛点 插件化之后
安装社区能力 手工下载文件、放入指定目录 步骤零散,容易漏文件或放错位置 一条命令安装整个插件
分享团队 Hook 拷贝脚本,再手工修改 settings.json 脚本路径易错,更新靠口头通知 插件随配置自动注册,升级即更新
接入 MCP 服务器 逐条编辑 JSON 配置文件 配置繁琐,多项目重复劳动 安装插件时自动注册 MCP 服务器
团队环境对齐 口头约定各自安装哪些扩展 成员环境不一致,问题难排查 插件清单入仓库,全员一键对齐

散装扩展解决的是"有没有这个能力",插件解决的是"这个能力如何可靠地到达每个使用者手里"。当扩展数量变多、需要多人协作或跨项目复用时,插件化的价值会迅速放大。

1.3 Plugin 的两个关键特性

特性 含义 带来的价值
打包聚合 一个插件内可同时包含斜杠命令、Skill、Hook、子 Agent、MCP 配置等多种组件 相关能力成套交付,安装一次全部生效,无需逐件配置
可分发性 通过插件市场、Git 仓库或本地目录一键安装,支持统一的升级、禁用与卸载 扩展管理像手机应用一样规范:装了就能用,不用就卸载

2. Plugin 的解剖结构

2.1 清单文件 plugin.json

清单文件是插件的"身份证"。以 Claude Code 的插件体系为参考实现(大量兼容其生态的 Agent 工具沿用了相同的设计),清单固定位于插件目录的 .claude-plugin/plugin.json:

{
  "name": "commit-helper",
  "description": "团队提交规范工具包:代码审查命令、提交信息 Skill 与提交前校验 Hook",
  "version": "1.0.0",
  "author": {
    "name": "eogee.com 教程团队"
  }
}
字段 作用
name 插件唯一标识,同时用作组件的命名空间前缀
description 一句话说明插件用途,显示在插件市场的列表中
version 插件版本号,用于升级管理
author 作者信息,可选
homepage、repository 主页与源码仓库地址,可选

2.2 插件可包含的组件

一个插件可以只包含一类组件,也可以把多类组件组合在一起。以参考实现为例,插件可包含五类组件:

组件 存放位置 触发方式 典型用途
斜杠命令 commands/ 目录 用户输入 /插件名:命令名 快捷操作入口,如一键审查、一键生成
子 Agent agents/ 目录 主 Agent 按任务自动委派 隔离上下文处理专项任务
Skill skills/ 目录 模型自主加载或用户显式调用 领域知识、操作规范、行为指导
Hook hooks/hooks.json 生命周期事件自动触发 强制校验、自动化动作
MCP 服务器 清单的 mcpServers 字段或 .mcp.json 模型按需调用 接入外部系统的工具能力

这五类组件正是前面章节介绍过的各类扩展机制(Skill 见 Skill概念详解,Hook 见 Hook钩子概念详解,MCP 见 MCP概念详解与应用完整教程)。插件对它们做的事情只有一件:打包并代为注册。组件的触发逻辑、执行方式全部沿用各自原有的机制,插件不改变组件的行为,只负责让它们"随包到达、装上即生效"。

2.3 一个完整插件的目录结构

以前面的 commit-helper 插件为例,一个功能完整的插件目录如下(用不到的组件目录可以省略):

commit-helper/
├── .claude-plugin/
│   └── plugin.json          # 清单文件
├── commands/
│   └── review.md            # /commit-helper:review 审查命令
├── skills/
│   └── commit-style/
│       └── SKILL.md         # 提交信息撰写规范
├── hooks/
│   ├── hooks.json           # 钩子注册配置
│   └── guard.py             # 钩子脚本本体
└── .mcp.json                # 可选:随包注册的 MCP 服务器

其中 commands/review.md 是一个典型的斜杠命令文件,用 Markdown 编写,头部描述说明命令用途:

---
description: 审查当前改动并生成符合团队规范的提交信息
---

请审查当前工作区的全部改动,重点检查:改动是否与提交意图一致、
是否包含调试残留、是否符合仓库的代码风格。审查通过后,按
commit-style 技能中的规范生成提交信息草稿。

2.4 插件的安装与加载机制

无论插件来自插件市场、Git 仓库还是本地目录,安装与加载都遵循同一条流水线:

graph LR SRC[插件来源
市场、Git 仓库、本地目录] --> CACHE[本地缓存目录
按插件与版本存放] CACHE --> PARSE[解析清单
plugin.json] PARSE --> REG[注册组件
命令、Skill、Hook、MCP] REG --> NS[命名空间隔离
插件名:组件名] NS --> RUN[组件按各自机制生效] style SRC fill:#d6eaf8,stroke:#2980b9,stroke-width:2px style CACHE fill:#ffecd6,stroke:#e67e22,stroke-width:2px style PARSE fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style REG fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style NS fill:#fadbd8,stroke:#c0392b,stroke-width:2px style RUN fill:#ffecd6,stroke:#b7950b,stroke-width:2px

两个关键环节值得注意:

  • 本地缓存:安装的插件统一存放在用户主目录下的插件缓存目录中(例如 ~/.claude/plugins/),项目配置里只记录"启用了哪些插件"。这样同一个插件可以被多个项目复用,升级也只需更新缓存中的一份。
  • 命名空间隔离:插件注册的所有组件都带上插件名前缀——命令是 /插件名:命令名,技能以 插件名:技能名 标识,MCP 工具名为 mcp__插件名__工具名。不同插件即使定义了同名命令也互不干扰。

3. Plugin 与相关概念的关系

3.1 概念关系图谱

graph LR P[Plugin 插件
打包与分发单元] --> C1[斜杠命令] P --> C2[Skill
行为指导] P --> C3[Hook
强制规则] P --> C4[子 Agent] P --> C5[MCP 服务器
外部工具] C1 --> A[Agent
智能体] C2 --> A C4 --> A C5 --> A C3 --> H[Harness
执行引擎] style P fill:#ffecd6,stroke:#b7950b,stroke-width:2px style C1 fill:#d6eaf8,stroke:#2980b9,stroke-width:2px style C2 fill:#fdebd0,stroke:#e67e22,stroke-width:2px style C3 fill:#fadbd8,stroke:#c0392b,stroke-width:2px style C4 fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style C5 fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style A fill:#e8f4f8,stroke:#1a6b8a,stroke-width:2px style H fill:#ebdef0,stroke:#8e44ad,stroke-width:2px

3.2 Plugin vs Skill

Skill 与 Plugin 是最容易混淆的两个概念,因为插件里经常装着 Skill:

维度 Skill Plugin
本质 单件行为指令模板 多种能力的打包分发单元
内容 一个 SKILL.md 指令文件(可附脚本资源) 命令、Skill、Hook、子 Agent、MCP 的任意组合
生效方式 模型自主加载或用户显式调用 安装后整体注册,组件按各自机制生效
解决的问题 指导模型如何做事 扩展能力如何打包、安装、分发、管理
类比 一份讲义 一整套教材礼盒

核心分工:Skill 回答"模型怎么做事",Plugin 回答"这堆能力怎么交付"。单个 Skill 用一个文件就能分享;当能力超过一件——比如"一条命令加一份规范再加一道校验"的组合,或者需要统一升级与卸载时,插件的打包价值就体现出来了。Skill 可以单独存在,也可以作为组件随插件分发。

3.3 Plugin vs MCP

MCP 为 Agent 接入外部工具提供了标准协议(见 MCP概念详解与应用完整教程),它解决"模型能调用什么";插件与 MCP 是包含关系——插件可以把 MCP 服务器连同配置一起打包:

维度 单独配置 MCP 通过插件打包 MCP
配置方式 手工编辑项目或用户的 MCP 配置文件 安装插件时自动注册
分享成本 把配置片段发给协作者,各自粘贴 分享一个插件名即可
升级与卸载 手工修改配置 插件统一升级,卸载即移除

3.4 Plugin vs Hook

Hook 提供 Agent 的确定性控制(见 Hook钩子概念详解),它的痛点同样在分发环节:Hook 脚本要放进指定目录,还要在配置文件中注册,分享时接收方需要"拷脚本、改配置"两步操作,路径错了就静默失效。插件把 Hook 脚本与 hooks.json 注册配置一起打包,安装即注册、卸载即移除;脚本路径通过插件根目录变量(如参考实现中的 ${CLAUDE_PLUGIN_ROOT})自动解析,无需手工适配。

3.5 四类扩展机制的定位总结

机制 解决的问题 使用方式 与插件的关系
Skill 模型怎么做事 模型自主加载或显式调用 可独立存在,常作为插件组件
Hook 事件点上的强制规则 引擎在生命周期事件自动触发 可独立存在,常作为插件组件
MCP 外部工具如何接入 模型按需调用 可独立存在,常作为插件组件
Plugin 上述能力的打包与分发 安装后各组件按各自机制生效 打包载体,自身不提供新能力

插件自身不产生任何新能力,它是纯粹的"集装箱":Skill、Hook、MCP 是货物,插件负责把货物成套运到用户手里并摆放到位。

4. Plugin 的分发与应用

4.1 插件市场(Marketplace)机制

插件市场是插件的"应用商店"。一个市场本质上是一个 Git 仓库,根目录放置一份市场清单 .claude-plugin/marketplace.json,列出仓库内托管的插件:

{
  "name": "team-marketplace",
  "owner": {
    "name": "eogee.com 教程团队"
  },
  "plugins": [
    {
      "name": "commit-helper",
      "source": "./plugins/commit-helper",
      "description": "团队提交规范工具包"
    }
  ]
}

以参考实现为例,市场与插件的常用管理命令如下:

# 添加一个插件市场(市场仓库地址)
/plugin marketplace add owner/repo

# 从指定市场安装插件
/plugin install commit-helper@team-marketplace

# 打开交互式管理界面,浏览、启用、禁用或卸载插件
/plugin

除市场外,插件也支持直接从 Git 仓库地址或本地目录安装,适合未上架市场的内部插件与开发调试场景。

4.2 主流工具的插件支持情况

工具 插件机制 分发方式
Claude Code 完整插件体系:清单文件、五类组件、命名空间隔离 插件市场(marketplace)、Git 仓库、本地目录
ZCode 与 Claude Code 同构的插件与市场设计,技能以"插件名:技能名"加载 官方市场与自定义市场
DeepSeek Harness "一切皆插件"架构,模型、工具、界面等能力均由插件组合而成 dsh plugin 命令与 dshmarket 市场

其中 DeepSeek Harness 把插件化推到了极致——连模型接入、Web 界面都是插件,具体的安装操作见 DeepSeek Harness插件概念详解与安装教程;而 Codex 尚未提供统一的插件打包机制,扩展以散装的 Skill 与 MCP 为主。三款工具在插件载入与使用上的具体差异,见下一章的逐项对比。

4.3 场景一:安装并使用社区插件

假设团队选中了一个社区代码审查插件,完整的使用过程如下:

# 第一步:添加插件所在的市场
/plugin marketplace add owner/repo

# 第二步:安装插件
/plugin install code-review@owner-repo

安装完成后无需重启,插件的能力立即可用:

  • 在会话中输入 /code-review:review,触发插件自带的审查命令;
  • 插件包含的 Skill 进入可加载列表,模型在相关任务中自主引用;
  • 插件注册的 Hook 在对应生命周期事件上自动生效。

想停用时,在 /plugin 管理界面中禁用即可,所有组件一起失效;确认不再需要则卸载,本地缓存一并清除。

4.4 场景二:构建团队规范插件

插件最典型的团队应用,是把"规范"打包成"能力"。以提交规范为例,散装做法需要每个成员手工配置三样东西;插件做法是把它们装进一个 commit-helper 包:

需求 承载组件 说明
一键生成规范提交信息 斜杠命令 /commit-helper:review 统一入口,无需口头描述要求
提交信息撰写规范 Skill commit-style 模型生成提交信息时自动遵循
提交前强制校验 Hook(PreToolUse 事件) 格式不合规直接拦截,兜底保障

插件内的 Hook 注册文件 hooks/hooks.json 与散装配置结构一致,脚本路径改用插件根目录变量:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python ${CLAUDE_PLUGIN_ROOT}/hooks/guard.py"
          }
        ]
      }
    ]
  }
}

把这个插件推送到团队市场后,新成员从"读规范文档、拷脚本、改配置"变成一条安装命令。规范更新的传播路径也从"通知每个人改"变成"发一个新版本,大家升级插件"。

4.5 设计原则与安全注意事项

原则 说明
来源可信 插件拥有注册 Hook、MCP 服务器的权力,安装前确认来源,优先选择官方市场或团队内部市场
聚焦单一主题 一个插件围绕一个场景打包相关能力,避免大而全的"万能包"
版本管理 使用语义化版本号,能力变更写入更新说明,方便使用者评估是否升级
命名清晰 组件命名带上插件语境,避免与其他插件的组件语义混淆
及时升级 关注市场的更新提醒,安全类修复应尽快跟进

安装插件等同于把外部代码引入工作环境:Hook 会在后台自动执行,MCP 服务器会常驻运行。安装前务必审查插件的来源与内容,对来路不明的插件保持与对待陌生可执行程序同等的警惕。

5. Codex、Claude Code 与 DSH 的插件机制对比

同属主流 Agent 工具,三者在"插件"这件事上走出了三条路线:Codex 未设统一的插件机制,扩展以散装形式存在;Claude Code 建立了标准化的插件包与市场体系;DeepSeek Harness(下称 DSH)则把"一切皆插件"上升为系统架构。理解三者的差异,有助于为不同场景选择合适的扩展方式。

5.1 三种路线的总体定位

维度 Codex Claude Code DSH
插件在体系中的定位 无统一插件机制,扩展以散装形式存在 标准化的扩展打包与分发单元 系统架构本身,"一切皆插件"
一个"插件"是什么 不存在插件包,能力以单个文件或配置段为单位 插件目录、plugin.json 清单与组件集合 一个声明了 dsh 字段的 npm 包
可承载的能力 Skill(目录拷贝)、MCP 与模型接入(config.toml) 斜杠命令、子 Agent、Skill、Hook、MCP 工具、Web 界面、服务、配置补丁,直至模型接入与沙箱
设计取向 简单透明,一份文件多工具通用 能力成套交付、统一管理 系统可组装、可整体替换

三条路线对应三种诉求:Codex 把扩展"化整为零",换来最简单的使用方式;Claude Code 把扩展"装箱交付",换来可管理的规模;DSH 把扩展上升为架构,换来整个系统的自由组装。

5.2 载入方式对比

载入是三者差异最大的环节,三条流水线如下:

graph LR subgraph DX["Codex:散装载入"] A1["获取文件
网盘或 Git 下载"] --> A2["拷入约定目录
.agents/skills/"] A2 --> A3["编辑 config.toml
注册 MCP 等配置"] A3 --> A4["新会话中生效"] end subgraph CC["Claude Code:标准包载入"] B1["插件市场或 Git 仓库"] --> B2["/plugin install
下载到本地缓存"] B2 --> B3["解析清单
按命名空间注册组件"] B3 --> B4["即时生效"] end subgraph DH["DSH:一切皆插件"] C1["dshmarket 或 npm 源"] --> C2["dsh plugin add
pnpm 装入 profile"] C2 --> C3["自动挂载 bundle
叠加配置树"] C3 --> C4["重启 dsh web 生效"] end style A1 fill:#d6eaf8,stroke:#2980b9,stroke-width:2px style A2 fill:#d6eaf8,stroke:#2980b9,stroke-width:2px style A3 fill:#d6eaf8,stroke:#2980b9,stroke-width:2px style A4 fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style B1 fill:#fdebd0,stroke:#e67e22,stroke-width:2px style B2 fill:#fdebd0,stroke:#e67e22,stroke-width:2px style B3 fill:#fdebd0,stroke:#e67e22,stroke-width:2px style B4 fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style C1 fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style C2 fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style C3 fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style C4 fill:#d5f5e3,stroke:#27ae60,stroke-width:2px

各环节的逐项对照:

环节 Codex Claude Code DSH
载入动作 手工拷贝文件、手工编辑配置 /plugin install 一条命令 dsh plugin --profile web add 包名
载入来源 网盘、Git 等手工获取 市场(marketplace)、Git 仓库、本地目录 dshmarket、npm 源、GitHub、Git URL、本地目录
存放位置 .agents/skills/(项目级)或 ~/.agents/skills/(全局级) 用户主目录插件缓存 ~/.claude/plugins/,项目仅记录启用清单 profile 目录 ~/.dsh/profiles/<名称>/ 的 node_modules
注册方式 无需注册,目录与配置文件即注册 解析清单后自动注册全部组件 声明 dsh.bundle.patch 的包自动加入 bundles 组合包清单
生效时机 保存即生效,新会话可调用 安装完成即时生效 需重启 dsh web
隔离机制 目录即作用域,无命名空间 命名空间 插件名:组件名 profile 之间隔离,配置树逐层叠加

Codex 的"载入"是纯手工过程:没有安装命令,也没有清单文件——把 Skill 目录拷进 .agents/skills/ 即完成载入,把 MCP 服务器写进 ~/.codex/config.toml 即完成注册。载入粒度是单个文件与配置段,每一步都可见、可控。

Claude Code 的"载入"是标准化流程:一条命令完成下载、解析、注册;组件以命名空间隔离,不同插件互不覆盖;项目级与用户级配置可以叠加,团队共享同一份启用清单。

DSH 的"载入"是系统装配:dsh plugin 命令本身不执行安装,而是把参数转发给 pnpm 在 profile 目录中完成依赖安装;安装成功后按插件声明的补丁自动挂载进配置树,与内置组合包逐层叠加出最终行为。此外,DSH 插件可包含运行在浏览器中的 client 端代码,Web 界面类插件会在页面加载时被动态引入。

5.3 使用与管理对比

操作 Codex Claude Code DSH
调用扩展 /技能名/ 调用 Skill,MCP 工具由模型按需调用 /插件名:命令名 触发命令,其余组件各按原机制生效 组件由系统装配后自动生效,用户通过 profile 选择能力组合
升级 重新下载覆盖旧文件 从市场或仓库拉取新版本 add 包名@latest 或 update 包名 --latest
禁用 移出技能目录或注释配置段 /plugin 管理界面中禁用,组件整体失效 在配置补丁层调整挂载条目
卸载 删除文件或配置段 /plugin 管理界面中卸载,清除本地缓存 dsh plugin remove 包名,自动移出 bundles

三者在管理成本上的差异延续自载入方式:Codex 的升级与卸载靠"重新拷贝、手动清理",扩展一多容易遗漏;Claude Code 与 DSH 都有命令化的管理入口,区别在于 DSH 的更新与卸载需要重启 dsh web 才生效,Claude Code 则即改即生效。

DSH 从 npm 镜像源安装或更新插件时可能遇到同步滞后:指定 @latest 却装到旧版本时,可显式指定版本号或临时切换官方源;从 Git 仓库安装插件时,pnpm 10 及以上环境需在 profile 的 pnpm-workspace.yaml 中放行构建脚本,否则安装可能失败。

5.4 如何选择

需求场景 推荐路线 理由
个人使用,以行为规范、领域知识为主 Codex 式散装 Skill 一份 SKILL.md 拷贝即用,还能在三家工具间通用(见 DeepSeek Harness等Agent Skill安装与应用教程)
团队需要成套分发能力并统一管理 Claude Code 式插件 清单文件与插件市场带来一键安装、统一升级与命名空间隔离
需要改造 Agent 系统本身 DSH 式插件 界面、模型接入、服务均可作为插件整体替换

三条路线可以并存:日常行为规范用散装 Skill 满足,团队成套能力用标准插件交付,系统级定制交给 DSH 的 profile 组装——按场景选工具,按粒度选机制。

6. 总结

6.1 核心内容回顾

  • Plugin(插件) 是 Agent 扩展能力的标准打包与分发单元,由清单文件 plugin.json 加若干组件目录构成,核心特性是打包聚合与可分发性。
  • 插件可包含五类组件:斜杠命令、子 Agent、Skill、Hook、MCP 服务器;插件只负责打包与注册,组件行为沿用各自原有机制。
  • 安装与加载遵循"来源、本地缓存、解析清单、注册组件、命名空间隔离"的流水线,命名空间保证不同插件的组件互不冲突。
  • 概念分工:Skill 回答"模型怎么做事",Hook 回答"系统强制做什么",MCP 回答"能调用什么外部工具",Plugin 回答"这些能力如何交付"。
  • 插件市场(marketplace)是插件的分发渠道,一条市场清单可以托管多个插件;典型团队应用是把规范打包成随装随用的能力集合。
  • Codex、Claude Code 与 DSH 代表三条路线:Codex 以目录拷贝与手工配置散装载入,Claude Code 以清单驱动的标准包一条命令载入即生效,DSH 以 npm 包装入 profile 并需重启生效;散装、标准包与系统装配三种粒度可按场景组合使用。

6.2 常见问题与解答

问:单个 Skill 一个文件就能分享,为什么还需要插件?

答:分享单件能力时,直接发文件确实更简单。插件的用武之地在于组合与规模:当能力超过一件(命令加规范加校验的组合)、需要统一升级卸载、或者要在团队多人多项目间保持环境一致时,插件提供了清单化的管理方式。

问:安装多个插件后,同名组件会互相冲突吗?

答:不会。插件注册的组件都带有插件名前缀(命令 /插件名:命令名、技能 插件名:技能名、MCP 工具 mcp__插件名__工具名),命名空间隔离保证不同插件的同名组件互不覆盖。同类 Hook 则会叠加执行,组合多个插件时留意规则之间的相互作用。

问:插件中的 Hook 脚本路径在不同电脑上会失效吗?

答:插件体系为脚本路径提供了插件根目录变量(如 ${CLAUDE_PLUGIN_ROOT}),无论插件缓存到哪台机器的哪个目录,路径都会被自动解析,无需手工适配。

问:如何发布自己的插件?

答:最简单的方式是把插件目录推送到 Git 仓库,使用者通过仓库地址直接安装;插件较多时,在仓库根目录创建市场清单 marketplace.json,就形成了一个团队专属的插件市场,成员添加市场后即可按名安装。

问:禁用和卸载插件有什么区别?

答:禁用后插件的所有组件一起失效,但本地缓存保留,随时可以重新启用;卸载则把插件从本地缓存中删除,再次使用需要重新安装。临时排查问题时建议先禁用。

问:Codex 没有插件机制,能用 Claude Code 生态里的插件吗?

答:插件包本身无法直接安装,但可以拆开复用:插件中的 Skill 组件(SKILL.md)多数可直接拷贝到 .agents/skills/ 使用;Hook 与 MCP 服务器则需要按 Codex 的约定手工迁移——Hook 逻辑改写为本地脚本或配置,MCP 服务器逐条写入 ~/.codex/config.toml。