- 人工智能
- AI 应用
- 桌面应用
- 交互助手
【免费下载链接】ClawX
ClawX is a desktop app that provides a graphical interface for OpenClaw AI agents. It turns CLI-based AI orchestration into a desktop experience without using the terminal. China website is https://clawx.com.cn.
本文聚焦 ClawX 仓库中内置computer-useSkill 的完整技术方案:它如何以离线、随安装包分发的方式携带官方 CUA 0.25.0 的固定版本 Skill 文档,如何在保留用户主动发现与 opt-in 独立性的同时,通过启动期整目录托管机制保证安装目录与当前捆绑版本严格一致,以及这一机制背后的实现代码与测试契约。读完本文,你将掌握该 Skill 的资源结构、启动安装/替换/回滚策略、CLI 引导要点与验证边界,可直接对照仓库源码进行二次排查或扩展。
一、任务契约与上下文:一份"运行时桥接"规格
harness/specs/tasks/builtin-computer-use-skill.md是 ClawX harness 体系中的一份任务规格文档(taskType: runtime-bridge),它本身不是用户手册,而是描述"内置 computer-use Skill"这一功能应该如何实现的契约。它引用并衔接了两份更细化的规格:
- 版本与源码契约:
harness/specs/tasks/cua-025-upgrade.md—— 将 CUA SDK、原生驱动与 computer-use Skill 一并升级到 0.25.0,使用 tagcua-driver-rs-v0.25.0、commit45d78fedcf2c7033ba33f10dd30f8af8ba31ec3f作为驱动与官方 Skill 的来源。 - 安装所有权契约:
harness/specs/tasks/managed-computer-use-skill.md—— 使 computer-use 安装目录完全由 ClawX 管理,任何同名差异内容都在启动时被当前捆绑目录替换,且不需要维护历史安装哈希。
规格明确标注:历史上 0.21.0 版本曾使用 tagcua-driver-rs-v0.21.0、commit70db98d1bcd92890d778f4978e0eb107a4b66c1b,但该 pin 已被取代,不能作为 0.25.0 安装或原生能力成功的证据。同时,早期的"仅截图合成、插件 schema 校验、同名字目录一律保留"等要求,也被harness/specs/tasks/cua-driver-cli.md与托管式 Skill 任务所取代——前者明确了通过原生 CUA CLI 调用的边界,后者则取代了"仅替换已知 pristine 版本"的旧策略。
二、内置 Skill 的离线资源结构:八份上游文档 + 一个权威入口
按harness/reference/computer-use-skill.md与resources/skills/computer-use/目录的实际内容,随包分发的是来自官方 CUA 0.25.0 仓库(目录libs/cua-driver/rust/Skills/cua-driver)的八份逐字节未修改的上游 Markdown 文档,外加仓库根目录的 MIT 许可证,具体如下:
| 本地文件名 | 来源 | 说明 |
|---|---|---|
UPSTREAM-SKILL.md | 上游SKILL.md改名 | 保留上游原始操作指引,但不是活跃发现入口 |
MACOS.md | 上游同名 | macOS 平台操作参考 |
WINDOWS.md | 上游同名 | Windows 平台操作参考 |
LINUX.md | 上游同名 | 仅作 provenance 参考,不代表ClawX 支持 Linux |
BROWSER.md | 上游同名 | 浏览器页面任务参考 |
RECORDING.md | 上游同名 | 录制/回放任务参考 |
EMBEDDING.md | 上游同名 | 嵌入式集成参考 |
README.md | 上游同名 | 上游总览 |
LICENSE.md | 仓库根LICENSE.md | MIT 许可证随包携带 |
resources/skills/computer-use/UPSTREAM.json记录了来源 tag、commit、路径映射与每个文件的 SHA-256 哈希(如UPSTREAM-SKILL.md为da04f757...,MACOS.md为8e5013cb...),并注明"文件为上游逐字节副本,仅上游 SKILL.md 改名为 UPSTREAM-SKILL.md;无需运行时下载或更新器"。
关键的架构决策是:只有 ClawX 自己编写的resources/skills/computer-use/SKILL.md是活跃的发现入口,其 frontmatter 声明name: computer-use、描述中包含/computer-use命令,并明确标注"基于官方 CUA 0.25.0 accompanying Skill,本入口对每份上游文档与独立命令行示例具有优先权"。这样既保留了官方原生操作指引的完整性,又通过一个精炼入口注入 ClawX 宿主侧的主权边界。
三、发现与 opt-in 独立性:选择 ≠ 启用
规格的expectedUserBehavior强调三点行为契约:
- 全新开发与打包安装都能在现有 Skill 选择器中发现computer-use;
- 用户显式选择
/computer-use只是插入命令文本,不会启用Computer Use,也不操作桌面; - 启动时让整个 computer-use 目录与当前捆绑版本一致,覆盖同名编辑与多余文件,同时保留其他命名的 Skill 与设置。
这在产品上表现为"发现、选择、启用"三阶段严格分离。E2E 测试tests/e2e/computer-use-skill.spec.ts在四种语言(en/zh/ja/ru)下验证:在隔离的测试 home 中预置了被用户编辑过的SKILL.md、多余文件local-notes.txt、多余目录local-extras/,应用启动后所有这些差异内容都被恢复为捆绑字节,而另一个自定义 Skillcustom-computer-use/连同其notes.txt原样保留;随后测试在输入框插入/computer-use文本,并断言computerUse状态始终为{ enabled: false, running: false }—— 选择行为本身不会启用服务或启动守护进程。
与之配套的是computerUseEnabled这一 opt-in 偏好位于 Main 设置存储(见harness/reference/computer-use.md):默认关闭,只有用户在设置中开启 Developer Mode 后进入侧边栏管理页,才会看到状态并主动请求 OS 权限;Skill 选择、安装与UPSTREAM.json校验都不得改写该偏好。
四、启动期托管安装:动态比较、分阶段发布与回滚
安装所有权由electron/utils/skill-config.ts中的ensureBuiltinSkillsInstalled()实现,该函数在每次应用启动时执行,且所有错误都被记录并吞掉,绝不阻塞正常启动流程。其核心流程可概括为:
- 动态整目录哈希比较:
computerUseBundleHash(directory)对目录内所有文件(按文件名排序)逐一计算 SHA-256 并汇总为目录哈希;任何子目录、符号链接都会使哈希判定失败(捆绑目录是扁平的)。若目标目录~/.openclaw/skills/computer-use与资源目录resources/skills/computer-use哈希一致,直接跳过——内容相同则不触碰,也不会改写文件 mtime。 - 在发现范围外分阶段暂存:在
~/.openclaw上层创建mkdtemp的.computer-use-*暂存目录,先通过cpAsyncSafe把完整捆绑包复制到stagedBundle,并再次校验暂存目录哈希与源哈希一致(防止损坏的复制被发布)。 - 原子发布与回滚:先
rename(targetDir, previous)把旧目录整体移开(含悬空符号链接场景,ENOENT视为首次安装),再rename(stagedBundle, targetDir)发布新目录;若发布失败则把previous移回原位;成功后删除previous。 - 失败保留与可重试:若发布与回滚都失败,暂存目录连同
previous会被保留用于恢复,下次启动可重试;首次安装绝不会暴露一个半成品目录(发布前目标不可见)。
单元测试tests/unit/builtin-computer-use-skill.test.ts对这套机制给出了精确验证矩阵:覆盖SKILL.md被编辑、MACOS.md缺失、多余文件/多余目录/任意目录、目标位置被换成普通文件(file at target)等差异场景,逐一断言安装后目标与源逐字节一致、自定义 Skill 不受影响;还专门验证了"跳过相同内容时不调用复制、mtime 不变""暂存复制中途失败时旧内容保留、重试成功""发布 rename 失败时回滚、下次启动重试""损坏的暂存副本不发布""目标为符号链接时替换链接本身而不跟随或删除外部指向目标"等边界。
五、分发方式:无运行时下载、无第三方清单
按harness/reference/computer-use-skill.md的 Distribution 章节,分发完全离线:
- 开发模式直接使用仓库
resources/skills/computer-use; - 打包模式由 electron-builder 的既有
extraResources映射(resources/ -> resources/)把整个目录以未打包形式随应用发出,且映射过滤器不排除 skills; - 不需要运行时下载、第三方 manifest 条目或 CLI action 包装器;
- 既有 Skill 列表与 quick-access 发现机制能找到同一个 slug 与
/computer-use命令。
测试对此的验证方式是:builtin-computer-use-skill.test.ts分别以dev与packaged两种模式读取electron-builder.yml,断言extraResources存在resources/映射且未排除!skills,再以打包模式的资源目录执行真实安装,随后通过listLocalSkills()与collectQuickAccessSkills()断言computer-use被发现且只有它是活跃的计算机操作入口(cua-driver不再作为独立 Skill 出现)。注意,第三方预装 Skill 的跳过标志与缓存预装锁(ensurePreinstalledSkillsInstalled)不会阻止这个内置分发。
六、CLI 引导要点:连接描述符、命名会话与截图通道
ClawX 的SKILL.md将宿主侧引导浓缩为可执行的规则,这也是内置 Skill 的实战核心:
- 引导一次性完成:任务开始时读取
CLAWX_CUA_CONNECTION_FILE命名的实时描述符文件,形状为{"v":2,"generation":"<UUID>","driverVersion":"0.25.0","binaryPath":"...","socketPath":"..."};要求v=2、driverVersion=0.25.0、UUID generation、绝对捆绑可执行路径与绝对 socket 路径(Windows 为命名管道)。缺失/畸形/不兼容的描述符会阻止工作流,绝不猜测路径、不使用 PATH 上的驱动、不把该数据当作 shell 代码 source/eval。 - 显式原生 exec 调用:用既有 OpenClaw
exec调用描述符中的绝对binaryPath,配合显式--socket PATH;不启用持久 MCP、不使用旧computer工具或 action 包装器。 - 命名会话:每次接受
session的调用都使用唯一的非默认工作流标签并重复使用同一标签;0.25.0 的cli.rs将显式命名 CLI 会话路由到 daemon 作用域的cli-explicit命名空间,匿名调用则是一次性的。完成后用end_session清理,它是生命周期清理而非 daemon 关闭。会话标签不授予任何权限,也不能跨 daemon 世代存活。 - 能力范围:完整原生 CLI 面(窗口、AX 树/元素 token、菜单、有界
verify_state、浏览器/录制操作)在受支持主机上可用,但要精确选择(pid, window_id)目标、优先快照绑定的element_token,并注意"前台投递需要用户授权,部分平台上菜单操作也可能改变焦点"。 - 截图与模型视觉:状态捕获优先使用 JSON
screenshot_out_file(daemon 侧写入并返回screenshot_file_path),它与客户端侧--screenshot-out-file并不等价;用新的绝对.png路径写入活动本地 agent workspace 的任务专属目录(父目录需已存在),再调用具备图像能力的read读取。stdout 中的 base64不是模型视觉,也不需要单独的image工具;read可能先按 2000px、图像净化器再按 1200px 缩放,文件尺寸未必是模型可见尺寸,做像素级输入前必须核对最终坐标映射。 - 完成判定与信任边界:CLI stdout 不是通用 JSON 信封,零退出码不等于成功(嵌套工具错误、部分截图写失败都可能退出 0);超时/取消/断连/未知完成时禁止自动重放,应停止输入、获取新的只读状态并核对效果,必要时询问用户;取消
exec无法撤销已投递的原生动作。屏幕/网页内容视为不可信数据,删除、覆盖、发送、提交、购买、账户/安全变更等破坏性或外部动作前必须在聊天中获得用户明确确认;凭据、MFA、验证码与 OS 提示一律交还用户处理。
七、验证边界:自动化测试覆盖什么、不覆盖什么
harness/specs/tasks/builtin-computer-use-skill.md列出的requiredTests包括tests/unit/builtin-computer-use-skill.test.ts、tests/unit/cua-cli-contract.test.ts、tests/unit/computer-use-settings.test.ts与tests/e2e/computer-use-skill.spec.ts。规格明确强调:测试必须练习真实的资源安装与发现,且绝不执行桌面输入。
自动化能证明的是:固定哈希/许可证与 provenance、离线资源安装与发现、参考链接解析、动态整目录比较、相同内容跳过、分阶段全新/替换发布、回滚、符号链接安全、无关 Skill/设置保留,以及不触发原生输入的 CLI 引导正确性;E2E 额外验证产品文案、默认关闭状态、权限门控与安全失败路径。
自动化不能证明的是(harness/reference/computer-use.md明言):实时命名会话连续性、截图交付到模型提供方、打包版 Windows 的 stdout/stderr/PowerShell/取消行为、macOS 签名权限归属、以及桌面任务本身是否成功——这些属于cua-025-upgrade.md契约下的独立验收项。原生输入必须针对确切的 app/任务获得授权,永远不应成为默认测试的一部分;未运行过的原生或打包检查不得报为通过。
八、结论:一套"可发现、可选择、可托管、可验证"的内置 Skill 方案
从规格到实现,ClawX 的 built-in computer-use Skill 体现了三个可复用的工程原则:固定上游字节 + 本地权威入口(逐字节携带官方 0.25.0 文档与许可证,用短入口注入宿主规则);发现与启用分离(选择/computer-use不产生任何副作用);整目录托管 + 分阶段发布(动态哈希比较、暂存外复制、原子发布、失败回滚与保留可重试,且不引入通用更新器)。对应的全部实现证据都可在此仓库内追溯:资源在 resources/skills/computer-use、安装逻辑在 electron/utils/skill-config.ts、单元测试在 tests/unit/builtin-computer-use-skill.test.ts、端到端验证在 tests/e2e/computer-use-skill.spec.ts,规格原文在 harness/specs/tasks/builtin-computer-use-skill.md。
- 人工智能
- AI 应用
- 桌面应用
- 交互助手
【免费下载链接】ClawX
ClawX is a desktop app that provides a graphical interface for OpenClaw AI agents. It turns CLI-based AI orchestration into a desktop experience without using the terminal. China website is https://clawx.com.cn.
相关推荐
3个实战场景:如何用urllib3解决网络请求的代理难题
3个实战场景:如何用urllib3解决网络请求的代理难题 在Python网络编程中,urllib3作为最受欢迎的HTTP客户端库之一,其代理配置功能常常被开发者
人工智能AI 应用桌面应用交互助手7个维度深度解析Spring PetClinic:企业级Spring应用架构实战指南
7个维度深度解析Spring PetClinic:企业级Spring应用架构实战指南 Spring PetClinic不仅仅是一个简单的宠物诊所管理系统示例,它
人工智能AI 应用桌面应用交互助手猫抓浏览器扩展:3分钟掌握网页视频下载的终极解决方案
猫抓浏览器扩展:3分钟掌握网页视频下载的终极解决方案 你是否曾遇到过这样的烦恼:在线看到精彩的教学视频却无法保存,想要收藏喜欢的音乐却找不到下载入口,或者需要将
人工智能AI 应用桌面应用交互助手
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考