Webhook 配置
在 Webex 目標空間安裝 Incoming Webhook(或貴組織核准的同等連接器),建立後會得到含查詢參數的完整 HTTPS URL。網關對 Webex 僅需 POST、Content-Type: application/json,本文假設 body 使用官方慣例的 markdown(必要時並存 text 後備),內容包含:環境前綴、build_id、workflow、聚合後的 state、commit 短雜湊、run_url,以及失敗摘要(例如最後 20 行日誌標題或靜態分析規則名)。節點與 Runner不保存該 URL;邊界上啟用 TLS 與 WAF 允許網關出站即可。
網關可把同一 build_id 下多臺 Mac 的子階段折成單一對外敘事,避免空間淪為競態字幕,利於 on-call 判斷是否阻斷發版。佇列設計見 部署與佇列同步。
最小權限
將入站驗證(HMAC、長隨機標頭或 mTLS)與 Webex Webhook URL分檔存放,目錄僅 root/網關帳號可列,檔案權限建議 0440。CI 映像、共享快取卷與節點使用者家目錄不得含聊天 URL。輪替 Incoming URL 時採雙讀重疊:新舊兩檔並存一個 TTL(例如 24~72 小時),新訊息優先讀新檔,舊檔僅作回滾備援,再刪舊。細節對照 節點秘密最小權限與 IM 綁定與權杖輪替。
重試退避
常見 4xx/5xx 處理
400 Bad Request:JSON 缺欄位、markdown 過長或非 UTF-8;用伺服器側 curl -v 固定同一 body 重放,對照官方範例縮小 payload。
401/403:多為 URL 被管理員重設、複製截斷或空間成員策略變更;更新密鑰檔並重啟/重載網關行程,清掉行程內快取舊字串。
404:Webhook 已刪或空間遷移;需重新建立並走輪替流程。
413/422:附件或 markdown 超出限制;改以連結指向建置工件與日誌,訊息本體只保留摘要。
429:降並發、拉長聚合視窗、合併同鍵事件;勿在節點分散重試。
5xx/連線逾時:判斷是否可重試後走退避;連續失敗應寫入稽核與次要通道(例如只讀狀態頁),避免無限堆疊重試。
步驟清單與排錯
- 關聯鍵:CI 發行
build_id/correlation_id,寫入共享佇列或狀態儲存。 - 節點上報:各節點只向網關送
mesh_node_id、子任務名、state、commit、run_url、可選failure_snippet。 - 聚合視窗:約 30~60 秒內合併同
build_id事件,保留最後「進行中/成功/失敗」與最新摘要。 - 出站:網關以冪等鍵呼叫 Webex Incoming Webhook;失敗則記錄 HTTP 狀態與 request id(若有)。
- 排錯勾選:空間是否仍綁定該 Webhook;網關時鐘是否同步(簽名與 TLS 驗證);是否有代理改寫
Content-Length;多環境是否誤用同一 URL。
仍異常時:自相同 egress 以最小 body 測通後再加長 markdown;僅網關失敗而 curl 成功時,查 DNS、MTU 與 SSL 檢查代理。
結語與選購
Webex 適合當狀態廣播與失敗摘要的匯流排;MeshMac 多節點的價值在於算力池化與角色分工,而網關+Incoming Webhook 則把「人要看的那一條線」收斂回單一稽核面與單一配額面。槽位或佇列仍塞車時,先調限流與聚合,再評估加節點或拆環境空間。
MeshMac 公開頁可免登入瀏覽:購買/方案、首頁、幫助中心、OpenClaw 專欄、部落格列表。
收斂網關,廣播一條建置時間軸
以 Incoming Webhook 作唯一出站、冪等鍵抑刷頻、退避扛配額;槽位不足再擴 MeshMac 節點。下方連結皆免登入。