使用场景 / Use case
我们需要把 Desktop Computer Use 从当前的 Desktop Core 内置能力,迁移为可独立设计、分发和更新的官方 .cindy 插件。
这个 issue 作为长期 tracking issue,持续记录产品设计、架构边界、迁移方案和分阶段落地;不要求一次 PR 完成。
核对基线:2026-08-07,origin/main@9bdc1fa1。
当前问题 / Current limitation
当前真实状态
-
已有“内置插件”配置壳,但不是可分发插件
maker-host/plugins/builtin-plugins.ts 注册了 computer,用于名称、开关和 MCP provider 映射。
- 该体系仍是 Phase 1 metadata:descriptor 的
capabilities.mcps 为空,且 computer 被归类为 machine-wide、默认关闭、从通用「内置工具」列表隐藏。
- 开关状态写在
builtin-tools-settings.json -> builtinTools.computer,不是 .cindy 插件的安装、批准、启用状态。
-
Agent 能力仍由 Core 直接提供
packages/lizi-mcps/src/computer/ 提供 cindy_computer MCP 的 list_tools / call_tool。
apps/desktop/src/main/mcp-integrations/computer.ts 直接承载 CuaDriver 探测、安装、更新、权限、daemon、MCP session、光标、Windows fallback 和错误恢复。
- 每个 Cindy session 会建立独立的 CuaDriver MCP session,并在 session 关闭时清理。
-
产品 UI 与权限流程深度耦合 Desktop
ComputerUseSection.tsx 直接编排安装、更新、macOS 权限预检/引导、轮询、启用和 Codex bridge 刷新。
maker-ipc/channels.ts / register.ts 暴露了整组 Computer Use 专用 IPC。
- macOS 原生权限引导 helper、Electron fallback、System Settings 开关定位与真实 App 拖拽均随 Desktop 打包。
-
能力路由仍把它视为 Host 能力
-
生命周期尚未完全闭环
- 当前有 session 级 cleanup 和
cleanupAllComputerDriverSessions(),但后者未接入应用退出 disposer。
- 仓库中的
cua-driver stop 主要用于 macOS fresh permission probe;“退出 Cindy 时 best-effort 停 daemon、保留用户开关偏好”仍需正式接线与验证。
因此,当前状态更准确地说是:Computer Use 已进入内置工具注册表,但真实产品、运行时和权限仍属于 Desktop Core。
期望方案 / Proposed solution
目标边界
不新增一个泛化的“任意宿主能力”槽。若插件需要调用宿主,应设计 Computer Use 专用、可审计、权限可展示的窄契约。
分阶段计划
M0:设计与迁移契约
M1:收敛 Host runtime
M2:建立官方 .cindy 插件
M3:迁移设置与用户流程
M4:运行状态与跨平台生命周期
M5:能力路由、兼容与清理
M6:验证与发布
验收标准
已考虑的替代方案 / Alternatives considered
-
继续维持当前 builtin plugin metadata
- 只能统一开关,不能获得插件分发、独立更新、权限清单、设置承载和生态边界,不满足目标。
-
把全部能力直接塞进插件 Node Worker
- Node Worker 有用户级本机权限,但 macOS TCC、签名 native helper、Electron 生命周期和跨平台托盘仍需要宿主可信代码;全部下放会让权限边界与发布链更难审计。
-
先做 branded Computer Use.app 再插件化
- 不是一期前置。第一阶段继续沿用真实 CuaDriver;独立 companion、单一品牌 TCC 身份和内置签名 runtime 可作为后续里程碑单独设计。
相关项与重复项核对
已按 Computer Use、computer-use、CuaDriver、cindy_computer、电脑使用 插件 检索现有 Issue/PR,未发现同范围的 Computer Use 插件化 tracking issue。
使用场景 / Use case
我们需要把 Desktop Computer Use 从当前的 Desktop Core 内置能力,迁移为可独立设计、分发和更新的官方
.cindy插件。这个 issue 作为长期 tracking issue,持续记录产品设计、架构边界、迁移方案和分阶段落地;不要求一次 PR 完成。
核对基线:2026-08-07,
origin/main@9bdc1fa1。当前问题 / Current limitation
当前真实状态
已有“内置插件”配置壳,但不是可分发插件
maker-host/plugins/builtin-plugins.ts注册了computer,用于名称、开关和 MCP provider 映射。capabilities.mcps为空,且computer被归类为 machine-wide、默认关闭、从通用「内置工具」列表隐藏。builtin-tools-settings.json -> builtinTools.computer,不是.cindy插件的安装、批准、启用状态。Agent 能力仍由 Core 直接提供
packages/lizi-mcps/src/computer/提供cindy_computerMCP 的list_tools / call_tool。apps/desktop/src/main/mcp-integrations/computer.ts直接承载 CuaDriver 探测、安装、更新、权限、daemon、MCP session、光标、Windows fallback 和错误恢复。产品 UI 与权限流程深度耦合 Desktop
ComputerUseSection.tsx直接编排安装、更新、macOS 权限预检/引导、轮询、启用和 Codex bridge 刷新。maker-ipc/channels.ts/register.ts暴露了整组 Computer Use 专用 IPC。能力路由仍把它视为 Host 能力
replacement: { kind: 'cindy-host', id: 'cindy_computer' }。生命周期尚未完全闭环
cleanupAllComputerDriverSessions(),但后者未接入应用退出 disposer。cua-driver stop主要用于 macOS fresh permission probe;“退出 Cindy 时 best-effort 停 daemon、保留用户开关偏好”仍需正式接线与验证。因此,当前状态更准确地说是:Computer Use 已进入内置工具注册表,但真实产品、运行时和权限仍属于 Desktop Core。
期望方案 / Proposed solution
目标边界
官方 Computer Use 插件负责
Cindy Core 只保留必须由宿主掌握的最小特权原语
不新增一个泛化的“任意宿主能力”槽。若插件需要调用宿主,应设计 Computer Use 专用、可审计、权限可展示的窄契约。
分阶段计划
M0:设计与迁移契约
cindy_computer兼容 adapter。builtinTools.computer;M1:收敛 Host runtime
M2:建立官方
.cindy插件M3:迁移设置与用户流程
ComputerUseSection.tsx的 Core 专用逻辑迁移到插件详情/设置体验。M4:运行状态与跨平台生命周期
M5:能力路由、兼容与清理
@窗口候选、session 生命周期、路径边界和快照代际护栏保持有效。M6:验证与发布
builtinTools.computer状态升级 fixture。验收标准
.cindy插件,而不只是 builtin registry metadata。已考虑的替代方案 / Alternatives considered
继续维持当前 builtin plugin metadata
把全部能力直接塞进插件 Node Worker
先做 branded Computer Use.app 再插件化
相关项与重复项核对
已按
Computer Use、computer-use、CuaDriver、cindy_computer、电脑使用 插件检索现有 Issue/PR,未发现同范围的 Computer Use 插件化 tracking issue。