EduOpenAI Core 文档/插件架构
插件架构
瘦内核 + 胖插件,上游升级零侵入
EduOpenAI 遵循「瘦内核 + 胖插件」原则:主框架仅提供运行时容器和基础 API,所有业务功能通过插件(plugins/edu-*)实现。插件零侵入主框架代码,确保主系统(OpenMAIC 基线)可独立升级。
分层模型
升级安全分层
┌─────────────────────────────────────────────────┐
│ 上游 OpenMAIC 基线(app/ components/ lib/ 等) │ ← 升级被覆盖,PATCH 是唯一侵入点
├─────────────────────────────────────────────────┤
│ 品牌覆盖层(site_settings / env / 覆盖文件) │ ← 配置驱动,非代码修改
├─────────────────────────────────────────────────┤
│ lib/plugin/ PluginAPI 桥接层(8 模块) │ ← 升级安全区
├─────────────────────────────────────────────────┤
│ plugins/edu-* 业务插件 │ ← 升级安全区
├─────────────────────────────────────────────────┤
│ app/api/edu/[...slug]/route.ts Catch-All 路由 │ ← 唯一基线挂载点,接口稳定
└─────────────────────────────────────────────────┘功能实现优先级
| 优先级 | 实现方式 | 侵入性 | 适用场景 |
|---|---|---|---|
| P0 | 插件(plugins/edu-xxx/) | 不侵入 | 所有业务功能:API、UI、数据模型、迁移 |
| P1 | 扩展点注册(ExtensionPoints) | 不侵入 | 向基线注入行为(导航项、设置 Tab、首页模块) |
| P2 | 配置覆盖(site_settings / env) | 不侵入 | 品牌文字、功能开关、默认值 |
| P3 | PATCH 基线修改 | 侵入 | 仅限 P0-P2 无法实现场景(需 CTO 审批 + 登记 patch-registry) |
升级安全区
| 目录 | 说明 | 升级冲突风险 |
|---|---|---|
| plugins/edu-*/ | 业务插件(manifest/api/components/migrations) | 零冲突(上游不触碰) |
| lib/plugin/ | PluginAPI 桥接层(registry/extension-points/event-bus/api-router 等 8 模块) | 零冲突(上游不触碰) |
| app/api/edu/[...slug]/route.ts | Catch-All 插件 API 挂载点 | 低(接口稳定) |
注意
红线:禁止在基线新增 API 端点/数据库表/UI 页面/业务逻辑;基线 PATCH 仅限白名单并登记 patch-registry.md(PATCH 编号连续登记)。
