收录:adb 远程终端目标切换(本机/220)、未命中要明确提示、uiautodev 超时 8s→30s、 序号型选择器/界面就绪防呆、动作库后续(合并面板/预制件)、MCP 平台级工具与 de_screen_text、 经验召回改进、命名统一、STF 容器状态矛盾、MCP 白名单语义缺口等。
5.6 KiB
5.6 KiB
待完成项(Backlog)
用途:记录已确认但暂缓的功能/优化,避免丢线索。完成时应移出本文件,并按「doc 同步红线」更新对应文档。 维护:新增条目写清 背景 / 期望 / 涉及文件 / 验收;完成后删除条目并在相关 doc 体现。
设备与连接
-
adb 远程终端加「目标切换」(本机 / 220)
- 背景:终端默认走
.env的ANDROID_ADB_SERVER_ADDRESS=192.168.20.220(adb 客户端生效,非本项目代码读取),因此终端里看不到本机 USB 设备(实测本机 adb 有bebeoft4ztgiskba,平台终端只显示 220 侧的192.168.20.206:5555)。 - 期望:
web/tools_api.py的/api/adb/devices、/api/adb/cmd支持target=local|remote;前端static/admin/tools.js加下拉;默认值按需。 - 涉及:
web/tools_api.py、static/admin/tools.js、doc/API.md、doc/DEPLOY.md、doc/DEVELOPMENT.md(配置速查)。 - 验收:切换「本机」时终端能列出本机 USB + 本机已连
IP:5555;切「220」时列出 220 侧设备;adb cmd同样生效。
- 背景:终端默认走
-
.env的 adb 路由键要在文档里说明(或去掉)- 背景:
ANDROID_ADB_SERVER_ADDRESS/HOST/PORT会被.env注入os.environ,adb 客户端据此把所有 adb 调用指向 220;ANDROID_ADB_SERVER_HOST是非标准键(adb 不认)。 - 期望:在
doc/DEVELOPMENT.md配置速查 /doc/DEPLOY.md写明该行为与取舍;或本地去掉这三行改走本机 adb(USB_ADB_HOST保留,平台对 220 的 USB 访问走显式-H/-P)。
- 背景:
-
220 的 Tailscale / adb server(5037) 可达性巡检(曾出现连不通超时)。
编辑器 / 元素抓取
-
未命中要"明确提示",别混成"执行了这步"
- 背景(2026-09-10):click/long_click/wait_el/swipe_until/if_el 未命中时只写
[WARNING] ... 未找到元素,前端进度仍按"执行了一步"计数、任务日志 INFO 行也照常打 → 用户看到像"成功",实际没点(db03f16e 案例就是这么误判的)。 - 期望:执行器把未命中作为该步结果(✗)返回并计入统计(如"未命中 N 步");前端任务进度/日志标红 ✗ 并给出所用选择器;任务结束汇总未命中步骤数。
- 涉及:
tasks/generic/task.py(各 handler 返回/记录命中结果)、static/admin/tasks.js/monitor.js(渲染)、doc/API.md(如需新增字段)、doc/TASK_DEV.md。
- 背景(2026-09-10):click/long_click/wait_el/swipe_until/if_el 未命中时只写
-
元素抓取(点击元素)超时——部分设备 dump 慢于平台超时
- 背景(2026-09-10 实测):
core/uiauto_helper.py:24_TIMEOUT=(1,8);192.168.20.72:5555dump 2.4s 正常,而192.168.20.206:5555与 USB 设备 dump ~18s → 平台报「uiauto2 请求超时」,编辑器抓不到元素、无法选取/回填/测试点击。设备本身正常(直接请求 uiautodev 45s 内 HTTP 200)。 - 期望:提高读超时(如
(2, 30))+ 前端/api/uiauto/elements加载中给明确提示;可选加「同一界面短时缓存」或「抓取前提示切到轻界面」。 - 涉及:
core/uiauto_helper.py、web/tasks_api.py(/api/uiauto/elements)、static/admin/editor.js、doc/API.md、doc/ARCHITECTURE.md(§3.8)。
- 背景(2026-09-10 实测):
-
自定义动作支持
action_ref引用型节点(现状:拖入画布会展开成 group,改动需同步执行器 + 编辑器)。 -
序号型 XPath / 界面就绪 的防呆(2026-09-10 db03f16e 案例)
- 背景:
(//*[@resource-id="…"])[6]这类带序号的选择器依赖"抓取那一刻该属性有 ≥6 个实例";运行时界面不同(实测抖音冷启动 5s 后仍在.splash.SplashActivity,content_layout只有 5 个)→ 序号必然失配。且步骤只有open_app(wait_home=false)+wait,没有"等首页就绪"。 - 期望:①
open_app默认/提示勾选「等待首页」,或在编辑器给"点击前自动等某元素"的建议;②抓取器对带#k/N序号的选择器加醒目提示("界面变化会失配,优先用文字/唯一 id");③抓取弹窗提醒"请先把设备停在任务运行到该步时的同一界面再抓"。 - 涉及:
core/uiauto_helper.py、static/admin/editor.js(picker 提示)、tasks/generic/task.py(open_app 等待策略)、doc/TASK_DEV.md。
- 背景:
AI 控制台 / 经验与动作
- 「🧠 经验库 / 🎬 动作库」合为一个面板(标签页切换)。
- AI 建任务 P0:平台级 MCP 工具(只读清单
task_types/groups/pool+submit_task(draft)校验)+ 把动作库当作 generic_steps 的预制件复用(见doc/AI_TASK_GEN.md§9)。 - 新增 MCP
de_screen_text(文本化看屏:前台包名 + screen_state + 可点元素文本 + OCR),并把操作纪律写进工具 description(对外部客户端尤其有用)。 - 经验召回改进:现为 bigram +
ORDER BY hits(候选只看 top50、hits 对所有命中行回写 → 马太效应);改为对称相似度/更合理候选集,hits 仅在真正注入时 +1。 - 经验/动作入库依赖模型蒸馏成功:加失败重试与可视化观测(现在只在日志里)。
其他
platform-tools→auto_control命名统一(README/服务名/单元名,待定)。- STF 容器状态确认:
doc/DEVELOPMENT.md(已停用)与doc/STF_REMOVAL.md(待人工确认)说法矛盾,需以 220 实际为准后统一。 - MCP 白名单语义缺口:
MCP_ALLOWED_SERIALS为空时并未按设计限制为"平台设备池内"(当前只校验非空),见doc/MCP.md;如需收紧需补实现。