2026 OpenClaw 租用 Mac Mini 實戰
對接 GitLab CI Scheduled Pipeline 觸發夜間巡檢與晨間摘要
2026年3月30日
RunMini 技術團隊
約 8 分鐘
💻 在租用 Mac Mini跑OpenClaw宜以 GitLab Scheduled Pipeline承接夜間巡檢與晨間摘要,取得可稽核觸發與變數隔離。本文含可複現 curl、檢查點、權限矩陣與 Webhook/權杖最小權限、重試與日誌歸檔。延伸:主備與配額降級、分區與 launchd、七乘二十四矩陣。
痛點拆解
- 權杖過寬:個人存取權杖範圍過大,離職或外洩時攻擊面擴大。
- 觸發不可稽核:本機隨意排程缺乏流水線識別,失敗難與變更紀錄對齊。
- 日誌分散:作業輸出未進成品,晨間復盤缺少與 OpenClaw 端同一時間戳之對照。
觸發方式與最小權限決策矩陣
優先專案觸發權杖;須呼叫通用 API 時再用極窄個人存取權杖並設到期日。
| 方式 | 適用情境 | 權限建議 | 主要風險 |
|---|---|---|---|
| 觸發權杖 | 固定分支夜間巡檢 | 僅流水線觸發 | 外洩後可被他人啟動流水線 |
| 入站 Webhook | 外部系統回呼 GitLab | 秘密權杖校驗本文 | 重放須搭配冪等設計 |
| 個人存取權杖 | 多專案編排 | 讀寫範圍最小集合 | 面寬須輪替與稽核 |
落地七步(每步附檢查點)
- 定契約:
RUN_MODE為nightly_audit或morning_digest。檢查點:合併請求附變數表。 - 觸發權杖:專案設定建立並綁預設分支。檢查點:唯讀帳呼叫應拒絕。
- 排程:Scheduled Pipeline 填 Cron,時區對齊業務。檢查點:下次觸發與本地鐘差一分鐘內。
- Mac 試跑:驗出口與白名單。檢查點:二零一且列表見新流水線。
- OpenClaw:
curl附唯讀稽核標頭。檢查點:失敗非零退出、通知有摘要。 - 重試與歸檔:見下節。檢查點:斷網一次後自動重試成功或明確錯誤。
- 週復盤:七乘二十四是否擠互動;不足則升配或挪窗。
檢查點指令一:手動觸發流水線(請替換網域、專案識別與權杖)
curl -fsS --retry 4 --retry-delay 15 --retry-all-errors --connect-timeout 10 --max-time 120 \
-F "token=${GITLAB_TRIGGER_TOKEN}" -F "ref=main" \
-F "variables[RUN_MODE]=nightly_audit" \
"https://gitlab.example.com/api/v4/projects/${CI_PROJECT_ID}/trigger/pipeline"
檢查點指令二:自租用 Mac 探測 OpenClaw 健康(權杖限唯讀)
curl -fsS --retry 3 --retry-delay 5 --max-time 30 \
-H "Authorization: Bearer ${OPENCLAW_AUDIT_TOKEN}" \
"${OPENCLAW_BASE_URL%/}/healthz"
流水線片段:重試、逾時與日誌歸檔
default 開作業重試;artifacts 收 logs/ 供晨間下載。
default:
retry:
max: 2
when:
- runner_system_failure
- stuck_or_timeout_failure
openclaw_nightly:
stage: audit
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule" && $RUN_MODE == "nightly_audit"'
script:
- mkdir -p logs
- curl -fsS --retry 5 --retry-all-errors --max-time 600 -H "Authorization:Bearer $OPENCLAW_AUDIT_TOKEN" -o logs/audit.json "$OPENCLAW_BASE_URL/audit/run"
artifacts:
when: always
paths: [logs/]
expire_in: 14 days
可引用要點
- 排程來源:
CI_PIPELINE_SOURCE為schedule才跑夜間作業,免與推送混跑。 - 重試邊界:
curl與retry皆敗則人工介入。 - 歸檔與冪等:成品預設十四天;長留同步物件儲存並脫敏;OpenClaw 以自然日或流水線編號去重。
排錯 FAQ
- 排程已到卻未進入目標作業?
- 查
rules與排程變數覆寫;受保護分支可能限範本。 - Mac 上 curl 握手緩慢或逾時?
- 查租用機出口與 DNS;設
--connect-timeout、--max-time。 - 晨間與夜間搶佔資源?
- 使用
resource_group串行,或參考排程矩陣調整優先級。 - 權杖輪替當晚如何零中斷?
- 排程變數雙權杖並存驗過再撤舊值;OpenClaw 唯讀權杖亦重疊一期。