DesktopCtl 是一个面向 AI 智能体的开源「计算机使用」工具,采用本地优先的运行时架构,不依赖云端。它的定位是让 AI 智能体能够观察并控制用户的电脑,操作方式覆盖屏幕、鼠标和键盘。
主要能力方面,DesktopCtl 允许用户自带任意 AI 模型,即使模型不具备视觉能力也可以工作。它提供 GPU 加速的文字识别和计算机视觉管线,支持以选择器优先的自动化方式(通过 --text、--token 参数)进行元素定位,并在必要时回退到坐标方式。工具内置面向智能体的显式等待机制和动作后验证,并对外提供稳定的 JSON 契约,便于智能体集成。此外,它还支持通过 macOS 辅助功能(Accessibility)枚举和调用原生菜单。
使用方式上,DesktopCtl 分为两个二进制组件:DesktopCtl.app(desktopctld)是守护进程,负责感知、状态、执行和验证;desktopctl 是无状态命令行界面,通过本地 IPC 执行动作和查询。安装方面,需使用 Rust 工具链和 just 命令运行器,并为 DesktopCtl.app 授予辅助功能和屏幕录制权限。当前仅支持 Apple Silicon 的 macOS。安装程序会把 CLI 放在 ~/.local/bin/desktopctl,把应用放在 ~/Applications/DesktopCtl.app,且不会修改 shell 启动文件,如有需要用户需自行将 ~/.local/bin 加入 PATH。发布版本带有本地 ad-hoc 签名,但未经 Developer ID 签名或公证;安装程序仅移除已安装的 DesktopCtl 应用和 CLI 的 com.apple.quarantine 属性,不改变全局 Gatekeeper 或其他系统安全设置。
文件系统布局采用 Linux 风格的统一应用目录,路径优先级为 DESKTOPCTL_HOME、XDG_DATA_HOME/desktopctl,最后是 $HOME/.local/share/desktopctl。配置存放在 config.toml,持久运行时元数据在 state/,启动器会话在 workspaces/,日志和 journal 输出在 logs/,可丢弃的截图/OCR/调试输出在 cache/,Unix 运行时套接字保留在私有临时运行时目录。首次启动时会安全地从旧版配置位置迁移有效的 JSON 配置和启动器会话,不覆盖已有目标、不动冲突的旧来源,迁移错误会报告但不会删除旧文件。
演示上,可以列出原生菜单,然后通过返回的 #menu_* ID 调起某一项;菜单列表默认省略 Apple/系统菜单、分隔符和长列表溢出内容,可用 --system 包含 Apple 菜单,用 --all 显示全部项。
适用场景为 AI 智能体在本地 macOS 环境中执行 GUI 自动化任务,例如观察屏幕、识别文字、按文本或令牌定位控件、执行点击/输入/等待流程并验证结果。
限制方面:目前仅支持 macOS,且仅限 Apple Silicon;处于活跃开发阶段;应用未经过 Developer ID 签名或公证;文档中未提供具体收费标准、价格信息,暂未提供。未来计划包括增加 doctor、更丰富的窗口/应用内省和 --explain 失败输出命令、改进本地计算机视觉和语义 UI 令牌化,以及多平台支持。