1. 背景与现象
在没有进行任何操作的情况下,飞书开发者后台的 API 调用次数持续增长,且观察到接口:
GET /open-apis/bot/v3/info
几乎 每分钟调用一次,导致额度快速消耗。
目标:
- 保持 OpenClaw 能正常在飞书收消息、发消息、定时推送简报
- 重点降低
/open-apis/bot/v3/info这种“基础信息探测”接口的调用频率
2. 初步判断:不是定时任务/Heartbeat 导致
排查要点:
openclaw status --deep显示主会话 heartbeat 为 30 分钟,这不可能造成“每几秒/每分钟”级别的 API 调用。- 定时任务(cron)只会在触发时发送消息,频率低,也不符合现象。
因此,调用高频更可能来自:
- 飞书通道自身的监听机制(轮询/长连接保活)
- Gateway 的健康探针(health probe)对通道进行周期性探测
3. 锁定接口调用点:Feishu 插件的 probeFeishu()
通过在 OpenClaw 安装目录中搜索字符串定位:
- 目标接口:
/open-apis/bot/v3/info
发现其调用点位于 Feishu 插件:
- 文件:
extensions/feishu/src/probe.ts - 函数:
probeFeishu(creds) - 调用方式:通过 SDK 的
client.request({ method: "GET", url: "/open-apis/bot/v3/info" })
该函数返回 bot 的基础信息(bot name、bot open_id 等)。
4. 为什么会“每分钟调用一次”:健康探针会周期性 probe
在 Feishu 插件的 channel 定义中:
status.probeAccount直接调用probeFeishu(account)
而 Gateway 会周期性刷新 health snapshot(包含 probe),并在 probe 时调用每个 channel 的 probeAccount。
因此,如果 gateway 的健康探针刷新周期较短(例如 60s 级别),就会导致 /bot/v3/info 被周期性调用。
5. 优化策略:给 bot info 加缓存(TTL=6小时)
给
/open-apis/bot/v3/info加缓存,缓存 6 小时过期;过期后再请求一次。
实现原则:
- 最小改动:只改
probeFeishu(),不动上层逻辑 - 进程内缓存:用
Map做内存缓存(足够应对健康 probe 的高频重复调用) - 按账号隔离:以
appId + domain作为缓存 key
伪代码逻辑:
if (cacheHit && notExpired) return cached
else fetch /bot/v3/info
cache = {botName, botOpenId, expiresAt}
return result
6. 关键插曲:一开始改错目录,导致“看起来没生效”
第一次我修改的是全局安装路径:
/opt/homebrew/lib/node_modules/openclaw/extensions/feishu/src/probe.ts
但后面发现本机还有一份 Feishu 插件源码在:
~/.openclaw/extensions/feishu
进一步确认(非常关键):
openclaw plugins list --json显示feishu插件的source实际指向:/Users/root/.openclaw/extensions/feishu/index.ts
也就是说:
- OpenClaw 运行时实际加载的是 用户扩展目录下的 Feishu 插件
- 所以改全局目录并不会真正生效
随后把同样的缓存逻辑补丁同步应用到:
/Users/root/.openclaw/extensions/feishu/src/probe.ts
这才是正确的生效位置。
7. 让改动生效:重启 Gateway
由于插件代码运行在 gateway 进程中,修改源码后需要重启 gateway 才会加载新逻辑。
openclaw gateway restart
重启后通过:
openclaw gateway status
确认 gateway 运行正常(pid 变化,RPC probe OK)。
8. 验证思路
验证目标:
- 飞书开发者后台中
/open-apis/bot/v3/info的调用频率从“每分钟一次”下降到“6小时一次(每账号/每domain)”。
验证方法:
- 观察飞书后台接口调用明细(最直接)
- 在 OpenClaw 侧确认插件加载源路径(避免再次改错目录)
- 在必要时增加本机抓包/更细日志(只统计次数,不记录敏感内容)
以上内容都直接让OpenClaw自己解决就行,把思路告诉他即可。
最后打个广告,大家可以从这里使用最新的gpt和claude模型,openclaw可以使用,几十块用就可以用一个月,codez2.zwenooo.link/register?af…