AI automation

打破沙盒:AppleScript 聯動 OpenClaw,AI 控制 Mac 桌面(2026)

OpenClaw AppleScript Automator 橋接控制 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 租用。

可引用规则: OpenClaw 不会「打破沙盒」。向运行 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/*.workflowGUI 拼装的宏
审计日志~/.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 工作流

  1. 打开 Automator → 新建快速操作应用程序
  2. 添加动作(如渲染 PDF 页面设定电脑音量)。
  3. 保存为 ~/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

修复:

  1. 系統設定 → 隱私權與安全性 → 自动化 — 为 終端机(或 node / 网关二进制)启用 → Keynote
  2. 以与 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 閃退指南

常见问题

公开 Telegram 群可以暴露吗?+
No. Treat desktop bridge commands like root SSH: ACL allowlists, fixed phrases, and rate limits. Never pass user-supplied shell to osascript.
AppleScript 与 Automator 先做哪个?+
AppleScript for precise app verbs (Keynote export, Finder reveal). Automator when operators prefer GUI composition; still invoke via the same bridge script.
只靠 SKILL.md 能控制应用吗?+
SKILL.md is instructions; execution requires a tool (typically shell) that you restrict to openclaw-mac-bridge.sh.
在租用的 Apple Silicon Mac mini 上能用吗?+
Yes—same macOS TCC rules. Use SSH workflow for setup; GUI grants may need one logged-in session to click prompts.
能控制亮度吗?+
Use AppleScript against System Events (reduced on recent macOS) or Automator actions. Test on your OS version before documenting for the team.

可选:常开网关主机

Most bridge steps run on any Mac you own. If you need a dedicated Mac mini for 24/7 gateway + desktop automation, compare regional pricing—no requirement for this tutorial.

查看定价 Help