问题域/PD-123

插件架构

Plugin Architecture

通过接口定义+注册表模式实现可插拔组件系统,支持运行时发现和替换

子问题

1.插件发现与加载

2.接口契约定义

3.插件配置传递

4.多实现切换

5.Web 端 webpack 无法动态 import 的适配

6.插件实例的生命周期管理(无 unregister)

7.跨 slot 插件组合的类型安全保证

各项目的解法1 solutions

Signals

横向对比

维度Agent
插件注册方式slot:name 复合键 Map + manifest 声明 + create 工厂函数
插件分组/权限7 种 PluginSlot 类型枚举,每个 slot 独立接口契约
热更新/缓存register 覆盖式更新,Web 端 globalThis 单例缓存
配置传递create(config?) 工厂参数 + OrchestratorConfig 全局/项目级覆盖
双轨加载CLI 动态 import + Web 静态 import 手动注册,适配 webpack 限制
类型安全PluginModule<T> 泛型 + satisfies 编译期检查 + get<T> 泛型断言

最佳实践

1.每个插件实现单一接口并导出 PluginModule

2.使用 slot:name 键值注册避免冲突

3.用 satisfies PluginModule<T> 在编译期验证插件导出结构

4.loadBuiltins 接受 importFn 参数实现测试时 mock 注入

5.未安装的插件包在 catch 中静默跳过实现按需安装体验