自动化集成实践

本地自动化运行时集成

这篇实践页说明:当本地自动化工具仍在使用某个应用时,如何避免它被灵汐自动关闭。

实践设置建议适用于本地自动化工具保持活跃应用打开

什么时候看这页

这是基础接入页旁边的一页实践说明

请先把主集成页当作基线。这页适合在基础流程已经清楚之后,继续处理“工具工作时如何让真实应用保持受保护”这个问题。

适合本地运行时接入者

当你的本地自动化工具正在控制浏览器、编辑器、终端、上传器或其他应用,并且希望灵汐在任务结束前保持它打开时,可以看这页。

让基础接入页保持清晰

稳定的 socket 接入说明仍以主接入页为准。本页只补充真实本地运行时的设置建议和应用启动细节。

典型症状

这些现象通常说明还缺一层保护

应用启动后很快退出

在自动化脚本中成功拉起了目标软件,但由于还未发出交互指令,应用直接被灵汐判断为闲置并关闭。

手动操作正常,脚本运行异常

同样的任务流程,人去点击操作没有任何问题,只有当自动化运行时托管该软件时才会报错或被强退。

耗时任务中途中断

长耗时的导入、文件同步或大数据包上传已经启动,但由于网络判定或保护租期到期未续约,导致中途被误关闭。

推荐做法

先打开真实应用,再申请保护

  1. 尽量让每个运行时会话与特定的应用周期一对一绑定。
  2. 推荐在向灵汐发送保护租约之前,先把软件的真实界面成功拉起。
  3. 为每个应用实例挑选最为具体、明确的 `appKey`。
  4. 如果启动瞬间出现短暂识别失败,可以短暂重试 `lease.begin`,不必马上改整体接入逻辑。
  5. 只要任务仍在进行,就应当在后台以一定的频率自动续租。
  6. 收到灵汐的退出确认请求时,请务必根据当前的真实工作状态来回复。
  7. 当任务彻底完工后,再通过 Socket 发送指令主动撤销保护。

应用标识

如何理解 `appKey`

  • 基础的 `appKey` 默认使用应用的 Bundle ID。
  • 如果你在运行带有独立 Profile (分身) 的应用,建议使用带后缀的 key 进行精确锁定。
  • 优先使用最具体、已验证有效的 key,必要时再回退到兜底规则。

边界

哪些内容保持稳定

  • socket 路径、握手流程与 lease 动作,仍以主接入页为准。
  • 本页补充的是运行时接入建议,不是另一套公开接口。
  • 不同应用表面可能需要不同的启动、标识和“任务仍在进行中”的判断方式,但 lease 流程本身不需要变化。

最小实现形状

先保证时序,再考虑封装形式

关键不在语法,而在顺序:先有真实应用表面,再申请 lease,最后显式清理。

resource = launch_or_attach_to_real_app(...)
liveSurface = create_real_surface(resource)

with aion_lease(appKey):
    # do the owned app work here
    ...

示例

已经验证过的具体例子

Playwright + Chrome

我们已对 Playwright 驱动 Chrome 进行了完整测试。在实际操作中,推荐的顺序是:先确保页面被成功拉起,然后选用带有 profile 后缀的 key 开启保护,并在自动化运行期间持续自动续约。

其他应用接入

如果你的 Agent 控制的是其他软件,底层的 Socket 租约机制完全一致,你只需根据目标软件的行为来定制你的启动侦听和续租判断即可。

排查

先检查这些,再考虑调整接入实现

`lease.begin` 返回 `unknown_app`

先核对 app key。最稳妥的 key 通常是刚刚拉起的真实应用实例所对应的、最具体且有效的标识,而不是最宽泛的兜底值。

灵汐识别前应用已退出

优先检查顺序:先有真实应用表面,再进入 lease 流程。在很多接入里,这个顺序比后续重试更关键。

长任务中途中断

确认后台续租仍在运行,并且在应用仍被主动使用时,close-check 会把 lease 正确延长。

需要先看主接入页?

如果你还需要 socket 路径、握手、动作列表或响应码,请先看主接入页。等基础流程清楚后,再回到这里调整具体运行环境。