提出时间:2026-09-04。
用户反馈 Android Agent 执行 PDD 采购时多次因按钮无法点击或规格无法选中而失败;既有针对不同页面形态的修复仍反复出现。用户确认参考 D:\OPC\agent_admin\docs\agent 的动作模型,优化当前项目 Agent。
D:\OPC\agent_admin\docs\agent
Gitea MCP 回退说明:当前会话未提供项目 Gitea MCP 工具,因此按仓库规则回退 Gitea API;凭据仅从被 Git 忽略的 gitea.env 读取。
gitea.env
openSpecPanel
ACTION_CLICK
clickFreshDetailed
swipePurchase
specPanelContainer
after
AUTO
SCROLL
SELECT_OPTION
本工单不新增 UI 页面或交互,不需要 UI 原型。架构与安全设计以本工单方案及以下既有规则为依据:
android
有长期文档影响:需要更新 Android-Agent-API-Contract 与 Business-Rules-and-Glossary,记录规格动作受控手势兜底、后置验证、容器滚动及不可逆动作排除边界;按 Wiki-first 流程在线更新、回读 revision 后同步本地镜像。
Android-Agent-API-Contract
Business-Rules-and-Glossary
PURCHASE_SPEC_PANEL_EVIDENCE_NOT_MATCHED
PURCHASE_SPEC_ENTRY_CLICK_NO_EFFECT
selectSpec
android/app/src/main/java/cn/ilapage/goauto/agent/automation/PurchaseRehearsalExecutor.kt
android/app/src/main/java/cn/ilapage/goauto/agent/automation/GoAutoAccessibilityService.kt
android/app/src/test/java/cn/ilapage/goauto/agent/PurchaseRehearsalExecutorTest.kt
docs/03-business-rules-and-glossary.md
docs/08-agent-api-contract.md
./android/gradlew.bat -p android test
./android/gradlew.bat -p android assembleDebug
./scripts/verify.ps1 -Component android
./android/gradlew.bat -p android testDebugUnitTest --rerun-tasks
python dev_scripts/harness.py check --strict
sync
sync --check
git diff --cached --check
测试覆盖:已选规格不重复点击、失败动作后的单次中心手势、手势后选中验证、两种动作均无效果、未知面板证据、精确规格面板容器滚动、不可逆/支付文字手势拒绝。
c7f56f233263b3c83df7e31cf75c89c48ff24111
a48b6a104c9b96834bbe122a226ba50baf8e4f93
同步时两页线上 Wiki 已包含此前尚未进入本地镜像的 #201/#205/#212/#213 长期事实;为保证镜像与对应 revision 完整一致,本提交按 Wiki-first 规则同步了页面当前完整正文,没有改动这些既有事实。
feat/214-verified-purchase-actions
683aa9c
fix(agent): 验证采购规格点击并锁定面板滚动 (#214)
origin/feat/214-verified-purchase-actions
PKG110
adb install -r
Success
versionCode=52
versionName=0.9.39
No dependencies set.
The note is not visible to the blocked user.
原始需求摘要
提出时间:2026-09-04。
用户反馈 Android Agent 执行 PDD 采购时多次因按钮无法点击或规格无法选中而失败;既有针对不同页面形态的修复仍反复出现。用户确认参考
D:\OPC\agent_admin\docs\agent的动作模型,优化当前项目 Agent。Gitea MCP 回退说明:当前会话未提供项目 Gitea MCP 工具,因此按仓库规则回退 Gitea API;凭据仅从被 Git 忽略的
gitea.env读取。目标
非目标
前置依赖与并行性
当前事实与根因
openSpecPanel仅在ACTION_CLICK返回成功后等待面板证据,因此“点击后未识别到商品规格面板”同时包含“点击无效果”和“面板已开但分类器未识别”两类情况。clickFreshDetailed当前只沿可点击父链执行ACTION_CLICK,没有在唯一且有效边界目标上的受控中心手势兜底。swipePurchase,按最大滚动区域选择目标,没有使用解析器已取得的specPanelContainer。after、AUTO点击、SCROLL和SELECT_OPTION是设计提案而非成熟实现,因此只借鉴动作语义,不复制其执行器。实施方案
specPanelContainer的新快照定位;优先节点滚动,必要时才在该容器内手势,保持次数与总时间有界。设计证据
本工单不新增 UI 页面或交互,不需要 UI 原型。架构与安全设计以本工单方案及以下既有规则为依据:
after、AUTO 兜底、SCROLL 容器重定位与 SELECT_OPTION 先验选中检查,仅作为动作模型参考。验收标准
ACTION_CLICK返回成功但页面无变化时,不再直接混同为面板分类失败;允许在严格安全条件下执行一次中心手势并重新验证。验证计划
android单元测试。风险
文档影响
有长期文档影响:需要更新
Android-Agent-API-Contract与Business-Rules-and-Glossary,记录规格动作受控手势兜底、后置验证、容器滚动及不可逆动作排除边界;按 Wiki-first 流程在线更新、回读 revision 后同步本地镜像。实施完成,等待验收
最终方案
openSpecPanel对无障碍点击后的新页面执行强证据验证;页面结构完全无变化时,才对同一唯一安全规格入口执行一次中心手势并再次验证。PURCHASE_SPEC_PANEL_EVIDENCE_NOT_MATCHED、PURCHASE_SPEC_ENTRY_CLICK_NO_EFFECT。selectSpec先检查精确规格是否已选中;未选中时最多一次ACTION_CLICK加一次受控中心手势,且每次都重新定位并验证。specPanelContainer;Android 优先尝试容器节点滚动动作,再在容器边界内手势。实现文件
android/app/src/main/java/cn/ilapage/goauto/agent/automation/PurchaseRehearsalExecutor.ktandroid/app/src/main/java/cn/ilapage/goauto/agent/automation/GoAutoAccessibilityService.ktandroid/app/src/test/java/cn/ilapage/goauto/agent/PurchaseRehearsalExecutorTest.ktdocs/03-business-rules-and-glossary.mddocs/08-agent-api-contract.md验证结果
./android/gradlew.bat -p android test:通过。./android/gradlew.bat -p android assembleDebug:通过。./scripts/verify.ps1 -Component android:通过(单元测试与 Debug APK 构建)。./android/gradlew.bat -p android testDebugUnitTest --rerun-tasks:通过,确认未依赖 Gradle 缓存。python dev_scripts/harness.py check --strict:通过。sync与sync --check:通过。git diff --cached --check:通过。测试覆盖:已选规格不重复点击、失败动作后的单次中心手势、手势后选中验证、两种动作均无效果、未知面板证据、精确规格面板容器滚动、不可逆/支付文字手势拒绝。
Wiki
Business-Rules-and-Glossaryrevision:c7f56f233263b3c83df7e31cf75c89c48ff24111Android-Agent-API-Contractrevision:a48b6a104c9b96834bbe122a226ba50baf8e4f93同步时两页线上 Wiki 已包含此前尚未进入本地镜像的 #201/#205/#212/#213 长期事实;为保证镜像与对应 revision 完整一致,本提交按 Wiki-first 规则同步了页面当前完整正文,没有改动这些既有事实。
Git
feat/214-verified-purchase-actions683aa9c(fix(agent): 验证采购规格点击并锁定面板滚动 (#214))origin/feat/214-verified-purchase-actions未验证与风险
真机安装记录
PKG110(ADB serial 已脱敏不写入工单)683aa9c构建的 Debug APKadb install -r,结果Success;未清除应用数据。versionCode=52、versionName=0.9.39。