AI / 自動化 2026年5月8日

2026 OpenClaw MCP 與 Node 執行階段錯位:為何終端機裡 nvm 正常,而 MCP 子行程卻報 ENOENT——針對租用 ProxyMac Mac mini 的第一線說明

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

在香港、日本、韓國、新加坡與美國部署自訂 MCP 伺服器的 OpenClaw、並租用 Mac mini M4 的團隊,常在日誌裡看到 /usr/bin/env: node: No such file or directory,而同一台機器在 Terminal.app 裡明明印出 Node v22。根因通常不是「OpenClaw 壞了」,而是多套 Node 並存且只有互動 shell 啟用了其中一套;由 launchd 拉起的閘道繼承不到你在 .zshrc 裡寫的魔法。本文闡述 (1) 上游 MCP 傳輸堆疊對現代 Node 能力的依賴;(2) 一張把 errno 文案對應到動作的症狀對照表(3) 為何生產環境不應依賴 nvm.sh(4)PATH 與 Homebrew環境變數升級與回滾 交織的九步稽核梯度;以及 (5) Corepack 觸發 pnpm dlx 時的非互動陷阱。文中錨點數值包括:Node 22 特性門檻、120 秒級別的重啟風暴,以及對「隱式依賴 dotfile」在合規環境中零容忍的態度。

執行階段鴻溝:互動 zsh 與 LaunchAgent 行星

互動工作階段可以 source nvm.sh、追加 Apple Silicon Homebrew 前置並啟用 Corepack;而 launchd 啟動 OpenClaw 時往往只有極簡 PATH——常見值為 /usr/bin:/bin:/usr/sbin:/sbin,除非你已在 plist 明確列出擴充。MCP 子行程繼承父閘道的環境,因此 shebang 寫成 #!/usr/bin/env node 時,只要 env 找不到 node,核心就會回傳 ENOENT,即便 which node 在終端機指向 /opt/homebrew/bin/node

  • 可觀測指標:分別在 Terminal 與一次性 LaunchAgent echo 作業裡執行 node -p process.execPath;若路徑分叉超過一層目錄,應立即修訂 plist。
  • ABI 報錯:在 Intel 筆電上建置的 fat binary 若錯誤指向 Rosetta,日誌可能表現為難懂的 V8 崩潰而非清晰 ENOENT——本質仍是執行階段錯位。
  • 並行安裝:/opt/homebrew/bin/node、手工 pkg、以及 nvm 管理的副本可以同時存在;CI 複製的 JSON 若只指向其中之一,在其他上下文必然斷裂。
提示:在每台雲端 mini 寫入 /etc/proxymac-node.channel 記錄 semver 與校驗和——對照工單時可節省約 35% 的定位時間。

症狀對照表:把 MCP stderr 文案翻成動作

日誌指紋可能原因首選糾正
env: node: No such filePATH 缺少 brew/nvm 前置為 plist 增補絕對 PATH 或在 /usr/local/bin 放置受控符號連結
Error: Cannot find module 'node:fs'Node 過舊,無法理解新版匯入對應升級到 ≥22 LTS 通道並與平台要求對齊
MCP worker 內 MODULE_NOT_FOUND守護行程缺少 NODE_PATH指定工作目錄或打包依賴
升級後出現 spawn EBADF混合殘留安裝回滾手冊 清理

為何不要把生產契約建立在 nvm.sh 之上

nvm 把下載延遲藏在 shell 函式之後——對人類友善,對午夜自動化脆弱。更穩妥的做法是由 MCP JSON 直接指向唯一可信的解譯器路徑;若必須用包裝指令稿,請在威脅建模後再引入 /bin/bash -lc,並結合 金鑰與鑰匙圈 規範,避免 set -x 把權杖印進日誌。

九步執行階段稽核梯度

  1. 凍結發布:診斷完成前暫停 CI 合併,避免無限 launchctl kickstart
  2. 匯出有效 PATH:暫時讓 LaunchAgent 將排序後的 env 寫入受控檔案(限時刪除)。
  3. 比對 Node 建置:執行 node -p "[process.version, process.arch]" 雙向對照。
  4. 規範化 MCP JSON:把所有解譯器提示改為絕對路徑。
  5. 統一 Corepack:全域啟用一次並鎖定套件管理員版本。
  6. 複核 OpenClaw 升級:遵循 升級矩陣
  7. 尾隨 JSONL:日誌指南 對齊 stderr 時間線。
  8. 校驗 ulimit:巨型 monorepo 可能耗盡 fd——參見 ulimit
  9. 輸出 RCA:寫明受影響區域(HK / JP / KR / SG / US)與 semver。
不建議:把整份 .zshrc 嵌進 plist——審閱無法有效 diff 安全迴歸。

Corepack、pnpm 與會拉起套件管理員的 MCP 入口

若 MCP 定義呼叫 pnpm dlxyarn node,Corepack 必須在非互動環境中已完成初始化——互動終端機常見的首次提示,launchd 永遠不會替你按鍵。把快取目錄放到服務帳戶擁有權限的路徑,並確保 HKUS 複本共用同一策略,否則會出現「一地成功一地 ENOENT」的假陽性。

常見問題

Docker 能否一勞永逸?映像仍需你選擇正確的 Node 基礎標籤——semver 紀律不可避免。

Apple Silicon 有關嗎?有關——在 Intel 筆電上編譯的 arm64 誤配會導致詭異崩潰。

SSH 工作階段置於何地?手動 SSH 往往載入登入 shell;閘道行程不會——請把 SSH 測試當作線索而非契約。

為何 ProxyMac Mac mini 適合配合「單一可信 Node」策略

租用分布在 HK / JP / KR / SG / USMac mini M4,可在免採購的前提下獲得一致的 Apple Silicon 執行階段與足夠低的待機功耗,便於 MCP 閘道長期在線並緊跟上游 Node cadence。方案見 定價頁,維運邊界見 說明中心;若需圖形化點選 Gatekeeper 安裝程式,請結合 VNC 說明

只保留一條「祝福過」的 Node 二進位

OpenClaw · MCP · HK / JP / KR / SG / US