SwiftAutoGUI 桌面自动化工具包

用 Swift 和 sagui 自动操作 macOS 界面,并可让视觉模型按目标循环观察与执行。

Star 数
★ 94
最近更新
18 天前
License
MIT
主语言
Swift

30 秒速览

运行形态
命令行工具代码库 / SDKAgent 插件 / 技能
可在哪里用
通用 · 跨平台Claude Code · OpenAI API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
macOS 27.0+Swift 6.2+辅助功能权限屏幕录制权限Chromium 远程调试会话OPENAI_API_KEYShell / 命令行网络访问本地文件系统
典型场景
需要在 Swift 应用中自动点击、输入和执行快捷键的 macOS 开发者,可用 Action API 编排界面操作。
不适合
  • 需要在 macOS 27.0 以下版本运行的用户
  • 需要在没有辅助功能或屏幕录制授权时控制原生界面的团队

这个 Agent 能做什么,适合哪些场景?

SwiftAutoGUI 是面向 macOS 的 Swift 自动化库,同时提供可通过 Homebrew 安装的 sagui 命令行工具。它支持鼠标、键盘、截图、图像识别及 AI Agent;Agent 按 Observe → Think → Act 模式循环观察屏幕、推理并执行操作,直到达成目标或达到迭代上限。开发者可在 Swift 代码中组合 Action,也可调用 Agent API;CLI 还提供确定性的原生界面和 Chromium CDP 命令。可选的 SwiftAutoGUIBrowser 通过 CDP 操作已有 Chromium 调试会话,并将浏览器操作限制在浏览器后端,不回退到原生输入。运行要求为 macOS 27.0+ 和 Swift 6.2+;原生界面自动化需要相应系统权限,云模型需配置提供方凭据。

在 Swift 程序中导入 SwiftAutoGUI,或通过 Homebrew 安装 sagui。单步操作可调用 Action.leftClick、Action.write 和 Action.keyShortcut,也可将多个 Action 组成序列执行。Agent 使用 vision-capable LLM 观察屏幕并循环执行目标,例如通过 sagui agent "Open Safari and search for Swift" 操作桌面;支持 OpenAI 提供方,CLI 默认使用设备端 Apple 模型。若启用屏幕上下文,可用步骤级 Accessibility 标识定位界面元素;操作返回结构化结果,界面发生变化时 Agent 会重新观察。另可添加 SwiftAutoGUIBrowser,连接已启动的 Chromium CDP 会话,观察页面并按角色、名称或域名执行浏览器操作。

  1. 需要在 Swift 应用中自动点击、输入和执行快捷键的 macOS 开发者,可用 Action API 编排界面操作。
  2. 想用自然语言完成桌面任务的 macOS 用户,可通过 sagui agent 让 Agent 观察屏幕并执行步骤。
  3. 需要对已有 Chrome、Edge 或其他 Chromium 调试会话进行语义化操作的开发者,可选用 SwiftAutoGUIBrowser。
  4. 希望在 Claude Code 中控制原生 macOS 应用或 Chromium 页面的用户,可安装插件并调用对应技能。
  5. 需要自动化浏览器导航或点击的团队,可设置 allowedDomains,并为跨源导航和下载实现授权策略。

如何安装或部署这个 Agent?

原生 macOS 自动化要求 macOS 27.0+;从 Swift Package Manager 将 SwiftAutoGUI 添加到 Package.swift:

.dependencies: [
    .package(url: "https://github.com/NakaokaRei/SwiftAutoGUI", branch: "master")
]

将产品添加到目标依赖后,可通过 Homebrew 安装 CLI:

brew install NakaokaRei/tap/sagui

若需浏览器自动化,在目标中添加可选产品 SwiftAutoGUIBrowser,并以专用用户目录启动 Chromium 的远程调试端口。原生控制需为运行程序的终端授予辅助功能权限;Claude Code 原生控制还需屏幕录制权限。使用 OpenAI 时需提供 OPENAI_API_KEY。

如何使用这个 Agent?

在 Swift 6.2+ 项目中导入 SwiftAutoGUI,并用 Agent 配置模型和目标:

import SwiftAutoGUI

let backend = AutomationModels.openAI(apiKey: "sk-...", model: "gpt-5.6-sol")
let agent = Agent(model: backend, maxIterations: 15, visionMode: .automatic)
let result = try await agent.run(goal: "Open Safari and search for Swift")
print("Completed: \(result.completed), Steps: \(result.iterationsUsed)")

也可用 sagui 执行键盘和鼠标命令:

sagui key list
sagui key shortcut return
sagui mouse click --x 100 --y 200

CLI 默认使用设备端 Apple 模型;选择 OpenAI 时,设置 OPENAI_API_KEY 并运行:

sagui agent "Open Safari and search for Swift" --provider openai

浏览器后端需先启动 Chromium 调试会话,再连接其 loopback 端点并设置导航域名白名单;跨源导航和下载需要 BrowserActionAuthorizing 实现。

这个 Agent 有哪些优点和局限?

优点
  • 同时提供 Swift 库和 sagui CLI,可按需选择嵌入应用或直接从终端操作。
  • Agent 支持自动、始终或禁用视觉模式;automatic 在有可操作 Accessibility 元素时可省略截图。
  • 可选 SwiftAutoGUIBrowser 将 Chromium CDP 浏览器操作与原生 macOS 自动化分开,避免浏览器操作意外回退到系统输入。
  • 浏览器导航可配置域名白名单;过期 DOM 元素会安全失败,而不是点击旧坐标。
局限
  • 要求 macOS 27.0+ 和 Swift 6.2+,不适合较旧的 macOS 环境。
  • 原生控制要求授予辅助功能权限;Claude Code 的原生控制还需屏幕录制权限。
  • OpenAI 使用需提供 API 密钥;README 未说明模型调用费用。
  • 浏览器自动化依赖已启动的 Chromium 远程调试会话;跨源导航和下载需额外实现授权接口。

这个 Agent 与同类方案有什么区别?

README 将项目描述为受 pyautogui 启发,并提供 SwiftAutoGUIBrowser 作为可选的 Chromium CDP 浏览器自动化产品。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
SwiftAutoGUI 桌面自动化工具包 当前 60 · 存在缺口 命令行工具免费 + 模型费 ★ 94 18 天前 Swift Claude Code · OpenAI API
macOS Harness 55 · 缺口较多 命令行工具免费 + 模型费 ★ 1k 21 天前 Python Codex · Claude Code
Ghost OS 证据不足 命令行工具免费 ★ 1.7k 7 个月前 Swift Claude Code
AIHawk – AI 浏览器代理 59 · 缺口较多 MCP 服务器免费 + 模型费 ★ 32k 5 天前 TypeScript Codex · Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
60/ 100 五分制 3.0 / 5
信任安全 13/29
可靠稳定 8/14
适用触发 14/18
规范维护 11/18
有效结果 9/13
证据核验 5/8
查看各维度的扣分理由
信任安全13 / 29 · 2.2/5

README 說明原生自動化需要 Accessibility 與 Screen Recording 權限,也區分只用 CDP 的瀏覽器操作;瀏覽器政策可限制導覽網域,跨來源導覽與下載預設拒絕,且瀏覽器後端不會退回原生輸入。這支持最小權限與外部效果控制得 2、2 分,但原生 Agent 可自主操作,沒有通用的每步確認說明,因此 user_confirmation 得 1 分。README 說明 OpenAI 金鑰可由環境變數或參數提供、PCC 條件及雲端備援需明確選用,資料流透明得 2 分;未見金鑰保護、截圖或畫面內容處理政策,敏感資料得 1 分。依賴安全僅有工作流程與固定的 Apple Chat Completions adapter 說明,沒有依賴風險審查或緩解證據,得 1 分。UI 改變會停止剩餘批次、重新觀察,過期元素會安全失敗,但沒有通用復原機制,rollback 得 1 分。README 列出靈感來源與貢獻者,但來源歸屬及發布者維護身分有限,source_attribution 得 1 分。

可靠稳定8 / 14 · 2.9/5

README 對 vision mode 預設、舊 reasoning-effort 選項移除及 provider 條件有具體說明,並描述 UI 改變後重新觀察的行為;仍有對各產品說明是否完全一致的限制,self_consistency 得 2 分。README 提供 SPM、Homebrew 與可選瀏覽器產品安裝方式,但 SPM 範例使用 master 分支,且未提供依賴可用性或鎖定策略證據,dependency_availability 得 1 分。結構化 action 結果、過期元素安全失敗,以及工作流程收集測試失敗細節,支持 failure_messages 得 2 分;未達滿分是因未見完整錯誤目錄或使用者端錯誤指引。

适用触发14 / 18 · 3.9/5

文件涵蓋 Swift 函式庫、CLI、Claude Code 插件、原生 macOS 與 Chromium CDP 使用情境,audience_and_scenarios 得 2 分;情境清楚但沒有更完整的受眾或選型指南。瀏覽器專用後端明確拒絕原生動作、跨來源與下載需授權,且區分本機及雲端模型,capability_boundaries 得 3 分。Agent 目標透過命令明確輸入,提供 provider 與 vision mode 選項,trigger_precision 得 2 分;未見更細的觸發條件或互動前確認設定。要求 macOS 27、Swift 6.2,並說明特定 PCC 條件與 Chrome 136+ 專用 profile 要求,environment_fit 得 2 分;適用環境具體但較窄。

规范维护11 / 18 · 3.1/5

README 以需求、安裝、範例、瀏覽器後端、Agent 與插件分節,並連到 DocC 文件,information_architecture 得 2 分;完整 API 仍需查外部文件。安裝步驟涵蓋 SPM、Homebrew、權限及瀏覽器設定,install_notes 得 2 分;未完整處理所有平台與故障排除。SwiftAutoGUI、SwiftAutoGUIBrowser、sagui 等名稱在主要用法中一致,naming_stability 得 2 分;未見完整命名政策。示例包括基本動作、Agent、瀏覽器與 CLI 命令,examples_and_faq 得 2 分;提供 FAQ 的證據不足。文件列出瀏覽器後端限制、權限要求、PCC 條件及已移除選項,known_limitations 得 2 分;未見涵蓋所有風險的限制清單。LICENSE 提供完整 MIT 條款,license 得 3 分。固定 revision 的來源材料未提供版本發布政策或變更記錄,versioning_changelog 得 1 分。列出單一貢獻者,但發布者身分未經驗證,且未清楚說明維護責任或更新承諾,maintenance_responsibility 得 1 分。

有效结果9 / 13 · 3.5/5

Agent 可結合畫面觀察、Accessibility 元素、動作執行與結果回報;CLI 也提供可重現的直接操作命令,output_usability 得 2 分。原生 UI 與 Chromium 語意操作、結構化 action 結果及可選本機模型呈現明確增益,marginal_value 得 2 分;效益依賴授予系統權限與適合的模型及場景。cost_benefit 得 2 分:文件提供 on-device 預設及雲端選項,並將瀏覽器支援拆成可選產品;但沒有量化成本或效益證據。

证据核验5 / 8 · 3.1/5

README 對安裝、權限、提供者選擇與瀏覽器政策提供具體步驟,工作流程也列出建置、測試及文件建置任務,claim_traceability 得 2 分;本次材料未包含實際執行結果。README、LICENSE 與工作流程從不同檔案支持安裝、授權和 CI 設定,cross_source_corroboration 得 2 分;材料對實際產品行為的跨來源核實有限。README 將 demo、功能說明、限制及 workflow 呈現為不同內容,fact_inference_separation 得 2 分;仍有部分功能主張只有 README 描述,無法由所給材料獨立確認。

风险与缓解建议
  • 原生 Agent 可操作滑鼠與鍵盤並觀察螢幕;授予 Accessibility 和 Screen Recording 權限前,應確認目標應用與操作範圍。
  • 材料未說明 API 金鑰、截圖或畫面內容的完整保存與傳輸政策;使用雲端 provider 時請避免將敏感畫面送出。
  • 安裝範例使用 master 分支;目前材料沒有提供固定版本或依賴安全審查證據。
证据充分度:低 评估于 2026年11月4日 审查版本 37717fa71dfa
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. 1.0.0
    发布说明摘录
    What's Changed * Publish BrowserAgent documentation on GitHub Pages by @NakaokaRei in https://github.com/NakaokaRei/SwiftAutoGUI/pull/126 * chore: migrate pbxproj to xcproj by @NakaokaRei in https://github.com/NakaokaRei/SwiftAutoGUI/pull/127 * Unify AI automation with Foundation Models language models by @NakaokaRei in https://github.com/NakaokaRei/SwiftAutoGUI/pull/129 Full Changelog: https://github.com/NakaokaRei/SwiftAutoGUI/compare/0.30.0...1.0.0
    在 GitHub 查看 ↗
  2. 0.30.0
    发布说明摘录
    What's Changed * Add dedicated Chromium CDP browser backend by @NakaokaRei in https://github.com/NakaokaRei/SwiftAutoGUI/pull/123 * Add deterministic browser commands and Claude Code Skill by @NakaokaRei in https://github.com/NakaokaRei/SwiftAutoGUI/pull/124 * Add real-browser integration CI by @NakaokaRei in https://github.com/NakaokaRei/SwiftAutoGUI/pull/125 Full Changelog: https://github.com/NakaokaRei/SwiftAutoGUI/compare/0.29.0...0.30.0
    在 GitHub 查看 ↗
  3. 0.29.0
    发布说明摘录
    What's Changed * Add semantic element targeting and verified Agent execution by @NakaokaRei in https://github.com/NakaokaRei/SwiftAutoGUI/pull/119 * Fix tiled image recognition Metal crash by @NakaokaRei in https://github.com/NakaokaRei/SwiftAutoGUI/pull/121 Full Changelog: https://github.com/NakaokaRei/SwiftAutoGUI/compare/0.28.0...0.29.0
    在 GitHub 查看 ↗

常见问题

能否只在 Swift 程序中使用,而不安装 CLI?
可以。通过 Swift Package Manager 添加 SwiftAutoGUI,并在目标中依赖该产品即可。
运行原生界面自动化需要哪些权限?
需要为运行程序的应用授予辅助功能权限。Claude Code 的 macOS 原生控制还要求屏幕录制权限;纯浏览器 CDP 操作不需要这两项权限。
Agent 是否必须使用 OpenAI 云模型?
不必。CLI 默认使用设备端 Apple 模型;Swift 示例提供 OpenAI 模型配置。README 还提及 PCC,但要求符合条件的应用或可执行文件具备 Apple 管理的 entitlement。
浏览器 Agent 可以操作原生 macOS 应用吗?
不能。浏览器 Agent 仅支持浏览器后端;原生应用、窗口、Accessibility 标签和坐标鼠标操作会作为不支持的操作失败。
跨源跳转和下载默认开放吗?
不开放。需要提供 BrowserActionAuthorizing 实现;没有该实现时,这些操作会被拒绝。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents