技术 · 熟练
让 Agent 别看截图,先读控件树
它点歪不是手抖,是没看清那个按钮叫什么
让 AI 操作一个只有图形界面的软件,失败常常不是「它不懂」,而是「它没看清」:屏幕上给它的只有像素,它得猜哪个区域是按钮、点下去会发生什么。套一层命令行外壳是第一条路(见同题那一页),但它要求这个软件能被打包;读控件树是第二条路 —— 操作系统本来就为每个可交互控件维护了名字、类型、状态(禁用 / 已选 / 可编辑),把它取出来交给模型,就能让「点哪个」从猜变成查。这一页给的是这条路的四步与三条边界。
方法 · 一图看懂
1
先问有没有控件树 — 桌面原生控件与网页有;画布、游戏、自绘面板、远程桌面画面没有
2
先要快照,再动手 — 第一句就让它报「有哪些可点的、各自叫什么、现在什么状态」
3
按 ref 点,不按坐标点 — 坐标随分辨率与缩放漂移,同一次会话里的 ref 是稳的
4
动完再取一次快照 — 界面一变旧 ref 可能失效,靠回读确认「这一步真的发生了」
5
截图只做兜底 — 读不到控件时退回视觉,并且明确告诉它「这一次你只能看像素」
原理 · 为什么有效
1. 这件事的瓶颈不在模型的智力,在信息形态。截图给的是「哪些像素亮」,控件树给的是「这里有一个叫『提交』的按钮,现在可点」—— 后者本来就是结构化数据,模型不必先做一次视觉识别再猜语义。
适用场景
适合:1. 必须继续用的行业软件 / 单机客户端,没有 API,但有原生控件(标准窗口、菜单、输入框、列表)。
不适合:1. 画布型界面(设计工具画布、游戏、自绘图表)—— 控件树基本是空的,只能退回视觉。
自测 · 5 问
我说得出这个界面到底有没有控件树吗 —— 还是只知道「它是个软件」?
第一句指令是「先报快照」,还是直接让它「点那个按钮」?
我让它按 ref 点,还是仍然在提示词里写坐标或「屏幕中间偏右」?
每一步之后有没有回读动作,用来确认这一步真的发生了?
读不到控件的界面,我有没有明确告诉它「这次只能看像素」,并降级到视觉模式?
怎么上手 · 验证步骤
先挑一条只读的流程试:打开某个窗口、把列表里的前十条抄成一张表、什么都不提交。第一轮只验证一件事 —— 它报出来的控件名,和我肉眼看到的是不是同一批。第二轮再加一个动作(点开一条记录),并让它点完回读一次「现在标题是什么」。两轮都顺了,再碰会写入的那一步;写入前后各留一次人工确认,别一次放开。顺序不能反:先证明它看得见,再让它动手。
跑完一周回头看三件事:它报的控件名里有多少是「看不懂但确实存在」的(多,说明界面本身命名混乱,需要你先给它一张对照表);它有没有在同一个位置反复点空(有,说明那一片是画布或自绘控件,该换路子去套壳);它回读出来的状态和你亲眼看到的是否一致(不一致,说明它在读缓存的旧快照)。三条里有一条中,先把动作收回到只读。