Skip to content

feat: 飞书基础接入 — WebSocket 长连接、消息收发、UI 对话框 #146

@shellmind112

Description

@shellmind112

概述

通过飞书官方 SDK 的 WebSocket 长连接模式,在本地与飞书服务器建立实时通信,实现飞书端与 Aether AI 对话。

功能点

  • 使用 @larksuiteoapi/node-sdk 建立 WebSocket 长连接(无需公网地址)
  • 前端对话框 UI(dialog-feishu.tsx):输入 App ID / App Secret,连接/断开/状态指示
  • 后端 FeishuManager 单例:连接管理、消息接收与回复
  • HTTP 路由(/feishu/start/stop/status/events SSE)
  • 会话映射:飞书 chatId + rootId → Aether Session,支持线程级上下文
  • Instance.bind() 解决 AsyncLocalStorage 上下文绑定
  • 事件回调 void(非阻塞),避免飞书服务器因超时重发消息
  • 首次发消息优先复用最近会话,而非总是新建
  • AI 回复顶部追加项目/会话标题(📁 项目名 💬 会话名
  • /new 立即创建新会话(Session.create),web 端侧边栏实时更新
  • /help 帮助命令

涉及文件

  • packages/opencode/src/feishu/manager.ts(新增)
  • packages/opencode/src/server/routes/feishu.ts(新增)
  • packages/app/src/components/dialog-feishu.tsx(新增)
  • packages/app/src/context/feishu.ts(新增)
  • docs/feishu-setup-guide.md(新增)
  • docs/feishu-architecture.md(新增)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions