复杂度与价值评估
评估时间:Phase 0 实施完成后(2026-05-03)
评估范围:已实施的 Phase 0 + 远景 Phase 1~5
一、Phase 0 已投入的复杂度
1.1 新增代码量
| 文件 |
行数 |
职责 |
internal/plugin/plugin.go |
~150 |
核心接口与类型定义 |
internal/plugin/adapter.go |
~48 |
CoreServices 适配器 |
internal/plugin/tab_registry.go |
~98 |
Tab 注册表(线程安全) |
internal/plugin/preview_registry.go |
~80 |
预览注册表(线程安全) |
internal/plugin/manager.go |
~196 |
插件管理器(生命周期) |
frontend/src/plugin/types.ts |
~70 |
TS 类型定义 |
frontend/src/plugin/registry.ts |
~112 |
前端注册中心(Vue reactive) |
app.go 改动 |
~40 |
集成 PluginManager + 2 个绑定方法 |
| 合计 |
~794 |
|
1.2 架构复杂度增量
| 维度 |
具体表现 |
严重程度 |
已解决方式 |
| Wails v3 方法泄露 |
App struct 上所有导出方法自动暴露给前端 |
高 |
adapter 模式隔离,CoreServices 独立实现(ADR-001) |
| Vue 3 响应式陷阱 |
Map/Set 在 reactive() 内不触发更新 |
中 |
使用 Record<string, T> 替代 Map(已踩坑记录) |
| 并发安全 |
Manager 多处读写共享状态 |
中 |
全量 RWMutex 保护 + copy-then-iterate 模式 |
| 两阶段回滚 |
Register 时 Tab 成功但 Preview 失败需清理 |
低 |
tabRegistered 标志位 + Unregister() 回滚 |
| 前后端类型桥接 |
Go struct → map[string]interface{} → TS |
低 |
json.Marshal round-trip 统一处理 |
1.3 运行时开销
| 开销项 |
数值 |
说明 |
| 启动时内存 |
~0(仅创建 Manager 和空 Registry) |
Phase 0 不注册任何插件 |
| 锁竞争 |
无(Phase 0 无并发注册场景) |
为后续并发预留 |
| 方法调用链路 |
App → pluginMgr → Registry |
多一层间接调用,可忽略 |
二、Phase 0 获得的价值
2.1 直接收益
| 收益点 |
说明 |
对应痛点 |
| 扩展骨架就绪 |
注册表、管理器、适配器全部可用 |
app.go God Object |
| 新功能零侵入 |
未来新增预览格式 / Tab 页无需改 App.vue |
硬编码映射、v-if 链 |
| 懒启动支持 |
Tab 插件按 Start() 按需激活 |
安装包膨胀、启动慢 |
| 优先级调度 |
预览处理器按 priority 排序匹配 |
无法控制预览顺序 |
| 内置/外置统一接口 |
同一套 Plugin 接口服务两类插件 |
两套逻辑 |
| 失败自动清理 |
Register 部分失败时回滚已注册资源 |
残留脏状态 |
2.2 战略价值
| 价值维度 |
说明 |
| 可演进性 |
从单体应用平滑过渡到平台型应用,每步可独立验证 |
| 文档资产 |
完整设计文档 + ADR + 接口定义 + 数据模型,新人可快速接手 |
| 技术债务清零 |
解决了 app.go 35+ 方法的 God Object 问题根源(不再往 App 加方法) |
| 市场基础 |
Phase 0 的接口体系直接支撑 Phase 4~5 的外部插件和插件市场 |
三、远期复杂度预警(Phase 3~5)
| Phase |
主要复杂度来源 |
风险等级 |
缓解策略 |
| Phase 3 UI Slot 动态注入 |
9 个插槽的组件动态加载、生命周期协调、布局冲突 |
中 |
先做 2~3 个核心插槽验证,不全量铺开 |
| Phase 4 外部插件加载 |
.uplugin 包解析、沙箱隔离、版本兼容、签名校验 |
高 |
参考 VS Code Extension Host 架构,独立进程运行 |
| Phase 5 插件市场 |
服务端 API、审核流程、支付、权限管理 |
极高 |
作为独立项目推进,不影响桌面端主迭代 |
四、总体评价
结论:Phase 0 是一次高 ROI 的基础设施投资。真正的复杂度在 Phase 4(外部插件),但那是独立里程碑,可以单独做 go/no-go 决策。当前阶段建议继续推进 Phase 1(Draw.io 验证插件),用真实插件验证骨架的完整性。