>> 打破沙盒:OpenClaw 串接 AppleScript,AI 智能體直控 Mac 桌面
OpenClaw AppleScript Mac 自動化爲純文本代理網關提供 macOS 桌面上的物理實體 — shell 工具、橋接腳本和一個登錄會話中的本機應用程序控制。
介紹
大多數球隊都在跑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 上繼續聊天回覆。
將這個guide 與OpenClaw + Ollama 在雲端 Mac mini當您需要本地模型進行規劃和 macOS 自動化執行時。完全的OpenClaw 輕部署首先,在啓用 GUI 工具之前,網關運行狀況、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.json | shell命令+超時+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 | 沒有穩定的公共 CLI | exportKeynote 字典中的命令 |
| 設置顯示亮度 | 沒有便攜式單襯管 | 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 工作流程(可選)
- 打開Automator→ 新快速行動或者應用.
- 添加運行AppleScript→ 粘貼Keynote 導出步驟。
- 另存爲
ExportKeynotePDF.workflow在下面~/Library/Application Support/OpenClaw/workflows/. - 測試:
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 — 用護欄引導煙霧
- 發送測試消息:“將音量設置爲 35%。”
- 發送:“導出
/Users/you/Decks/Q2.key到PDF。” - 覈實
~/.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 中連接通道意圖。讓促銷遠離熱門路徑——這是一座工程橋樑,而不是租賃推銷。