💻 在 远程 Mac 上用 OpenClaw 网关接住 GitHub Webhook,当 Check Suite 或带 lock 文件的 PR 更新时自动做 lockfile 差异扫描,并把 检查摘要写回 Checks API。本文按 docs.openclaw.ai 梳理 openclaw doctor仅回环绑定令牌保管,并给可照抄的分步清单与 FAQ。延伸阅读 GitHub Actions 自托管 Runner 指南Discord 构建摘要回传帮助中心购买页技术博客均可免登录浏览。

痛点拆解:为什么必须网关 + 隔离 + 最小权限

1)管理面暴露:把 OpenClaw Dashboard 绑到 0.0.0.0 且无隧道保护,等于把令牌与调试接口摊在公网。

2)事件洪水:未过滤的 check_suite 会在矩阵构建下重复投递,远程机磁盘与 API 配额很快被拖垮。

3)工作目录串味:多任务共用同一克隆目录,node_modules 残留会让 lockfile diff 与真实提交不一致。

决策矩阵:监听面、令牌与触发面怎么选

维度 推荐(生产) 避免
网关监听 127.0.0.1 + SSH 反向隧道 / 边缘反代 无鉴权直连 WAN 管理口
GitHub 身份 GitHub App 或 fine-grained PAT:Contents 读、Checks 写、Metadata 读 长寿命 classic repo 全家桶塞在仓库明文
Webhook 只勾 check_suite / pull_request + Secret 验签 全事件订阅、关 SSL 校验
工作副本 每 run 独立目录或 git worktree 并行任务共享同一 WORK_DIR

OpenClaw 网关:doctor、Dashboard 令牌与回环绑定

安装仍选 官方 curlnpm i -g openclaw@latest,执行 openclaw onboard 后,用 openclaw doctor 核对 Node 版本、证书与企业代理;launchd 与交互 shell 的 PATH 必须一致。

docs.openclaw.ai 将 HTTP 服务绑在 本机回环,Dashboard 展示的 访问令牌写入 plist、Keychain 或仅 root 可读 env 文件;对外只暴露经隧道转发的 Webhook 路径,由网关内 handler 校验 GitHub X-Hub-Signature-256 后再执行业务逻辑。

GitHub 侧:Webhook 事件过滤、Secret 与最小权限令牌

仓库 → Settings → Webhooks:Content type 选 application/json,事件建议先收窄到 check_suite(completed)或 pull_request;在 handler 里再判断 paths 是否命中 package-lock.jsonpnpm-lock.yamlyarn.lockCargo.lock 等。

写回检查运行时,优先 GitHub App 安装令牌;若用 PAT,仅在组织策略允许的前提下勾选最小仓库集合,并定期轮换。令牌与 Webhook Secret 绝不进入仓库树。

最小可复现步骤清单(远程 Mac)

按序执行
  • 固定 Node 24 LTS(或文档要求的 22.16+),openclaw doctor 全绿后再启守护进程。
  • 网关监听 127.0.0.1,用 ssh -R 或内网反代把 GitHub 流量落到该端口。
  • 注册 Webhook,填入 Secret,在网关代码路径用官方算法验签,拒绝体非 JSON 或重复 delivery
  • 为每次任务创建 /var/tmp/gh-check-<run_id> 之类隔离目录,浅克隆触发 SHA。
  • 对目标 lock 文件执行 git diff 或包管理器校验脚本,输出结构化日志。
  • 调用 Checks API 创建/更新 check_run,summary 写 diff 行数与结论;失败附日志路径。
  • 需要人工通知时,可复用 Discord 摘要流水线二次投递(与本站其他 OpenClaw 文章一致)。
# 例:仅展示 lockfile 变更(在已检出仓库内) git diff --exit-code -- package-lock.json pnpm-lock.yaml || echo "lockfile_changed=1"

常见报错 FAQ(验签、401、403、重复投递)

Webhook 一直 401 或验签失败?

核对仓库 Secret 与网关进程读取的是否为同一环境;确认用的是 sha256= 前缀与原始 body 字节序列;反代若改写了 body,验签必失败。

Checks API 403 resource not accessible?

令牌缺少 Checks 写权限或 App 未安装到该仓库;组织 SAML/策略可能拦截。用 curl -I -H "Authorization: Bearer $TOKEN" https://api.github.com/repos/OWNER/REPO 先验证作用域。

openclaw doctor 提示证书或 Node 路径异常?

在 launchd plist 显式写入 PATHNODE_EXTRA_CA_CERTS;勿依赖登录 shell 才存在的 nvm 别名。

同一提交收到多次 check_suite?

在内存或 Redis 记录 head_sha + action,忽略尚未 completed 的套件;矩阵 Job 只在主 Job 回传一次摘要。

总结回环网关验签 Webhook最小权限令牌目录隔离,是把 GitHub Checks 与 lockfile 门禁搬到远程 Mac 的四根支柱。🚀 推荐在 MacPull 租用常驻在线、网络稳定的远程 Mac,托管 OpenClaw 网关与自动化脚本,避免笔记本休眠与家庭宽带抖动打断 delivery。免登录直达 购买页帮助中心技术博客获取更多落地文章。

GitHub Checks × OpenClaw

用远程 Mac 稳定跑网关与 Checks 自动化

帮助中心购买页首页 免登录;OpenClaw 专题见 技术博客

多地域可选
SSH 访问
弹性租期
支持渠道