摘要:遠端 Mac上以 OpenClaw 閘道接收 GitHub Webhook,於 Check Suite 或含鎖定檔之 PR 更新時觸發 lockfile 差異掃描,並將結論寫回 Checks API。請對齊 docs.openclaw.aiopenclaw doctor、儀表板令牌僅回環127.0.0.1)綁定。延伸閱讀站內Discord 建置摘要閘道安全硬化安裝排錯說明中心購買頁免登入

痛點拆解:為何要回環、過濾事件與隔離目錄

1)管理面外掛:將閘道或儀表板綁在 0.0.0.0 卻未做隧道或邊界 ACL,等於把 Bearer 令牌與除錯端點暴露在公網掃描之下。

2)事件洪水:未過濾的 check_suite 在矩陣建置下重複投遞,遠端機 API 配額與磁碟 I/O 很快被耗盡。

3)工作目錄互污染:多任務共用同一克隆目錄時,殘留的 node_modules 或建置產物會讓 lockfile diff 與實際提交不一致。

決策矩陣:觸發來源與權限邊界

對照表
選項觸發/過濾最小權限要點
pull_request + paths僅 lock 相關檔變更時執行腳本Contents 讀、Checks 寫、Metadata 讀
check_suite建議僅 completed 且對 head_sha 去重同上;組織需允許寫入 Check Run
Fine-grained PAT單一倉庫或倉庫清單勿勾選超過掃描所需之寫入範圍
GitHub App安裝範圍限目標組織/倉庫於 App 設定顯式開啟 Checks 權限

閘道與 docs.openclaw.ai:doctor、令牌、僅回環

安裝路徑擇一(官方 install 腳本或 npm i -g openclaw),統一 Node 22.16+24 LTS;執行 openclaw onboard 後務必跑 openclaw doctor 確認 PATH、憑證與代理與 launchd 一致。閘道 HTTP 應僅監聽本機回環,儀表板簽發的令牌放在 EnvironmentVariables 或祕鑰管理,勿進版控。對外公網 Webhook 以 ssh -L、反向代理或內網隧道轉到 127.0.0.1:PORT,由邊界設備終止 TLS。

# 閘道健康自檢(替換 PORT/TOKEN)
curl -sS -o /dev/null -w '%{http_code}\n' \
  -H 'Authorization: Bearer YOUR_GATEWAY_TOKEN' \
  --max-time 10 http://127.0.0.1:PORT/health

GitHub:Webhook 簽章、事件過濾與工作目錄隔離

於倉庫 Settings → Webhooks 建立端點,Content typeapplication/json,啟用 Secret 並在 handler 驗證 X-Hub-Signature-256。勾選 check_suitepull_request 後,於程式內判斷 actionpaths 或上游結論,避免無關推送。每一筆事件使用獨立工作目錄(淺克隆+指定 SHA 或 git worktree),任務結束可刪除目錄,防止並行 job 互相覆寫。

最小可複現步驟清單(建議順序)

1

環境:遠端 Mac 固定 Node 與 CLI 路徑,openclaw doctor 無錯誤後再註冊守護程序。

2

閘道:依文件將服務綁 127.0.0.1,寫入閘道 Bearer;以隧道對外暴露單一路徑。

3

Webhook:設定 Secret、挑選事件;handler 先驗簽再解析 JSON。

4

令牌:建立 fine-grained PAT 或安裝 GitHub App,僅授權目標倉庫與 Checks 相關 scope。

5

掃描與回傳:於隔離目錄檢出觸發 SHA,對 package-lock.jsonpnpm-lock.yamlCargo.lock 等執行 diff 或校驗腳本,再以 REST 建立/更新 Check Run 附摘要與日誌連結。

可引用檢查項(寫進 Runbook)

  • 簽章:拒收無效或缺 X-Hub-Signature-256 的請求,避免偽造事件。
  • SHA:克隆與 diff 必須對齊 payload 內的 head_shaafter,勿沿用預設分支尖端。
  • 結論:掃描通過寫 success,僅警告可標 neutral 並附人工複核連結。

常見報錯 FAQ

Webhook Delivery 一直 401 或 404?

檢查反向代理是否剝除 URL 前綴;核對閘道 Bearer 或簽章祕鑰與 GitHub 後台一致;handler 僅聽回環時須確認隧道終點埠正確。

Checks API 回 403 resource not accessible?

令牌缺少 checks:write 或 App 未授權該倉庫;組織政策可能禁止第三方寫入檢查執行。

openclaw doctor 顯示 Node 或憑證異常?

launchd plist 明寫 PATHNODE_EXTRA_CA_CERTS;以 curl -v https://api.github.com 驗證 TLS 與企業代理。

同一提交收到多次 check_suite?

head_shaaction 在記憶體或快取去重;矩陣建置僅由主 job 回傳一次摘要。

結語

總結:僅回環閘道Webhook 簽章與事件過濾最小權限令牌工作目錄隔離,是把 GitHub Checks 與 lockfile 門禁搬到遠端 Mac 的四根支柱。建議在 MacPull 租用常駐連線穩定的 Apple Silicon 節點,託管 OpenClaw 閘道與自動化 handler,避免筆電休眠與家用寬頻抖動中斷 Webhook。請善用說明中心購買頁技術部落格(皆免登入)延續落地。

GitHub Checks × OpenClaw

以遠端 Mac 穩定託管閘道與 Checks 自動化

說明中心購買頁首頁 免登入;OpenClaw 主題見 技術部落格

多地域可選
SSH 存取
彈性租期
支援管道