2026 OpenClaw 租用 Mac Mini 实战
对接 GitLab Scheduled Pipeline 触发夜间巡检与晨间摘要
2026年3月30日
RunMini 技术团队
阅读时间:约 8 分钟
🚀 在租用 Mac Mini上跑OpenClaw的团队,宜把夜间巡检与晨间摘要交给GitLab Scheduled Pipeline而非本机随意定时。GitLab提供审计友好的触发链路与变量隔离;本文含可复现命令、检查点与权限矩阵。延伸阅读:主备模型与配额降级、分区与 launchd 隔离、七乘二十四调度矩阵。
痛点拆解
- 令牌过宽:个人访问令牌权限过大,离职或泄露时面攻击扩大。
- 触发不可审计:手工脚本缺流水线标识,失败难与变更对齐。
- 日志散落:作业输出未进制品,晨间复盘缺同一时空戳对照。
触发方式与最小权限决策矩阵
优先项目触发令牌;仅当必须调通用接口时用窄范围个人访问令牌并设过期。
| 方式 | 适用 | 权限建议 | 风险 |
|---|---|---|---|
| 触发令牌 | 固定分支夜间巡检 | 仅流水线触发 | 泄露可被人跑流水线 |
| 入站 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 持久化日志目录便于晨间下载比对。
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 握手慢或超时?
- 查租用机出口与解析;写死
--connect-timeout、--max-time。 - 晨间与夜间抢资源?
- 用
resource_group串行,或见调度矩阵。 - 令牌轮换当晚?
- 调度变量双令牌并存验证后再下线旧值;OpenClaw 只读令牌同理重叠一期。