TevinClaw
12 hours ago 06d7e79268896c95a10f8161f16f2193f1b1c43c
workspace/.learnings/LEARNINGS.md
@@ -3,3 +3,54 @@
记录学习、改进和最佳实践。
---
## [LRN-20260316-001] best_practice
**Logged**: 2026-03-16T07:20:00+08:00
**Priority**: high
**Status**: resolved
**Area**: infra
### Summary
飞书 Webhook 超时导致消息重复投递问题及解决方案
### Details
**问题现象:**
- 收到用户未主动发送的消息(05:40 消息在 06:23 再次出现)
- 消息内容完全一致但消息ID不同(`om_x100b545876a2ed34c3d91545d8feb5f` vs 新ID)
- 触发对话意外延续
**根因分析:**
飞书事件订阅规则要求 **3秒内必须返回HTTP 200**,否则触发重试:
- 重试间隔:15秒 → 5分钟 → 1小时 → 6小时(最多4次)
- 由于超时未响应,飞书服务器重复投递了消息
**解决方案:**
修改 `openclaw.json` 配置:
```json
"feishu": {
  "connectionMode": "websocket",  // 使用长连接替代HTTP webhook
  "timeout": 2000,                 // 响应超时<3000ms
  "idempotent": true,              // 开启幂等去重
  "sessionMode": "per-chat"        // 按会话隔离
}
```
### Suggested Action
1. 监控网关响应时间,确保<3000ms
2. 优先使用 websocket 连接模式
3. 开启幂等性配置自动过滤重复 event_id
4. 识别重复消息特征:相同内容、不同消息ID、间隔符合重试规则
### Metadata
- Source: user_feedback
- Related Files: ~/.openclaw/openclaw.json
- Tags: feishu, webhook, timeout, retry, websocket
- Pattern-Key: infra.feishu_webhook_timeout
### Resolution
- **Resolved**: 2026-03-16T07:20:00+08:00
- **Action**: 已更新 openclaw.json 配置,用户已重启网关
- **Notes**: 配置已添加 websocket 模式、2000ms超时、幂等去重、per-chat会话隔离
---