AI Automation

>> 打破沙盒:OpenClaw 联动 AppleScript,AI 智能体直控 Mac 桌面

OpenClaw AppleScript Mac 自动化为纯文本代理网关提供 macOS 桌面上的物理实体 — shell 工具、桥接脚本和一个登录会话中的本机应用程序控制。

OpenClaw 联动 AppleScript Mac 自动化桥接 Apple Silicon Mac mini
披露:SlimVps运营云Mac租赁;此guide 对于OpenClaw、AppleScript 和Automator 与供应商无关。第三方代理软件和macOS 权限是您的责任。

介绍

大多数球队都在跑OpenClaw作为纯文本operator:网关通道、HTTP 工具和从不接触图形会话的 shell 片段。这就留下了一个缺口——本机 Mac 应用程序(Keynote、邮件、音乐、System Settings)位于 Apple 的 GUI 自动化层后面,而不是在无头 SSH 管道内。

OpenClaw AppleScript Mac 自动化故意缩小这一差距桥梁图案: OpenClaw 的本地人外壳工具调用一个小型 bash 入口点,该入口点会调度AppleScript (osascript) 或者Automator工作流程另存为.workflow/ 应用程序包。智能体仍然用自然语言进行计划; macOS 仍然在登录的用户会话中执行 UI 操作。

从安全意义上来说,这并不是“破坏”苹果的沙箱——你承认自动化无障碍明确的权限。您正在给OpenClaw肉体在 Mac 桌面上:打开 Keynote、导出 PDF、微调音量、调暗显示屏 — 同时在 Telegram 或 Slack 上继续聊天回复。

若要用本地模型做规划、用 macOS 自动化做执行,请搭配阅读 OpenClaw + Ollama 云 Mac mini。启用 GUI 工具前,请先完成 OpenClaw 轻量部署,确保网关健康、launchd 与磁盘水位稳定。

根据Apple 的 macOS 自动化文档、AppleScript 和Automator 是脚本和可编写脚本的应用程序之间受支持的桥梁。

架构:贝壳桥 → AppleScript / Automator

数据流

Channel message → OpenClaw planner → shell tool "mac_desktop" → ~/bin/openclaw-mac-bridge.sh (JSON args) → osascript (inline .scpt) OR open MyWorkflow.app → Target app (Keynote, System Events, …) → stdout JSON { "ok": true, "artifact": "/path/file.pdf" }

成分表

路径/工件责任
规划师政策~/.openclaw/skills/mac-desktop/SKILL.md何时调用桌面操作;禁止的行为
工具注册~/.openclaw/config/tools/mac_desktop.jsonshell命令+超时+env
桥接脚本~/bin/openclaw-mac-bridge.sh验证JSON、调度操作、日志
AppleScript图书馆~/Library/Application Support/OpenClaw/scripts/*.applescript可重复使用Keynote/音量/亮度
Automator 导出~/Library/Application Support/OpenClaw/workflows/ExportKeynotePDF.workflow复杂的多应用序列
审核日志~/.openclaw/logs/mac-desktop.log操作,duration_ms,退出代码

会话规则:GUI 自动化需要已登录macOS用户使用图形会话(本地控制台或云 Mac 上的屏幕共享)。仅SSH 没有GUI 的会话无法驱动Keynote。

为什么不是纯shell呢?

任务curl/ 命令行界面AppleScript / Automator
将Keynote导出至PDF没有稳定的公共 CLIexportKeynote 字典中的命令
设置显示亮度没有便携式单衬管tell application "System Events"
批准 Finder 对话框不可能无头具有辅助功能的 UI 脚本

八步操作手册

步骤 1 — 基线网关和 GUI 会话

ssh user@your-mac openclaw --version curl -s http://127.0.0.1:11430/health whoami ls /dev/console # should exist when GUI session active

通过条件:网关HTTP 200, 开机音量≥25GB免费(与72小时护栏).

第 2 步 — 创建桥接目录

mkdir -p ~/bin mkdir -p "$HOME/Library/Application Support/OpenClaw/scripts" mkdir -p "$HOME/Library/Application Support/OpenClaw/workflows" mkdir -p ~/.openclaw/logs chmod 700 ~/bin/openclaw-mac-bridge.sh 2>/dev/null || true

第 3 步 — 安装桥接脚本

节省~/bin/openclaw-mac-bridge.sh:

#!/usr/bin/env bash set -euo pipefail LOG="$HOME/.openclaw/logs/mac-desktop.log" ACTION="${1:-}" ARG_JSON="${2:-{}}" ts() { date -u +"%Y-%m-%dT%H:%M:%SZ"; } case "$ACTION" in keynote_export_pdf) DECK="${ARG_JSON:-}" OUT="${3:-$HOME/Desktop/openclaw-export.pdf}" osascript "$HOME/Library/Application Support/OpenClaw/scripts/keynote_export_pdf.applescript" "$DECK" "$OUT" echo "{\"ok\":true,\"artifact\":\"$OUT\"}" ;; set_volume) LEVEL="${ARG_JSON:-50}" osascript -e "set volume output volume $LEVEL" echo "{\"ok\":true,\"volume\":$LEVEL}" ;; set_brightness) LEVEL="${ARG_JSON:-0.5}" osascript "$HOME/Library/Application Support/OpenClaw/scripts/set_brightness.applescript" "$LEVEL" echo "{\"ok\":true,\"brightness\":$LEVEL}" ;; run_automator) WF="${ARG_JSON:-}" open -a "$WF" echo "{\"ok\":true,\"workflow\":\"$WF\"}" ;; *) echo "{\"ok\":false,\"error\":\"unknown_action\"}" >&2 exit 2 ;; esac >>"$LOG" 2>&1

chmod 750 ~/bin/openclaw-mac-bridge.sh

第 4 步 — 添加 AppleScript 助手

keynote_export_pdf.applescript:

on run argv set deckPath to item 1 of argv set outPath to item 2 of argv tell application "Keynote" activate set docRef to open POSIX file deckPath export docRef to POSIX file outPath as PDF close docRef saving no end tell end run

set_brightness.applescript(使用System Events;需要辅助功能):

on run argv set level to item 1 of argv as number tell application "System Events" tell appearance preferences set brightness to level end tell end tell end run

手动烟雾测试:

osascript "$HOME/Library/Application Support/OpenClaw/scripts/set_volume.applescript" 40 # or inline: osascript -e 'set volume output volume 40'

第 5 步 — 构建 Automator 工作流程(可选)

  1. 打开Automator→ 新快速行动或者应用.
  2. 添加运行AppleScript→ 粘贴Keynote 导出步骤。
  3. 另存为ExportKeynotePDF.workflow在下面~/Library/Application Support/OpenClaw/workflows/.
  4. 测试:open -a "$HOME/Library/Application Support/OpenClaw/workflows/ExportKeynotePDF.workflow"

在网桥中注册为run_automator当序列超过 AppleScript 约 30 行时。

第 6 步 — 注册 OpenClaw shell 工具

添加下~/.openclaw/config/tools/(确切的架构因构建而异):

{ "name": "mac_desktop", "description": "Control native Mac apps via AppleScript/Automator. Actions: keynote_export_pdf, set_volume, set_brightness, run_automator. Args: action string, JSON payload, optional third path.", "type": "shell", "command": "/Users/OPERATOR/bin/openclaw-mac-bridge.sh", "timeout_seconds": 120, "allowed_actions": ["keynote_export_pdf", "set_volume", "set_brightness", "run_automator"] }

代替OPERATOR使用macOS 帐户运行网关。保留工具在实验室禁用直到步骤 7 通过。

第 7 步 — 创建 SKILL.md 政策

创造~/.openclaw/skills/mac-desktop/SKILL.md:

# Mac Desktop Automation (AppleScript) ## When to use - User asks to export slides, adjust volume/brightness, or open a native app. - Channel message includes `/deck` or `export pdf` with a file path on the Mac. ## Never - Delete files outside ~/OpenClawExports without human confirmation. - Change System Settings security/privacy panes. - Run Automator workflows not listed in allowed_actions. ## Steps 1. Confirm deck path exists: `test -f path`. 2. Call mac_desktop with keynote_export_pdf. 3. Reply with artifact path and file size from `stat -f%z`.

工具+技能更改后重新启动网关。

步骤 8 — 用护栏引导烟雾

  1. 发送测试消息:“将音量设置为 35%。”
  2. 发送:“导出/Users/you/Decks/Q2.key到PDF。”
  3. 核实~/.openclaw/logs/mac-desktop.log节目出口0和 JSON 标准输出。

使能够仅消息传递通道 - 请参阅网关通道。并发桌面操作上限1在 16GB 主机上以避免 Keynote + 严重的模型争用。

故障排除

错误:Not authorized to send Apple events to Keynote

图案: osascript出口1,日志包含Not authorized.

使固定:在 Mac 上 →System Settings → 隐私和隐私安全 → 自动化→ 允许osascript(或终端/iTerm)进行控制Keynote。重新运行步骤 4 冒烟测试。对于云 Mac,每个快照映像执行一次。

错误:GUI scripting is not allowed

图案:亮度脚本失败; System Events错误-25211.

使固定:授予无障碍到终端/ssh 会话父级Apple 的辅助功能 guide。更喜欢通过降低亮度brightness仅在互动时间内 - 在 SKILL.md 中记录政策。

运营影响

监视器临界点行动
mac-desktop.log尺寸>200MB 256GB每周轮换
桥接延迟>90s分割Automator工作流程;预热Keynote
自动化失败率>3/小时禁用工具;警报人类operator
GUI 会话断开连接暂停频道;重新连接控制台

使用 Ollama 序列化桌面作业:不运行14B本地模型+Keynote导出同时在16GB统一记忆。

常问问题

OpenClaw 可以在没有 AppleScript 的情况下控制 Mac 应用程序吗?
只是部分。 Shell 工具处理 CLI 二进制文件;原生GUI应用程序需要 AppleScript、Automator 或快捷方式。桥接模式保持 OpenClaw 的规划器不变,而 macOS 执行 UI 工作。

AppleScript 是否单独对 SSH 起作用?
不。osascript目标是登录的图形会话。使用控制台访问或远程 Mac 上的屏幕共享,并在同一用户下运行网关。

如何从OpenClaw触发Automator?
登记run_automator在桥接脚本中并调用open -a /path/to/Workflow.app。通过工作流在第一个操作中读取的 plist 或 sidecar JSON 文件传递​​参数。

这对于生产代理来说安全吗?
将桌面工具视为高特权。限制allowed_actions,记录每次调用,并要求人类批准破坏性路径。跟随OpenClaw安全用于本地主机网关绑定。

这对Apple Silicon Mac mini M4 有效吗?
是的。 AppleScript 和Automator 在macOS 14+ 上是架构中立的。来自 Keynote + OpenClaw + Ollama 的 RAM 压力是实际的限制器 — 在 16GB 上一次保留一项繁重的工作。

SKILL.md 与 AppleScript 有何关系?
SKILL.md 教什么时候规划者调用mac_desktop; AppleScript/Automator 定义如何macOS 执行该操作。每当添加新的工作流程文件时更新SKILL.md。

结论

OpenClaw AppleScript Mac 自动化将文本网关变成桌面operator:shell工具→桥接脚本→osascript/ Automator → 本机应用程序。这种模式的竞争程度较低,因为大多数教程都停留在聊天回复上。

开始于音量 + Keynote PDF冒烟测试,每台机器强化一次权限,然后在 SKILL.md 中连接通道意图。让促销远离热门路径——这是一座工程桥梁,而不是租赁推销。

// SYS.CTA

需要 GUI 会话做桌面自动化?

带图形会话的云 Mac 主机可同时运行 OpenClaw 网关与 AppleScript 桥接。