Android Agent 任务完成后空闲返回与亮屏策略 #89

Closed
opened 2026-08-25 15:00:53 +08:00 by ila · 3 comments
Owner

所属与门禁

  • 父 MVP:#86
  • 依赖:#87 原型审核、#88 Agent 外壳。

目标

任务完成后,在确认 15 秒内没有新任务时安全返回 Agent 状态页;任务执行与冷却期间避免屏幕熄灭。

做什么

  • 建立任务结束冷却状态,不新增第二套独立轮询器。
  • 结果已提交或安全进入 Outbox后计时;15 秒后必须成功确认采购和采集队列都为空。
  • 本地无活动任务、不可逆动作或待恢复边界,且当前仍是本次自动化打开的 PDD/浏览器页面时才请求返回。
  • 新任务、网络异常、用户切换其他 App、页面证据不符时取消返回。
  • 执行期与冷却期持有有界亮屏锁;Agent 前台使用 keep-screen-on;完成后释放。

不做什么

  • 不永久亮屏、不绕过 PIN/密码锁。
  • 不因单纯设备空闲强制打断用户正在使用的其他 App。
  • 不改变采购优先于采集和单设备串行规则。

验收

  • 无新任务时约 15 秒后回到状态页。
  • 15 秒内出现任一类型任务时不返回并正常执行。
  • 网络失败不被误判为空队列。
  • 用户切换其他 App 时不强拉回 Agent。
  • 任务执行与冷却期间不熄屏,结束后不泄漏 WakeLock。
  • 三星真机记录 Android 后台 Activity 启动限制下的实际结论。

文档影响

更新 Agent 调度、亮屏和设备准备说明。

## 所属与门禁 - 父 MVP:#86 - 依赖:#87 原型审核、#88 Agent 外壳。 ## 目标 任务完成后,在确认 15 秒内没有新任务时安全返回 Agent 状态页;任务执行与冷却期间避免屏幕熄灭。 ## 做什么 - 建立任务结束冷却状态,不新增第二套独立轮询器。 - 结果已提交或安全进入 Outbox后计时;15 秒后必须成功确认采购和采集队列都为空。 - 本地无活动任务、不可逆动作或待恢复边界,且当前仍是本次自动化打开的 PDD/浏览器页面时才请求返回。 - 新任务、网络异常、用户切换其他 App、页面证据不符时取消返回。 - 执行期与冷却期持有有界亮屏锁;Agent 前台使用 keep-screen-on;完成后释放。 ## 不做什么 - 不永久亮屏、不绕过 PIN/密码锁。 - 不因单纯设备空闲强制打断用户正在使用的其他 App。 - 不改变采购优先于采集和单设备串行规则。 ## 验收 - [ ] 无新任务时约 15 秒后回到状态页。 - [ ] 15 秒内出现任一类型任务时不返回并正常执行。 - [ ] 网络失败不被误判为空队列。 - [ ] 用户切换其他 App 时不强拉回 Agent。 - [ ] 任务执行与冷却期间不熄屏,结束后不泄漏 WakeLock。 - [ ] 三星真机记录 Android 后台 Activity 启动限制下的实际结论。 ## 文档影响 更新 Agent 调度、亮屏和设备准备说明。
Author
Owner

开始实施 #89(2026-08-25)。

前置依赖 #87、#88 已完成且 #88 已验收。按本工单范围只修改 Android Agent 的任务结束冷却、空队列确认、受控返回和亮屏生命周期;不改变任务优先级、服务端状态机、采购动作、创建订单或支付边界。工作区现有未跟踪文件 gitea.zip 与本工单无关,将保持不动。

开始实施 #89(2026-08-25)。 前置依赖 #87、#88 已完成且 #88 已验收。按本工单范围只修改 Android Agent 的任务结束冷却、空队列确认、受控返回和亮屏生命周期;不改变任务优先级、服务端状态机、采购动作、创建订单或支付边界。工作区现有未跟踪文件 `gitea.zip` 与本工单无关,将保持不动。
Author
Owner

实施完成,等待真机验收

已完成 #89 的生产实现并推送到 main,工单保持开启。

实现

  • 任务结果安全提交后建立 15 秒冷却;采购结果允许先与 Outbox 在同一事务保存。
  • 不新增第二套队列轮询器:冷却到期复用现有轮询,按“采购优先、采集其次”确认两类队列都为空。
  • 新任务、网络/服务端异常、本地不可逆采购恢复边界、前台应用切换都会取消本次返回。
  • 无障碍服务记录前台包切换序号;用户切换到其他 App 后,即使又回到 PDD,也不会被强拉回 Agent。
  • 只从本次自动化停留的 PDD/受支持浏览器页面请求返回状态 Tab,并在请求后复核前台包;系统限制返回时提示手动打开。
  • 任务期和冷却期分别持有有界 WakeLock;Agent 前台仅在运行态设置 FLAG_KEEP_SCREEN_ON。取消、返回、服务销毁或进程重建后清除,不自动解锁。
  • Agent 版本升级为 0.3.1(versionCode 4)。

自动验证

  • .\scripts\verify.ps1 -Component android:通过(Debug/Release 单元测试、Debug APK 构建)。
  • 新增状态机测试:15 秒边界、双队列确认、前台切换取消、不支持 App 拒绝、亮屏策略。
  • python dev_scripts/harness.py check --strict:通过。
  • git diff --check:通过。
  • Wiki 已在线更新、回读并完成一次同步和一次一致性检查:
    • Architecture-and-Code-Map:1c9841a942b5d5682ddada2ee7202e93adc422e4
    • Local-Development-and-Verification:dc484e1aa48172d502939e8ebe0ad0e6bd83c7ea

三星设备

  • SM-G9700 空闲时已覆盖安装最终 Debug APK;已确认 versionName 0.3.1 / versionCode 4。
  • 安装前设备在线且无活动任务;未创建采购任务、订单或支付。
  • 最后一次覆盖安装后,Android 会再次关闭无障碍服务。因此以下验收仍需人工重新开启无障碍并创建一条普通采集任务后完成:
    • 无新任务约 15 秒返回状态 Tab;
    • 冷却期新任务、断网、切换其他 App 的取消行为;
    • 任务/冷却 WakeLock 持有及结束释放;
    • 三星 ROM 对后台 Activity 启动的实际结论。

提交

  • 21fc149 feat(android): implement #89 idle return policy

工单保持“待验收”,未继续 #90。

## 实施完成,等待真机验收 已完成 #89 的生产实现并推送到 `main`,工单保持开启。 ### 实现 - 任务结果安全提交后建立 15 秒冷却;采购结果允许先与 Outbox 在同一事务保存。 - 不新增第二套队列轮询器:冷却到期复用现有轮询,按“采购优先、采集其次”确认两类队列都为空。 - 新任务、网络/服务端异常、本地不可逆采购恢复边界、前台应用切换都会取消本次返回。 - 无障碍服务记录前台包切换序号;用户切换到其他 App 后,即使又回到 PDD,也不会被强拉回 Agent。 - 只从本次自动化停留的 PDD/受支持浏览器页面请求返回状态 Tab,并在请求后复核前台包;系统限制返回时提示手动打开。 - 任务期和冷却期分别持有有界 WakeLock;Agent 前台仅在运行态设置 `FLAG_KEEP_SCREEN_ON`。取消、返回、服务销毁或进程重建后清除,不自动解锁。 - Agent 版本升级为 0.3.1(versionCode 4)。 ### 自动验证 - `.\scripts\verify.ps1 -Component android`:通过(Debug/Release 单元测试、Debug APK 构建)。 - 新增状态机测试:15 秒边界、双队列确认、前台切换取消、不支持 App 拒绝、亮屏策略。 - `python dev_scripts/harness.py check --strict`:通过。 - `git diff --check`:通过。 - Wiki 已在线更新、回读并完成一次同步和一次一致性检查: - Architecture-and-Code-Map:`1c9841a942b5d5682ddada2ee7202e93adc422e4` - Local-Development-and-Verification:`dc484e1aa48172d502939e8ebe0ad0e6bd83c7ea` ### 三星设备 - SM-G9700 空闲时已覆盖安装最终 Debug APK;已确认 versionName 0.3.1 / versionCode 4。 - 安装前设备在线且无活动任务;未创建采购任务、订单或支付。 - 最后一次覆盖安装后,Android 会再次关闭无障碍服务。因此以下验收仍需人工重新开启无障碍并创建一条普通采集任务后完成: - 无新任务约 15 秒返回状态 Tab; - 冷却期新任务、断网、切换其他 App 的取消行为; - 任务/冷却 WakeLock 持有及结束释放; - 三星 ROM 对后台 Activity 启动的实际结论。 ### 提交 - `21fc149 feat(android): implement #89 idle return policy` 工单保持“待验收”,未继续 #90。
Author
Owner

用户于 2026-08-26 明确确认 #89 验收通过。已完成真机验收,本工单关闭。此前已完成长期 Wiki 更新与镜像一致性检查;本次验收没有新增长期事实,不重复同步 Wiki。

用户于 2026-08-26 明确确认 #89 验收通过。已完成真机验收,本工单关闭。此前已完成长期 Wiki 更新与镜像一致性检查;本次验收没有新增长期事实,不重复同步 Wiki。
ila closed this issue 2026-08-26 08:51:22 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#89