Incoming WebhookCI 构建结论推到 Discord,免开整服机器人权限。面向 远程 Mac 上的 OpenClaw 网关curl / npm 安装、openclaw onboardDashboardWebhook 探活一条路径走完。延伸阅读 多端点路由与 CI 摘要网关健康 LaunchAgent HowTo安装排错首页帮助购买免登录。

环境前置与最小权限原则

装法二选一:官方 curl 脚本npm i -g openclaw@latest。网关与 SSH shell 须同主版本 Node(常见要求 22.16+24 LTS)。跑 openclaw doctor,并用 launchctl print 核对 PATH、代理与 NODE_EXTRA_CA_CERTS

最小权限:Discord 仅建频道 Webhook;URL 放 DISCORD_WEBHOOK_URL 或密钥管理,勿入库。URL 泄露等同他人可发帖。

建议 避免
Node 全链路 24 LTS(或文档最低 22.16+) SSH 与 launchd 各跑一版
令牌 plist / env 文件 / CI Secret 写进 Git 与截图发群
观测 网关日志目录单独挂载与轮转 根分区被 webhook 调试日志打满

Discord Webhook 创建与网关侧绑定步骤

onboardopenclaw onboard 写入本机配置;浏览器开 Dashboard(多为 127.0.0.1:端口,以文档为准)确认网关已起。

Discord:频道 → 集成 → Webhooks → 新建,复制 https://discord.com/api/webhooks/...绑定:在 OpenClaw 通知配置或自写中继里设 DISCORD_WEBHOOK_URL;改后 launchctl kickstart -k

步骤 动作 通过条件
1 onboard + Dashboard 能打开 本机 curl 网关根路径或文档健康接口返回 200/约定 JSON
2 写入 Webhook 环境变量并重启服务 launchctl print 可见变量
3 手工 POST 探活(见下) HTTP 204 且频道出现消息
export WH='https://discord.com/api/webhooks/ID/TOKEN' curl -sS -o /dev/null -w "%{http_code}\n" -X POST "$WH" \ -H "Content-Type: application/json" \ -d '{"content":"OpenClaw 网关探活 OK — 远程 Mac"}'

收不到消息:查 URL 是否完整、环境是否混用;contentembeds 勿同时为空;超长改 embed。

CI 构建摘要 payload 模板与字段映射

流水线尾部用 shell 组 JSON,推荐 embed 列字段。下表与常见 CI 变量对应。

展示名 建议来源 Discord 映射
仓库 GITHUB_REPOSITORY embeds[0].fields[]
分支 / Tag GITHUB_REF_NAME field 或 footer
提交 git rev-parse --short HEAD field + 链接到 commit URL
状态 / 耗时 流水线退出码与 SECONDS color(绿/红)与 description
# Bash:用 printf 避免 heredoc 嵌套引号(变量请按 CI 替换) PAYLOAD=$(printf '%s' '{"embeds":[{"title":"CI 构建摘要","description":"main @ abc1234 — success — 3m12s","color":3066993}]}') curl -sS --connect-timeout 5 --max-time 20 -X POST "$DISCORD_WEBHOOK_URL" \ -H "Content-Type: application/json" -d "$PAYLOAD"

也可 CI POST 网关内网接口再由网关转发 Discord,便于脱敏与打 request_id

签名、限流与失败重试参数

可选 username / avatar_url 区分环境。经自家 API 再调 Discord 时可用 HMAC;直连 Discord 则靠 URL 保密与 HTTPS。

429:读 Retry-After 后重试,合并通知防打爆。超时--connect-timeout 5 --max-time 20;重试 ≤3 次,2s/4s/8s 退避。代理与 NO_PROXY 须与 Runner 一致。

常见报错 FAQ(403 / 429 / 超时)

HTTP 403 Forbidden?

Webhook 被删、URL 截断、或机器人已从频道移除。到频道集成里重新创建 Webhook 并更新 Secret;确认频道未启用会阻止 Webhook 发帖的极端权限组合。

HTTP 429 Too Many Requests?

降低推送频率、合并 embed 字段、遵守 Retry-After。矩阵构建时不要每个 shard 都打一条完整 Webhook。

请求超时或 exit 56?

检查出口代理、MTU、DNS 与防火墙;对 discord.com 做短超时探测。远程 Mac 与 CI Runner 的代理环境不一致时,先在同一用户同一进程环境下复现 curl。

HTTP 204 但频道没有新消息?

可能推到已归档频道、只读线程,或客户端缓存未刷新;换账号或移动端交叉确认。另查是否误用「复制 Webhook URL」旧链接而未保存新集成。

总结Node 对齐onboard + DashboardWebhook 最小权限payload 模板,即远程 Mac 上 OpenClaw 与 CI 通知的最短闭环。稳定地域节点可减少代理与 TLS 抖动。免登录可看 首页购买帮助租用远程 Mac 落地网关与流水线,少受本地网络与休眠影响。

Discord × OpenClaw

远程 Mac 上跑网关与 CI 通知

帮助中心购买页首页 免登录;更多网关主题见 技术博客

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