上个月有人问我一个问题,问得挺具体:他手上五台手机,想让它们同时跑同一条工作流,问会不会「串」——也就是指令跑到别的设备上去。
这个担心是有来由的。早几年做设备群控的人,大多踩过这个坑:几台设备共用一个会话,你让第一台点某个按钮,结果另外几台也跟着点。所以这个问题值得认真答一次。
先回答「会不会打架」
不会串任务。
1.2.0 版本开始,每台设备有自己独立的 session。这个改动解决的就是过去多台设备共用同一个 session 导致的冲突问题。现在的逻辑是:五台设备跑同一条工作流,各自执行各自的,指令只发到自己那台上。
版本变化的记录在 版本更新记录 里能看到,写的是「新增多 Agent 对于每个设备的独立 session,避免多个设备同时使用同一个 session 导致的冲突问题」。
所以从工具这一层来说,多台并发是安全的。真要注意的,是下面这几件事。
真正会互相影响的是资源
任务不会串,但设备之间会抢资源。主要有三类。
网络带宽最明显。同一批任务如果需要上传文件,几台设备同时推,速度会互相拖累。结果是每台都变慢,总时间不一定比分批短。
电脑的算力和 USB 供电是第二类。设备不多的时候感觉不到,十几台以上开始显现。特别是 USB 连接,口一多、线一长,供电不足会让设备莫名其妙掉线。这类故障最难查,因为表现是「随机某台掉线」,看不出规律。用带独立供电的集线器能解决大部分。
第三类是账号层面的。同一个账号在短时间内被多台设备操作,这个行为模式本身就是风险信号。这一点跟工具没关系,是人怎么用的问题。我的建议是一台设备固定绑一个账号,需要铺多个账号就上多台设备,不要几台设备轮流登同一个号。
同一个任务跑多台,还是分开跑
这两种做法都合理,看你的任务性质。
如果每台设备要做的是同一件事,比如每台都发一条内容、每台都走一遍检查流程,那用一条工作流按组下发最省事。配一次,覆盖一批。
如果每台做的不一样,比如不同账号要发不同的内容、不同店铺要跑不同的流程,那建议配置成不同的工作流分别下发,不要把差异硬塞进一个模板里。硬塞的后果是参数越来越多,最后你自己都记不住哪个参数对应哪台。
一个容易被忽略的细节:等待时间
并发跑的时候,每台设备的网络和性能不一样。同一个「等 5 秒」的步骤,在一台设备上刚好,在另一台上可能就短了。
这类问题的表现是「大部分能跑通,偶尔有一两台失败」,而且失败的设备不固定。遇到这种情况,先检查流程里的固定等待。
更稳的做法是把「等 N 秒」换成基于画面的判断,也就是用 找图模板 告诉它「等这个按钮出现再点」。这样每台设备按自己的节奏走,快慢不一致也不会出错。找图模板怎么配,文档里有说明。
怎么排比较稳
我的建议是从小到大,别一步到位。
先选两台设备跑同一条工作流,跑完分别看两台手机上的实际结果,确认指令确实没有跑到对方设备上。这一步看着多余,但它给你一个确定的基线。
确认没问题之后按组下发。轻任务可以一次推完,重任务分批,一次五到十台。
跑完去 执行历史 核对。然后逐步增加设备数量,观察两个指标:掉线是不是变多了,总耗时是不是还在缩短。如果加到某一档发现总时间不再减少,或者掉线明显增多,那就是你这套环境的合理上限,不用再往上加了。
最后说一句账号的事
前面提过,但我还想再说一次,因为这是多设备场景里最容易出事的地方。
工具层面的并发是安全的,每台设备互不干扰。但如果你让十台设备轮流上同一个账号,那在平台看来就是同一个账号在十个地方同时活动。这跟用不用自动化关系不大,手工做也一样有风险。
所以配并发之前,先把账号和设备的关系理清楚:一台设备一个账号,账号多就上设备。这个前提立住了,后面怎么排都是安全的。
如果你现在只有一两台设备,并发这个话题可以先放着。等到设备上到五台以上、开始觉得手动一台台点太慢 的时候,再按上面的顺序试一遍。
常见问题
- 多台手机同时跑同一个工作流,任务会互相干扰吗?
- 不会串任务。1.2.0 版本之后,每台设备有自己独立的 session,避免了过去多台设备共用同一个 session 导致的冲突。也就是说,五台设备跑同一条工作流,各自执行各自的,指令不会跑到别的设备上去。
- 那还有什么会互相影响?
- 三类资源。一是网络带宽,大文件上传同时跑会互相争抢;二是电脑的算力和 USB 供电,设备多、口多的时候供电不足会掉线;三是同一个账号在多台设备上同时操作,这个风险不来自工具,来自平台的风控逻辑。
- 同一个工作流跑多台,和不同任务分开跑,哪种更好?
- 看任务的独立性。同一个动作要在多台上重复(比如每台都发一条内容),用一条工作流按组下发最省事。如果每台做的事不一样(比如不同账号发不同内容),就配置不同的工作流分别下发,别硬塞进一个模板。
- 同时跑会不会因为等待时间不一致而错乱?
- 不会错乱,但会不同步。每台设备的网络和性能不一样,同一个等待时长在不同设备上的实际效果可能不同。如果流程里有「必须等到某个界面出现」的步骤,建议用找图模板这类基于画面判断的方式,而不是纯靠固定秒数。
- 一台设备跑失败了,会影响其他设备吗?
- 不会。每台设备是一次独立的执行,一台失败不会中断其他设备。失败的那台会在执行历史里单独记一条,带错误信息,你按那条去查就行。
- 有没有推荐的并发数量?
- 没有一个通用数字,取决于任务轻重和你的硬件。轻任务可以多,重任务建议分批,一次五到十台。判断方法是先跑五台看总耗时和设备稳定性,再往上加,加到某一档发现掉线变多或者总时间不再缩短,那就是上限了。
- 多台设备跑同一个账号的活儿,会不会有风险?
- 有,而且这是真正要注意的一点。同一个账号在短时间内在多台设备上操作,这个行为模式本身就容易被平台识别。建议一台设备绑一个账号,需要多账号的时候用多台设备,而不是让几台设备轮流上同一个号。
- 怎么确认没有互相干扰?
- 两个办法。一是把并发数量设成两台,跑一遍,去看每台设备上的实际结果是不是都对;二是在执行历史里逐条核对,看是否有设备报出了不属于自己的错误。跑通之后再逐步加到目标数量。