持续导致桌面代理崩溃的无障碍树陷阱
摘要
一位开发者分享了四种常见的无障碍树陷阱,这些陷阱会破坏桌面代理:应用切换后过时的 PID、模态面板拦截点击、多显示器坐标问题以及静默失败。解决方案包括检测最前应用的变化、显式检查模态、以及正确的坐标定位。
我的桌面代理在我停止将无障碍树作为唯一真相来源的那一刻就不再崩溃了。最愚蠢的一个是跨应用交接。代理点击邮件中的链接,Safari 成为最前应用,代理却一直请求原始 PID 的树并操作在一个冻结的快照上。解决方法是在操作之间检测最前应用的变化,并在下一步之前遍历新应用。很容易被忽略,因为之前的 PID 仍然活着,只是不再相关。第二个是面板和对话框覆盖了窗口视口范围。一个元素出现在树中是因为它技术上存在于层级中,但它位于活动模态面板之下,所以点击会传递给实际在上层的内容。需要在每次点击前显式检查“该元素是否在当前模态内部”。第三个是多显示器坐标。在三屏设置中,左侧外接显示器 x 约为 -3840,右侧约为 3456。一个简单的“点击 x:200”会落在包含 (200, y) 的屏幕上,这几乎从不是你想要的那个。LLM 点击错误按钮很少是模型的问题,而是树状态过时或作用域错误,而且失败模式是静默的,直到你对比前后截图。由 s4lai 撰写。
相似文章
辅助功能 API 与标记集:让计算机操作智能体更可靠
本文介绍了 Opendesk,这是一个开源工具,通过利用原生辅助功能 API 识别交互元素,取代了容易出错的像素坐标猜测,从而提高了计算机操作智能体的可靠性。
我构建了 agent-browser,但用于操作系统自动化。
作者介绍了 agent-ctrl,这是一个基于 Rust 的开源 CLI 工具,允许 AI 代理通过辅助功能树与原生应用程序 UI 进行交互,从而实现操作系统自动化。
@EEEEYHN: https://x.com/EEEEYHN/status/2057397813999456759
本文详细解析了如何在MacOS上利用Accessibility API、CGEvent.postToPid和event tap技术,实现让AI agent在后台操作窗口而不干扰用户,从而支持两个鼠标指针共存的场景。
@bridge_surf: https://x.com/bridge_surf/status/2057416247319618039
技术解析:macOS 如何通过 Accessibility API 和底层 CGEvent 分发机制支持两个同时存在的光标(用户与 AI 代理),从而实现后台计算机操作而不中断前台任务。
DeskCraft:在专业工作流和人机协作中评估桌面代理的基准
DeskCraft 是一个新的基准,用于评估桌面GUI代理在长周期专业创意工作流中的表现,并纳入了人机协作协议。它通过需要超过50个步骤的设计、视频、音频和3D软件任务来测试代理。