computer 让专家直接操作你的桌面:原生应用、游戏、任何没有 DOM 的界面。它是最底层的交互工具,也是最需要理解约束才用得好的一个。
激活条件
profy-computer 是 user_selectable: true 且 requires: { desktop_connected: true }。两个条件缺一不可——必须在插件面板勾选,且必须运行 Profy 桌面端。云端沙盒里这个插件不会激活。元素寻址:优先 token,不要坐标
这是用好computer 的关键,也是最容易踩坑的地方。cua-driver 0.17 的寻址规则很严:
token 会过期:对同一个窗口再做一次
get_window_state,上一批 token 全部失效,报 stale_element_token。正确反应是重新取一次快照再重试,而不是换成坐标。
标准工作流
18 个 action
观察
操作
幻影光标:move 被硬禁用
调用move 会直接拿到这条错误:
- 无障碍寻址的 click 通过 AX API 派发事件,压根不碰光标
- 像素坐标的 click 在驱动层做保存/恢复,点完光标回原位
后台按键与它的已知盲区
keypress 默认 delivery_mode="background",不抢焦点。代价是:原生应用的菜单快捷键(Cmd+N、Cmd+F 等)在后台可能被静默忽略——没有报错,只是什么都没发生。
正确的处理顺序:
- 按完后
get_window_state验证,发现没变化 - 用
delivery_mode="foreground"重试一次(会抢焦点) - 或者换
invoke_menu,它走无障碍菜单,既不抢焦点也不会被忽略
invoke_menu 是更好的默认选择。
自动像素回落
用 token 点击时如果无障碍层拒绝了,工具会自动做一次像素重试:重新取一次快照,按失败 token 里解析出的索引找到元素,点它的框中心。 这个回落需要你同时传了window_id——没传就直接返回原始错误,不做回落。所以即使用 token 定位,也建议把 window_id 一起带上。
失败与对策
执行链路
screenshot 在 driver 层被翻译成 get_desktop_state(全屏)或 get_window_state(窗口)——cua-driver 里并没有独立的 screenshot 命令。
底层驱动是 trycua/cua-driver-rs,版本在桌面端 platform.ts 里锁定为 0.17。本文所有寻址约束都是这个版本的行为。
与 chrome / browser 的分工
网页任务优先
chrome 或 browser——它们不依赖分辨率,稳定得多。computer 留给没有别的办法的场景。
继续阅读
Chrome
控制你自己的浏览器,带登录态
Browser
沙盒内的隔离浏览器
录制与回放
把一段桌面操作固化成可复用流程
工具全表
每个 action 的完整参数

