新增飞书 IM 通道,通过 @larksuiteoapi/node-sdk WSClient 接收消息、REST Client 发送回复。 适配器核心 (feishu-adapter.ts): - WSClient 长连接接收 im.message.receive_v1 事件 - 消息去重 (message_id LRU 1000)、授权校验、群聊策略 (open/allowlist/disabled) - @提及检测 (bot open_id/user_id/union_id 匹配) - 图片/文件/音频/视频/富文本(post) 下载 → base64 FileAttachment - Typing 指示器 (Openclaw 方案: emoji reaction) - /perm 文本命令处理权限审批 渲染策略 (markdown/feishu.ts): - 代码块/表格 → schema 2.0 interactive card (markdown 元素) - 纯文本 → post (md tag), 支持粗体/斜体/行内代码/链接 - 权限卡片 → schema 2.0 card + /perm 文本命令 (无按钮, 见下方决策) - 每层降级: card → post → text 关键决策 — 权限交互无按钮: - 飞书 card.action.trigger 回调需 HTTP webhook, WSClient 不支持 - schema 2.0 不支持 action 标签 (错误码 200861) - schema 1.0 按钮可渲染但点击报 200340 (无 webhook 端点) - Openclaw 用 http.createServer + Lark.adaptDefault 解决, CodePilot 桌面端无公网端点 - 最终方案: 格式化卡片 + /perm 文本命令, 用户复制发送即可审批 其他变更: - permission-broker.ts: permissionRequestId 去重 (30s TTL) - telegram-bot.ts: bridge 模式互斥 (globalThis 标志) - bridge-manager.ts: 飞书渲染分发 (deliverResponse feishu 分支) - UI: FeishuBridgeSection 设置页 + 侧边栏入口 + 通道开关 - i18n: 中英文飞书配置文案 - 交接文档: bridge-system.md 更新飞书架构、数据流、6 项设计决策 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Handover / 交接文档
系统架构、数据流、关键设计决策的持久化记录,供后续开发者(含 AI)快速上手。
AI 须知:修改或新增文件后更新下方索引;检索本目录前先读此文件。
索引
| 文件 | 主题 |
|---|---|
| agent-tooling-todo-bridge.md | SDK → SSE → DB 事件流、TodoWrite 字段映射、去重策略 |
| bridge-system.md | 多 IM 远程桥接系统架构(目录结构、数据流、设计决策) |