openclaw 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 type 選 application/json,啟用 Secret 並在 handler 驗證 X-Hub-Signature-256。勾選 check_suite 或 pull_request 後,於程式內判斷 action、paths 或上游結論,避免無關推送。每一筆事件使用獨立工作目錄(淺克隆+指定 SHA 或 git worktree),任務結束可刪除目錄,防止並行 job 互相覆寫。
最小可複現步驟清單(建議順序)
環境:遠端 Mac 固定 Node 與 CLI 路徑,openclaw doctor 無錯誤後再註冊守護程序。
閘道:依文件將服務綁 127.0.0.1,寫入閘道 Bearer;以隧道對外暴露單一路徑。
Webhook:設定 Secret、挑選事件;handler 先驗簽再解析 JSON。
令牌:建立 fine-grained PAT 或安裝 GitHub App,僅授權目標倉庫與 Checks 相關 scope。
掃描與回傳:於隔離目錄檢出觸發 SHA,對 package-lock.json、pnpm-lock.yaml、Cargo.lock 等執行 diff 或校驗腳本,再以 REST 建立/更新 Check Run 附摘要與日誌連結。
可引用檢查項(寫進 Runbook)
- 簽章:拒收無效或缺
X-Hub-Signature-256的請求,避免偽造事件。 - SHA:克隆與 diff 必須對齊 payload 內的
head_sha/after,勿沿用預設分支尖端。 - 結論:掃描通過寫
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 明寫 PATH 與 NODE_EXTRA_CA_CERTS;以 curl -v https://api.github.com 驗證 TLS 與企業代理。
同一提交收到多次 check_suite?
以 head_sha 與 action 在記憶體或快取去重;矩陣建置僅由主 job 回傳一次摘要。