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 作者信息,可选
homepagerepository 主页与源码仓库地址,可选

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:#fef9e7,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:#fef9e7,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 包名@latestupdate 包名 --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