openclaw onboard、Dashboard 与 Webhook 探活一条路径走完。延伸阅读 多端点路由与 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 创建与网关侧绑定步骤
onboard:openclaw 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 且频道出现消息 |
收不到消息:查 URL 是否完整、环境是否混用;content 与 embeds 勿同时为空;超长改 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 |
也可 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」旧链接而未保存新集成。