打破沙盒:AppleScript 聯動 OpenClaw,AI 控制 Mac 桌面(2026)
多数 OpenClaw 部署停在聊天层:智慧體在线程里回复,却从不碰 Keynote、Finder 或系統設定。 这不是 OpenClaw 的能力上限,而是缺少 macOS 自动化管线。Apple 提供两条稳定通道:AppleScript(经 osascript)与 Automator(可从 shell 触发的工作流)。把任一条接入 OpenClaw skill,智慧體就在桌面上有了实体操作:开应用、导出 PDF、调音量或跑多步 GUI 宏——在你授予的权限弹窗之下。
本篇为 Type A 橋接教程:架構、六步 runbook、TCC(「沙盒」)排錯与 FAQ。可搭配 OpenClaw 零基础安装、doctor 网关故障排查、Webhook + CI 与 技能批处理。Apple 文档:Mac 快捷指令自动化、AppleScript 语言指南。
說明:KvmZone 提供远程 Mac mini 用于 macOS 工作负载。本教程適用於你可控的任何 Mac;仅需常开网关时再考虑 SSH 租用。
osascript 的进程(Terminal、launchd 或 OpenClaw 网关用户)授予「自动化」与辅助功能,再由 skill 调用你可审计的 薄 shell 橋接。為何純文字智慧體浪費 Mac 桌面能力
| 现象 | 根因 | 橋接修复 |
|---|---|---|
| 智慧體说已导出 PDF,但磁盘无文件 | 没有工具调用 GUI 应用 | osascript + Keynote export script |
| Webhook 触发但桌面无变化 | 网关缺少 macOS 工具 | Skill → ~/bin/openclaw-mac-bridge.sh |
Terminal 可用,launchd 下失败 | 用户或 TCC 上下文不同 | 以 daemon 用户跑 doctor;重复授予 TCC |
| Automator 工作流「卡住」 | UI 对话框阻塞 | 预先保存无弹窗的工作流 |
16GB Mac mini(本地或租用)足以承载 一条 GUI 自动化通道 + OpenClaw 网关——避免并行三次重度 Keynote 导出;统一内存压力会像「OpenClaw 閃退」(见 swap 压力手册)。
架構:SKILL.md → shell 橋接 → macOS
Chat/webhook → OpenClaw gateway → skill (allowed tools: shell) → openclaw-mac-bridge.sh → osascript | automator → native app
需固定的文件
| 组件 | 路径 | 作用 |
|---|---|---|
| Skill 清单 | ~/.openclaw/workspace/skills/mac-desktop-bridge/SKILL.md | 记录允许的动作与参数 |
| 橋接脚本 | ~/bin/openclaw-mac-bridge.sh | 白名单动作;禁止任意 eval |
| AppleScript | ~/Scripts/openclaw/*.applescript | 每个应用工作流一个文件 |
| Automator 导出 | ~/Library/Workflows/Applications/*.workflow | GUI 拼装的宏 |
| 审计日志 | ~/.openclaw/logs/mac-bridge.log | 时间戳、动作、退出码 |
示例 SKILL.md 前置元数据
---
name: mac-desktop-bridge
description: Run whitelisted macOS desktop actions via openclaw-mac-bridge.sh
allowed_tools: [shell]
---
When the user asks to control Mac apps (Keynote, volume, brightness), call:
openclaw-mac-bridge.sh <action> [args]
Never run raw osascript outside the bridge.
六步 runbook:首个 Keynote + 音量橋接
第 1 步 — 确认网关用户与 shell
whoami
echo $SHELL
openclaw doctor
通过: 与将在 系統設定 → 隱私權與安全性 → 自动化 中授权的用户一致。
第 2 步 — 创建橋接脚本
~/bin/openclaw-mac-bridge.sh:
#!/bin/bash
set -euo pipefail
LOG=~/.openclaw/logs/mac-bridge.log
ACTION="${1:-}"; shift || true
mkdir -p "$(dirname "$LOG")"
log() { echo "$(date -Iseconds) $*" >> "$LOG"; }
case "$ACTION" in
volume)
VAL="${1:-50}"
osascript -e "set volume output volume $VAL"
log "volume $VAL ok"
;;
keynote-export)
osascript "$HOME/Scripts/openclaw/keynote-export-pdf.applescript" "$@"
log "keynote-export $* exit $?"
;;
automator)
WF="${1:?workflow path}"
/usr/bin/automator "$WF"
log "automator $WF exit $?"
;;
*)
echo "unknown action: $ACTION" >&2; exit 2
;;
esac
chmod 700 ~/bin/openclaw-mac-bridge.sh
第 3 步 — 添加 Keynote 导出 AppleScript
~/Scripts/openclaw/keynote-export-pdf.applescript:
on run argv
set outPath to item 1 of argv
tell application "Keynote"
activate
export front document as PDF to POSIX file outPath
end tell
end run
osascript ~/Scripts/openclaw/keynote-export-pdf.applescript "$HOME/Desktop/openclaw-test.pdf"
通过: PDF 出现;Keynote 可能首次请求自动化权限——点 好。
第 4 步 — 注册 OpenClaw skill
将 SKILL.md 复制到 ~/.openclaw/workspace/skills/mac-desktop-bridge/。重载 skill:
openclaw gateway restart
# or your build's equivalent skill reload command
在聊天中触发:「音量 30,Keynote PDF 导出到 Desktop/openclaw-test.pdf」。通过: 检查 ~/.openclaw/logs/mac-bridge.log。
第 5 步 — 可选 Automator 工作流
- 打开 Automator → 新建快速操作或应用程序。
- 添加动作(如渲染 PDF 页面、设定电脑音量)。
- 保存为
~/Library/Workflows/Applications/OpenClaw-Volume50.workflow。
openclaw-mac-bridge.sh automator "$HOME/Library/Workflows/Applications/OpenClaw-Volume50.workflow"
第 6 步 — 接入 Webhook 或群命令(生产)
将固定口令映射到橋接动作——切勿让不可信发送方传入自由 shell:
# Example: only allow exact command tokens from your bot ACL
case "$TEXT" in
"/mac volume 40") openclaw-mac-bridge.sh volume 40 ;;
"/mac keynote-pdf") openclaw-mac-bridge.sh keynote-export "$HOME/Desktop/brief.pdf" ;;
esac
向群組聊天开放桌面控制前,先配置 速率限制。
排錯
错误模式:Not authorized to send Apple events to Keynote(-1743)
症状: osascript 失败;橋接日志 exit 1。
修复:
- 系統設定 → 隱私權與安全性 → 自动化 — 为 終端机(或
node/ 网关二进制)启用 → Keynote。 - 以与
launchd相同用户 重试:
sudo -u "$(whoami)" osascript -e 'tell application "Keynote" to count documents'
若使用租用 Mac,经 SSH 完成授权后用一次性脚本验证——勿与不可信租户共用主机。
错误模式:交互可用,网关下静默失败
症状: SSH 中 openclaw doctor 全绿;Webhook 执行但桌面无变化。
launchctl print gui/$(id -u)/com.openclaw.gateway 2>/dev/null | head -30
sudo -u _openclaw ~/bin/openclaw-mac-bridge.sh volume 20 # adjust user label
为 daemon 可执行文件重复自动化授权,而非仅 Terminal。见 doctor 閃退指南。
常见问题
osascript.SKILL.md is instructions; execution requires a tool (typically shell) that you restrict to openclaw-mac-bridge.sh.System Events (reduced on recent macOS) or Automator actions. Test on your OS version before documenting for the team.延伸閱讀
- Siri AI 獨立 App:Gemini、iCloud 接力、Visual Intelligence — 發表會後深度 vs 前瞻稿
- WWDC 2026:Gemini 版 Siri 2.0 與 iOS 27 — 發表會前解讀 vs Gemini API 主機
- OpenClaw 零基础安装契约
- openclaw doctor crash & gateway guide
- 远程 Mac 上的 Webhook + CI
- Indie micro-app / skills batching
- Rate limits and budget alerts
- 远程 Mac SSH 安全工作流
- M4 16GB swap 压力手册