2026 年 OpenClaw 安裝路徑怎麼選?install.sh、npm、pnpm 源碼與 Docker 對照 + Mac 雲 launchd 驗收
在 Mac 雲或本機長期跑 OpenClaw,在官方腳本、npm -g、pnpm 與 Docker 間猶豫時:本文說明受眾與收益(可審計升級、可復現常駐),含對照表、五步 launchd 驗收、Docker 卷清單,以及裝完起不來的第一層檢查(JSON 與 18789),與站內 doctor 階梯文互補。
本文要點
1. 導語摘要:四條路徑分別解決什麼問題
官方 install.sh把 CLI 與引導流程收斂到一條命令,適合 PoC;須弄清二進位與配置落盤路徑以便對接 launchd。npm install -g openclaw@latest升級語義清晰,適合 SSH 單機運維。源碼 pnpm 構建適合跟上遊與打補丁,代價是版本紀律。Docker提供邊界與凍結,但在 macOS 上要處理卷映射與 uid。常見坑是 PoC 腳本直接套生產卻未改 WorkingDirectory 與日誌路徑。下文列痛點、對照表與 launchd 順序。
2. 痛點拆解:選錯介質會怎樣
- 升級語義不一致:
npm與pnpm鎖文件、全局前綴與install.sh下載的靜態包可能並存,導致openclaw --version與 Gateway 實際二進位不一致。 - Docker 卷與宿主鑰匙串/配置分裂:只掛 workspace 不掛
~/.openclaw時,容器內生成的配置在宿主機工具鏈裡不可見;反之一旦 uid 不匹配,會出現「日誌寫不進卷」的靜默失敗。 - 無 daemon 計劃:SSH 裡前臺跑 Gateway 在斷開會話後退出;沒有
launchd或等價的 plist,Mac 雲重啟後服務不會回來,監控也無從附著。 - 排障入口混亂:尚未確認
openclaw.json語法與 18789 是否被佔用就深入通道 pairing,會浪費數小時;第一層應與官方 FAQ 同步。
3. 對照表:升級、目錄、權限與排障入口
下表可貼進架構說明;排障入口指安裝介質層第一站,與 status→doctor 階梯區分。
| 路徑 | 升級方式 | 典型目錄 | 權限/卷注意 | 安裝後第一站排障 |
|---|---|---|---|---|
install.sh | 重跑腳本 | 用戶 bin + 配置目錄 | PATH / profile | openclaw --version |
npm -g | npm update -g | 全局前綴 + ~/.openclaw | nvm 等切前綴 | 與 launchd 環境一致 |
| pnpm 源碼 | pull + build + link | 克隆目錄 | 依賴體積 | pnpm 退出碼 |
| Docker | 新鏡像 / compose | 容器 + 卷 | uid、DNS | compose logs + 卷可讀 |
實踐提示:在 plist 或 compose 裡顯式寫
HOME、PATH、WorkingDirectory,避免重啟丟環境。
4. 落地步驟:Mac 雲 launchd 五步驗收
假設已完成 openclaw onboard 或等價初始化,目標為可復現常駐:
- 凍結介質:在 Runbook 寫明當前選用的是腳本、npm、pnpm 還是 Docker,並記錄版本號或鏡像 digest。
- 寫入 LaunchAgent plist:使用絕對路徑調用
openclaw gateway或文檔推薦的 daemon 子命令;StandardOutPath/StandardErrorPath指向固定日誌文件。 - 加載並冷啟動:
launchctl bootstrap對應域後執行launchctl kickstart,確認進程在重啟後由launchd拉起而非終端子進程。 - 埠與配置快檢:
lsof -i :18789與最小 JSON 校驗(可用手動或openclaw doctor的 schema 檢查),再測通道側。 - 回滾演練:保留上一份可工作的全局包或鏡像 tag;升級失敗後能在目標 RTO 內切回並驗證 Gateway 探針。
plist 骨架(路徑與 Label 請替換):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.example.openclaw.gateway</string>
<key>ProgramArguments</key><array>
<string>/usr/local/bin/openclaw</string><string>gateway</string><string>run</string>
</array>
<key>WorkingDirectory</key><string>/Users/deploy</string>
<key>StandardOutPath</key><string>/var/log/openclaw/gateway.out</string>
<key>StandardErrorPath</key><string>/var/log/openclaw/gateway.err</string>
<key>RunAtLoad</key><true/>
</dict></plist>
5. 可引用技術信息:Docker 卷與 uid 清單
- 雙卷最低集:同時映射
~/.openclaw與工作區目錄,否則密鑰與 workspace 狀態會在容器重建時漂移。 - uid 1000 慣例:多數示例鏡像以非 root 用戶運行;宿主目錄若屬主為其他 uid,會出現寫拒絕或半寫入導致 JSON 損壞。
- DNS 與出口:企業 Mac 雲常走代理;容器內
web_search類能力失敗時,先在容器內curl探測,再對照宿主出口與白名單。 - 18789 爭用:同一臺 Mac 雲上多個實驗 Gateway 爭用單埠時,後啟動進程會靜默退出或掛起,應先停舊 plist 再啟新實例。
- 與 doctor 文:介質與 launchd 通過後,再用站內《status→doctor 階梯》排通道。
- 審計:變更單記錄介質、鏡像 digest、
openclaw --version、plist Label。
6. 從試用到生產:為什麼原生 Mac 雲更省事
Windows/WSL 或嵌套虛擬化跑 OpenClaw 排障鏈更長;筆記本上 Docker 靈活,上生產 Mac 雲常疊卷權限與性能折損。在可 SSH 的專用 Mac 雲上用原生路徑加 launchd,最易把裝路徑、拉起方、日誌與回滾寫進 Runbook;要隔離再用 Docker 分區。未完成首次上線可先讀站內《OpenClaw 五分鐘極速部署》再按本文定介質與 plist。