curl 一鍵腳本或 npm install -g openclaw(擇一)、接著 openclaw onboard 與 openclaw doctor 對齊設定;閘道與儀表板/dashboard若文件有提供,請在同一 Node 環境開啟。本文採最小權限:Discord 只用頻道 Webhook(URL 即祕鑰),閘道 API 另用窄用途 Bearer。延伸可讀Telegram/Slack 通道 FAQ、閘道健康與 LaunchAgent;連線與 SSH 見說明中心(免登入)。
① 環境前置與最小權限原則
先把執行環境對齊,再談 Webhook;否則「設定寫了但沒進程」會浪費大量排錯時間。
- Node 版本:以 OpenClaw 當前文件為準,2026 主線多要求 Node 22.16+,團隊可統一 24 LTS;執行
node -v,並確認launchd、互動 SSH 與 CI job 使用同一PATH。 - 安裝入口擇一:官方
curl … | bash類 install 與npm i -g openclaw不要混裝兩套全域 CLI;裝完後which openclaw應指向預期前綴。 - 向導與自檢:
openclaw onboard完成初始目錄與守護程序(若文件支援--install-daemon可一併註冊);openclaw doctor檢查設定搜尋路徑、埠與相依版本。 - 閘道綁定:生產預設讓 HTTP 服務聽
127.0.0.1,由 Nginx/Caddy 終止 TLS 後轉發;對外管理 API 使用Authorization: Bearer <GATEWAY_TOKEN>(實際標頭名以文件為準),與 Discord Webhook URL 分開存放。 - 最小權限:Discord 端僅建立「單一頻道、僅發訊」的 Webhook;OpenClaw 進程帳號僅需讀寫設定目錄與寫日誌,祕鑰不放進 Git。
# 閘道健康(埠、標頭、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
② Discord Webhook 建立與閘道側綁定步驟
Discord 的 Incoming Webhook 沒有 OAuth scope 細分:完整 URL 即能力邊界,外洩等同可對該頻道發文。請用伺服器設定中的「整合/Webhooks」建立,並限制知悉範圍。
建立 Webhook:伺服器設定 → 整合 → Webhooks → 新增 Webhook → 選定頻道 → 複製 URL。建議名稱標註專案與環境(如 ci-prod)。
寫入祕鑰庫:以環境變數 DISCORD_WEBHOOK_URL(示例)注入;macOS 可用 launchd EnvironmentVariables 或 CI 加密變數。設定檔若支援 channels/discord 區塊,鍵名請以當版文件為準。
閘道側綁定:若 OpenClaw 透過內建通知轉發,在儀表板或設定中填入上述變數並重載守護程序;若採「CI 直打 Discord」而閘道只做觀測,則閘道無需持有 Webhook URL,僅需能訪問 /health 與日誌。
Webhook 校驗:在遠端 Mac 或 CI 上直接 POST 測試 payload,確認 HTTP 204 與頻道出現訊息(見下節模板)。
# 最小校驗(將 WEBHOOK_URL 換成完整 https://discord.com/api/webhooks/...)
curl -sS -X POST "$DISCORD_WEBHOOK_URL" \
-H 'Content-Type: application/json' \
--data '{"content":"OpenClaw/CI webhook smoke test ✅"}' \
-w '\nHTTP %{http_code}\n' --max-time 15
收不到訊息時:先確認回應碼與回應本文;再檢查頻道權限、是否為論壇頻道需指定 thread、以及公司代理是否攔截 discord.com。閘道轉發情境下再加查 OpenClaw 日誌與出站 DNS。
③ CI 建置摘要 payload 模板與欄位對應
純文字 content 最簡,但長日誌易超長度;實務上多用 embeds 把分支、提交、狀態、耗時、連結分欄,方便手機閱讀。
| CI 變數/來源 | Discord embed 建議 |
|---|---|
CI_PROJECT_NAME/repo | embeds[0].title 或 author.name |
CI_COMMIT_REF_NAME/branch | 第一個 field「分支」 |
CI_COMMIT_SHORT_SHA | field「提交」+ pipeline URL |
| 成功/失敗 | color(十進位:綠 3066993、紅 15158332) |
| 建置秒數 | field「耗時」或 footer.text |
| artifact/報告連結 | field「連結」(短時簽名 URL) |
# 以 jq 組裝 embed(避免手拼 JSON 轉義錯誤;變數依 CI 平台替換)
TS="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
COLOR=3066993; test "${CI_JOB_STATUS:-success}" = "failed" && COLOR=15158332
PAYLOAD="$(jq -n \
--arg title "Build ${CI_PROJECT_NAME:-app}" \
--arg desc "分支 ${CI_COMMIT_REF_NAME:-main} · ${CI_COMMIT_SHORT_SHA:-unknown}" \
--arg job "${CI_JOB_NAME:-build}" \
--arg dur "${CI_JOB_DURATION:-n/a}" \
--argjson color "$COLOR" \
--arg ts "$TS" \
'{username:"CI Bot", embeds:[{title:$title, description:$desc, color:$color, timestamp:$ts, fields:[{name:"Job",value:$job,inline:true},{name:"耗時",value:$dur,inline:true}]}]}')"
curl -sS -X POST "$DISCORD_WEBHOOK_URL" -H 'Content-Type: application/json' -d "$PAYLOAD" --max-time 20
實作上建議用 jq -n 依變數組裝物件,並對 description 做長度截斷(例如 1800 字內),避免觸發 Discord 本文上限。若需經 OpenClaw 聚合多 job,可在閘道側合併為單則 embed 再送出,降低 429 風險。
④ 簽章/限流與失敗重試參數
Discord Incoming Webhook 沒有類似 Slack 的簽章標頭可驗證來源;安全邊界是URL 保密+網路 ACL。若經由自有閘道轉發,可在閘道入口驗證 Authorization 或 HMAC,再向 Discord 出站。
- 限流:同一 Webhook 在尖峰併發時易遇 429;回應可能帶
retry_after或Retry-After標頭,腳本應睡眠後再試,並避免十幾個 job 同秒推送。 - curl 重試:
curl --retry 3 --retry-delay 2 --retry-all-errors搭配--max-time 20;自訂迴圈可用 2/4/8 秒指數退避,最多 3~5 次。 - 冪等:對同一 pipeline 使用固定
dedup_key寫入狀態檔,避免「重跑 step」重複刷頻道;失敗時將 body 落盤到 artifact 供人工轉貼。
⑤ 常見報錯 FAQ(403/429/逾時)
- 403 Forbidden:Webhook 已刪、URL 複製不全、或環境變數被截斷;重新建立 Webhook 並全量更新祕鑰。若走代理,確認未把 POST 改寫到錯誤 upstream。
- 429 Too Many Requests:減少並行通知、合併 embed、讀取退避時間後重試;矩陣 build 可只向主 job 回報一次摘要。
- 逾時/連線重設:調高
--max-time與 DNS 快取穩定性;檢查遠端 Mac 與 Runner 的出口防火牆;勿在關鍵 path 上無限阻塞,應 fail-open 到 artifact。 - 400/invalid form body:JSON 未轉義、embed 超長、或
Content-Type非application/json;用jq產生 payload 並在本地curl復現。
與 OpenClaw 安裝循環、埠占用相關的問題見安裝排錯指南。
小結與下一步
總結:在遠端 Mac 落地 OpenClaw 與 Discord 建置摘要,關鍵是 Node/CLI 路徑一致、Webhook URL 當祕鑰管理、用 embed 對齊 CI 欄位,以及 429 與逾時的可觀測重試。先把單則 curl 校驗跑通,再接到正式 pipeline。
若你希望長期穩定的 Apple Silicon 節點承載閘道、守護程序與 CI,省去自建機房與跨境連線調優,可先瀏覽MacPull 首頁了解場景,至購買頁(免登入)選擇節點區域,操作說明見說明中心。更多 OpenClaw 與閘道實戰可從技術部落格繼續閱讀,例如多端點路由與 CI 摘要。