SwiftAutoGUI 桌面自动化工具包
用 Swift 和 sagui 自动操作 macOS 界面,并可让视觉模型按目标循环观察与执行。
- Star 数
- ★ 94
- 最近更新
- 18 天前
- License
- MIT
- 主语言
- Swift
- FA 评分
- 60/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Claude Code · OpenAI API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 需要在 Swift 应用中自动点击、输入和执行快捷键的 macOS 开发者,可用 Action API 编排界面操作。
- 不适合
- 需要在 macOS 27.0 以下版本运行的用户
- 需要在没有辅助功能或屏幕录制授权时控制原生界面的团队
- 源码审查
- 60/100 · 存在缺口
这个 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 会话,观察页面并按角色、名称或域名执行浏览器操作。
- 需要在 Swift 应用中自动点击、输入和执行快捷键的 macOS 开发者,可用 Action API 编排界面操作。
- 想用自然语言完成桌面任务的 macOS 用户,可通过 sagui agent 让 Agent 观察屏幕并执行步骤。
- 需要对已有 Chrome、Edge 或其他 Chromium 调试会话进行语义化操作的开发者,可选用 SwiftAutoGUIBrowser。
- 希望在 Claude Code 中控制原生 macOS 应用或 Chromium 页面的用户,可安装插件并调用对应技能。
- 需要自动化浏览器导航或点击的团队,可设置 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 200CLI 默认使用设备端 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?
查看各维度的扣分理由
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 分。
README 對 vision mode 預設、舊 reasoning-effort 選項移除及 provider 條件有具體說明,並描述 UI 改變後重新觀察的行為;仍有對各產品說明是否完全一致的限制,self_consistency 得 2 分。README 提供 SPM、Homebrew 與可選瀏覽器產品安裝方式,但 SPM 範例使用 master 分支,且未提供依賴可用性或鎖定策略證據,dependency_availability 得 1 分。結構化 action 結果、過期元素安全失敗,以及工作流程收集測試失敗細節,支持 failure_messages 得 2 分;未達滿分是因未見完整錯誤目錄或使用者端錯誤指引。
文件涵蓋 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 分;適用環境具體但較窄。
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 分。
Agent 可結合畫面觀察、Accessibility 元素、動作執行與結果回報;CLI 也提供可重現的直接操作命令,output_usability 得 2 分。原生 UI 與 Chromium 語意操作、結構化 action 結果及可選本機模型呈現明確增益,marginal_value 得 2 分;效益依賴授予系統權限與適合的模型及場景。cost_benefit 得 2 分:文件提供 on-device 預設及雲端選項,並將瀏覽器支援拆成可選產品;但沒有量化成本或效益證據。
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 分支;目前材料沒有提供固定版本或依賴安全審查證據。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
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 查看 ↗ -
发布说明摘录
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 查看 ↗ -
发布说明摘录
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 查看 ↗