痛点与边界
把「摘要代理」当成全能密钥是最贵的错误;多节点又会把错误放大三倍。
- 令牌过宽: 一条 PAT 同时能改仓设置、删分支,失陷后不止摘要任务被滥用。
- 目录混用: 各节点共用同一
~/.openclaw与同一 secrets 文件,审计无法定位是哪台机泄露。 - 重试无脑: 对鉴权失败做自动退避重试,只会触发平台风控与团队告警疲劳。
Webhook 与定时触发决策矩阵
选型核心:实时性、入站暴露面、幂等成本。
| 维度 | Webhook 入站 | 定时(launchd/cron)拉取 |
|---|---|---|
| 延迟 | 秒级,适合高活跃仓库 | 分钟级,适合内网或不便开公网入口的节点 |
| 安全 | 需 TLS、HMAC 或 Bearer、反重放;建议仅网关节点监听 | 出站只读 API,暴露面更小 |
| 幂等 | 依赖 delivery id 或事件 ID 去重 | 用 PR 号加摘要版本号做稳定 task_key |
| 运维 | 要配反向代理与证书轮换 | 要处理 API 配额与全量扫描成本 |
与多节点共享构建通知串联时可对照本站 Webhook 多节点通知配置 文中的验签与队列写法,避免重复造轮子。
安装 · 网关 · 目录隔离步骤清单
按顺序勾选,保证任意同事照抄能复现同一拓扑。
- 安装: 各节点同一 Python minor、同一 OpenClaw 安装路径;部署后执行版本与配置哈希对拍。
- 网关: 仅
gateway-1/2打开公网或内网穿透端口;Webhook 先到网关再写共享队列,Worker 节点只消费不暴露。 - 目录隔离: 根路径
/var/lib/openclaw/<team>/<repo>(示例),组为openclawrun,目录0750;平台令牌文件0440,禁止同步到构建机个人主目录。 - 环境变量:
OPENCLAW_CONFIG_ROOT与OPENCLAW_STATE_DIR按项目区分;节点级只覆盖NODE_ID与监听地址。 - 日志: 统一字段
node_id、credential_id、pr_number,禁止打印完整令牌。
最小权限令牌与失败重试模板
令牌: 为「读 PR diff + 写评论或发 IM」拆两条凭据:只读拉取与只写目标频道;Git 托管侧用 fine-grained 或 GitHub App 安装令牌,拒绝 admin:repo 类 scope。注入走 env 模板,与 分环境密钥注入 同套路,staging 与 prod 分库分令牌。
重试模板(可引用参数):
max_retries=3,退避2s/8s/32s,仅对超时、连接重置、5xx启用。visibility_timeout大于 P95 摘要耗时,避免多 Worker 重复跑同一任务。- 模板分支:
if status in (401,403): dead_letter + IM 告警;elif status==429: 尊重 Retry-After。
更细的节点级凭据拆分见 MeshMac 节点最小权限密钥;队列与 ack 细节可叠读 任务队列与失败重试。
常见 401 与超时 FAQ
| 现象 | 优先排查 |
|---|---|
| 间歇 401 | 系统时钟漂移(先查 NTP);是否混用旧 OAuth App 与新 fine-grained;轮换窗口内是否双钥都已写入网关。 |
| 稳定 401 | scope 不足或仓未授权给 App;把不可重试从队列模板中剔除,避免打满审计。 |
| 读 API 超时 | 加大客户端 connect/read timeout,同时检查 Jump Host 与 TLS 中间盒;队列 visibility 应大于该超时加摘要推理时间。 |
| Webhook 验签失败 | 秘钥是否在网关与控制台一致、是否做了十六进制与 UTF-8 编码混用;重放窗口是否过短导致合法请求被拒。 |
验收建议:在 staging 用无效令牌故意跑一次,确认任务进死信且不会自动重试,再恢复令牌做端到通。🚀
下一步(免登录站内页)
完成清单后,你的多节点摘要链路应具备网关收敛、目录分株、令牌最小化与可配置重试。无需登录即可继续浏览 OpenClaw 专栏、博客列表,或通过 帮助中心 与 首页 了解远程 Mac 套餐与 SSH 使用说明;需要下单时可从首页进入购买入口。
Code Review · 多节点 · 免登录导航
继续用站内页把 OpenClaw 摘要链路配完
以下链接均为站内页,无需登录即可访问:帮助中心、首页、OpenClaw 专栏与博客列表,便于对照本文清单逐项落地。
最小权限
Webhook/定时
重试模板