【實戰】把 AI 龍蝦關進籠子裡:macOS 本機部署 Openclaw + Gemini 的資安防禦指南

Aiezn 蝦編
主筆:Aiezn 校稿:蝦編
/ / 12 min read
【實戰】把 AI 龍蝦關進籠子裡:macOS 本機部署 Openclaw + Gemini 的資安防禦指南

我一直在尋找那個能真正「觸碰到本機資源」的 AI 代理。原先考慮過在 VPS 或 AWS 上開一台機器來跑,但如果 AI 龍蝦(Openclaw)無法存取我的本機檔案與工具,那它就只是一個比較貴的聊天機器人,失去了它身為「操作系統代理」的靈魂QQ

然而,把一個擁有高權限、能執行指令的 AI 放在自己的 Mac Mini 裡,就像是在家裡養了一隻會開鎖的酷斯拉。為了不讓這隻龍蝦哪天心情不好就把我的 Documents 刪光,我設計了一套基於 「New macOS user + Discord + Gemini」 的隔離架構。

這是一篇寫給「既想要 AI 強大,又怕被 AI 拆家」的工程師與進階玩家的參考。因為我也還不確定 Best Practice 方式解為何,只能盡可能參考 Openclaw 的官方 Security[1]文件進行設計。


目錄

  1. 為什麼選擇本機部署?權衡與代價
  2. 第一階段:基礎建設——安裝龍蝦與 Discord 機器人
  3. 第二階段:賦予靈魂——串接 Gemini API (Antigravity OAuth)
  4. 核心防禦:macOS 檔案系統的深層隔離
  5. 進階鎖定:Gateway 與檔案權限收緊
  6. 資安壓力測試:你的龍蝦會背叛你嗎?
  7. Reference

1. 為什麼選擇本機部署?權衡與代價

在開始動手前,我們先聊聊為什麼要這麼麻煩。

分析與洞察

工程師最容易犯的錯誤就是「為了方便而犧牲安全」。Openclaw 的強大在於它能讀取你的檔案、執行 Shell 指令。如果部署在雲端,它與你本地資料的延遲與權限打通會讓你抓狂;但部署在本機,它就擁有了「物理存取權」。

作者在官方文件中明確提到:「沒有完美的安全設定」。因此,我們的目標不是追求 0 風險(那叫拔掉插頭),而是**「最小權限原則 (Principle of Least Privilege)」**。


[CAUTION]
注意事項:
此部署方法涉及許多 macOS 底層權限與系統設定(如 dscl、ACL 等)。如果你對終端機指令不熟悉或是新手玩家,建議在操作前務必做好系統備份,並謹慎執行每一條指令。

準備工作:建立隔離區

在開始動手前,我們必須先在 macOS 層級建立一道防禦工事。我們不能讓龍蝦直接跑在你的 Mac 主帳號下,因為那等於把你的主帳號所有地端資訊、iCloud 鑰匙圈、信用卡號、私密相簿全部攤在 AI 面前。

  1. 建立新使用者:在系統設定中增加一個名為 clawd一般使用者(不要給 admin 權限),用於與你的主帳號 (Main User) 徹底區隔。
  2. 拒絕登入 Apple ID:在設定新使用者時,絕對不要登入 Apple ID。這能確保 AI 即使逃出沙盒,也完全碰不到你的雲端檔案或 iMessage。

2. 第一階段:基礎建設——安裝龍蝦與 Discord 機器人

[IMPORTANT]
切換身分:
請先使用 macOS 的「快速切換使用者」進入剛剛建立的 clawd 帳號。接下來 2.1 到 2.3 的所有安裝與設定,都必須在 clawd 使用者環境下執行。

2.1 一鍵安裝龍蝦 (Openclaw)

打開你的終端機,輸入這行指令。這會下載並安裝 Openclaw 的核心組件:

curl -fsSL https://clawd.bot/install.sh | bash

2.2 設定 Discord 機器人入口

我們需要一個介面來跟龍蝦溝通,Discord 是目前成熟的 bot 選擇。

  1. Discord Developer Portal 點擊 New Application,取個帥氣的名字(例如:Commander)。
  2. 在左側 Bot 選項中:
    • 點擊 Add Bot
    • 重要: 開啟 Presence IntentServer Members IntentMessage Content Intent。沒開這些,你的機器人會變成聾子。
    • 點擊 Reset Token 並複製,這是你的機器人護照,請妥善保管。
  3. OAuth2 → URL Generator 中:
    • Scopes 勾選 bot
    • Permissions 勾選 Read MessagesSend MessagesRead Message History
  4. 用產生的連結把機器人拉進你專屬的伺服器。

2.3 初始化設定

在終端機輸入:

openclaw configure
  • Gateway 運行位置: 選擇 Local (this machine)
  • 配置區塊: 勾選 Channels 後按 Continue
  • 頻道設定:Configure/link -> 勾選 Discord (Bot API)
  • 權限控制: 當問到 Discord channels access 時,請務必選擇 Allowlist (recommended),並在接下來的提示中按 Enter(稍後我們會在設定檔中精確鎖定 ID)。
  • 重啟生效: openclaw daemon restart

最後,在 Discord 私訊機器人 hi,拿到 Pairing code 後,在終端機執行:

openclaw pairing approve discord [你的代碼]

在模型大腦的選擇上,我選擇串接 Google Gemini (透過 Antigravity 優化通道)。這不僅是為了消耗一下剩餘的 Token 快感,更是因為 Gemini 在處理長上下文與程式碼邏輯上的 CP 值極高。

[!TIP]
透過 Antigravity 的優化通道,我們可以實現極簡化的 OAuth 授權,省去手動管理 API Key 的麻煩,同時在後端享受優化後的傳送速度與穩定性。
[!TIP]
由於 Openclaw 在執行任務(如掃描專案目錄)時會消耗驚人的 Token,未來我也會教大家如何串接本地模型(Local LLM)。但在初始部署階段,建議先使用穩定的 Gemini API。另外請注意,某些模型(如 Claude)對第三方 OAuth 串接審查較嚴,使用時請務必留意帳號風險。

3. 第二階段:賦予靈魂——串接 Gemini API

龍蝦只是軀殼,大腦我們選擇 CP 值極高且速度飛快的 Google Gemini。

3.1 取得 API Key

請至 Google AI Studio 申請一組 API Key。

3.2 一鍵 onboard

使用以下指令進行引導式設定:

openclaw onboard --auth-choice gemini-api-key

bash

這會自動幫你設定預設模型(例如 google/gemini-2.5-flash)。完成後,輸入 openclaw status 確認 Channels 顯示 Discord ON OK。3.2 互動式設定步驟

在終端機輸入:

openclaw configure

接著依照提示選擇路徑:

  1. Model: 選擇進入模型設定。
  2. Provider: 選擇 google
  3. Google auth method: 選擇 Enter Gemini API key。
  4. 授權連結: 此時終輸入 key。
  5. 完成連接: 授權完成後回到終端機,確認已成功儲存。

最後,輸入 openclaw status 確認 Channels 顯示 Discord ON OK 且 Model 已就緒。


4. 核心防禦:macOS 檔案系統的深層隔離

如果在第一步我們只是「分家」,那這一步就是要「鎖門」。我們要確保 「我能進去看龍蝦,但龍蝦絕對不能看我」

在 macOS 中,預設所有一般使用者都隸屬於 staff 群組,這有時會讓不同使用者間能讀取一些共用目錄。為了追求極致安全,我們要手動修改作業系統的目錄權限與使用者群組。

請回到你的 主帳號 (Admin) 啟動終端機,執行以下「外科手術式」指令:

第一步:隔離群組——將 clawd 從 staff 剔除
我們建立一個專屬的 openclaw 群組,讓龍蝦成為這個群組的唯一成員,徹底切斷它與其他 staff 成員(即你的主帳號)的血緣關係。

# 建立專屬群組
sudo dscl . -create /Groups/openclaw
sudo dscl . -create /Groups/openclaw PrimaryGroupID 999
sudo dscl . -create /Groups/openclaw RealName "Clawdbot Isolated Group"

# 把 clawd 加入新群組並從 staff 移除
sudo dscl . -append /Groups/openclaw GroupMembership clawd
sudo dscl . -change /Users/clawd PrimaryGroupID 20 999
sudo dseditgroup -o edit -d clawd -t user staff

第二步:設定目錄權限(禁止龍蝦越獄)

# 讓主目錄只有自己能進
chmod 700 /Users/[你的主帳號]

# 雙重保險:ACL 顯式拒絕 clawd 存取
sudo chmod +a "user:clawd:deny read,write,execute" /Users/[你的主帳號]

# 給予主帳號對龍蝦目錄的完全控制權
sudo chmod +a "user:[你的主帳號]:allow read,write,execute,delete,chown,file_inherit,directory_inherit" /Users/clawd

階段小結:軟體沙盒化 (Sandbox) 的誕生

透過這種「單向 ACL」設定,我們在 macOS 層級建立了一個透明的觀察室。此時的效果已經是真正的沙盒 (Sandbox) 了,並且是一個基於本機的 macOS 大型沙盒:我們徹底限制了 clawd 使用者的存取權限,最糟的情況下,我們也只需要移除這個使用者帳號,而不會傷及主系統的根本。

此外,clawd user 此時也無法進行最高權限 sudo 等指令。

這種架構的好處顯而易見:

  • 資源共享:我們依然能有條件地動用本機底層資源。
  • 極速體驗:在 macOS 的「快速切換使用者」功能下,切換身分修改設定或查看 Log 的體驗相當流暢,沒有虛擬機的沉重感。

5. 進階鎖定:Gateway 與檔案權限收緊

除了作業系統層級的隔離,Openclaw 本身的網路與設定也要鎖死。

5.1 Gateway 網路安全

確保 openclaw.json 中的 Gateway 設定如下:

  • gateway.mode = local
  • gateway.bind = 127.0.0.1 (僅限本機回環,不對公網開放)
  • gateway.auth.mode = token (即使是本地連線也要帶 Token)

5.2 Discord 入口縮限與群組應用

我們可以透過 openclaw.json 進一步定義 Discord 的入口。入口開得越少、越窄,系統自然越安全。

我的最終目標是讓龍蝦在特定的 Discord 群組中工作,並且只有在我本人 @mention 它時,它才被允許回應(這對於未來管理多位「AI 員工」非常重要)。你可以參考以下配置:

"channels": {
  "discord": {
    "enabled": true,
    "groupPolicy": "allowlist",
    "actions": { "roles": false, "moderation": false },
    "dm": {
      "enabled": true,
      "policy": "allowlist",
      "allowFrom": ["你的_DISCORD_USER_ID"]
    },
    "guilds": {
      "你的_DISCORD_SERVER_ID": {
        "requireMention": true,
        "users": [],
        "channels": {
          "你的_特定頻道名稱": { "allow": true }
        }
      }
    }
  }
}

透過 allowlist 與群組權限設定,此時只有你自己具備私訊 Bot 的權限,且 Bot 只能被你加入特定的群組,且在群組中必須被點名才會動作。

5.3 限制工具權限 (Tools Restriction)

除了身分與網路,我們還能透過 tools 配置進一步縮限 AI 的行為能力。我建議新手可以先封印掉危險的執行權限(如刪除檔案或執行 Bash),並透過 workspace 嚴格限制 AI 的活動目錄。

"tools": {
  "profile": "messaging",
  "workspace": "/Users/clawd/ai-workspace",
  "allow": [

  ],
  "deny": [

  ]
}

透過將 bashwrite 放入 deny 名單,即使用戶(或駭客)試圖誘導 AI 刪除系統檔案,龍蝦也會因為核心權限被鎖死而無法執行。