Skip to content

插件开发概述 ​

插件(Plugin)是 AweeClaw 的能力扩展单元。与场景不同,插件不定义 AI 的身份与人设,而是为客户端和场景提供可复用的能力:一个工具、一个消息渠道、一个模型服务商、一段生命周期钩子,或者一块注入客户端的 UI。

如果你要做的是一套完整的 AI 应用(角色设定 + 对话流 + 界面),请看场景开发指南;如果你要做的是"给平台加一个能力,让所有场景都能用",那就是插件。

开发插件需要 Node.js ≥ 18 与基本 JavaScript / TypeScript 能力。


插件与场景的区别 ​

维度插件(Plugin)场景(Scenario)
本质能力供给单元完整的 AI 应用
清单文件manifest.jsonscenario.json
定义内容能力声明、配置表单、UI 扩展点身份、提示词、工具、UI 布局
运行位置客户端主进程 / 子进程 / 远程服务客户端渲染进程 + 沙箱
复用方式被多个场景、智能体共享调用被用户直接使用
UI 能力侧边栏面板、顶部按钮、设置页 Tab、工作台卡片完整自定义面板
发布接口/api/v1/developer/plugins/api/v1/marketplace/developer
分发渠道插件市场场景市场

一个插件由什么组成 ​

最小可用的插件只有一个 manifest.json + 一个入口文件:

my-plugin/
├── manifest.json      # 必需:插件元数据与能力声明
├── index.js           # 必需:入口(除了 ConfigOnly 插件)
├── package.json       # 可选:声明 ESM 与依赖
├── ui-src/            # 可选:UI 扩展源码(React + TS)
│   └── index.tsx
├── ui.js              # 可选:ui-src 构建产物
└── icon/
    └── icon.png       # 可选:本地图标(≤ 256KB,建议 128×128)
文件作用
manifest.json插件唯一标识、名称描述、类型、版本、能力声明、配置表单、UI 扩展点
index.js插件逻辑入口:导出 MCP 工厂函数(in-process)或作为 stdio 服务启动
package.json声明 "type": "module"(ESM);stdio 插件声明 SDK 依赖
ui.js由 scripts/build-ui.mjs 打包出的 ESM bundle,向客户端注入 UI 组件

插件类型 ​

后端 PluginType 枚举定义了市场可发布的插件类型:

类型说明
mcpMCP 协议插件,通过 capabilities.mcp 声明传输方式,是最常见的一类
tool工具型插件,通常以 in-process 方式运行,可附带 UI 扩展
channel消息渠道插件(飞书、微信、钉钉等)
provider模型服务商插件
hook生命周期钩子插件(拦截/改写智能体与工具调用流程)
composite组合插件,聚合多个子插件
scenario以插件形式分发的场景包
skill技能包插件

本仓库(aweeclaw-plugins)当前的主力形态是 mcp 与 tool,二者都通过 MCP 协议被智能体调用。channel / provider 类插件由客户端内置适配器打包生成,走平台侧构建流程。


三种分发模式 ​

插件如何分发由 manifest.json 的 main 字段自动决定,开发者无需手动指定:

模式触发条件存储位置适用场景
Tarball 模式main 非空(有本地入口代码)对象存储(MinIO/S3)存 .tar.gz自研代码插件(in-process / 本地 stdio)
ConfigOnly 模式main 为空 + 有 MCP 能力数据库直接存 manifest通过 npx/uvx 调用外部包的 MCP 插件
内联代码模式Tarball 上传失败时自动降级数据库存 manifest(含 inlineCode)对象存储不可达时的降级;也用于 in-process 插件

客户端 PluginInstaller 三种模式全部兼容:Tarball 解压安装,ConfigOnly 仅写 manifest,内联模式把 inlineCode / inlineUiCode 还原成本地文件。


端到端流程 ​

mermaid
graph TD
    A[本地开发<br/>manifest.json + index.js + 可选 ui-src] --> B[本地测试<br/>node --check / MCP Inspector]
    B --> C[构建 UI<br/>node scripts/build-ui.mjs]
    C --> D[打包 tar.gz<br/>脚本自动完成]
    D --> E[发布<br/>脚本 / 开发者中心]
    E --> F[审核<br/>pending → approved]
    F --> G[用户安装<br/>下载 → 校验 → 解压 → 注入配置]
    G --> H[运行<br/>注册 MCP 服务 → 自动连接]

仓库结构 ​

插件源码统一放在 aweeclaw-plugins/ 仓库:

aweeclaw-plugins/
├── plugins/                     # 所有插件源码(每个插件一个子目录)
│   ├── mcp-brave-search/        #   ConfigOnly MCP 插件(npx 调用外部包)
│   ├── util-uuid-gen/           #   in-process 工具插件
│   ├── ai-macro-recorder/       #   in-process 工具插件 + UI 扩展
│   └── ...
├── templates/
│   └── mcp-plugin/              # 插件开发模板(含 icon/ 目录)
├── scripts/
│   ├── build-ui.mjs             # 构建 UI bundle(ui-src/index.tsx → ui.js)
│   ├── publish-plugin.mjs       # 发布单个插件(推荐入口)
│   ├── publish-all-plugins.mjs  # 批量发布
│   └── generate-plugins.mjs     # 从清单批量生成插件目录
├── package.json                 # 仓库依赖(esbuild / typescript)
└── tsconfig.json                # UI 源码类型检查配置

新插件一律放在 plugins/ 目录下,目录名与 manifest.id 保持一致。


下一步 ​

AweeClaw AI 应用构建平台