同一插件包双宿主对照:企业云端 Work (enterprise_agent) vs 本地工作台 (local_workbench)

同一插件包双宿主对照:企业云端 Work (enterprise_agent) vs 本地工作台 (local_workbench) 由 Archify 生成的时序图。 云端轨:listProjections 广告 → C0 冻结 pluginToolsDigest 本地轨:createLocalPluginProvider 装配本地工具与 executionDigest 单次 SSE 模型网关 (admitCredits 按 llmCallId 记账,不建云端 AgentRun) 云端派发:settle(stepId, interactionId) → invokeForRequest 云端账本:schemaVersion: 1,写 stepId.json + diagnostic-index 本地派发:SQLite COMMIT ack 后调 host.executeLocal(request) 本地账本:schemaVersion: 2,写 hash('local:' + executionId).json 同一 MCP stdio 协议调 Worker (Authorize + Lease + 条件产物核对) 本地视图闭环:LocalPluginTaskInteractions 持久化交互并触发下一轮 Main 重启恢复:reconcileInterruptedPluginCalls 核对账本,不盲目重跑 Run 阶段 1: 对话创建即固定 Owner (enterprise_agent vs local_workbench,严禁运行中跨轨) 阶段 2: 共用 PluginHost 与 Worker,PluginCallJournal 双键空间物理隔离 阶段 3: 原生视图交互闭环与进程重启恢复边界 (reconcileInterruptedPluginCalls) 企业云端 Work · enterprise_agent · PG · 时序参与者 企业云端 Work enterprise_agent · PG 本地工作台 Loop · local_workbench · SQLite · 时序参与者 本地工作台 Loop local_workbench · SQLite Desktop PluginHost · invokeForRequest / executeLocal · 时序参与者 Desktop PluginHost invokeForRequest / executeLocal PluginCallJournal · schemaVersion 1 | 2 · 时序参与者 PluginCallJournal schemaVersion 1 | 2 不可变 Plugin Worker · Python / Node stdio · 时序参与者 不可变 Plugin Worker Python / Node stdio 图例 请求 返回 安全 异步追踪

双 Owner 契约 (plugin-local-execution.ts)

  • • enterprise_agent 与 local_workbench 在对话创建时固定,计算唯一 pluginLocalExecutionDigest
  • • 不可变 Bundle 对宿主轨无感知,由 Desktop PluginHost 统一管理进程池、Lease 与权限

PluginCallJournal 双键空间隔离

  • • 云端轨使用 schemaVersion: 1(绑定 interactionId,维护 diagnostic-index 指针)
  • • 本地轨使用 schemaVersion: 2(以 hash('local:' + executionId) 命名账本文件),两轨互不串扰

视图闭环与重启恢复对照

  • • 云端视图动作走 InteractionKernel.settle 与服务端 7 表 Join 唤醒
  • • 本地视图动作走 LocalPluginTaskInteractions + SQLite COMMIT;重启经 reconcileInterruptedPluginCalls 只恢复事实不续跑