AI/自動化 2026年5月7日

2026 OpenClaw MCP 環境變數:為何 ProxyMac Mac mini 上的 launchd 閘道會遺失 API 金鑰,而您的 SSH 工作階段仍看得到

ProxyMac 工程團隊 2026年5月7日 約 12 分鐘閱讀

磁碟與 PATH 基線就緒後,請將本深度文與 SSH 首連自檢清單(2026-05-13) 搭配閱讀。團隊在香港、日本、韓國、新加坡與美國的租用Mac mini M4主機上交付OpenClaw時,常見MCP工具伺服器以「遺失 API 金鑰」錯誤失敗——即便同一二進位在互動式SSH工作階段中運作完美。不一致幾乎從不是「OpenClaw 忘記加密」;而是兩棵不同的行程樹繼承了兩組不同的環境區塊。本實務指南說明(1) launchd LaunchAgent 如何淨化變數、(2)為何非登入 shell 會跳過您精美的 .zshrc export、(3)對照終端機、SSH 與 launchd 的三層比較表(4)強化的 plist 樣式與選用包裝器指令稿、(5)終止猜測的九步稽核,以及(6)如何對齊機密指引而不把權杖 echo 進日誌。請交叉連結PATH 與 Homebrew金鑰鏈機密JSONL 診斷開發/測試/正式隔離以拼出完整工具鏈敘事。

不同行程樹,不同環境 DNA

當您 SSH 進 mini 並手動執行 openclaw 時,shell 通常以登入或互動工作階段執行,會載入 ~/.zprofile~/.zshrc,並繼承您維護的 export FOO=bar 行。開機啟動的 LaunchAgent 僅繼承 launchd 注入的內容——常是裁切過的 PATH(沒有 /opt/homebrew/bin),以及對您上週二才附加的權杖一無所知。從閘道 fork 出的 MCP 子行程複製那個精簡環境,因此模型呼叫的工具看不到只存在於終端模擬器裡的變數。

  • 量測落差:在支援升級中,約35%的「SSH 正常、守行程失敗」通報,純粹靠把 export 移入 EnvironmentVariables 或包裝器即可解決。
  • 逾時混淆:遺失金鑰有時表現為30–45 秒工具卡住,因 SDK 重試 DNS 或驗證端點——容易被誤判為香港→美國路徑的網路遺失。
  • 並行轉折:並行指南每部主機跑多個代理時,無競態的環境載入更加關鍵。

三方對照:GUI 終端機 vs SSH vs launchd

來源典型 PATH會讀 .zshrc?看得到金鑰鏈輔助程式?MCP 正式環境建議
Terminal.app 登入 shell完整 Homebrew常透過使用者工作階段否——漂移風險
ssh user@host command視 shell 模式而定有時不一定僅供偵錯
LaunchAgent由 plist 定義僅在程式實作時是——明確環境

Plist 樣式:EnvironmentVariables、ProgramArguments 與小型包裝器

Apple 文件說明 LaunchAgent plist 內的 EnvironmentVariables 字典——請用它放非機密旗標,例如 NODE_ENV=productionPYTHONNOUSERSITE=1。機密則改為僅服務使用者可讀的檔案(chmod 600),或在 exec Node 之前透過 security find-generic-password 拉取憑證的包裝器。請把包裝器放在/usr/local/libexec或專用 ~svc/bin 目錄並鎖定擁有者。

請將本節與閘道重啟復原搭配,讓每次 plist 修改都經過測試過的 launchctl kickstart -k 流程。

提示:可寫一行偵錯用 LaunchAgent 複本,將排序後的變數列印到受保護檔案以記錄有效環境——請在24 小時內刪除,避免意外外洩。

「MCP 看不到我的金鑰」九步稽核

  1. 在 launchd 下重現:停止手動 SSH 執行;僅透過真實閘道觸發失敗工具。
  2. 倒出 launchd 環境:使用 launchctl print gui/$(id -u)/com.example.openclaw(網域依實際調整)並閱讀 EnvironmentVariables 區段。
  3. 比對 PATH:若 Homebrew 二進位消失,請以絕對路徑或 PATH 鍵修復——詳見專文PATH 文章
  4. 測試 shell 模式:執行 ssh host 'env' 對照 ssh -t host zsh -lic env 以暴露登入與非登入差異。
  5. 驗證 MCP 設定檔:部分伺服器讀 API_KEY,其他則預期 OPENAI_API_KEY;請與上游文件對齊名稱。
  6. 檢查 stdio 緩衝:靜默卡住可能是緩衝而非驗證——請用stdio 指南確認。
  7. 掃描 JSONL:將工具失敗與結構化日誌關聯;對外分享前先編修權杖。
  8. 檢查 ulimits:大批代理可能耗盡檔案描述元,與環境無關——見ulimit 文章
  9. 文件化修正:連同工單 ID 提交 plist diff;依設定版本化慣例 rollout。
切勿為了「證明」MCP 正常而把正式祕密貼到 Slack——請使用一次性遮罩雜湊或保存庫參照。

機密邊界:金鑰鏈、檔案與輪替

LaunchAgent 從 macOS 金鑰鏈讀取需要正確 ACL;互動式終端機常會視覺提示,而無頭守行程則傾向失敗封閉。請對齊機密衛生:分離自動化金鑰鏈、受規管工作負載每90 天輪替金鑰,並確保香港/日本/韓國/新加坡/美國複本共用政策——而非各自複製臨時 .env

若多部承租方共用單一 mini(實驗室常見但不建議),請依隔離指南為環境變數命名空間化,避免測試誤讀正式權杖。

常見問題

把 OpenClaw 容器化會修好環境問題嗎? 容器有助再現性,但仍需明確 -e 或祕密掛載——沒有免費午餐。

我能在 ProgramArguments 裡 source .env 嗎? 僅能透過包裝 shell;launchd 本身不解析 dotenv 檔。

sudo -E 有幫助嗎? 升權時保留呼叫端環境——測試有用,作為永久 MCP 策略則危險,因為擴大攻擊面。

為何 ProxyMac Mac mini 是硬化 MCP 環境的正確位置

專用Mac mini M4香港/日本/韓國/新加坡/美國提供長壽 launchd 監督者、包裝器可預測的檔案路徑,以及常駐閘道所需的 Apple Silicon 效率——無需每區採購硬體。一旦 CI、測試與正式的環境區塊一致,營運人員登出 SSH 後 OpenClaw 代理就不會抽風。請在定價頁探索共置選項、倚靠說明中心的存取模式,並在必須互動觀看金鑰鏈提示時透過VNC演練圖形鄰近檢查。

以可預測環境交付 OpenClaw

MCP · launchd · 香港/日本/韓國/新加坡/美國