- GUI 自动化
- AI 应用
- 桌面应用
- AI 技能
【免费下载链接】agent-desktop
Agent Desktop gives any agent reliable computer use on the desktop. Built with Rust, it sees any app's real UI structure through OS accessibility trees and operates it — refs stay stable and actions stay safe to retry, instead of guessing from pixels.
agent-desktop 是一款用 Rust 编写的桌面电脑使用(Computer Use)工具:它通过操作系统的无障碍(Accessibility)树读取任意应用真实的 UI 结构,让 AI Agent 能稳定地"看见"并操作桌面应用。本文深度讲解它的核心特性——渐进式骨架遍历(Progressive Skeleton Traversal):先用一张 383 Token 的"骨架地图"快速了解 Slack 这样的密集应用,再按需钻取目标区域,相比整树快照节省 78%~96% 的 Token,把宝贵的上下文留给 Agent 真正去思考。
🧐 为什么 Agent 会被"密集应用"拖垮?
传统的"整树快照"思路是:每次观察都把应用的完整无障碍树读一遍。这在 Slack、VS Code、Discord 这类 Electron 应用上是灾难性的:
- 一次完整快照有500+ 节点,消耗约12,000+ Token;
- 以 Slack 为例,一次常规快照实测30,743 Token(3 次采集的中位数);
- 即使加上
-i --compact只保留交互元素,Slack 仍然要~5,400 Token / ~204 节点。
而 Agent 每一步都在为 Token 付费。更关键的是:绝大多数时候,Agent 只需要看一小块区域——比如"频道列表"——却被迫把整棵巨树塞进上下文。
🗺️ 工作原理:骨架概览 + 按需钻取
渐进式骨架遍历把"一次性读全树"改造成"先读地图,再走进街区",只靠两个新参数:
第一步:骨架概览(--skeleton)snapshot --skeleton只遍历 3 层深度。被截断的容器不再展开子树,而是显示一个children_count(直接子节点数量),例如"Channels"区域显示children_count: 42。在截断边界上的有名称容器会获得 ref(如@e3),作为后续钻取的入口。
第二步:按需钻取(--root @ref)snapshot --root @e3从之前发现的 ref 处开始遍历,只读该子树。新分配的 ref 会合并进已有的 refmap,而不是整体覆盖。
关键设计(由浅入深的稳定性保障):
| 机制 | 说明 |
|---|---|
children_count零开销获取 | 边界节点用 O(1) 的count_children()取数量,不做子树 IPC 遍历 |
| 作用域失效(Scoped Invalidation) | 重复钻取@e3只会替换@e3子树的旧 ref,骨架 ref 和其他区域的 ref 全部保留 |
| ref 计数器连续累加 | 多次钻取后,骨架 ref + 各区域 ref 共存,Agent 的知识持续积累 |
| 与现有参数完全可组合 | --compact、-i、--max-depth、--surface均可叠加使用 |
💻 完整实战:4 条命令操作 Slack
以"点击 Slack 的某个频道"为例,这是官方推荐的密集应用标准工作流:
# 1️⃣ 骨架概览 —— 3层地图,Slack 实测仅 383 Token agent-desktop snapshot --skeleton --app Slack -i --compact # 保留返回的 snapshot_id,例如 s8f3k2p9 # 输出中能看到区域:@e2 = group "Channels" (children_count: 42) # 2️⃣ 钻取感兴趣的区域 —— 现在才看到 42 个频道的完整细节 agent-desktop snapshot --root @e2 --snapshot s8f3k2p9 -i --compact # 3️⃣ 对钻取时发现的元素执行操作 agent-desktop click @e18 --snapshot s8f3k2p9 # 点击 general 频道 # 4️⃣ 重新钻取同一区域,验证状态变化 agent-desktop snapshot --root @e2 --snapshot s8f3k2p9 -i --compact整个流程:3 次观察 + 1 次动作,总 Token 大约只有单次完整快照的1/3 到 1/6。官方测算中,250K 上下文窗口下,"骨架 + 钻取"模式可比常规快照多撑约10 倍的使用时长。
🎯 什么时候可以跳过骨架?
骨架模式并非万能,以下场景直接换更简单的方式即可:
- 简单应用:Finder、计算器这类元素少的应用,直接
snapshot --app Finder -i全量快照; - 目标明确:已知元素的准确 role 或名称时,用
find --role button --name "X" --exact一步到位; - 聚焦型 surface:菜单、弹窗(sheet/alert)本身就很聚焦,用
snapshot --surface menu即可。
🚀 快速上手
# 安装(自动下载预编译二进制) npm install -g agent-desktop # 检查/申请 macOS 辅助功能权限 agent-desktop permissions --request # 对任意密集应用跑一次骨架概览 agent-desktop snapshot --skeleton --app "Slack" -i --compact📚 参考资料与延伸阅读
- 项目主页文档:README.md(完整命令清单与核心工作流)
- 渐进式骨架遍历官方工作流模式:skills/agent-desktop/references/workflows.md
- Agent 内置技能说明:skills/agent-desktop/SKILL.md
- 功能设计规划文档:docs/plans/2026-03-10-feat-progressive-skeleton-traversal-plan.md
- 钻取与 refmap 合并的核心实现:crates/core/src/snapshot_ref.rs
- 功能特性速览:docs/faq.md
一句话总结:让 Agent 先读地图,再走进街区——agent-desktop 的渐进式骨架遍历用两个参数(--skeleton与--root)实现了 78%~96% 的 Token 节省,是密集桌面应用自动化的标配姿势。🚀
- GUI 自动化
- AI 应用
- 桌面应用
- AI 技能
【免费下载链接】agent-desktop
Agent Desktop gives any agent reliable computer use on the desktop. Built with Rust, it sees any app's real UI structure through OS accessibility trees and operates it — refs stay stable and actions stay safe to retry, instead of guessing from pixels.
相关推荐
渐进式图像加载库 progressive-image.js 使用教程
渐进式图像加载库 progressive image.js 使用教程 项目介绍 progressive image.js 是一个实现渐进式加载图像效果的Java
Go map 遍历过程深度解析:随机起点、mapiterinit 与渐进式扩容下的迭代机制
Go map 遍历过程深度解析:随机起点、mapiterinit 与渐进式扩容下的迭代机制 导读 :本文以 Go map 的 range 遍历为主线,完整还原底
文档教程unified AST操作进阶:深度遍历与节点修改技巧
unified AST操作进阶:深度遍历与节点修改技巧 🚀 深入掌握AST处理的艺术,解锁高效内容转换的终极指南 unified是一个强大的JavaScrip
后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考