
UI-TARS 点击总是偏一点坐标定位链路排查与验证方法【免费下载链接】UI-TARSPioneering Automated GUI Interaction with Native Agents项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARSUI-TARS 是字节跳动开源的多模态 GUI 智能体适合桌面与移动端界面自动化。模型说点击哪里通常不难难的是把模型给的坐标准确落到真实屏幕上。本文以一次点击任务为主线讲清 UI-TARS 坐标从模型输出到屏幕像素的转换链路并给出可逐项核对的检查项和验证办法。一次没点中的操作说明了什么先设想一个常见场景让 UI-TARS 在 GIMP 里打开系统资源面板模型输出了click(start_box(197,525))指令也执行了但鼠标落在了旁边。问题往往不在模型看错了而在坐标的参照系模型看到的截图在送入前被smart_resize按 28 的因子调整过尺寸它输出的数字对应的是调整后的图而执行点击时用的是原始屏幕尺寸。两套坐标之间隔了一次缩放再叠加系统显示缩放、宽高参数传错点位自然偏移。所以排查顺序应该是先确认坐标在哪一层被转换再逐层核对参数最后画点验证而不是反复调模型。从截图到鼠标动作的完整链路UI-TARS 的交互闭环用户指令经模型产生 Thought 与 Action由 PyAutoGUI 执行后回到 Observation形成循环一次点击要经过四步每步都发生在 codes/ui_tars/action_parser.py 中截图缩放smart_resize把原始截图如 1920×1080缩放到宽高都能被 28 整除、总像素落在 [min_pixels, max_pixels] 区间内的尺寸且尽量保持宽高比。模型输出坐标Qwen2.5VL 系列输出的是调整后图像上的绝对坐标Qwen2VL 系列输出的是按 factor1000 归一化的相对坐标。两者走不同的换算分支。解析为归一化框parse_action_to_structure_output把模型文本里的point/start_box统一解析成 0~1 之间的 [x1, y1, x2, y2]。还原为像素parsing_response_to_pyautogui_code用归一化值乘以截图的image_width/image_height生成最终的 pyautogui 调用。理解这四点后点偏了就能定位到具体环节偏移方向固定多半出在第 1、2 步的尺寸或模型类型上偏移忽大忽小多半出在第 3 步的解析上。5 个可直接执行的检查项检查 1model_type 与真实模型是否一致parse_action_to_structure_output的model_type决定走哪条换算分支qwen25vl走绝对坐标除以 smart_resize 尺寸其他走除以 factor。用 7B 的 2.5VL 模型却传了别的类型换算分母会差一个量级。确认方式打印解析结果里的start_box若数值明显小于 1 且远小于真实位置比例基本就是分支用错了。检查 2origin_resized 宽高是否等于真实截图尺寸调用解析函数时parsed parse_action_to_structure_output( response, factor1000, origin_resized_height1080, origin_resized_width1920, model_typeqwen25vl)其中两个 origin 参数必须来自实际截屏文件的img.size而不是显示器的显示分辨率。确认方式在截屏后打印一次尺寸与传参逐项比对。检查 3系统显示缩放是否吃掉了坐标Windows 125%/150% 或 macOS 缩放下截图的像素尺寸与逻辑分辨率不一致点击 API 又按逻辑坐标计算会造成整体偏移。处理办法以截图文件的像素尺寸为准参与换算并让执行端使用同一坐标系。检查 4提示模板是否与运行平台匹配codes/ui_tars/prompt.py 提供三套模板COMPUTER_USE面向桌面MOBILE_USE面向手机与安卓模拟器多了长按、返回、打开应用等动作GROUNDING只输出动作、不带思考。桌面任务用了移动端模板动作空间不一致会导致输出格式漂移。确认方式检查模板名与目标环境一一对应。检查 5用仓库自带测试锁住解析行为codes/tests/action_parser_test.py 里有对click(pointpoint200 300/point)这类输出的解析断言。本地改动过解析相关代码后跑一遍python -m unittest确认action_type与start_box的断言仍然通过可以把解析逻辑被意外改坏这类问题提前拦住。如何验证把预测点画回截图上最直接的验证是可视化。README_coordinates.md 里给出了完整示例对data/coordinate_process_image.png1920×1080 的 GIMP 界面模型输出坐标 (197, 525)先算出模型实际看到的尺寸再按比例映射回原图new_h, new_w smart_resize(1080, 1920) # 模型看到的尺寸 x 197 / new_w * 1920 # 映射回原始宽度 y 525 / new_h * 1080 # 映射回原始高度映射结果标回截图原始截图模型需要将系统资源选项定位到红点附近换算后画回截图的点击点红点即最终落点若红点落在目标元素上链路正确落在附近但系统性偏一点重点复查检查 2、3落点完全跑偏重点复查检查 1。常见偏差速查整体平移一个固定比例多为显示缩放检查 3换算与执行不在同一坐标系。偏移量与坐标位置成正比越靠边缘偏越多smart_resize触发了 max_pixels 上限模型看到的图比预期更小核对 min/max pixels 参数是否与推理端一致。横竖方向只偏其一宽高参数互换origin_resized_height传成了宽度这类错误测试用例很难覆盖打印一次实际值最快。动作类型解析成功但坐标为空模型输出的动作写法point与start_box与预期模板不符先对照提示模板再定位解析逻辑。 建议下一步先按检查 2 打印一次截图真实尺寸 vs 传参尺寸再跑一遍可视化画点。这两步花不了十分钟却能覆盖绝大多数点击偏移问题确认链路无误后再考虑模型层面的优化。【免费下载链接】UI-TARSPioneering Automated GUI Interaction with Native Agents项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考