它如何工作
PhysiClaw 做的每个动作,都是同一个四阶段循环转一圈。把循环固定下来,正是系统可靠的原因:每个阶段只干一件事,而且都以查看结果收尾。
┌──────────────────────────────────────────────────────────┐ │ │ ▼ │ LOOK ─────────────► DECIDE ─────────► MOVE & TOUCH ──────► CHECK overhead camera agent picks a arm drives stylus look again: + on-device vision box + a gesture to the box, taps did it change? boxes every (tap / swipe / then lifts away │ │ element long-press) yes│ no│ │ │ next action ◄──┘ │ retry / re-aim ◄──────┘整套系统就一台相机加一支机械臂。没有第二台相机,也没有深度传感器 —— 可靠性来自每次移动后都重新看一眼,而不是更花哨的硬件。
1. 看(Look)
Section titled “1. 看(Look)”PhysiClaw 给屏幕拍一张照,再把它喂给设备本地的视觉模型 —— 用 OCR 识文字,用一个小巧的图标检测模型识按钮和图片。输出的不是原始像素,而是一份整洁的清单,其中每个元素都已经带好了框和标签:
id kind label bbox [left,top,right,bottom] conf12 icon "Clock" [0.41, 0.55, 0.49, 0.63] 0.9713 icon "Settings" [0.51, 0.55, 0.59, 0.63] 0.9614 text "Wednesday 14" [0.30, 0.08, 0.70, 0.13] 0.99一个 bbox(「边界框」)就是框住某个元素的一个矩形,用四个从 0 到 1 的数字表示 —— 也就是屏幕宽和高的比例。[0.41, 0.55, 0.49, 0.63] 的意思是「从横向 41%、纵向 55% 处开始,到横向 49%、纵向 63% 处结束」。用比例而不是像素,正是让一切都可移植的关键:同一份清单在任何尺寸的手机上都讲得通。
2. 决策(Decide)
Section titled “2. 决策(Decide)”agent —— Claude,或者你指给 PhysiClaw 的任何模型 —— 读这份清单,挑出一个框加一个手势。要打开时钟,它就挑元素 12 并调用 tap。它从不跟电机坐标或像素打交道;它只是点名一个框和一个动作。这就是它的全部词汇表,详见 MCP 工具参考。
3. 移动并触碰(Move & touch)
Section titled “3. 移动并触碰(Move & touch)”PhysiClaw 把选中的框换算成机械臂坐标(这套映射正是校准要建立的),把触控笔送到框的中心,笔尖落下完成一次触碰。笔尖装在一个快速电磁铁 —— solenoid(电磁铁)—— 上,所以一次 tap 是干脆利落的一落一抬,长按则只是把笔尖多按一会儿。然后机械臂把触控笔停到一边、移出相机视野,好让下一张照片不被挡住。
4. 检查(Check)
Section titled “4. 检查(Check)”PhysiClaw 再看一眼,生成一份新的清单。agent 把它跟自己的预期作比较:
- 按计划变化了 → 进行下一个动作。
- 什么都没变 → tap 没点中,或者框选错了;重新瞄准,再试一次。
- 冒出了意料之外的东西(弹窗、广告、权限请求)→ 那就是新状态而已。agent 读一读,再重新决策一遍 —— 没有脆弱的脚本会因此崩掉。
这套「观察结果,再重新决策」的设计,就是可靠性的全部秘密。PhysiClaw 应对意外的方式跟人一样:看一眼,再试一次。
两种看法:peek 与 screenshot
Section titled “两种看法:peek 与 screenshot”LOOK 其实有两挡,agent 按需要来挑:
peek | screenshot | |
|---|---|---|
| 来源 | 俯拍相机 | 手机自己的截屏 |
| 速度 | ~4s | ~12s |
| 清晰度 | 对大多数目标够用 | 像素级精准 |
| 副作用 | 无 | app 可能会察觉到截屏(分享面板、水印) |
peek 是默认选项 —— 快,而且不留痕迹。只有当目标太小、相机分辨不清,或者反光让画面没法读时,agent 才会升级到 screenshot。这种分工为什么存在、视觉流水线又是怎么运转的,都在它如何看见里。