Skip to content

插件市场系统

模块概述

版本: v0.34.0 状态: ✅ 已实现 IPC处理器: 22个 最后更新: 2026-02-15

插件市场系统提供完整的插件生命周期管理,包括发现、安装、更新、卸载和社区交互。支持四层技能加载机制,内置哈希校验和沙箱隔离安全保护。

核心特性

  • 插件市场: 浏览、搜索、分类筛选社区插件
  • 生命周期管理: 安装、启用、禁用、更新、卸载全流程
  • 四层加载: bundled → marketplace → managed → workspace 优先级覆盖
  • 安全保护: SHA-256 哈希校验、沙箱隔离、权限声明
  • 自动更新: 后台检查更新,支持自动/手动升级
  • 社区交互: 评分、评论、下载统计

1. 架构设计

1.1 整体架构图

┌──────────────────────────────────────────────────────────────────┐
│                        前端 (Vue3)                                │
├──────────────────────────────────────────────────────────────────┤
│  PluginMarketplace │ PluginDetail │ InstalledPlugins │ Settings   │
│        ↓                   ↓              ↓              ↓        │
│                    Pinia Store: marketplace.ts                    │
└──────────────────────────────────────────────────────────────────┘
                              ↕ IPC (22个通道)
┌──────────────────────────────────────────────────────────────────┐
│                        主进程 (Electron)                          │
├──────────────────────────────────────────────────────────────────┤
│                    marketplace-ipc.js (22个处理器)                 │
│     ┌─────────────────────────────────────────────────────┐      │
│     │ MarketplaceClient │ PluginInstaller │ PluginUpdater  │      │
│     └─────────────────────────────────────────────────────┘      │
│                              ↓                                    │
│     ┌─────────────────────────────────────────────────────┐      │
│     │  PluginSandbox  │  SkillLoader (四层) │  Database    │      │
│     └─────────────────────────────────────────────────────┘      │
└──────────────────────────────────────────────────────────────────┘
                              ↕ HTTPS
┌──────────────────────────────────────────────────────────────────┐
│                    插件注册中心 (远程服务)                         │
├──────────────────────────────────────────────────────────────────┤
│  REST API │ 插件包存储 │ 评分系统 │ 下载统计 │ DID认证             │
└──────────────────────────────────────────────────────────────────┘

1.2 四层技能加载

workspace/    (最高优先级) ← 用户工作区自定义

managed/      ← 用户手动管理的技能

marketplace/  ← 从市场安装的插件技能  [v0.34.0新增]

bundled/      (最低优先级) ← 内置技能 (code-review, git-commit, explain-code)

高优先级层的同名技能会覆盖低优先级层。

1.3 核心组件

组件文件行数说明
MarketplaceClientmarketplace-client.js~400HTTP客户端,DID认证
PluginInstallerplugin-installer.js~350下载、校验、安装
PluginUpdaterplugin-updater.js~280后台更新检查
PluginSandboxplugin-sandbox.js~320沙箱隔离执行
MarketplaceIPCmarketplace-ipc.js~35022个IPC处理器

2. 核心模块

2.1 MarketplaceClient

插件市场 HTTP 客户端,使用 DID 身份认证访问远程 REST API。

功能特性:

  • HTTPS 通信,DID 签名认证
  • 搜索、分类浏览、排序
  • 插件详情、版本列表获取
  • 评分、评论提交
  • 下载链接获取

核心方法:

javascript
class MarketplaceClient {
  // 搜索插件
  async search(query, options = {}) { }

  // 获取分类列表
  async getCategories() { }

  // 获取插件详情
  async getPluginDetail(pluginId) { }

  // 获取版本列表
  async getVersions(pluginId) { }

  // 获取下载链接
  async getDownloadUrl(pluginId, version) { }

  // 提交评分
  async submitRating(pluginId, rating, review) { }

  // 获取推荐插件
  async getFeatured() { }

  // 获取热门插件
  async getPopular(category, page) { }
}

API 端点:

方法路径说明
GET/api/v1/plugins插件列表/搜索
GET/api/v1/plugins/:id插件详情
GET/api/v1/plugins/:id/versions版本列表
GET/api/v1/plugins/:id/download下载链接
POST/api/v1/plugins/:id/ratings提交评分
GET/api/v1/categories分类列表
GET/api/v1/featured推荐插件
GET/api/v1/popular热门排行

2.2 PluginInstaller

插件安装器,负责下载、校验、解压和注册。

安装流程:

下载插件包 (.zip)

SHA-256 哈希校验

解压到临时目录

验证 manifest.json (名称/版本/权限声明)

检查依赖兼容性

复制到 marketplace/ 目录

注册到数据库 (installed_plugins)

加载技能到 SkillLoader

核心方法:

javascript
class PluginInstaller {
  // 安装插件
  async install(pluginId, version) { }

  // 卸载插件
  async uninstall(pluginId) { }

  // 启用插件
  async enable(pluginId) { }

  // 禁用插件
  async disable(pluginId) { }

  // 验证插件包完整性
  async verifyPackage(filePath, expectedHash) { }

  // 获取已安装插件列表
  async getInstalled() { }

  // 获取插件信息
  async getPluginInfo(pluginId) { }
}

manifest.json 格式:

json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "displayName": "我的插件",
  "description": "插件描述",
  "author": "did:key:z...",
  "category": "productivity",
  "permissions": ["file:read", "llm:query"],
  "skills": ["my-skill"],
  "minAppVersion": "0.34.0",
  "dependencies": {}
}

2.3 PluginUpdater

后台更新检查器,支持自动和手动更新。

功能特性:

  • 定时检查更新 (默认每6小时)
  • 版本比较 (semver)
  • 自动下载和安装
  • 更新历史记录
  • 回滚支持

核心方法:

javascript
class PluginUpdater {
  // 检查所有插件更新
  async checkAllUpdates() { }

  // 检查单个插件更新
  async checkUpdate(pluginId) { }

  // 执行更新
  async update(pluginId, targetVersion) { }

  // 批量更新
  async updateAll() { }

  // 获取更新历史
  async getUpdateHistory(pluginId) { }

  // 回滚到上一版本
  async rollback(pluginId) { }

  // 设置自动更新
  async setAutoUpdate(pluginId, enabled) { }
}

3. 数据模型

3.1 installed_plugins

字段类型说明
idTEXT PK插件ID
nameTEXT插件名称
display_nameTEXT显示名称
versionTEXT当前版本
descriptionTEXT插件描述
author_didTEXT作者DID
categoryTEXT分类
permissionsTEXT(JSON)权限声明
enabledBOOLEAN是否启用
auto_updateBOOLEAN是否自动更新
install_pathTEXT安装路径
package_hashTEXT包SHA-256哈希
installed_atINTEGER安装时间
updated_atINTEGER最后更新时间
marketplace_urlTEXT市场页面URL

3.2 plugin_update_history

字段类型说明
idTEXT PK记录ID (UUID)
plugin_idTEXT FK插件ID
from_versionTEXT旧版本
to_versionTEXT新版本
statusTEXT状态 (success/failed/rolled_back)
changelogTEXT变更日志
updated_atINTEGER更新时间
backup_pathTEXT备份路径 (用于回滚)

4. IPC接口 (22个)

4.1 市场浏览 (6个)

通道说明参数
marketplace:search搜索插件query: string, options:
marketplace:get-categories获取分类-
marketplace:get-detail获取插件详情pluginId: string
marketplace:get-versions获取版本列表pluginId: string
marketplace:get-featured获取推荐插件-
marketplace:get-popular获取热门插件category: string, page: number

4.2 安装管理 (7个)

通道说明参数
plugin:install安装插件pluginId: string, version: string
plugin:uninstall卸载插件pluginId: string
plugin:enable启用插件pluginId: string
plugin:disable禁用插件pluginId: string
plugin:get-installed获取已安装列表-
plugin:get-info获取插件信息pluginId: string
plugin:verify-package验证包完整性filePath: string, expectedHash: string

4.3 更新管理 (5个)

通道说明参数
plugin:check-updates检查所有更新-
plugin:check-update检查单个更新pluginId: string
plugin:update执行更新pluginId: string, targetVersion: string
plugin:update-all批量更新-
plugin:get-update-history获取更新历史pluginId: string

4.4 配置和社区 (4个)

通道说明参数
plugin:set-auto-update设置自动更新pluginId: string, enabled: boolean
plugin:rollback回滚版本pluginId: string
marketplace:submit-rating提交评分pluginId: string, rating: number, review: string
marketplace:get-ratings获取评分pluginId: string

5. 前端页面

5.1 PluginMarketplacePage.vue

插件市场主页:

  • 推荐插件轮播
  • 分类标签筛选 (全部/效率/AI/安全/开发/数据)
  • 搜索框,支持关键字搜索
  • 插件卡片列表: 名称、描述、评分、下载量
  • 排序: 热门/最新/评分最高
  • 分页加载

5.2 PluginDetailPage.vue

插件详情页:

  • 插件信息 (名称、版本、作者、分类)
  • 详细描述和截图
  • 版本历史和变更日志
  • 权限声明列表
  • 安装/更新/卸载按钮
  • 用户评分和评论列表

5.3 InstalledPluginsPage.vue

已安装插件管理:

  • 已安装插件列表
  • 启用/禁用切换开关
  • 更新提示徽章
  • 一键全部更新
  • 卸载确认对话框
  • 自动更新设置

5.4 Pinia Store: marketplace.ts

typescript
interface MarketplaceState {
  searchResults: PluginInfo[];
  categories: Category[];
  featured: PluginInfo[];
  popular: PluginInfo[];
  installedPlugins: InstalledPlugin[];
  currentPlugin: PluginDetail | null;
  availableUpdates: UpdateInfo[];
  loading: boolean;
  searchQuery: string;
  currentCategory: string;
}

6. 安全设计

6.1 包完整性校验

  • 所有插件包使用 SHA-256 哈希校验
  • 下载时从注册中心获取预期哈希值
  • 校验失败拒绝安装并提示用户

6.2 沙箱隔离

  • 插件在受限沙箱环境中执行
  • 文件系统访问限制在声明的权限范围内
  • 不允许直接访问 Node.js 核心模块 (child_process, net 等)
  • IPC 通道访问受权限声明控制

6.3 权限控制

  • 插件必须在 manifest.json 中声明所需权限
  • 安装时向用户展示权限列表并请求确认
  • 运行时强制执行权限检查
  • 支持细粒度权限: file:read, file:write, llm:query, network:fetch

6.4 DID 认证

  • 市场 API 使用 DID 签名认证
  • 插件作者身份通过 DID 验证
  • 评分和评论关联 DID 身份防刷

7. 文件结构

desktop-app-vue/src/main/marketplace/
├── marketplace-client.js    # HTTP客户端,DID认证
├── plugin-installer.js      # 下载、校验、安装
├── plugin-updater.js        # 后台更新检查
├── plugin-sandbox.js        # 沙箱隔离执行
└── marketplace-ipc.js       # 22个IPC处理器

desktop-app-vue/src/renderer/
├── pages/marketplace/
│   ├── PluginMarketplacePage.vue  # 市场主页
│   ├── PluginDetailPage.vue       # 插件详情
│   └── InstalledPluginsPage.vue   # 已安装管理
└── stores/marketplace.ts          # 市场状态管理

.chainlesschain/plugins/
├── marketplace/             # 从市场安装的插件
│   ├── plugin-a/
│   │   ├── manifest.json
│   │   └── skills/
│   └── plugin-b/
└── backups/                 # 更新回滚备份

8. 相关文档


文档版本: 1.0 最后更新: 2026-02-15

ChainlessChain 系统设计文档 — 面向开发者