第 10 章

插件 Plugins

把零散能力打包成可分发的完整方案

一个插件,装上就拥有一整套工作流

Skills、子代理、MCP、Hooks 各自强大却零散。这一章把它们打包成可分发的完整方案,从个人配置走向团队/社区生态。

能力零散

技能、钩子、MCP 各配各的,换个项目又得重来

配置成本高

你在 A 项目配好了代码审查技能、安全钩子、GitHub MCP,换到 B 项目,这些配置要重新做一遍。

分享很麻烦

想把自己摸索的一套工作流分享给同事,只能逐个文件传——技能目录、钩子脚本、MCP 配置,零散易漏。

版本难管理

你升级了某个技能,同事还在用旧版,没有统一的更新机制。

插件(Plugin)就是为"打包分发"设计的:把命令 + 技能 + 子代理 + 钩子 + MCP 配置装进一个标准化的包,一次安装、一键更新、一键分享。

什么是插件

定义、白话、和零散配置的区别

Plugin 是 Qoder CLI 中把多种扩展能力打包成可安装单元的机制。一个插件可以同时包含命令、技能、子代理、钩子、MCP 服务配置,通过一个清单文件(plugin.json)声明自己的内容。

说白了,插件就像手机上的一个 App——你不用关心它内部用了哪些技术,点一下安装,就获得了一整套功能。卸载也干净利落。

零散配置

  • 技能、钩子、MCP 各自配置
  • 换项目要重做
  • 分享靠传文件
  • 没有版本概念

插件化

  • 所有能力打包成一个单元
  • 一次安装到处可用
  • 通过市场一键分享
  • 有版本,可升级回退

插件包含什么

一个插件可以装下五种能力

Commands(命令)

自定义斜杠命令,快速触发预设流程。

Skills(技能)

带自动触发的专家能力包。

Agents(子代理)

角色化的隔离 AI 助手。

Hooks(钩子)

事件驱动的自动检查脚本。

MCP 配置

外部服务连接配置。

不是每个插件都要包含全部五种。一个"代码审查插件"可能只有技能 + 子代理 + 钩子;一个"GitHub 工作流插件"可能只有命令 + MCP 配置。按需组合。

目录结构

一个典型插件的文件组织

my-code-quality-plugin/
├── plugin.json              # 必需:插件清单
├── commands/                # 命令
│   ├── lint.md
│   └── review.md
├── skills/                  # 技能
│   └── code-reviewer/
│       └── SKILL.md
├── agents/                  # 子代理
│   └── security-auditor.md
├── hooks/                   # 钩子
│   └── pre-commit-check.sh
└── mcp-config.json          # MCP 服务配置

每个子目录对应一种能力,放对应类型的文件。plugin.json 是入口,声明插件元信息和包含的内容。

plugin.json

插件清单——声明"我是谁、包含什么"

{
  "name": "code-quality-suite",
  "version": "1.2.0",
  "description": "一套代码质量工具:审查技能、安全审计代理、提交前检查钩子",
  "author": "your-name",
  "homepage": "https://github.com/you/code-quality-suite",
  "capabilities": ["commands", "skills", "agents", "hooks"]
}
字段说明
name插件唯一标识(安装和引用用)
version语义化版本,用于升级和兼容
description功能描述,市场和搜索用
capabilities声明包含哪些能力类型
版本号的意义:遵循语义化版本(主.次.修订),让用户知道升级是否安全。不兼容的改动要升主版本号,这是分发插件的基本礼貌。

四类来源

插件从哪里来

官方插件

Qoder 团队维护,质量有保证。通常是通用场景的最佳实践,新手优先用这类。

社区插件

社区开发者贡献,种类丰富。安装前看 star 数和更新频率,判断维护质量。

组织插件

公司或团队内部维护,沉淀组织级工作流。通过私有市场分发。

个人插件

你自己写给自己用的。不发布,本地安装即可。

市场

插件分发的中心——marketplace

Marketplace(市场)是插件的集中分发渠道。你可以把插件发布到市场,别人从市场一键安装。

添加市场源

市场可以是一个 URL 或仓库。配置后就能从中浏览和安装:

qodercli plugin marketplace add \
  https://github.com/org/my-marketplace

从市场安装

qodercli plugin install code-quality-suite

安装后该插件的所有能力(命令、技能、钩子等)立即可用,无需逐个配置。

管理与卸载

qodercli plugin list          # 已装插件
qodercli plugin update code-quality-suite
qodercli plugin remove code-quality-suite

安全控制

通过 strictKnownMarketplaces 控制是否只允许从已知可信市场安装,防止恶意插件。

安全提醒:插件能包含钩子脚本和 MCP 配置,理论上能执行任意代码。只从可信市场安装,安装前 review 插件内容,尤其警惕来源不明的社区插件。

创建插件

把你的零散配置升级成可分发插件

如果你已经在项目里配好了技能、钩子,把它们升级成插件的步骤:

  1. 建目录:创建插件根目录,如 my-workflow/
  2. 迁移能力:把现有的技能移到 skills/、钩子移到 hooks/,以此类推
  3. 写清单:创建 plugin.json,声明 name/version/description/capabilities
  4. 本地测试:用本地路径安装 qodercli plugin install ./my-workflow
  5. 发布(可选):推到 Git 仓库,注册到市场供他人使用
渐进式打包:不必一开始就把所有能力塞进插件。先打包最核心、最稳定的部分,验证后再逐步加入。一个聚焦的小插件比一个大杂烩更有价值。

排错指南

插件相关的高频问题

安装后能力不可用

原因:plugin.json 的 capabilities 没声明,或文件路径不对。修复:检查清单字段;确认子目录命名规范;用 plugin list 看是否成功加载。

钩子不生效

原因:脚本无执行权限。修复:chmod +x hooks/*.sh;Windows 用对应格式脚本。

市场安装被拒

原因:开启了 strictKnownMarketplaces,该市场不在白名单。修复:把可信市场加入白名单,或临时关闭严格模式。

升级后行为变了

原因:插件跨大版本有不兼容改动。修复:看 changelog;必要时回退到旧版本 plugin install name@1.x。

动手练习

把前面的成果打包成一个插件

练习 1:建插件骨架

  • 创建 my-first-plugin/ 目录
  • 写 plugin.json,声明 name 和 version

练习 2:迁移已有能力

  • 把第 06 章做的技能移到 skills/
  • 把第 09 章做的钩子移到 hooks/
  • 更新 capabilities 字段

练习 3:本地安装测试

  • 用 qodercli plugin install ./my-first-plugin 安装
  • 验证技能和钩子都正常工作
  • 体会"一键安装一整套"的便利

本章回顾

带走的三个核心认知

插件是能力容器

把命令、技能、代理、钩子、MCP 打包成一个可安装单元。

plugin.json 是入口

声明身份、版本、能力,是分发的核心清单。

市场是分发渠道

一键安装、一键更新、一键分享,版本统一管理。

核心结论:插件是从"个人配置"到"团队/社区生态"的桥梁。你摸索出的工作流,打包成插件就能让无数人受益——这是知识沉淀的最高形式。

扩展篇到此结束。接下来进入控制篇——第 11 章权限系统,学习如何安全地把活交给 AI。

延伸阅读

继续本课程