TevinClaw
10 hours ago 06d7e79268896c95a10f8161f16f2193f1b1c43c
重新安装飞书SDK,改用 @openclaw/feishu
2 files modified
78 ■■■■ changed files
openclaw.json 27 ●●●●● patch | view | raw | blame | history
workspace/.learnings/LEARNINGS.md 51 ●●●●● patch | view | raw | blame | history
openclaw.json
@@ -152,11 +152,17 @@
          ]
        }
      },
      "connectionMode": "websocket",
      "domain": "feishu",
      "connectionMode": "websocket",
      "streaming": true,
      "timeout": 2000,
      "idempotent": true,
      "sessionMode": "per-chat"
      "sessionMode": "per-chat",
      "requireMention": true,
      "footer": {
        "elapsed": true,
        "status": true
      }
    }
  },
  "gateway": {
@@ -197,27 +203,12 @@
    ],
    "load": {
      "paths": [
        "/home/tevin/.nvm/versions/node/v24.14.0/lib/node_modules/@m1heng-clawd/feishu"
        "/home/tevin/.nvm/versions/node/v24.14.0/lib/node_modules/@openclaw/feishu"
      ]
    },
    "entries": {
      "feishu": {
        "enabled": true
      }
    },
    "installs": {
      "feishu": {
        "source": "npm",
        "spec": "@m1heng-clawd/feishu",
        "installPath": "/home/tevin/.nvm/versions/node/v24.14.0/lib/node_modules/@m1heng-clawd/feishu",
        "version": "0.1.17",
        "resolvedName": "@m1heng-clawd/feishu",
        "resolvedVersion": "0.1.17",
        "resolvedSpec": "@m1heng-clawd/feishu@0.1.17",
        "integrity": "sha512-6BMqvndOXvWvGzMJEQQdp3vX1jidaIXrwwlz6Q8F5gC+yzcuHmNqIaAxXsrVOj7jaEAtznFjGmPWZ97sGc2eRw==",
        "shasum": "4e33e4c0cef6593da0b9e40f96d9310adc5bf6ab",
        "resolvedAt": "2026-03-15T03:57:41.889Z",
        "installedAt": "2026-03-15T03:58:15.894Z"
      }
    }
  }
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会话隔离
---