什么是"原子能力"?
原子能力(Atomic Capability)是指不可再拆分的最小操作单元。就像编程里的原子操作——要么全部完成,要么全部失败,不会出现半吊子状态。
在 iDeviceFarm 的体系中,原子能力由 Agent 执行端(每台手机上的原生客户端)直接调用,farm 控制面只管下发指令和收结果。这种分层的好处是解耦:不管上层用什么模型、什么策略,底层执行始终一致且可验证。
逐个拆解
| 能力 | 做什么 | 成功回执要求 |
|---|---|---|
| launch_app | 启动指定 App | 前台已是目标 App |
| tap | 点击坐标或 UI 选择器 | 点击已发出;可选 UI 变化确认 |
| swipe | 滑动手势(上下左右) | 手势完成 |
| input | 输入文本到指定框 | 目标框文本符合预期或可读取 |
| wait_ui | 等待文案或控件出现 | 超时则明确失败 |
| album_import / pick_media | 导入/选择媒体文件 | 资源可被发布页选中 |
| screenshot(可选) | 截取当前屏幕 | 仅在调试时启用,默认关闭且不落盘 |
关键设计理念
- 每个调用有回执:不只是"我发了个 tap",而是"我发了个 tap,并且屏幕确实跳到了下一页"。
- 超时与错误码:wait_ui 最长等待 N 秒后明确返回超时错误,而不是无限挂起。
- 幂等性:同一个 tap 发两次和发一次效果一样(不会因为重复发送导致翻倍操作)。
- 无副作用:原子操作不改变应用内状态之外的任何东西(不清缓存、不改配置)。
原子能力 vs 脚本录制的区别
很多人会把原子能力和"录制回放"混淆。其实差别很大:
| 对比维度 | 录制回放 | 原子能力 + AI |
|---|---|---|
| 稳定性 | App 改版即失效 | 看屏幕内容执行,抗改版 |
| 灵活性 | 只能回放录制时的流程 | AI 根据意图动态组合 |
| 出错处理 | 中断后从头再来 | 定位到哪一步失败、重试该步 |
| 适用场景 | 固定流程测试 | 变长流程(用户随意说任务) |
一句话总结:原子能力是整座大厦的地基,地基牢不牢决定了上层设计得再花哨也不会崩塌。想了解原子能力怎么被串成工作流的,去 能力详解 看看。