fengs2021/dsh-feishu-bridge ↗★ 0
dsh-feishu-bridge
DSH 飞书机器人桥接插件:通过飞书机器人与 DeepSeek Harness 对话——飞书消息进 DSH 会话由 AI 处理,回复以流式交互卡片实时发回(思维链/正文/工具链分区、打字机效果),无需公网 webhook
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:fengs2021/dsh-feishu-bridge说明文档
阅读完整 README ↗dsh-feishu-bridge
通过飞书机器人与 DeepSeek Harness(DSH) 对话的桥接插件。
在飞书里给机器人发消息 → 消息进入 DSH 会话由 AI 处理 → 回复以流式交互卡片实时发回:思维链、正文、工具链分区展示,打字机效果逐字更新。无需公网 webhook(使用飞书开放平台长连接)。
效果示例(交互卡片,随生成实时更新):
┌──────────────────────────────────┐ │ 🤖 DSH 助手 │ ├──────────────────────────────────┤ │ 🧠 思维链 │ │ 用户想查 /root/dsh 目录… │ │ ──────────────────────────────── │ │ 好的,我来查看一下目录内容… │ │ ──────────────────────────────── │ │ 🔧 工具链(2) │ │ - ✅ bash ls -la /root/dsh │ │ - ✅ memory 写入今日日志 │ │ ──────────────────────────────── │ │ ✅ 已完成 │ └──────────────────────────────────┘
功能特性
| 能力 | 说明 |
|---|---|
| 私聊对话 | 与机器人单聊,消息直达 DSH,多轮上下文连续 |
| 群聊 @ | 群聊中 @ 机器人即响应(需配置 botOpenId) |
| 流式卡片 | AI 回复以交互卡片实时更新:思维链 + 正文 + 工具链分区,token 级打字机效果 |
| 多轮上下文 | 同一飞书会话固定复用同一 DSH 会话;DSH 重启后自动恢复(agents.resume) |
| 斜杠命令 | /help 帮助、/reset 清空上下文、/status 会话状态 |
| 长回复分段 | 超过卡片预览上限(8000 字)自动补发文本消息 |
| 断线重连 | consume 子进程异常退出自动退避重连(2s 起、30s 封顶) |
| 白名单 | 只允许指定 open_id 对话 |
| 幂等去重 | 按 message_id 去重,避免事件重放导致重复处理 |
架构原理
飞书 App ──长连接──> lark-cli event consume im.message.receive_v1 --as bot(子进程)
│ NDJSON(chat_id / sender_id / content / mentions …)
▼
feishu-bridge 插件(DSH host 进程内,cordis 插件)
│ agents.create / agents.resume(chat_id → sessionId 映射)
▼
DSH agent 会话(模型、工具与 GUI 同款)
│ llm/stream waterfall(按 sessionId 匹配,token 级 delta)
▼
流式累积器(text-delta / reasoning-delta / tool-call-delta)
│ 节流 PATCH(默认 ≥1.2s 一次)
▼
lark-cli api patch im/v1/messages/:id ──> 交互卡片实时更新(打字机效果)
│
└── turn 结束 ──> 最终态卡片(✅ 已完成)+ sessions.flush 持久化
- 事件监听:
lark-cli event consume im.message.receive_v1 --as bot(飞书长连接 WebSocket,无公网要求)