【官方版本26.3.2已有部分优化】 1、已补充到优化fixmd目录中;
已写入优化日志:
- 2026-03-05-openclaw-feishu-quota-and-daemon-hardening.md
gateway.channelHealthCheckMinutes=5 的官方配置说明如下。
配置位置
- 当前生效配置文件:~/.openclaw/openclaw.json(你机器上已是这份)
- 你当前值在:openclaw.json:147
官方识别依据(代码)
- Schema 定义(必须是 int >= 0): daemon-cli.js:12004
- 启动时读取并换算为毫秒: gateway-cli-CuFEx2ht.js:22492 gateway-cli-CuFEx2ht.js:22495
- 热更新时同样按该键重建 health monitor: gateway-cli-CuFEx2ht.js:16622 gateway-cli-CuFEx2ht.js:16623
- 官方描述文案: redact-snapshot-DZnprkgC.js:146
怎么配置
- CLI 设置(推荐)
openclaw config set gateway.channelHealthCheckMinutes 5 openclaw config get gateway.channelHealthCheckMinutes openclaw config validate
- 直接改 JSON
- 在 gateway 下增加/修改:
"channelHealthCheckMinutes": 5
- 应用配置
- 通常会热加载生效。
- 为了稳妥,建议执行:
systemctl --user restart openclaw-gateway.service
参数语义
- 0:关闭该 channel health monitor(代码里会置为 null)。
-
0:按“分钟”执行,实际间隔是 minutes * 60000。
- 未配置:默认按 5 分钟运行(代码 minutes ?? 5)。
补充
- 这个键控制的是“通道健康探测/状态刷新周期”,不是飞书 token 刷新周期。
- 你当前版本 2026.3.2 的 Feishu probe 还有内置 10 分钟缓存(已在日志里记录)。
highlight: an-old-hope
一、问题描述:
飞书每日50000次调用额度用完导致OpenClaw长连接心跳等消息失败
1、飞书开发者小助手提示:
2、飞书机器人日志提示:
二、业务分析逻辑
(root@TengxunOS:openclaw --version:2026.2.23)
原理:当前OpenClaw无配置项,硬编码实现,通过codex实现软编码配置项优化
关注后续新版本覆盖当前功能
处理逻辑复述如下(from codex):
1. 先确认你加的两个键是否生效
- health_check_interval、token_refresh_interval 只在你的配置里出现,官方代码没有读取。
- 位置:/root/.openclaw/openclaw.json:111、/root/.openclaw/openclaw.json:112
2. 定位 GET /open-apis/bot/v3/info 的真实触发链
- Feishu 探测接口在:/root/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/extensions/feishu/src/probe.ts:18
- 原来是网关里固定每 60 秒触发健康探测(带 probe=true),间接触发该 GET。
3. 把“固定 60 秒”改成“配置项可控”
- 在网关 dist 里新增读取函数:按 gateway.channelHealthCheckMinutes(分钟)转换为毫秒。
- 修改点(主 bundle):
- /root/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/gateway-cli-DoWNkdBc.js:6711
- /root/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/gateway-cli-DoWNkdBc.js:7050
- /root/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/gateway-cli-DoWNkdBc.js:11296
- 同步改了备用 bundle:/root/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/gateway-cli-BlDZ_8TO.js
4. 在配置里设为 5 分钟
- 增加:"channelHealthCheckMinutes": 5
- 位置:/root/.openclaw/openclaw.json:131
5. 重启并验证
-
已重启:openclaw-gateway.service
-
新进程正常运行。
-
日志出现 started (interval: 300s, grace: 60s),说明已按 5 分钟生效。
补充:POST /open-apis/auth/v3/tenant_access_token/internal 仍是按 token 过期/缓存刷新,不是固定每分钟轮询。
HuoshanECS:OpenClaw26.2.26,优化新版本心跳机制
26.3.1
定位结果如下:
- 运行时实际加载的是内置 Feishu 插件(bundled),来源是 /usr/lib/node_modules/openclaw/extensions/feishu/index.ts;~/.openclaw/disabled-extensions/ feishu.incompatible-2026.2.19 这份并未生效。
- GET /open-apis/bot/v3/info 的直接调用在 probe.ts:18。
调用链(会触发这个 API):
- 状态探测入口:channel.ts:326 -> probeFeishu。
- Feishu 通道启动时会先取 bot open_id:monitor.ts:75, monitor.ts:164。
- Onboarding 页状态/连通性测试也会调用:onboarding.ts:168, onboarding.ts:176, onboarding.ts:269。
- Gateway 后台定时器每 60 秒刷新一次健康快照并强制 probe=true:gateway-cli-BSPSAjqx.js:6797, gateway-cli-BSPSAjqx.js:7130, gateway-cli-BSPSAjqx.js:7102。这条链 路最终会走到 plugin.status.probeAccount,也就会打到 /open-apis/bot/v3/info。
关于“通过配置项控制调用间隔”:
- 这个 API 的后台周期当前是写死的 60000ms,不是 Feishu 配置项可控。
- 现有 gateway.channelHealthCheckMinutes 只控制“通道重启健康监控器”周期,不控制上述 probe 定时:gateway-cli-BSPSAjqx.js:21296, gateway-cli-BSPSAjqx.js:1540, schema 在 auth-profiles-6WJHPoy1.js:11790。
- 当前 channels.feishu 下自定义的 health_check_interval/token_refresh_interval/long_connection 不在 Feishu schema 内,不会驱动该调用间隔:channel.ts:79, / root/.openclaw/openclaw.json:71。
计划下一步直接改新配置键(例如 gateway.healthRefreshIntervalMs 或 channels.feishu.probeMinIntervalMs)并落到实际定时/节流逻辑里,出优化补丁。
补丁已完成,新增并接入了可配置键:channels.feishu.probeMinIntervalMs(单位毫秒),用于控制 /open-apis/bot/v3/info 的最小调用间隔。
实现结果
- 在 Feishu 插件里新增配置字段并支持账号级覆盖(accounts..probeMinIntervalMs)。
- 在 probeFeishu 增加了内存节流缓存:同一账号在间隔内复用上次 probe 结果,不再重复发起 GET /open-apis/bot/v3/info。
- 已把你本机配置改为 600000(10 分钟)。
关键改动文件
- 新增 probe 间隔字段类型 client.ts:27
- 新增 schema 字段(顶层+账号继承) config-schema.ts:115
- 新增 channel JSON schema 展示字段(顶层+账号) channel.ts:96
- 解析账号时带出 probeMinIntervalMs types.ts:17 accounts.ts:123
- 实际节流逻辑 probe.ts:1
- 本机配置已落地 openclaw.json:66
本机验证
- openclaw config get channels.feishu.probeMinIntervalMs 返回 600000,配置已生效可读。
- 运行时加载的是 bundled feishu 插件(即上述改动路径)。
- 尝试做 gateway 调用级联验证时,环境出现 uv_interface_addresses 系统错误(和本次改动无关),所以没有做在线探测链路实测。
使用方式
- 调整间隔:改 channels.feishu.probeMinIntervalMs。
- 设为 0:关闭节流(保持原行为)。
- 支持账号级:channels.feishu.accounts..probeMinIntervalMs。
下一步:重启 OpenClaw gateway 进程,让当前运行实例加载新代码与新配置。
已重启完成。
执行:openclaw daemon restart
结果:Restarted systemd service: openclaw-gateway.service
systemctl --user status openclaw-gateway.service 显示:
- Active: active (running),启动时间为 2026-03-01 12:44:28 CST
- Feishu 已重新初始化并连上:bot open_id resolved ...、WebSocket client started、ws client ready
补充解决这个报错的处理过程:openclaw daemon status 在这个环境里会报 uv_interface_addresses 系统错误,但不影响实际服务已启动并运行。
• 原因已定位清楚:
- 本机环境里,os.networkInterfaces() 在沙箱权限下会抛 ERR_SYSTEM_ERROR: uv_interface_addresses ... Unknown system error 1。
- OpenClaw 在加载 gateway 子模块时会立即调用网卡探测(模块初始化阶段),没有兜底 try/catch,导致 openclaw daemon status 这类命令直接失败。
- 证据:同一机器上提权执行时 openclaw daemon status 正常;非提权会报这个错。说明是环境权限限制 + 代码健壮性不足的组合问题,不是你的 Feishu 配置问题。
关键调用点:
- /usr/lib/node_modules/openclaw/dist/net-DBrsyv8q.js:22
- /usr/lib/node_modules/openclaw/dist/gateway-cli-CD7BHA7a.js:6871:6871
- /usr/lib/node_modules/openclaw/dist/gateway-cli-CD7BHA7a.js:6930:6930
- /usr/lib/node_modules/openclaw/dist/ws-zZ6eXqMi.js:12:12
- /usr/lib/node_modules/openclaw/dist/daemon-cli.js:11845:11845
拟修复方案(最小改动):
- 在上述 pickPrimaryLanIPv4() 里对 os.networkInterfaces() 加 try/catch。
- 失败时返回 undefined(上层已有 ?? os.hostname() 或 loopback fallback),不再让命令崩掉。
按这个方案直接打补丁并重启一次服务验证。
• 已按如上确认完成修改并重启验证,结论如下。
修复结果
- uv_interface_addresses 崩溃已修复:openclaw daemon status 不再报 ERR_SYSTEM_ERROR。
- 已重启服务并确认生效:openclaw daemon restart 成功,systemctl 显示新启动时间与新 PID。
- 提权环境下 openclaw daemon status 返回 RPC probe: ok,监听正常。
本次补丁点
- 给 LAN IP 探测加兜底 net-DBrsyv8q.js:22 ws-zZ6eXqMi.js:12
- 给 tailnet 地址枚举加兜底(返回空列表) daemon-cli.js:11816 tailnet-Ca1WnFBq.js:13 tailnet-kbXXH7kK.js:13
重启验证
服务状态:active (running),启动时间 2026-03-01 12:53:05 CST,PID 319592(已更新)。
openclaw daemon status(提权):
- Runtime: running
- RPC probe: ok
- Listening: 127.0.0.1:18789
但当前看到的剩余提示说明
- 在非提权/受限环境中仍可能看到:systemctl --user unavailable: Failed to connect to bus。
- 这是运行环境对 systemd user bus 的权限限制,不是 uv_interface_addresses 问题,也不是 Feishu/插件问题。
文档已保存,文档名字:
Explored
└ List openclaw-operation-report-2026-03-01.md
Read openclaw-operation-report-2026-03-01.md`
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
• 已按如上的要求完成两件事:
- 已补“失败告警日志(仅首次)”并保留降级兜底,覆盖网卡/尾网卡探测路径。
- 已重启并验证:
- 提权环境下 openclaw daemon status 正常,RPC probe: ok
- 非提权环境下不再报 uv_interface_addresses 崩溃,只会提示 systemctl --user 权限限制并输出可观测告警
操作说明文档已保存为:
- openclaw-operation-report-2026-03-01.md
本次未做一版“最小回滚脚本”(一键恢复这次对 /usr/lib/node_modules/openclaw/dist 的改动)。