Android Agent:任务结束空闲返回由 15 秒优化为 5 秒 #126

Closed
opened 2026-08-28 14:11:47 +08:00 by ila · 2 comments
Owner

所属与来源

  • 关联工单:#124(颜色发现修复,独立待验收)。
  • 来源:用户于 2026-08-28 询问采集完成后的返回等待,确认当前为 15 秒后,接受“缩短为 5 秒并在返回前再次查队列”的建议并要求实施。
  • 类型:Android Agent 任务结束空闲返回体验优化。
  • 前置依赖:无;基线提交 c2a1363561bb3495174f888f75643821fdb924e7。
  • 可并行:不建议与其他修改 AgentForegroundService / IdleReturnCoordinator 的任务并行。
  • 子项目影响:Android、长期 Wiki 镜像;不改 Server、Web、数据库或共享 API。
  • 设计证据:不新增页面、组件或导航;仅缩短既有自动返回等待并同步状态文案,属于既有行为的小范围调整,无需原型。

目标

  1. 结果安全提交/保存后立即沿用既有调度器检查新任务。
  2. 队列为空时,将自动返回静默窗口从 15 秒缩短到 5 秒。
  3. 5 秒到期通过既有同步调度再次检查采购、采集队列;仍为空且本地边界安全、前台未变化时才返回 Agent。
  4. 保留新任务、网络错误、用户切换前台、结果未安全提交/保存时取消自动返回的现有规则。
  5. 保留返回后 750ms 前台确认,不新增轮询器。
  6. 构建新版 Agent,安装到 PKG110 并验证实际返回时间。

非目标

  • 不修改 15 秒心跳/自动轮询周期、45 秒离线阈值或采集间隔设置。
  • 不让等待秒数可配置,不新增服务端字段、设置项或 API。
  • 不修改采集、采购、规格识别、支付与下单逻辑。
  • 不关闭或扩展 #124。

实施方案

  • 将 IdleReturnCoordinator.DEFAULT_COOLDOWN_MILLIS 从 15000 改为 5000。
  • 状态提示与成功返回提示统一由冷却秒数生成,避免逻辑和文案再次漂移。
  • 更新协调器边界测试、状态文案测试以及相关服务测试。
  • 版本升级为 0.9.15(versionCode 28)。
  • 执行 Android 全量验证、DevHarness 检查、Wiki 同步一致性检查和 PKG110 真机计时验证。

验收标准

  • 结果安全提交后约 5 秒、且队列仍为空时返回 Agent 状态页。
  • 5 秒窗口内发现新采购/采集任务时取消返回并按既有优先级执行。
  • 用户切换前台、无障碍未就绪、本地边界不安全或结果未安全提交时不强制返回。
  • 心跳与常规自动检查仍为 15 秒,返回确认仍为 750ms。
  • Android 单元测试及 Debug APK 构建通过。
  • Agent 0.9.15 安装到 PKG110,记录真机实测。
  • 提交推送并回写验证证据,工单保持待验收。

风险与回退

  • 风险:任务在 5 秒窗口结束后才到达,会先返回 Agent,随后由既有调度重新打开自动化页面。缓解:结束时再次查队列;现有即时检查和队列优先级不变。
  • 回退:恢复 15 秒常量及对应文案/测试即可。

文档影响

长期行为由 15 秒改为 5 秒,需先更新 Wiki:

  • Architecture-and-Code-Map
  • Business-Rules-and-Glossary
  • Local-Development-and-Verification

不修改 Android Agent API 契约:心跳、离线阈值和接口字段均不变。

## 所属与来源 - 关联工单:#124(颜色发现修复,独立待验收)。 - 来源:用户于 2026-08-28 询问采集完成后的返回等待,确认当前为 15 秒后,接受“缩短为 5 秒并在返回前再次查队列”的建议并要求实施。 - 类型:Android Agent 任务结束空闲返回体验优化。 - 前置依赖:无;基线提交 `c2a1363561bb3495174f888f75643821fdb924e7`。 - 可并行:不建议与其他修改 `AgentForegroundService` / `IdleReturnCoordinator` 的任务并行。 - 子项目影响:Android、长期 Wiki 镜像;不改 Server、Web、数据库或共享 API。 - 设计证据:不新增页面、组件或导航;仅缩短既有自动返回等待并同步状态文案,属于既有行为的小范围调整,无需原型。 ## 目标 1. 结果安全提交/保存后立即沿用既有调度器检查新任务。 2. 队列为空时,将自动返回静默窗口从 15 秒缩短到 5 秒。 3. 5 秒到期通过既有同步调度再次检查采购、采集队列;仍为空且本地边界安全、前台未变化时才返回 Agent。 4. 保留新任务、网络错误、用户切换前台、结果未安全提交/保存时取消自动返回的现有规则。 5. 保留返回后 750ms 前台确认,不新增轮询器。 6. 构建新版 Agent,安装到 PKG110 并验证实际返回时间。 ## 非目标 - 不修改 15 秒心跳/自动轮询周期、45 秒离线阈值或采集间隔设置。 - 不让等待秒数可配置,不新增服务端字段、设置项或 API。 - 不修改采集、采购、规格识别、支付与下单逻辑。 - 不关闭或扩展 #124。 ## 实施方案 - 将 `IdleReturnCoordinator.DEFAULT_COOLDOWN_MILLIS` 从 15000 改为 5000。 - 状态提示与成功返回提示统一由冷却秒数生成,避免逻辑和文案再次漂移。 - 更新协调器边界测试、状态文案测试以及相关服务测试。 - 版本升级为 0.9.15(versionCode 28)。 - 执行 Android 全量验证、DevHarness 检查、Wiki 同步一致性检查和 PKG110 真机计时验证。 ## 验收标准 - [ ] 结果安全提交后约 5 秒、且队列仍为空时返回 Agent 状态页。 - [ ] 5 秒窗口内发现新采购/采集任务时取消返回并按既有优先级执行。 - [ ] 用户切换前台、无障碍未就绪、本地边界不安全或结果未安全提交时不强制返回。 - [ ] 心跳与常规自动检查仍为 15 秒,返回确认仍为 750ms。 - [ ] Android 单元测试及 Debug APK 构建通过。 - [ ] Agent 0.9.15 安装到 PKG110,记录真机实测。 - [ ] 提交推送并回写验证证据,工单保持待验收。 ## 风险与回退 - 风险:任务在 5 秒窗口结束后才到达,会先返回 Agent,随后由既有调度重新打开自动化页面。缓解:结束时再次查队列;现有即时检查和队列优先级不变。 - 回退:恢复 15 秒常量及对应文案/测试即可。 ## 文档影响 长期行为由 15 秒改为 5 秒,需先更新 Wiki: - `Architecture-and-Code-Map` - `Business-Rules-and-Glossary` - `Local-Development-and-Verification` 不修改 Android Agent API 契约:心跳、离线阈值和接口字段均不变。
Author
Owner

实施完成,待验收

已按确认方案将任务结束空闲返回窗口从 15 秒缩短为 5 秒,未修改心跳、常规自动检查、采集间隔或服务端契约。

实现

  • IdleReturnCoordinator.DEFAULT_COOLDOWN_SECONDS = 5,毫秒值由同一常量派生。
  • 结果安全提交/保存后仍立即通过既有单线程调度器检查任务;5 秒到期再次触发同一调度器,只有采购/采集队列为空、本地边界安全且前台未变化时才返回。
  • 新任务、网络/服务端错误、用户切换前台、无障碍未就绪或结果未安全提交/保存时取消返回的既有规则保持不变。
  • 返回后的前台确认延时仍为 750ms。
  • 状态提示和返回成功提示从同一 5 秒常量生成,避免文案与逻辑漂移。
  • Agent 升级为 0.9.15(versionCode 28)。

自动验证

  • 定向测试:IdleReturnCoordinatorTest、AgentStatusTextPolicyTest 通过。
  • .\scripts\verify.ps1 -Component android:通过;Debug/Release 各 162 个测试用例(共执行 324 次),0 failures / 0 errors,Debug APK 构建成功。
  • python dev_scripts/harness.py check --strict:通过。
  • python dev_scripts/harness.py sync --check:通过。
  • git diff --check:通过。

测试覆盖 5 秒前仍等待、5 秒边界返回、队列非空、本地边界不安全、前台切换取消以及非自动化 App 不建立冷却。

PKG110 真机

  • Debug APK 已通过 adb install -r 安装成功。
  • 设备包信息:versionName 0.9.15、versionCode 28;无障碍服务安装后保持启用。
  • 当前 PDD 商品页发起一次临时采集请求,仅轮询本地任务运行标记与前台包名计时,未抓取截图或控件树。
  • 请求 ID:5a64dd2c-38db-4d5f-b986-4464085e52b9。
  • 本地任务结束:2026-08-28 14:22:03.772 +08:00。
  • Agent 到前台:2026-08-28 14:22:09.022 +08:00。
  • 实测结束到返回:5250ms,符合 5 秒目标;约 250ms 为采样间隔与前台启动调度开销。

Wiki

已先更新线上页面、回读 revision,再同步本地镜像:

  • Architecture-and-Code-Map:340505ae259dc7bfae74f991e0fb72ad0daeabe9
  • Business-Rules-and-Glossary:0798ea888bbc55fd434e9ac31c539da7a4efea5a
  • Local-Development-and-Verification:bc940a7a8eaf2aa785ece5f031ae81aa6c217a4b

提交与未验证范围

  • 提交:0527bcaae9e287d3d61161655fe22bbb2c6e4871,已推送至 origin/main。
  • 本轮未在真机 5 秒窗口内临时创建第二个任务验证取消返回,也未覆盖其他设备/ROM;取消条件由单元测试覆盖。
  • 未修改或提交无关的 gitea.zip。

工单保持打开,等待人工验收。

## 实施完成,待验收 已按确认方案将任务结束空闲返回窗口从 15 秒缩短为 5 秒,未修改心跳、常规自动检查、采集间隔或服务端契约。 ### 实现 - `IdleReturnCoordinator.DEFAULT_COOLDOWN_SECONDS = 5`,毫秒值由同一常量派生。 - 结果安全提交/保存后仍立即通过既有单线程调度器检查任务;5 秒到期再次触发同一调度器,只有采购/采集队列为空、本地边界安全且前台未变化时才返回。 - 新任务、网络/服务端错误、用户切换前台、无障碍未就绪或结果未安全提交/保存时取消返回的既有规则保持不变。 - 返回后的前台确认延时仍为 750ms。 - 状态提示和返回成功提示从同一 5 秒常量生成,避免文案与逻辑漂移。 - Agent 升级为 0.9.15(versionCode 28)。 ### 自动验证 - 定向测试:`IdleReturnCoordinatorTest`、`AgentStatusTextPolicyTest` 通过。 - `.\scripts\verify.ps1 -Component android`:通过;Debug/Release 各 162 个测试用例(共执行 324 次),0 failures / 0 errors,Debug APK 构建成功。 - `python dev_scripts/harness.py check --strict`:通过。 - `python dev_scripts/harness.py sync --check`:通过。 - `git diff --check`:通过。 测试覆盖 5 秒前仍等待、5 秒边界返回、队列非空、本地边界不安全、前台切换取消以及非自动化 App 不建立冷却。 ### PKG110 真机 - Debug APK 已通过 `adb install -r` 安装成功。 - 设备包信息:versionName `0.9.15`、versionCode `28`;无障碍服务安装后保持启用。 - 当前 PDD 商品页发起一次临时采集请求,仅轮询本地任务运行标记与前台包名计时,未抓取截图或控件树。 - 请求 ID:`5a64dd2c-38db-4d5f-b986-4464085e52b9`。 - 本地任务结束:2026-08-28 14:22:03.772 +08:00。 - Agent 到前台:2026-08-28 14:22:09.022 +08:00。 - 实测结束到返回:`5250ms`,符合 5 秒目标;约 250ms 为采样间隔与前台启动调度开销。 ### Wiki 已先更新线上页面、回读 revision,再同步本地镜像: - `Architecture-and-Code-Map`:`340505ae259dc7bfae74f991e0fb72ad0daeabe9` - `Business-Rules-and-Glossary`:`0798ea888bbc55fd434e9ac31c539da7a4efea5a` - `Local-Development-and-Verification`:`bc940a7a8eaf2aa785ece5f031ae81aa6c217a4b` ### 提交与未验证范围 - 提交:`0527bcaae9e287d3d61161655fe22bbb2c6e4871`,已推送至 `origin/main`。 - 本轮未在真机 5 秒窗口内临时创建第二个任务验证取消返回,也未覆盖其他设备/ROM;取消条件由单元测试覆盖。 - 未修改或提交无关的 `gitea.zip`。 工单保持打开,等待人工验收。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:10 +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#126