人工智慧 / 自動化 2026年4月21日

2026 租賃 Mac mini 上的 OpenClaw:健康探測、合成可用性與磁碟安全界線

ProxyMac 工程團隊 2026年4月21日 約 13 分鐘閱讀

位於 香港、日本、韓國、新加坡或美國ProxyMac Mac mini 上,OpenClaw 閘道有時看起來「還活著」卻在暗地裡失敗:HTTP 監聽器仍綁定埠位,但模型路由已卡住、磁碟已用到九成以上,或 LaunchAgents 重啟快到日誌來不及刷出。這份 2026 實務手冊補上分層健康探測——由 LaunchAgent 排程的快速本機 curl、從區網之外進行的較慢合成可用性檢查,以及針對磁碟與統一化日誌(unified logging)的界線——並把失敗事件接到 Launchctl 重啟與復原部署故障排除 的結構化步驟。您會拿到五欄訊號矩陣(欄位形狀與我們的速率限制專題不同)、可複製的 curl 探測列、具體時間參數(60 秒節奏、curl 5 秒逾時、可用磁碟少於 12 GB即示警),以及五步驟事件矩陣,讓值班同仁不必猜是 Cloudflare、TLS 還是閘道行程先壞。

從可觀測性工程的角度,OpenClaw 這類閘道同時扮演「對外的 HTTP 邊界」與「對模型供應商的出站客戶端」。因此探測設計必須能區分行程存活應用就緒商業層級成功,否則儀表板全綠時,使用者仍會在聊天介面看到 500 或逾時。分層也能讓您在變更 TLS 憑證或調整反向代理規則時,先從本機端縮小爆炸半徑,再對照外部合成檢查是否同步惡化。

建議把本文與 說明中心 的自動化備註一起納入 onboarding,並在堆疊更多代理程式之前,先透過 定價頁 預留足夠的單租戶容量,避免探測本身成為壓垮磁碟 I/O 的最後一根稻草。

為何不能只靠「行程還在跑」

macOS 的活動監視器可以顯示綠燈,但背景執行緒可能仍卡在 futex 或網路讀取。外部供應商若只從網際網路 ping 主機,頂多證明 ICMP 有到——無法證明您的 OpenClaw HTTP 介面回HTTP 200,更無法證明 JSON 內文宣告模型憑證已載入。探測應依序回答三個問題:TCP 埠是否接受連線? 應用邏輯是否宣告 ready? 磁碟、密鑰、上游 API 是否仍在服務水準內? 任一跳過,您就會在每個星期五重開同一張第二級事故票。

  • LaunchAgent 可觀測性:失敗探測可遞增計數並透過 syslog 轉送 SIEM。
  • 金絲雀酬載:固定 512 位元組的 JSON echo 能證明 TLS 終止與 JSON 剖析,而非僅 TCP 連通。
  • 維運理智:連續三次失敗且時間窗約 兩分鐘內,僅當上次乾淨關機已超過十分鐘才自動重啟——降低 fork 風暴風險。

此外,請把探測腳本的離開碼語意寫清楚:例如 2 代表逾時、3 代表 HTTP 非 2xx、4 代表 JSON schema 不符。沒有語意化的離開碼,事後很難用 log 聚合還原第一因。

訊號類型對照(存活 vs 就緒 vs 商業層級)

訊號通過時代表仍可能出錯常見工具建議節奏
TCP 開啟埠位接受 SYNTLS 設定錯誤、應用程式 panicnc -vz 127.0.0.1 PORT120 秒(便宜)
HTTP 存活200 OK 空本文模型驗證已過期curl -fsS --max-time 5 URL60 秒
HTTP 就緒JSON 顯示佇列深度低於閾值上游 LLM 故障搭配 jq 的腳本檢查180 秒
商業層級探測合成對話完成罕見競態條件獨立 worker mini15 分鐘

在單租戶 mini 上,我們通常建議把「便宜 TCP」與「較貴 HTTP」拆頻率:前者用來快速偵測行程是否整體消失,後者用來驗證應用堆疊。若您把兩者合併成同一支重腳本,失敗時會較難判斷是連線層還是應用層。

能活過 TLS 前層的本機探測樣式

請把管理用途的健康路由綁在 127.0.0.1 的高埠上,與公開 webhook 插座分離,細節可對照 webhook 強化。LaunchAgent 應以與閘道相同使用者脈絡執行,讓鑰匙圈項目維持解鎖。使用 curl --fail --silent --show-error --max-time 5,避免後端掛死時讓 launchd 工作項目永遠佔住。

curl -fsS --max-time 5 http://127.0.0.1:18080/healthz || logger -t openclaw-probe "FAIL"

若健康端點需要簡單驗證,建議使用短效 HMAC 或本機共享密鑰檔(權限 600),而不要長期把高權限權杖寫進 plist 的環境變數字串——旋轉時會很痛苦。

LaunchAgent 計時:StartIntervalThrottleInterval

Apple 文件將 StartInterval 以秒為單位;若探測腳本同時觸發修復動作,請把 ThrottleInterval 設為至少 30,否則您呼叫 launchctl kickstart 的速度會快過閘道釋放套接字。成功連線建議只在除錯層級記錄;失敗應輸出單行文字,包含 epoch 時間戳、離開碼與 curl 耗時。

重用重啟配方:當探測失敗時,請呼叫 閘道重啟復原 內同一包裝常式,讓值班只需要記一個 runbook。

在 macOS 15 上,也請留意統一化日誌的預設保留策略:過度冗長的成功 log 會讓磁碟與索引壓力在事故期間雪上加霜。

在不暴露管理路由的前提下做外部合成檢查

挑選支援雙向 TLS 用戶端憑證或簽名標頭的外部監控服務;請勿把未驗證的管理用 JSON 直接攤在公開網際網路。從東京監控 日本區 mini 的 HTTPS 探測,第 95 百分位延遲宜維持在 80 毫秒以下——若外部檢查變差而本機探測仍綠燈,優先懷疑上游 WAF 或憑證到期,而不是 OpenClaw 核心本身。

實務上也可為外部探測建立獨立子網域與最小權限路由,並在變更窗口凍結期間暫停會觸發副作用的 POST 探測,只保留 GET 健康檢查。

磁碟與統一化日誌界線

會串流逐字稿的 OpenClaw 工作負載,常讓 /var/db/diagnostics 成長速度快於團隊預期。請在可用位元組低於 12 GB 時示警(不要只看百分比——APFS 快照會扭曲百分比意義)。同時追蹤成長速度:單一租戶 mini 若每天新增超過約 3 GB,多半是事故後忘了關閉偵錯層級日誌。請以 newsyslog 風格上限旋轉應用程式日誌,或在 gzip 壓縮搶走模型推論 CPU 前先送到遠端儲存。

密鑰旋轉:若探測在輪替後立刻回HTTP 401,監控端應改從鑰匙圈讀版本化密鑰,參考 密鑰與鑰匙圈指南——請勿把長效個人存取權杖硬寫進 plist。

也建議監看 inode 使用率:小型租戶磁碟在大量暫存檔情境下,可能先撞 inode 而不是容量。

探測轉紅時的五步驟事件矩陣

  1. 確認影響範圍:本機與外部探測是否不一致?若僅外部失敗,先查 TLS 與 DNS。
  2. 檢視 LaunchAgent 標準錯誤:在 macOS 15 上,log show --predicate 'process == "curl"' --last 5m 常能在不開啟閘道冗長日誌的前提下抓到多數失敗。
  3. 驗證相依性:磁碟、inode、模型供應商 429 計數——可重用 供應商容錯與節流 的 HTTP 訊號表。
  4. 先重啟一次並使用有護欄的 kickstart 樣式;若 90 秒內再次失敗,請停止迴圈並改抓 spindump。
  5. 記錄爆炸半徑:哪些自動化被暫停、香港/日本/韓國/新加坡/美國哪些區域仍健康,並把證據連結到變更票證。

最後一點對跨區團隊特別重要:沒有「哪些區域仍健康」這行字,財務與客戶成功團隊很難在同步會議中對齊敘事。

常見問題

探測應以 root 執行嗎?偏好與閘道相同的非特權使用者,讓檔案權限與生產一致。

能重用 MCP 健康端點嗎?通常可以,見 MCP 設定——但請讓 OpenClaw 核心健康與 MCP 分離,避免局部 MCP 故障遮罩閘道死亡。

多代理並行時怎麼辦?並行上升時就緒探測可能抖動——請先收緊佇列閾值,再考慮靜音告警。

公開 webhook URL 該不該打?外部監控可以打窄化的健康路由,但本機探測永遠要存在,才能把行程崩潰與公開 URL 前方的 TLS 或 CDN 問題區分開。

為何 ProxyMac Mac mini 適合硬化 OpenClaw 探測

Apple Silicon M4 硬體上、於 香港/日本/韓國/新加坡/美國與閘道並排執行探測,能給 curl 加 jq 腳本可預測的 CPU、與 launchd 的原生整合,以及事故期間吸收冗長日誌所需的單租戶磁碟——同時不必與 Linux cgroup 驚喜搏鬥。請依模型 API 區域挑最近的 mini(見 定價),並依 GitOps 指南 把探測 plist 與 OpenClaw 設定放在同一個 Git 儲存庫。試點結束後依流程回收機器,讓財務看到的是清楚 SKU,而不是神秘雲端科目。

為探測預留自動化余量

香港/日本/韓國/新加坡/美國 Mac mini,承載 OpenClaw 與監控腳本