Phase 98 — 统一应用运行时系统设计
版本: v5.0.0 创建日期: 2026-03-10 状态: ✅ 已实现
一、模块概述
Phase 98 构建统一应用运行时(Universal Runtime),提供跨平台插件管理、热更新、性能分析(Flame Graph)、CRDT状态同步、平台信息采集和健康检查能力,为上层应用和插件生态提供标准化的运行环境。
1.1 核心目标
- 插件管理: 统一的插件加载/卸载/版本管理,支持沙箱隔离运行
- 热更新: 运行时模块热替换,无需重启即可升级插件和核心模块
- 性能分析: 内置Flame Graph性能剖析器,定位CPU/内存瓶颈
- 状态同步: 基于CRDT的分布式状态同步,支持多设备/多实例一致性
- 平台信息: 标准化的平台能力探测(OS、硬件、运行时版本、可用资源)
- 健康检查: 运行时自检和指标采集,支持异常自愈
1.2 技术架构
┌──────────────────────────────────────────────────────┐
│ Universal Runtime v5.0 │
│ │
│ ┌─────────────────────┐ ┌────────────────────────┐ │
│ │ PluginManager │ │ HotUpdateEngine │ │
│ │ 加载/卸载/沙箱隔离 │ │ 模块热替换+版本回滚 │ │
│ │ 依赖解析+生命周期 │ │ 差量更新+完整性校验 │ │
│ └─────────────────────┘ └────────────────────────┘ │
│ ┌─────────────────────┐ ┌────────────────────────┐ │
│ │ FlameGraphProfiler │ │ CRDTStateSync │ │
│ │ CPU/内存采样 │ │ Yjs CRDT引擎 │ │
│ │ 调用栈聚合+可视化 │ │ 多设备状态合并 │ │
│ └─────────────────────┘ └────────────────────────┘ │
│ ┌─────────────────────┐ ┌────────────────────────┐ │
│ │ PlatformDetector │ │ HealthChecker │ │
│ │ OS/硬件/资源探测 │ │ 自检+指标+自愈 │ │
│ └─────────────────────┘ └────────────────────────┘ │
│ ┌──────────────────────────────────────────────────┐│
│ │ RuntimeIPC (8 handlers) ││
│ └──────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────────┘二、核心模块设计
2.1 UniversalRuntime (runtime/universal-runtime.js)
统一应用运行时核心模块,整合插件管理、热更新、性能分析和状态同步。
核心方法:
initialize(deps)— 初始化运行时,加载已注册插件,启动健康检查定时器loadPlugin({ pluginId, version, config })— 加载插件(依赖解析、沙箱创建、生命周期启动)unloadPlugin(pluginId)— 安全卸载插件(保存状态、释放资源、清理沙箱)hotUpdate({ moduleId, newVersion, patchData })— 模块热替换(差量更新、完整性校验、回滚机制)profile({ duration, sampleRate, includeMemory })— 启动性能剖析(返回Flame Graph数据)syncState({ targetDeviceId, stateKey })— CRDT状态同步(Yjs文档合并)getPlatformInfo()— 获取平台信息(OS、CPU、内存、GPU、Electron版本、Node版本)configure(options)— 更新运行时配置(插件目录、沙箱策略、采样率等)healthCheck()— 执行全面自检(内存、CPU、插件状态、连接状态)getMetrics()— 获取运行时指标(uptime、插件数、内存使用、请求统计)destroy()— 销毁运行时(卸载所有插件、停止定时器、释放资源)
常量:
PLUGIN_STATUS: LOADING, ACTIVE, SUSPENDED, ERROR, UNLOADEDUPDATE_TYPE: PATCH, MINOR, MAJOR, ROLLBACKHEALTH_STATUS: HEALTHY, DEGRADED, CRITICAL
2.2 核心文件
| 文件路径 | 说明 |
|---|---|
src/main/runtime/universal-runtime.js | 运行时核心模块 |
src/main/runtime/runtime-ipc.js | IPC Handler注册 |
三、IPC接口设计
RuntimeIPC (8 handlers)
| 通道 | 说明 |
|---|---|
runtime:load-plugin | 加载插件(依赖解析+沙箱隔离) |
runtime:hot-update | 模块热替换(差量更新+回滚) |
runtime:profile | 启动性能剖析(Flame Graph) |
runtime:sync-state | CRDT状态同步 |
runtime:get-platform-info | 获取平台信息 |
runtime:configure | 更新运行时配置 |
runtime:health-check | 执行运行时自检 |
runtime:get-metrics | 获取运行时指标 |
四、测试覆盖
| 测试文件 | 测试数量 | 状态 |
|---|---|---|
src/main/runtime/__tests__/universal-runtime.test.js | 22 | ✅ 通过 |
| 合计 | 22 | ✅ 全部通过 |
测试要点
- 插件加载/卸载生命周期完整性验证
- 热更新差量应用和完整性校验
- 热更新失败时的自动回滚机制
- Flame Graph性能采样数据结构正确性
- CRDT状态合并冲突解决(多设备并发写入)
- 平台信息探测在不同OS上的兼容性
- 健康检查异常阈值触发和自愈逻辑
- 运行时指标累计统计准确性
五、前端集成
Pinia Store
universalRuntime.ts— 插件列表、运行时指标、平台信息、健康状态
Vue Pages
RuntimeDashboardPage.vue— 运行时仪表板/插件管理/Flame Graph可视化/状态同步
Routes
/runtime— 统一运行时管理
六、配置选项
javascript
universalRuntime: {
enabled: true,
pluginDir: 'plugins/',
sandboxEnabled: true,
hotUpdateEnabled: true,
profileSampleRate: 1000, // 采样率(Hz)
crdtSyncIntervalMs: 5000, // CRDT同步间隔(ms)
healthCheckIntervalMs: 30000, // 健康检查间隔(ms)
maxPlugins: 100, // 最大插件数
memoryLimitMb: 512, // 插件内存限制(MB)
}七、Context Engineering
- step 5.1:
setUniversalRuntime()— 注入统一运行时上下文(插件列表、平台能力、健康状态)
