环境 · Environment
ZCode 桌面版 3.14.3 (3.14.3.7762),macOS(Apple Silicon)
插件:computer-use 0.6.3 、node-repl-host 0.6.0
cua-helper 3.12.3 (bundled,已安装到 ~/.zcode/computer-use/,meta 显示 source: bundled:zcode-app)
现象 · Symptom
跨多个版本、5 个不同日期的会话(09-18 / 09-19 / 09-21 / 09-25 / 09-26)恒现:
工具表从不出现 mcp__computer-use__* 系列 30 个工具(09-18/19 即如此);
从 09-21 起,按官方技能引导在 node_repl 内执行 setupComputerUseRuntime() 恒报:
Computer Use is unavailable for this node_repl session(09-21/25/26 三次一字不差);
同一 node_repl 会话内 Browser Use(IAB)完全正常 ,说明 node_repl 服务本身健康,仅 CUA 后端未装配。
根因定位 · Root cause(本机代码级证据)
报错点在 node-repl-host dist/mcp/server.js 的 cua-bridge assertAvailable():仅当 input2.broker 为空时抛出该错误(不是权限拒绝,也不是子代理限制)。
broker 存在的唯一前提是 captureComputerUseRuntimeFromEnvironment() 能从进程环境 读到 ZCODE_CUA_PERMISSION_BROKER_SOCKET,缺失即返回 undefined,之后没有任何路径能再补上。
本机实测该 env 缺失 :启动器与捆绑助手路径都注入了(ZCODE_CUA_LAUNCHER_PID、ZCODE_CUA_BUNDLED_HELPER_APP_PATH),唯独没有 SOCKET 变量。
物理证据:socket 目录 /tmp/zcode-cua-<uid>/ 不存在;helper 无进程在跑;~/.zcode/computer-use/logs/ 目录不存在(连 helper 的退出日志都没有)——说明本开机周期内宿主从未尝试或从未成功拉起过 helper 。
死锁:MCP 侧其实内置了兜底 ensureStandaloneHelperLaunched()(按需安装并拉起 helper),但它排在上述 env 闸之后 ——env 缺失时这段兜底永不可达;宿主侧又没有完成「拉起 helper → socket 落地 → 把 socket 路径注入 MCP 子进程 env」这条链。两头互相等待,CUA 永远装配不起来。
已排除:helper 二进制架构正常(arm64 Mach-O);xcrun lipo 经 Command Line Tools 调用正常([Bug] macOS 未同意 Xcode license 时「电脑操作」启用失败:lipo 架构校验 exit 69,且应用日志无任何记录 #655 的 exit 69 场景未复现);不是 TCC 权限弹窗未点(流程根本没走到权限一步)。
关联但不重复 · Related but distinct
复现 · Repro
必现(Always)。macOS 上任意会话让 agent 走官方 computer-use 技能引导即可复现;宿主重启后新会话依旧。
期望 · Expected
宿主在启动或首次 CUA 需求时拉起 helper,并把 ZCODE_CUA_PERMISSION_BROKER_SOCKET 注入 MCP 子进程 env;
或者:MCP 侧允许 env 缺失时直接走 ensureStandaloneHelperLaunched 兜底(把兜底挪到 env 闸之前);
至少:宿主侧装配失败时写入可发现的日志/状态位,node_repl 报错附排查指引——目前零日志,用户完全无从下手。
严重程度
阻塞使用(桌面/原生 App 自动化整条能力不可用;网页类 IAB 不受影响)。
环境 · Environment
~/.zcode/computer-use/,meta 显示source: bundled:zcode-app)现象 · Symptom
跨多个版本、5 个不同日期的会话(09-18 / 09-19 / 09-21 / 09-25 / 09-26)恒现:
mcp__computer-use__*系列 30 个工具(09-18/19 即如此);setupComputerUseRuntime()恒报:Computer Use is unavailable for this node_repl session(09-21/25/26 三次一字不差);根因定位 · Root cause(本机代码级证据)
dist/mcp/server.js的 cua-bridgeassertAvailable():仅当input2.broker为空时抛出该错误(不是权限拒绝,也不是子代理限制)。captureComputerUseRuntimeFromEnvironment()能从进程环境读到ZCODE_CUA_PERMISSION_BROKER_SOCKET,缺失即返回undefined,之后没有任何路径能再补上。ZCODE_CUA_LAUNCHER_PID、ZCODE_CUA_BUNDLED_HELPER_APP_PATH),唯独没有 SOCKET 变量。/tmp/zcode-cua-<uid>/不存在;helper 无进程在跑;~/.zcode/computer-use/logs/目录不存在(连 helper 的退出日志都没有)——说明本开机周期内宿主从未尝试或从未成功拉起过 helper。ensureStandaloneHelperLaunched()(按需安装并拉起 helper),但它排在上述 env 闸之后——env 缺失时这段兜底永不可达;宿主侧又没有完成「拉起 helper → socket 落地 → 把 socket 路径注入 MCP 子进程 env」这条链。两头互相等待,CUA 永远装配不起来。xcrun lipo经 Command Line Tools 调用正常([Bug] macOS 未同意 Xcode license 时「电脑操作」启用失败:lipo 架构校验 exit 69,且应用日志无任何记录 #655 的 exit 69 场景未复现);不是 TCC 权限弹窗未点(流程根本没走到权限一步)。关联但不重复 · Related but distinct
mcp__computer-use__*静默全缺,但归因于 web-remote-control 桥降级;本机为桌面本地会话、无远程桥;复现 · Repro
必现(Always)。macOS 上任意会话让 agent 走官方 computer-use 技能引导即可复现;宿主重启后新会话依旧。
期望 · Expected
ZCODE_CUA_PERMISSION_BROKER_SOCKET注入 MCP 子进程 env;ensureStandaloneHelperLaunched兜底(把兜底挪到 env 闸之前);严重程度
阻塞使用(桌面/原生 App 自动化整条能力不可用;网页类 IAB 不受影响)。