Files
LanMountainDesktop/.trae/specs/plugin-process-isolation/spec.md

1.5 KiB
Raw Blame History

Plugin Process Isolation

Why

现有插件体系仍是“同进程 + AssemblyLoadContext 隔离”,无法阻止插件 fatal crash 拖垮 Host也无法阻止插件直接访问 Host 进程内对象和内存。

What Changes

  • 增加插件运行模式概念:in-procisolated-backgroundisolated-window
  • 一期落地 isolated-background
  • 新建独立 IPC 契约包和 IPC 封装包
  • PluginSdk 中新增 Worker 入口与 runtime.mode
  • 明确隔离模式下不再兼容对象实例共享型 API
  • 新增正式架构文档说明 UI 方案、迁移策略、残余风险和 ClassIsland 借鉴

Impact

  • LanMountainDesktop.PluginSdk/
  • LanMountainDesktop.PluginTemplate/
  • 新增 LanMountainDesktop.PluginIsolation.Contracts/
  • 新增 LanMountainDesktop.PluginIsolation.Ipc/
  • docs/ARCHITECTURE.md
  • docs/PLUGIN_PROCESS_ISOLATION_ARCHITECTURE.md

Requirements

Requirement 1

宿主必须同时支持存量 in-proc 插件与未来的隔离插件,不得以本次改造打断旧插件加载。

Requirement 2

隔离插件的 Host/Worker 通信必须基于显式 IPC 路由和 DTO而不是 Host 服务对象实例共享。

Requirement 3

一期必须把后台逻辑隔离为独立 Worker 进程,并显式记录 Host UI 壳层的残余风险。

Requirement 4

仓库文档必须把 ClassIsland IPC 的借鉴点和不照搬的部分写清楚,避免后续实现阶段误把插件协议做成远程对象模型。