Agent 导航容易出错,没有反馈,调试成本很高 #69
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@super_agent_bot 刚刚你在调试,就觉#38 修复回放页段表枚举恒空的缺陷工单的时候, 需要进入到故障录波,看波形,总是出现进入错误的页面,在此浪费了很多时间。你上网络上搜索参考成熟的项目经验,看看有什么办法,解决这个问题,是我们的操作成功率高一点。
好的:会调研成熟项目里提高自动化 UI 导航成功率的做法,并结合我们的台架/回放页操作给出可行方案。
This is by an automated agent, not a human.
调研完成。先给结论:成熟项目的经验里,提高导航成功率靠的不是把像素认得更准,而是三件事——让页面状态可查询、把多步按键行走改成一步直跳、让每步动作都带断言。 我们已经有一套闭环导航器
scripts/board_ui_nav.py(每按一键重新认屏、以页面身份定到达,2026-10-25 盲走翻车后建的),这次还反复走错,是因为这三件事恰好都缺着。一、这次为什么总进错页(证据都是仓内留痕)
Drivers/BSP/UI/ui_net_sink.h);页面 id 只在开/关页瞬间进串口一行(ui_content_page.c的page open: id=...),菜单层的移动和页内子态零日志。于是主机只能拿 3200 字节像素帧反推页面身份——「没有反馈」属实,且缺在协议层。BoardDevice.key),而 10-31 已立纪律「要等帧流静默 ≥900 ms 再抓,否则拿到的是上一屏」(脚本头注①,代码未同步);根列末两行的子菜单弹框被屏裁掉、选带根本看不见(自检记录/运行记录已被KNOWN_UNREACHABLE记账)。ui_standby.csb_key_cb);级联列光标记忆上次停留行、上下还首尾环绕(ui_menu.c:169/176),「进列按 k 次下」的算术不成立。这三条纪律都写在脚本头注里,但绕开脚本自己走就会踩。--board --to wave_play(见docs/测试说明/测试数据/wave_enum_20261102/README.md),可调试过程中手里用的却是临时自写的 walk 系列脚本、还在弹框误判时改用盲按d*9。规程沉淀在docs/UI设计/UI_自动化测试流程.md§7 和脚本头注里,技能面和 AGENTS.md 只把「UI 回归改动」路由过去、没有路由「板端交互操作」。10-25 盲走同款坑(9 个应到达态实测只有 3 个名副其实,§7.1 表)当时写过教训,这次又踩了一遍——说明沉淀形态(纯文档)到不了正在调试的会话手里。二、成熟项目是怎么做的(本轮检索的对应关系)
dump_hierarchy()回 XML、waitForExists等结构化条件desc->id、ui_menu.c的s_path/s_sel/s_depth全是现成数据goto URL/ Android intentcache: true复用重复动作;Agent Workflow Memory:把历史成功轨迹归纳成可复用工作流,WebArena 相对成功率 +51.1%、步数还更少#page=寻径表 + 黄金键序就是这个形态;补--trace步迹的留档与复判即可*IDN?/*OPC?惯例;Anthropic computer-use 也推荐显式工具定义与轨迹记录而非裸像素多模态端侧 agent(Mobile-Agent 系列、UI-TARS)也在感知/规划/反思/记忆上分治、落错屏靠反思恢复——与我们 UNKNOWN→dump 现场+退避的机制同形,方向没有被业界推翻,欠的是把「身份」做成可查询的一等数据。
三、建议动作(按性价比排序)
UI_自动化测试流程.md§7;明令禁止临时脚本裸注键。s关页回 home 再判(防 ENTER 还原把坏页重开)。顺手修一个真 bug:--walk默认存证目录ci-artifacts/uinav/walk与 BOARD_TRUTH 复判读的ci-artifacts/uiwalk不是同一个,真机留档帧的回判实际空转。ui_net_sink双端共用 → 模拟器同步白得一条查询;认屏降级为 STATUS 不可用时的兜底。ui_page_registry,查看密码自动过),执行类页 clear/reset 维持拒绝,到达后串口打身份戳留痕。成功率提升的最大单项——导航从 N 步模糊变成 1 步确定。ui_menu.c里 ESC 与 LEFT 同样弹层相互矛盾,上板实测后收口成一份口径。1、2、5 不动固件,3、4 是固件小切口(都会跑 /keil-build + 台架验证再走评审)。您点头哪几条,我就按条立工单——1、2 可以直接开工。
调研完成,完整办法已发到 Issue #69 评论:先定位了导航容易出错的四个根因(协议层无页面身份反馈、认屏时序未同步、待机键会重开刚关的坏页、根列末两行被屏裁),再给出对应办法,如给 KEY 应答加页面身份回读、把认屏静默阈值与 900ms 纪律对齐、开页前强制状态校验等。
@super_agent_bot 1 2 3 4 5 都进行实施
收到:1–5 五条全部实施——固件加 7003 STATUS 查询与 bench 专用 GOTO 直跳、导航器纪律同步与存证目录修复、board-ui-nav 技能与 AGENTS 路由、两项台架复核收口。会按规矩走 Keil 构建、门禁与台架验证,结果回本 issue。
super_agent_bot referenced this issue2026-11-02 22:23:43 +08:00
This is by an automated agent, not a human.
5 条建议已全部实施并经真机验证,PR 已提交:PR #70(说明与台架证据评论均为中文)。
合入后 agent 再进故障录波调试的形态:
--goto wave_play一步直达回放页(bench 固件),不再级联盲走;任何时候--where一帧 STATUS 报文就知道"现在到底在哪屏"(含待机态——这正是过去落错页的隐藏变量);生产固件对 GOTO 按编译闸恒回"不支持",身份查询则保留在生产版。两项台架复核也有了定论:被裁弹框两叶菜单步进确认不可达(绕行=GOTO,已写进限度账),菜单态 s 键实测与 l 同样收列、文档旧断言已按实测定正。调研提的五条导航改进已全部实施并真机验证:PR #70 就绪待人工合并。实机录波回放页一步直达、页面身份可回读,烧录闭环通过、台架锁已释放。PR 正文已按你的要求用中文书写。
@super_agent_bot 这个工单已经完成,可以放到已完成里了
已把 #69 移入「已完成」列(卡片同步核验通过)。PR #70 仍等你合并。