原文链接
https://novusai-saas.github.io/en/en/docs/api-reference/tenant-api/plugin-management-api.md插件管理API
本文引用的源码与文档
目录
简介
本文件面向插件管理API,系统性梳理插件的生命周期、权限与能力模型、API扩展与分发、资源托管与事件订阅、插件市场集成、依赖与安全策略、以及在多租户环境下的沙箱隔离与资源限制。文档同时提供关键流程的序列图与时序图,帮助读者快速理解插件在平台内的运行机制。
项目结构
插件管理相关代码主要分布在以下位置:
- 插件内核与生命周期:backend/app/plugins/*
- 管理端与租户端API:backend/app/api/admin/plugins.py、backend/app/api/tenant/plugins.py
- 应用启动路由注册:backend/app/main.py
图表来源
- backend/app/plugins/base.py
- backend/app/plugins/lifecycle.py
- backend/app/plugins/api_dispatcher.py
- backend/app/plugins/marketplace.py
- backend/app/plugins/security.py
- backend/app/plugins/context.py
- backend/app/api/admin/plugins.py
- backend/app/api/tenant/plugins.py
- backend/app/main.py
章节来源
- backend/app/plugins/base.py
- backend/app/plugins/lifecycle.py
- backend/app/plugins/api_dispatcher.py
- backend/app/plugins/marketplace.py
- backend/app/plugins/security.py
- backend/app/plugins/context.py
- backend/app/api/admin/plugins.py
- backend/app/api/tenant/plugins.py
- backend/app/main.py
核心组件
- 插件基类与生命周期钩子:定义插件生命周期钩子(安 装后、启用、禁用、卸载、升级),作为插件开发者扩展点。
- 生命周期管理器:封装安装、启用、禁用、卸载、依赖安装/卸载、修复、计划任务刷新等操作,内置分布式锁与前置守卫。
- API分发器:统一的插件API入口,按路径与方法匹配插件声明的路由,执行权限校验与能力注入,屏蔽动态路由增删。
- 插件市场客户端:从GitHub索引仓库拉取插件清单、详情、README,下载插件包,支持Redis缓存与重试。
- 安全与依赖白名单:对pip依赖进行白名单校验,限制可安装包范围。
- 沙箱上下文:插件与宿主交互的唯一入口,按能力授权开放有限API(配置、数据库、存储、HTTP、AI、通知、事件等)。
章节来源
- backend/app/plugins/base.py
- backend/app/plugins/lifecycle.py
- backend/app/plugins/api_dispatcher.py
- backend/app/plugins/marketplace.py
- backend/app/plugins/security.py
- backend/app/plugins/context.py
架构总览
插件管理API采用“控制器-服务-内核”的分层设计。管理端与租户端控制器分别提供插件的CRUD、配置、权限、许可、依赖、菜单等管理能力;生命周期管理器负责安装、启用、禁用、卸载等操作;API分发器负责将请求路由到插件注册的处理器;沙箱上下文提供受控的系统能力访问;插件市场客户端负责外部生态集成。
图表来源
- backend/app/api/admin/plugins.py
- backend/app/api/tenant/plugins.py
- backend/app/plugins/lifecycle.py
- backend/app/plugins/api_dispatcher.py
- backend/app/plugins/context.py
- backend/app/plugins/marketplace.py
- backend/app/plugins/security.py
详细组件分析
生命周期管理(安装、启用、禁用、卸载、依赖、修复)
- 分布式锁:对同一插件的并发启用/禁用/卸载进行互斥保护,避免竞态。
- 前置守卫:在关键操作前执行策略检查,阻止不符合条件的操作。
- 依赖管理:支持显式安装/卸载依赖,保证运行时环境一致性。
- 修复与计划刷新:在异常状态下恢复运行,同步任务调度定义。
- 卸载清理:执行14步清理流程,确保数据与依赖彻底移除。
图表来源
章节来源
API扩展与分发(插件路由、权限与能力注入)
- 路由约定:统一前缀/admin/plugins/{name}/api/、/tenant/plugins/{name}/api/、/api/public/plugins/{name}/api/*。
- 路由匹配:基于manifest中声明的admin_routes/tenant_routes/public_routes,支持路径参数提取。
- 权限校验:当路由声明permission时,校验用户是否具备对应动作权限;公开路由仅允许auth=none。
- 能力注入:根据handler签名自动注入request、ctx、db(需db:own_tables能力)。
- 错误映射:将插件返回的错误转换为平台标准错误码与消息。
图表来源
章节来源