|

桌面 App 也能给 Agent 控:agent-desktop 接模型 5 步教程

桌面 App 也能给 Agent 控:agent-desktop 接模型 5 步教程

作者注:本文讲解 agent-desktop 的安装、授权、snapshot/click 闭环和 MCP 接入,并说明怎样给“循环里的大脑”配置模型与 Base URL。

让编程 Agent 或自制 Agent 去点 Finder、填系统设置、操作一个原生客户端,过去基本只能靠截图、视觉模型和像素坐标,链路长,也容易点错。Vercel Labs 开源的 agent-desktop 换了一条路:它读取操作系统的无障碍树(Accessibility Tree),把桌面界面变成带 ref 的 JSON,Agent 按 ref 执行点击和输入。这就是它说的“无截图 computer use”。

这不是又一个自带 AI 的桌面机器人。 开始之前先说清三件事:

  • agent-desktop 不含模型:二进制里没有嵌入 LLM,没有 GUI,也没有交互提示。每条命令打印一个 JSON envelope 后就退出。
  • 循环在调用方:观察、行动、校验(observe-act-verify)的循环由调用它的 Agent 负责,比如 Claude Code、OpenCode 或你自己写的脚本。
  • 不做网页:网页自动化交给同门项目 agent-browser,agent-desktop 只管原生桌面应用。

既然工具本身不带模型,“大脑”就得由调用方 Agent 提供,这一步需要 API Key 和 Token。你可以把调用方 Agent 的 Base URL 指向 API易 apiyi.com,用一个 Key 调用 claude-opus-5-5、claude-sonnet-5-5 等模型。

核心价值:读完本文,你能把 agent-desktop 装好、授权、跑通 snapshot → click → 再 snapshot 的最小闭环,再通过 MCP 接进自己的 Agent,并配好模型侧的 Base URL 和型号。

agent-desktop-computer-use-model-setup-guide-image-0


agent-desktop 核心要点

先用一张表看清 agent-desktop 的定位。下表信息来自官方 README、FAQ 和文档站,观察日期为 2026-11-13。

要点 说明 对开发者的价值
数据来源 读取 OS 无障碍树:macOS 用 AX API,Windows 用 UI Automation,Linux 用 AT-SPI 不依赖截图和像素匹配,结构化程度高
输出格式 每条命令输出一个 JSON envelope 后退出,元素带 ref 方便 LLM 解析,也方便脚本做断言
默认模式 headless,走无障碍 API,不移动指针、不抢焦点 可以在后台操作,不打断用户
是否含模型 不含,循环由调用方负责 模型自选,成本和效果由调用方控制
接入方式 CLI、MCP(stdio)、skills、C 库 FFI 能接进 Claude Code、OpenCode、自制 Agent

截至 2026-11-13,GitHub 仓库 vercel-labs/agent-desktop 约 22,900 star,采用 Apache-2.0 协议,npm 包名就是 agent-desktop,当天仍有新提交。命令总数约 61 个名字、57 个可运行,分为 Observe、Act on ref、Keyboard mouse、Apps windows、Notifications、Clipboard、Wait、Sessions、Sandboxes、System 等组。

agent-desktop 如何工作:无障碍树与 ref

agent-desktop 的核心概念是 snapshot 和 ref。执行 snapshot 时,它会遍历目标应用的无障碍树,把按钮、文本框、菜单项等元素输出为 JSON,每个元素分配一个 ref。完整 ref 的形式类似 @s8f3k2p9:e8:前半段是这次 snapshot 的标识,后半段是元素编号。

ref 只属于产生它的那一次 snapshot。如果只传裸的 @e8,会得到 INVALID_ARGS。界面变化后,旧 ref 可能失效,返回 STALE_REF 或 AMBIGUOUS_TARGET,这时需要重新 snapshot。这个设计逼着调用方每次行动后都重新观察,也就是 observe-act-verify 中“校验”这一步。

agent-desktop-computer-use-model-setup-guide-image-1

上图中的“Agent 选 ref”这一步是模型在做决策。agent-desktop 负责把界面结构化地交出去,读懂 JSON、决定点哪个元素,都是调用方模型的工作。

agent-desktop 与 agent-browser 如何分工

两个项目同属 Vercel Labs,文档站也放在一起,但职责边界很清楚:

对比项 agent-desktop agent-browser
目标 原生桌面应用(Finder、系统设置、原生客户端) 网页与浏览器页面
观察方式 OS 无障碍树 浏览器侧页面结构
Chromium / Electron 应用 可通过 DevTools 端口交给 agent-browser 适合接管这类应用的网页内容
是否含模型 不含 同样作为工具供 Agent 调用
典型命令 snapshot、click、clipboard-set 面向页面的导航与交互

一个比较实用的分工是:原生窗口、菜单栏、Dock、通知交给 agent-desktop;遇到网页或 Electron 应用里的 Web 内容,就通过 DevTools 端口切到 agent-browser。

agent-desktop 版本节点与事实来源

agent-desktop 迭代很快,几个关键版本都带来了行为变化,部分属于破坏性变更。下表按事实来源标注,“未知”表示官方资料暂未明确。

版本 / 日期 主要变化 来源
1.0.0(2026-10-27) Linux 支持正式进入 1.0 官方 Changelog
1.1.0(2026-11-02) envelope 升级到 2.6;支持 macOS Dock 与 menu-bar-extras;身份证明相关破坏性变更 官方 Changelog
1.2.0(2026-11-05) 新增 MCP(agent-desktop mcp);type / set-value / clipboard-set 支持 --stdin 官方 Changelog
1.3.0(2026-11-11) 新增 agent-desktop sandbox 和 macOS sandbox provider;menu/menubar snapshot 不再带 data.window(破坏性) 官方 Changelog
Windows / Linux 沙箱 是否会提供对应 provider 未知

agent-desktop 快速上手

下面按“安装 → 授权 → 最小闭环 → MCP 接入”的顺序走一遍。

第 1 步:安装 agent-desktop

平台要求:macOS 13+;Windows 10 1809+(x64 / ARM64);Linux 为 Ubuntu 24.04+(x86_64 / aarch64),X11 或 Wayland 都可以。安装方式任选一种:

  • npm(需要 Node 18+,包内带各平台原生二进制):npm install -g agent-desktop
  • Homebrew(macOS / Linux,已进入 homebrew-core):brew install agent-desktop
  • 原生归档:从 GitHub Releases 下载,helper 需要放在可执行文件旁边

装好后先运行 agent-desktop status,确认二进制和当前平台环境正常。

第 2 步:agent-desktop 权限授权

macOS 上需要给终端或宿主进程开启“辅助功能”权限,否则读不到无障碍树。官方提供了引导命令:

  • agent-desktop permissions --guide:按提示在系统设置中完成辅助功能授权
  • 授权完成后再运行一次 agent-desktop status 复核

需要注意,授权对象是“运行 agent-desktop 的那个进程”。如果你通过 Claude Code、某个 IDE 或 MCP 客户端间接调用它,可能需要给对应的宿主应用授权。

第 3 步:跑通 snapshot → click → snapshot 最小闭环

以 Finder 为例,三条命令就能构成一次完整的观察-行动-校验:

  1. agent-desktop snapshot --app Finder -i:获取 Finder 的无障碍树,-i 用于聚焦可交互元素,输出 JSON 中带有 @s8f3k2p9:e8 这类 ref
  2. agent-desktop click @s8f3k2p9:e8:点击上一次 snapshot 中的目标元素,必须写完整 ref
  3. agent-desktop snapshot --app Finder -i:再次观察,校验界面是否按预期变化

如果第 2 步报 STALE_REF 或 AMBIGUOUS_TARGET,说明界面已经变化,回到第 1 步重新 snapshot 即可。遇到需要真实指针或键盘事件的应用,可以加全局参数 --headed,切到物理输入模式。

对于元素很多的界面,一次性完整 snapshot 会很长,也浪费模型 Token。可以分两层获取:

  • agent-desktop snapshot --skeleton --app Finder:先拿骨架,看清大致区域
  • agent-desktop snapshot --app Finder --root @<骨架中的 ref>:再从某个子树下钻

这个技巧能明显缩短送进模型的上下文。对调用方来说,上下文越短,按 Token 计费的成本越低。

第 4 步:通过 MCP 和 skills 接入 Agent

从 1.2.0 开始,agent-desktop 内置 MCP 服务,走 stdio,暴露 desktop_snapshot、desktop_click 等工具。不同客户端的配置格式略有差异,下面是示意:

  • 启动命令:agent-desktop mcp
  • 通用 JSON 配置示意:{"mcpServers": {"agent-desktop": {"command": "agent-desktop", "args": ["mcp"]}}}
  • Claude Code 示意:claude mcp add agent-desktop -- agent-desktop mcp

如果你的 Agent 支持 skills,还可以直接加载官方的使用说明,让模型知道该怎么调用:

  • agent-desktop skills get desktop、agent-desktop skills get platform:输出技能说明
  • npx skills add https://github.com/vercel-labs/agent-desktop --skill agent-desktop:通过 skills.sh 安装

需要同进程调用的场景,也可以使用 C 库 libagent_desktop_ffi。

可选:1.3.0 的 agent-desktop sandbox

1.3.0 新增了 agent-desktop sandbox 子命令和 macOS sandbox provider,可以在本机签名的 macOS 虚拟机里运行自动化,把 Agent 的操作和你的真实桌面隔离开。这不是必需步骤,最小闭环不依赖它。如果你担心 Agent 误操作真实文件,或者想跑大量探索性任务,可以优先考虑。

🚀 快速开始:MCP 配好后,调用方 Agent 还需要一个能用的模型。官方推荐的做法是在 API易 apiyi.com 控制台创建令牌,再把 Agent 的 Base URL 指过去,一个 Key 就能在 Claude、GPT、Gemini 等模型之间切换对比。


给 agent-desktop 循环接上模型“大脑”

agent-desktop 只负责“眼睛和手”,决定点哪个 ref、判断任务是否完成的“大脑”在调用方。这个环节有两个关键配置:Base URL 和模型型号。

Base URL:带不带 /v1 要分清

调用方 Agent 通常走两类协议,Base URL 写法不同,写错是 404 最常见的原因:

  • OpenAI 兼容协议(大多数自制脚本、OpenCode 的 OpenAI 兼容 provider):https://api.apiyi.com/v1,带 /v1
  • Anthropic 原生协议(Claude Code 等直接走 messages 接口的客户端):https://api.apiyi.com,不带 /v1

以 Claude Code 为例,可以用环境变量示意配置:

  • export ANTHROPIC_BASE_URL=https://api.apiyi.com
  • export ANTHROPIC_AUTH_TOKEN=你的令牌

自制 Python 或 Node 脚本使用 OpenAI SDK 时,把 base_url 设为 https://api.apiyi.com/v1,model 填 claude-opus-5-5 即可。令牌在 api.apiyi.com/token 创建,详细配置可以参考 docs.apiyi.com/faq/base-url-config.md。

自制 Agent 的循环怎么写

不想依赖现成 Agent 时,自己写一个循环也不复杂。核心步骤如下:

  1. 运行 agent-desktop snapshot --app 目标应用 -i,读取 stdout 中的 JSON envelope
  2. 把任务目标和 snapshot JSON 一起发给模型,要求它只返回下一步动作和完整 ref
  3. 执行模型给出的命令,例如 agent-desktop click @sxxxx:eN
  4. 再次 snapshot,把新结果交给模型判断是否完成;收到 STALE_REF 时直接重新观察
  5. 设置最大步数和人工确认点,避免死循环或越权操作

这里的第 2 步和第 4 步都会消耗 Token。前面提到的 --skeleton 加 --root 下钻方式,在这里会直接影响成本。

选型:claude-opus-5-5 与 claude-sonnet-5-5

两款 Claude 型号都已在 API易 型号总表上架,同时支持 chat 和 messages 端点。下表价格数据日期为 2026-11-13,单位为每 1M Tokens,型号与价格以平台型号列表为准。

型号 输入 输出 缓存读 适合的 agent-desktop 场景 可用平台
claude-opus-5-5 $4 $20 $0.2 多步骤、界面复杂、需要较强规划的任务 API易 apiyi.com
claude-sonnet-5-5 $2 $10 $0.1 步骤明确、重复性较强的日常操作 API易 apiyi.com

一个可行的思路是先用 claude-opus-5-5 跑通流程,确定提示词和步骤后,再评估能否把稳定环节切到 claude-sonnet-5-5。snapshot JSON 中会有大量重复的系统提示和工具说明,缓存读价格明显低于输入价格,所以开启提示缓存对长循环比较友好。最新价目请以 docs.apiyi.com/models 为准。

agent-desktop-computer-use-model-setup-guide-image-2


agent-desktop 排错:权限问题还是模型问题

agent-desktop 和模型属于两条独立链路,报错时先判断是哪一侧出了问题,可以少走很多弯路:

现象 所在链路 可能原因 处理方式
snapshot 为空或读不到应用 工具侧 未授予辅助功能权限,或应用本身没有暴露无障碍树 运行 agent-desktop permissions --guide,检查宿主进程授权
INVALID_ARGS 工具侧 只写了裸 ref,例如 @e8 使用完整 ref,例如 @s8f3k2p9:e8
STALE_REF / AMBIGUOUS_TARGET 工具侧 界面已变化,ref 失效 重新 snapshot
模型请求 401 模型侧 令牌错误、过期或环境变量没有生效 到 api.apiyi.com/token 核对令牌并重新导出
模型请求 404 模型侧 Base URL 的 /v1 写错,或型号名拼写错误 OpenAI 兼容带 /v1,Anthropic 原生不带;型号对照总表

简单判断方法:只要 agent-desktop 命令能在终端里单独跑出 JSON,工具侧就没有问题,剩下的报错基本都在模型侧。模型侧的 401/404 可以对照 API易 apiyi.com 文档中心的 Base URL 配置说明逐项检查。


agent-desktop 权限与隐私风险

这一节讨论的是桌面自动化本身的风险,和账号无关,但开始使用前值得认真看一遍。

辅助功能授权的分量。 在 macOS 上开启辅助功能,意味着被授权的进程可以读取并操作其他应用的界面。授权给终端或某个 Agent 宿主后,这个进程里运行的任何程序都可能获得同等能力。建议只给必要的宿主授权,用完可以在系统设置中关闭。

snapshot、剪贴板和截图都可能包含隐私。 官方明确提示,snapshot、剪贴板内容、截图、通知和 debug HTML 都可能带有桌面上的敏感信息,比如聊天内容、邮件标题、文件名和密码管理器界面。这些数据会被调用方送进模型,所以不要公开上传调试日志,也不要在 issue 中直接贴完整 snapshot。

可选 helper 会联网。 原生 CLI 本身不要求远端模型服务,但如果启用了可选的 JEV helper,它会把目标与屏幕描述发送给你配置的模型供应商。是否开启、发给谁,都要自己心里有数。

操作后果由使用者承担。 Agent 可能点错按钮、删错文件、发出不该发的消息。可以采用这些做法降低风险:在 1.3.0 的 sandbox 中试跑,限制 --app 的范围,给删除、发送、支付这类高风险操作加人工确认。另外,无障碍树读不到的应用对 agent-desktop 不可见,这是能力边界,不要指望它一定能操作所有软件。

第三方 Agent 接网关是另一类风险。 把 Claude Code、OpenCode 等第三方 Agent 接到任何 API 网关时,都要注意令牌保管、额度上限和日志中是否会写入敏感内容。这和桌面自动化风险分开评估。建议为 Agent 单独建一个令牌并设置额度,出问题时可以单独作废。


常见问题 FAQ

Q1:什么是 agent-desktop?

agent-desktop 是 Vercel Labs 开源的 computer use CLI。它通过 OS 无障碍树,让 AI Agent 看见并操作 macOS、Windows、Linux 上的桌面应用,不依赖截图或像素匹配。它是工具而不是 Agent,本身不含模型。

Q2:agent-desktop 和截图式 computer use 有什么区别?

截图式方案依赖视觉模型理解像素再给出坐标,链路长,也容易受分辨率影响。agent-desktop 直接输出结构化 JSON 和 ref,模型按 ref 操作,默认 headless 运行,不抢指针和焦点。代价是只能看到暴露了无障碍信息的应用。

Q3:agent-desktop 目前是什么版本?

截至 2026-11-13,可见的最新版本节点是 1.3.0(2026-11-11),新增 sandbox。MCP 从 1.2.0(2026-11-05)开始提供,Linux 在 1.0.0(2026-10-27)正式进入 1.0。版本更新较快,请以 GitHub Releases 为准。

Q4:agent-desktop 适合哪些场景?

– **原生应用测试**:自动点击设置面板、校验界面状态
– **编程 Agent 扩展**:让 Claude Code 在写完代码后打开桌面应用验证效果
– **重复性桌面操作**:整理 Finder 文件、读取通知、读写剪贴板

网页相关任务请交给 agent-browser。

Q5:调用 agent-desktop 的 Agent 如何快速接上模型?

1. 在 API易 apiyi.com 注册并在令牌页创建 API Key,新用户有免费测试额度
2. OpenAI 兼容客户端把 Base URL 设为 `https://api.apiyi.com/v1`,Anthropic 原生客户端设为 `https://api.apiyi.com`
3. 模型选择 `claude-opus-5-5` 或 `claude-sonnet-5-5`,再运行本文的 snapshot 闭环

Q6:MCP 配好了,Agent 却报 401 或 404,是 agent-desktop 的问题吗?

通常不是。agent-desktop 不连接模型服务,401 一般是令牌问题,404 多半是 `/v1` 写错或型号名拼写错误。先在终端单独运行 `agent-desktop snapshot` 确认工具正常,再对照 API易 apiyi.com 的 Base URL 配置文档排查模型侧。

Q7:agent-desktop 有哪些已知限制?

– 无障碍树读不到的应用对它不可见
– 部分版本带有破坏性变更(如 1.1.0、1.3.0),升级前请阅读 Changelog
– sandbox provider 目前面向 macOS,其他平台是否跟进暂时未知
– 不做网页自动化,需要配合 agent-browser


agent-desktop 核心要点 Key Takeaways

  • 工具不含模型:agent-desktop 只输出 JSON envelope,循环与决策在调用方
  • 无截图 computer use:基于 AX、UI Automation、AT-SPI 无障碍树,按 ref 操作
  • ref 必须完整:形如 @s8f3k2p9:e8,界面变化后需要重新 snapshot
  • 三平台可用:macOS 13+、Windows 10 1809+、Ubuntu 24.04+
  • MCP 一行接入:1.2.0 起 agent-desktop mcp 走 stdio
  • 网页交给 agent-browser:Electron 应用可以通过 DevTools 端口移交
  • 大脑接入:调用方 Base URL 指向 API易 apiyi.com,选 claude-opus-5-5

总结

agent-desktop 的核心要点:

  1. 定位清楚:它是桌面应用的“眼睛和手”,不含模型,不做网页
  2. 闭环简单:安装 → permissions --guide → snapshot → click → 再 snapshot,配合 --skeleton 控制上下文长度
  3. 接入灵活:CLI、MCP、skills、FFI 都可以,1.3.0 的 sandbox 适合做隔离试跑
  4. 风险要管住:辅助功能授权和 snapshot 中的隐私内容,需要按桌面自动化的标准来管理

工具侧跑通之后,剩下的工作就是给循环配一个合适的大脑。推荐通过 API易 apiyi.com 创建令牌,把 Claude Code、OpenCode 或自制脚本的 Base URL 指过去,先用 claude-opus-5-5 验证流程,再按任务复杂度评估是否切换到 claude-sonnet-5-5。


📚 参考资料

  1. GitHub – agent-desktop:官方开源仓库,含 README、FAQ、Changelog
  2. 链接: github.com/vercel-labs/agent-desktop
  3. 说明: 版本变化、命令列表和隐私提示以此为准

  4. agent-desktop 官方文档:概念与快速开始

  5. 链接: agent-browser.dev/desktop、agent-browser.dev/desktop/quick-start
  6. 说明: 安装、授权和最小闭环示例

  7. npm – agent-desktop:npm 包页面

  8. 链接: npmjs.com/package/agent-desktop
  9. 说明: 查看当前发布版本

  10. Vercel – What is computer use:computer use 概念介绍

  11. 链接: vercel.com/i/what-is-computer-use
  12. 说明: 理解无障碍树方案与截图方案的差异

  13. API易 文档中心:型号总表、Base URL 配置、Claude 能力说明

  14. 链接: docs.apiyi.com/models.md、docs.apiyi.com/faq/base-url-config.md、docs.apiyi.com/api-capabilities/claude.md
  15. 说明: 型号与价格以平台型号列表为准

作者:APIYI 技术团队
技术交流:欢迎在 API易 apiyi.com 网站首页联系我们,更多资料可访问 docs.apiyi.com 文档中心

延伸阅读

类似文章