Skip to content

Pylon 插件化前后端拓扑全图 ​

状态:当前实现地图 + 明确标注的 Renderer Suite 规划接缝
核验日期:2026-09-26
适用基线:当前 prism-desktop 工作副本;规划施工入口见仓库内工作副本外的渲染引擎施工台账(00-唯一入口台账.md)
阅读纪律:实线节点/边表示当前代码;带 PLANNED 且虚线边框的节点表示尚未实现。不得把规划节点写进“当前已支持”说明。

一张图 ​

mermaid
flowchart TB
  subgraph EXTERNAL[外部输入、代码与进程]
    USERPKG[第三方插件目录<br/>pylon-plugin.json + web entry + styles]
    PLUGINWEB[第三方 Web bundle<br/>可信本机代码]
    PLUGINEXE[插件自带 executable<br/>JSON-RPC / stdio]
    AGENT[Agent subprocess<br/>Hermes / Peri / Claude-compatible]
    ACPWIRE[ACP JSON-RPC<br/>stdio transport]
    USER[Pylon 用户]
    CLI[Pylon CLI / 本机 IPC 客户端]
  end

  subgraph WEB[WebView / TypeScript]
    direction TB

    subgraph BOOT[Kernel 壳与启动组合]
      MAIN[src/main.solid.tsx]
      KROOT[src/kernel/KernelRoot.tsx]
      KBOOT[KernelBootstrap<br/>normal / degraded / safe-mode]
      APPHOSTRT[ApplicationRuntime<br/>mount / unmount / soft-remount]
      RECOVERY[KernelRecoveryLayer]
      COMPOSE[pluginCompositionRoot.ts<br/>唯一组合根]
      BUILTINBOOT[builtinPluginBootstrap.ts]
    end

    subgraph PLUGINHOST[Kernel Plugin Host]
      PRUNTIME[唯一 PluginRuntime]
      PINSTANCE[PluginInstance]
      PSCOPE[PluginScope<br/>registrations/listeners/timers/abort/process]
      PACTX[PluginActivationContext]
      PCONTRACT[PluginContractResolver<br/>dependencies/conflicts/events]
      PUPDATE[PluginContributionTransaction<br/>shadow validate/commit/revert]
      RBATCH[runRegistryBatch<br/>单批通知]
      PKGINSTALL[PackageInstallationService]
      PKGRUNTIME[PackagePluginRuntimeService<br/>dynamic import / styles]
      STYLE[PackageStyleRuntime]
      CAPGRANT[PluginCapabilityGrantStore<br/>host-owned localStorage<br/>version-pinned grants]
      CAPCONSENT[capability 同意流评估<br/>builtin: capability-consent stage<br/>外置: plugin_capability_denied]
      MGMTAPI[PluginManagementApi<br/>capability-gated 管理面<br/>守卫三则 typed errors]
    end

    subgraph REGISTRIES[RuntimeServices:当前 registries 与 host modules]
      APPREG[PluginApplicationHost]
      CMDREG[CommandRegistry]
      HOOKREG[HookRuntime + HookRegistry]
      EVENTBUS[PluginEventBus]
      RENDERREG[RendererRegistry<br/>message/content/tool/highlighter]
      UIREG[PluginUiRegistry]
      SERVREG[PluginServiceRegistry]
      WORKREG[WorkspaceRegistry]
      SIDEREG[AgentSidebarRegistry]
      FILEREG[FileWorkbenchRegistry]
      CTXREG[ContextPanelRegistry]
      PRESREG[PresentationProfileRegistry]
      SETPAGEREG[PluginSettingsPageRegistry]
      SETSTORE[PluginSettingsStore]
      SETOPTREG[PluginSettingOptionsRegistry]
      FONTREG[FontContributionRegistry]
      SESSIONCREG[SessionCreationRegistry]
      IMODEREG[InterfaceModeRegistry]
      SHELLRECIPE[ShellRecipeRegistry]
      TITLEBAR[TitlebarRegistry]
      CCWIDGET[CcWidgetRegistry]
      PRESET[PresetRegistry]
      PROMPTREG[PromptContributionRegistry]
    end

    subgraph PRODUCT[七个第一方 Product Plugin 包 + 可选 Kernel Skin]
      PTOOLS[builtin.pylon-tools<br/>tool-provider]
      PADAPTERS[builtin.pylon-agent-adapters<br/>agent-adapter]
      PRENDERERS[builtin.pylon-renderers<br/>renderer]
      PWORKSPACE[builtin.pylon-workspace<br/>workspace]
      PSHELL[builtin.pylon-shell<br/>shell]
      PMANAGER[builtin.pylon-plugin-manager<br/>feature · api 1.2<br/>capability: plugin.management]
      PGATEWAY[builtin.pylon-gateway<br/>workspace]
      PSKIN[builtin.skin<br/>Kernel skin command plugin]
    end

    subgraph CONSUMERS[Product Shell、UI Host 与 Registry 消费点]
      APP[src/App.solid.tsx<br/>Product Shell composition]
      TITLE[WorkspaceTitlebar]
      SHEETLAYOUT[SheetLayout / Sheet registry host]
      SETTINGS[src/components/Settings.solid.tsx<br/>settings sheet 主区视图]
      PLUGINMGR[PluginManager]
      AGENTSHEET[AgentSheetView]
      SUITEWB[AgentRendererSuiteWorkbench<br/>Renderer Suite 宿主接线]
      ISOLATED[IsolatedPluginSurface<br/>isolated-surface 模式宿主]
      SOLID[SolidWorkbenchApp<br/>builtin.solid suite 实现]
      FILESHEET[FileSheetView]
      SIDEHOST[SheetSidebarSlot]
      CTXHOST[ContextPanelHost]
    end

    subgraph DOMAIN[当前业务/Kernel 前端 modules]
      IDSTORE[identityStore]
      USERREPO[userDataRepository]
      LIFECYCLEWB[agentWorkbenchLifecycle<br/>会话生命周期 IPC 编排]
      CANONFEED[canonicalEventFeed<br/>committed-row 唯一入口]
      LEGACYRUNTIME[runtimeStore / sessionRuntime helpers<br/>会话运行时状态(CLI ports 与 UI 组件消费)]
      ROWPIPE[messagePipeline / chatRowPipeline]
      WORKSESSION[agentWorkbenchSession<br/>Workbench 会话运行时 + TurnClock]
      WORKRUNTIME[WorkbenchRuntime<br/>当前 Message/Plan snapshot]
      WORKCOMMAND[WorkbenchCommandFacade]
      APPEARANCE[WorkbenchAppearanceStore]
      SESSIONUI[SessionUiStore]
      CANONREPO[CanonicalEventRepository / Cursor]
      GAP[CanonicalEventCursor<br/>per-owner cursor / gap 回填]
      TOOLCAT[Agent Catalog / Tool Registry]
      WORKPORTS[AgentInstanceSink / ToolDictionarySink]
    end

    subgraph INFRA[WebView infrastructure adapters]
      ACPCLIENTS[Typed ACP clients<br/>agent/session/chat/runtime]
      TAURICLIENTS[Tauri clients<br/>workspace/gateway/browser]
      PKGCLIENT[PluginPackageClient]
      PROCCLIENT[PluginProcessClient]
      TAURIEVENTS[Tauri event listeners<br/>pylon:user 兜底广播 / session-recreated / 诊断]
      CLIBRIDGE[Pylon CLI bridge]
    end

    subgraph RENDERSUITE[Renderer Suite 宿主(当前实现)]
      RSUITE[plugin-runtime/renderers/rendererSuiteTypes.ts<br/>RendererSuiteContribution]
      RSLOT[rendererSuiteTypes.ts<br/>RendererSlotContribution targetSuites/kinds/surface]
      RKIND[plugin-runtime/renderers/rendererTypes.ts<br/>RenderKindDefinition]
      ACTRES[plugin-runtime/renderers/rendererActivationResolver.ts<br/>activation snapshot 解析]
      ACTSNAP[rendererSuiteTypes.ts<br/>RendererActivationSnapshot immutable]
      CROSSVAL[plugin-runtime/renderers/rendererSuiteValidation.ts<br/>candidate contribution graph 校验]
      SUITEHOST[src/host/renderer-suite/rendererSuiteHost.ts<br/>prepare / stage / atomic switch / fallback]
      HOSTPORT[renderers/solid-workbench/workbenchContracts.ts<br/>WorkbenchHostPort / WorkbenchMountInput]
      SOLIDSUITE[renderers/solid-workbench/builtinSolidRendererSuite.ts<br/>suiteId builtin.solid]
      WORKDOC[domains/workbench/workbenchProjector.ts<br/>WorkbenchDocument 单一投影输出]
      SETSCHEMA[plugin-runtime/renderers/rendererSettingsTypes.ts<br/>+ components/settings/rendererSettingsCatalog.ts]
      SETPANEL[components/settings/RendererSettingsPanel.tsx]
      SUITEPREF[presentationPreferenceStore<br/>rendererSuiteIdByMode]
    end

    subgraph PLANNED[Renderer 深化中尚未实现的接缝]
      THIRDSUITE[PLANNED installable third-party Solid Suite]
    end
  end

  subgraph IPC[Tauri IPC / event seam]
    INVOKE["@tauri invoke commands"]
    EMIT[Tauri Window events]
    PLUGINPROTO[pylon-plugin:// custom URI protocol]
  end

  subgraph RUST[Rust / Tauri Kernel]
    direction TB
    BUILDER[src-tauri/src/lib.rs<br/>Tauri Builder + setup readiness]
    APPSTATE[AppState<br/>runtime/persistence/plugin/process/gateway/workspace slots]
    DATADIRS[DataDirs OnceLock<br/>single path authority]

    subgraph AGENTKERNEL[Agent、ACP 与 Session Kernel]
      LIFECYCLE[lifecycle/mod.rs<br/>connect/switch/reconnect/config]
      ARMANAGER[AgentRuntimeManager<br/>per-agent generations]
      ACP[pylon-acp crate<br/>engine/process/replay/client<br/>+ acp/instance_registry 宿主适配]
      DISPATCH[dispatcher/*<br/>normalize/ingest/project runtime]
      SESSION[session/*<br/>create/prompt/load/control/owner]
      AGENTCFG[agent_config + agent_detection + catalog]
      PERMISSION[permission.rs<br/>approval/interaction]
    end

    subgraph PERSIST[Kernel persistence]
      PBOOT[PersistenceServices::open<br/>readiness barrier]
      EVENTSRV[EventService<br/>canonical_events]
      MSGSRV[MessageService<br/>legacy/forensic/session rows]
      USERSRV[UserDataService<br/>profile/session metadata]
      RETENTION[retention / tombstone / migrations]
    end

    subgraph NATIVEPLUGIN[Native plugin package/process modules]
      PLUGINCMD[plugin_cmds/<br/>inspect/stage/commit/rollback/uninstall/resource]
      PKGSTATE[package state + transaction journal]
      PROCSUP[PluginProcessSupervisor]
      PROCJSON[plugin process JSON-RPC pending/log/restart]
    end

    subgraph OTHERKERNEL[其他 Kernel adapters]
      WORKSPACE[workspaces/mod+cmds/git]
      GATEWAY[gateway/mod+cmds GatewayCore/instances/credentials]
      BROWSER[browser/mod+cmds BrowserManager]
      RUNTIMELOG[runtime_log/mod+cmds]
      PYLONCLI[pylon_cli.rs]
      PRISM[prism / pet / mcp adapters]
    end

    subgraph RUSTCRATES[Rust workspace crates:零 tauri 纯逻辑]
      PYLONACP[pylon-acp<br/>engine/process/replay/protocol/wire trace]
      PYLONSESSION[pylon-session<br/>event_repo/msg_repo/turn_rollup<br/>retention/user_data/persistence_bootstrap]
      PYLONCORE[pylon-core<br/>catalog/detection/diagnostics/launch plan]
      PYLONMISC[pylon-foundations / canonical-types<br/>compute / markdown / pet-core]
    end
  end

  subgraph STORAGE[持久化与受控文件]
    SQLITE[(pylon-data-v1.sqlite3<br/>canonical_events / user_data / sessions + session_state<br/>session_state_snapshots / deleted_sessions tombstone / retention_policy)]
    AGENTSYAML[(agents.yaml / MCP config)]
    PKGFILES[(plugin packages/data/runtime/transactions/state.json)]
    GATEWAYFILES[(gateway/workspace/pet/credentials files)]
  end

  %% Bootstrap and single runtime
  %% Rust workspace crates:宿主模块的实体所在(#247/#106 下沉,宿主路径保留 re-export)
  ACP --> PYLONACP
  SESSION --> PYLONSESSION
  PBOOT --> PYLONSESSION
  AGENTCFG --> PYLONCORE
  MAIN --> KROOT --> KBOOT
  KBOOT --> RECOVERY
  KBOOT --> COMPOSE --> BUILTINBOOT --> PRUNTIME
  KBOOT --> APPHOSTRT
  APPHOSTRT --> APPREG
  PRUNTIME --> PINSTANCE --> PSCOPE
  PRUNTIME --> PACTX
  PRUNTIME --> PCONTRACT
  PRUNTIME --> PUPDATE --> RBATCH
  PACTX --> REGISTRIES
  PUPDATE --> REGISTRIES
  %% P53 capability 模型:声明 ∧ 授权 ⇔ management 装配(C3 门控)
  PACTX -->|声明且已授权才装配| MGMTAPI
  MGMTAPI --> CAPGRANT
  BUILTINBOOT --> CAPCONSENT
  PKGINSTALL --> CAPCONSENT
  CAPCONSENT --> CAPGRANT

  %% Product package dependency graph(箭头 = 依赖方 --> 被依赖方,与图例同向;
  %% 真值:src/plugins/product/packages/*/pylon-plugin.json 的 dependencies)
  PSHELL --> PTOOLS
  PSHELL --> PADAPTERS
  PSHELL --> PRENDERERS
  PSHELL --> PWORKSPACE
  PADAPTERS --> PTOOLS
  COMPOSE --> PTOOLS
  COMPOSE --> PADAPTERS
  COMPOSE --> PRENDERERS
  COMPOSE --> PWORKSPACE
  COMPOSE --> PSHELL
  COMPOSE --> PMANAGER
  COMPOSE --> PGATEWAY
  COMPOSE --> PSKIN
  PSHELL -->|register application/commands/styles| APPREG
  PSHELL --> CMDREG
  APPREG --> APPHOSTRT --> APP
  PTOOLS -->|commands| CMDREG
  PTOOLS -->|ToolDictionarySink| SERVREG
  PADAPTERS -->|AgentInstance/SessionState/Detector services| SERVREG
  PADAPTERS --> SESSIONCREG
  PRENDERERS --> RENDERREG
  PRENDERERS --> PRESREG
  PRENDERERS --> IMODEREG
  PRENDERERS --> FONTREG
  PRENDERERS --> CMDREG
  PWORKSPACE --> WORKREG
  PWORKSPACE --> SIDEREG
  PWORKSPACE --> FILEREG
  PWORKSPACE --> CTXREG
  PWORKSPACE --> SERVREG
  PWORKSPACE --> CMDREG
  PGATEWAY --> WORKREG
  PSKIN --> CMDREG
  PMANAGER -->|registerPage 增强面板| SETPAGEREG
  PMANAGER -->|context.management 只读+管理操作| MGMTAPI

  %% Current UI consumers
  APP --> TITLE
  APP --> SHEETLAYOUT
  SHEETLAYOUT --> SETTINGS
  APP --> IDSTORE
  APP --> IMODEREG
  TITLE --> IMODEREG
  SETTINGS --> PRESREG
  SETTINGS --> IMODEREG
  SETTINGS --> SETPAGEREG
  SETTINGS --> SETSTORE
  SETTINGS --> SETOPTREG
  SETTINGS --> PLUGINMGR
  PLUGINMGR --> PKGINSTALL
  PLUGINMGR -->|授权卡 grant/revoke| CAPGRANT
  SHEETLAYOUT --> WORKREG
  SHEETLAYOUT --> AGENTSHEET
  SHEETLAYOUT --> SIDEHOST --> SIDEREG
  SHEETLAYOUT --> CTXHOST --> CTXREG
  AGENTSHEET --> IMODEREG
  AGENTSHEET --> SUITEWB --> SUITEHOST
  SUITEWB --> WORKSESSION
  SUITEWB --> LIFECYCLEWB
  AGENTSHEET -->|renderKind=isolated-surface| ISOLATED --> UIREG
  SOLID -->|snapshot ids only| RENDERREG
  SOLID -->|direct imports| WORKRUNTIME
  FILESHEET --> FILEREG
  FILESHEET --> UIREG

  %% Current domain/data flow
  IDSTORE --> USERREPO --> ACPCLIENTS
  LIFECYCLEWB --> ACPCLIENTS
  LIFECYCLEWB --> CANONFEED
  LIFECYCLEWB --> LEGACYRUNTIME
  CANONFEED --> GAP --> CANONREPO
  CANONFEED -->|publishPluginEvent durable-before-project| EVENTBUS
  EVENTBUS --> WORKSESSION
  WORKSESSION --> WORKRUNTIME
  SOLID -->|buildChatRowDescriptors| ROWPIPE
  SOLID -->|messageListPort items| ROWPIPE
  WORKRUNTIME --> WORKCOMMAND
  WORKRUNTIME --> APPEARANCE
  WORKRUNTIME --> SESSIONUI
  WORKPORTS --> SERVREG
  WORKPORTS --> TOOLCAT
  APP --> WORKPORTS
  CANONREPO --> INVOKE
  ACPCLIENTS --> INVOKE
  TAURICLIENTS --> INVOKE
  TAURIEVENTS --> CANONFEED
  CLIBRIDGE --> INVOKE

  %% External package installation and native process chain
  USER --> PLUGINMGR
  USERPKG --> PKGINSTALL --> PKGRUNTIME
  PKGINSTALL --> PKGCLIENT --> INVOKE
  PKGRUNTIME --> PKGCLIENT
  PKGRUNTIME --> PLUGINPROTO --> PLUGINCMD
  PKGRUNTIME --> STYLE
  PKGRUNTIME --> PLUGINWEB --> PRUNTIME
  PACTX --> PROCCLIENT --> INVOKE

  %% Tauri command/event/root
  INVOKE --> BUILDER --> APPSTATE
  BUILDER --> DATADIRS
  APPSTATE --> LIFECYCLE
  APPSTATE --> ARMANAGER
  APPSTATE --> SESSION
  APPSTATE --> PERSIST
  APPSTATE --> PROCSUP
  APPSTATE --> OTHERKERNEL
  LIFECYCLE --> ARMANAGER --> ACP --> ACPWIRE --> AGENT
  AGENT --> ACPWIRE --> ACP
  ACP --> DISPATCH
  SESSION --> ACP
  SESSION --> PERMISSION
  AGENTCFG --> LIFECYCLE
  DISPATCH ==> EVENTSRV
  DISPATCH --> EMIT --> TAURIEVENTS
  SESSION ==> EVENTSRV
  SESSION ==> MSGSRV
  LIFECYCLE ==> USERSRV
  PBOOT --> EVENTSRV
  PBOOT --> MSGSRV
  PBOOT --> USERSRV
  EVENTSRV ==> SQLITE
  MSGSRV ==> SQLITE
  USERSRV ==> SQLITE
  RETENTION ==> SQLITE
  DATADIRS --> PBOOT
  DATADIRS --> PLUGINCMD
  DATADIRS --> OTHERKERNEL
  AGENTCFG ==> AGENTSYAML
  PLUGINCMD ==> PKGSTATE ==> PKGFILES
  PLUGINCMD --> PLUGINPROTO
  PROCSUP --> PROCJSON --> PLUGINEXE
  PROCSUP ==> PKGFILES
  WORKSPACE ==> GATEWAYFILES
  GATEWAY ==> GATEWAYFILES
  PRISM ==> GATEWAYFILES
  CLI --> PYLONCLI --> EMIT

  %% Renderer Suite 接缝(原 PLANNED A11–A17 已落地:实线为当前实现)
  RENDERREG --> RKIND
  RENDERREG --> RSUITE
  RENDERREG --> RSLOT
  PUPDATE --> CROSSVAL
  RKIND --> CROSSVAL
  RSUITE --> CROSSVAL
  RSLOT --> CROSSVAL
  SETOPTREG --> CROSSVAL
  PRESREG --> CROSSVAL
  IMODEREG --> CROSSVAL
  RKIND --> ACTRES
  RSUITE --> ACTRES
  RSLOT --> ACTRES
  IMODEREG --> SUITEPREF
  SUITEPREF --> ACTRES
  ACTRES --> ACTSNAP --> SUITEHOST
  WORKRUNTIME --> WORKDOC --> HOSTPORT
  WORKCOMMAND --> HOSTPORT
  APPEARANCE --> HOSTPORT
  SESSIONUI --> HOSTPORT
  HOSTPORT --> SUITEHOST
  SUITEHOST --> SOLIDSUITE
  SUITEHOST -. mount candidate .-> THIRDSUITE
  SOLIDSUITE --> RSLOT
  THIRDSUITE -. node rendering .-> RSLOT
  RSUITE --> SETSCHEMA
  RSLOT --> SETSCHEMA
  RKIND --> SETSCHEMA
  SETSCHEMA --> SETPANEL
  SETPANEL --> SETSTORE
  SETTINGS --> SETPANEL
  PKGRUNTIME -. installed adapter .-> THIRDSUITE

  classDef planned fill:#eef7ff,stroke:#3b82f6,stroke-width:1px,stroke-dasharray:6 4,color:#111827;
  class THIRDSUITE planned;

图例与最重要结论 ​

  • 普通实线:当前直接依赖、调用或宿主消费。
  • 带文字的实线:当前 contribution registration、adapter 或 package lifecycle。
  • 粗箭头:当前 durable 写入或关键数据流。
  • 蓝色虚线框且名称带 PLANNED:尚未进入生产代码的接缝(当前仅剩第三方可安装 Suite 一项;原 A11–A17 规划已落地为实线;React minimal fatal fallback 规划已取消,Suite 宿主的 fatal 分支由纯错误横幅承接)。
  • Rust 后端没有第二套 Web Plugin Runtime:它负责包事务、资源协议和插件子进程;WebView 中唯一 PluginRuntime 负责加载 entry、生命周期和 contributions。
  • Kernel journal/projector 永远位于 Renderer Suite 之前;Suite 只替换表现与交互 adapter,不能成为第二业务状态源。

关键源码锚点 ​

区域入口
Kernel 启动src/main.solid.tsx → src/kernel/KernelRoot.solid.tsx → kernelBootstrapServices.ts(#515 前端全量 Solid 化:React 挂载点退役)
唯一 Plugin Runtimesrc/plugin-runtime/pluginCompositionRoot.ts、pluginRuntime.ts、pluginActivationContext.ts
原子 contribution 更新src/plugin-runtime/shadowUpdate.ts、registry/reactiveRegistry.ts、registry/registryBatch.ts
Registriessrc/plugin-runtime/runtimeServices.ts、pluginHostServices.ts
七个 Product Plugin(P77 起含 builtin.pylon-gateway)src/plugins/product/builtinProductPlugins.ts、src/plugins/product/packages/*/pylon-plugin.json、src/plugins/product/builtinPylon*.ts
当前 Renderer/完整 Workbench 原型src/plugin-runtime/renderers/*、interface-mode/*、ui/*、src/sheets/AgentSheetView.tsx
当前 Solidsrc/renderers/solid-workbench/*
canonical 事件入口与 Workbench 会话src/infrastructure/events/canonicalEventFeed.ts、canonicalEventCursor.ts、src/application/agent-workbench/agentWorkbenchSession.ts、agentWorkbenchLifecycle.ts(#486 项1 自 sheets/ 归位)
外部包 Web 链packageInstallationService.ts → packagePluginRuntime.ts → src/infrastructure/plugins/pluginPackageClient.ts
Rust package/processsrc-tauri/src/plugin_cmds/、src-tauri/src/plugin_process/mod.rs
Rust Kernel / IPCsrc-tauri/src/lib.rs、lifecycle/*、dispatcher/*、session/*(编排层);协议引擎核在 src-tauri/pylon-acp、存储核在 src-tauri/pylon-session
唯一持久化事实src-tauri/pylon-session/src/event_repo/、src-tauri/pylon-session/src/persistence_bootstrap.rs(宿主 crate::session:: 保留兼容 re-export)、src/infrastructure/events/*

维护规则 ​

  1. 增删 Plugin Host registry、Product Plugin、Tauri plugin command 或 Renderer Suite 接缝时,同一提交更新本图。
  2. 原 A11–A17 规划(Renderer Suite 宿主接缝)已落地为实线节点;后续新增同类接缝时,完成一项就把 PLANNED 节点改为真实文件名和实线边,不得只改文字状态。
  3. 若发现图中两个以上当前实线关系与源码不符,触发一次局部架构复核;不要继续在错误图上叠加节点。
  4. 施工状态仍只写外部唯一入口台账;本图不复制 WI 状态。
  5. 修改 Mermaid 后必须用真实 Mermaid parser/renderer 渲染一次;围栏、节点计数等文本检查不能替代语法检查。含 @ 等 Mermaid 特殊 token 的节点标签必须使用双引号包裹。

基于 Agent Client Protocol(ACP)构建