每月5萬次額度不夠用?飛書API過度調用問題終於解決了
最近有個朋友找到我,說他在飛書開發者後臺發現了一個嚴重問題:/open-apis/bot/v3/info 這個接口每分鐘被調用好幾百次,每個月 5 萬次的免費額度眼看就要用光了!

問題是怎麼發現的
朋友在飛書開發者後臺的「API 調用統計」裏看到,bot/v3/info 這個接口的調用量異常高:
| 指標 | 數值 |
| 日調用次數 | 43200+ 次 |
| 每分鐘調用 | ~300 次 |
| 月消耗估算 | 接近 5 萬次上限 |
他都懵了:我就一個機器人,怎麼調用這麼頻繁?
問題根因分析
我幫他排查了 OpenClaw 的飛書擴展代碼,發現問題出在兩個地方:
1. 狀態檢查觸發 API 調用
每次查詢機器人狀態時,都會調用 probeFeishu() 函數去請求飛書的 bot info 接口。這個函數在以下場景會被調用:
- 啓動機器人時獲取 OpenID
- 外部系統查詢狀態時
- WebSocket 斷線重連時
2. 缺乏緩存機制
原來的代碼是「每次調用都發請求」,沒有任何緩存。哪怕連續查詢 10 次狀態,就會產生 10 次 API 調用。
解決方案:5分鐘緩存機制
我給 probe.ts 加了一個簡單的緩存層:
// 缓存配置:5分钟内不重复调用 API
const CACHE_TTL_MS = 5 * 60 * 1000;
const botInfoCache = new Map();
核心邏輯很簡單:
- 首次調用 → 請求飛書 API → 緩存結果
- 5 分鐘內再次調用 → 直接返回緩存(不發起新請求)
- 失敗結果也緩存 → 避免失敗時重複請求
修改後的效果
| 對比項 | 修改前 | 修改後 |
|---|---|---|
| 每次狀態查詢 | 調用 API | 直接返回緩存 |
| 失敗重試 | 無限重試 | 緩存 5 分鐘 |
| 月消耗估算 | 50000+ 次 | ~300 次 |
簡單算一筆賬:每 5 分鐘最多調用 1 次,一天 24 小時 = 288 次/月,一年才 3500 次左右。原來的 5 萬/月額度,根本用不完!
適用場景
這個方案特別適合以下情況:
- 使用 OpenClaw 飛書擴展的用戶
- 自己開發飛書機器人,頻繁調用 bot info 接口
- API 額度告急,想優化調用次數
總結
飛書 API 過度調用的問題,本質上是缺乏緩存機制導致的。解決方案也很簡單:給接口調用加個緩存。
有時候,最簡單的優化反而是最有效的。