概述
通过飞书官方 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(新增)
概述
通过飞书官方 SDK 的 WebSocket 长连接模式,在本地与飞书服务器建立实时通信,实现飞书端与 Aether AI 对话。
功能点
@larksuiteoapi/node-sdk建立 WebSocket 长连接(无需公网地址)dialog-feishu.tsx):输入 App ID / App Secret,连接/断开/状态指示FeishuManager单例:连接管理、消息接收与回复/feishu/start、/stop、/status、/eventsSSE)Instance.bind()解决 AsyncLocalStorage 上下文绑定void(非阻塞),避免飞书服务器因超时重发消息📁 项目名 💬 会话名)/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(新增)