DSH Plugin MarketA community catalog for DeepSeek Harness plugins

dsh-plugin-feishu

Verified Integrations & connections ★ 2 0.7.2

DSH(DeepSeek Harness)插件:把 dsh 会话接进飞书 / Lark 长连接,卡片流式回复

What it is

DSH(DeepSeek Harness)插件:把 dsh 会话接进飞书 / Lark 长连接,卡片流式回复

How to install

Run this in the DSH web profile, then refresh the page.

$ dsh plugin --profile web add dsh-plugin-feishu@0.7.2

DSH versions accepted

>=0.2.1-rc.2 <0.3.0

Author and traction

suveng · ★ 2 · Updated 2026-11-05

About this plugin

dsh-plugin-feishu

DeepSeek Harness(DSH)的飞书插件 —— 把 DSH 会话接进飞书 / Lark 长连接,回复以流式卡片回写。

  • 这是 DSH 插件(cordis 插件包),装进 DSH 的 profile 后由 DSH 进程加载,不需要另起守护进程、不需要公网回调地址。
  • 收发都走飞书长连接(WebSocket),只要求本机出网;也没有 ngrok / 反向代理这些事。
  • 与 [pi-feishu-bridge](https://github.com/suveng/pi-feishu-bridge) 的关系:那个是给 pi 用的独立桥接进程,本插件是它的 DSH 版思路 —— 直接嵌进宿主进程,用 DSH 自己的 Agent API 驱动会话。

能力

| 能力 | 说明 |

| --- | --- |

| 单聊 / 群聊 / 话题 | 一个飞书会话一个 DSH 会话,话题(thread)单独成会话 |

| 流式卡片 | 边生成边往卡片里写,飞书客户端逐步展开;轮次结束卡片转终态 |

| 会话保持 | 飞书会话 ↔ DSH 会话映射落盘,DSH 重启后接着聊;网页端正开着的同一条会话会被直接复用(真恢复不了才新建) |

| 消息串行 | 同一会话连发多条按顺序处理,不会两条消息抢同一个轮次 |

| 权限白名单 | 只认指定 open_id;留空则谁都能用(建议自用场景也配一下) |

| 斜杠命令 | /new /stop /status /cwd /whoami /help,不进模型上下文 |

| 提问人身份 | 每条消息首行带 【飞书 · 群聊|单聊 · 张三(90abcdef)】,模型一眼看到是谁、从哪来;详细字段走 feishu_identity 工具 |

| 飞书工具 | 只在飞书发起的轮次里可见:feishu_identity(查提问人)、feishu_send(主动补发一条文本)、feishu_learn_approval_submit / feishu_learn_approval_status(建审批单 / 查审批状态) |

| 选择题 | 模型用 ask_user_question 提问时,问题以卡片发到飞书:点按钮即答,也可以在卡片输入框自由输入(最多 200 字),或直接回文字 |

| 飞书审批 | 模型调用飞书审批应用建单、用实例号查状态:典型用法是 /learn 进化前拿到 APPROVED 再动文件;审批定义号在插件页「审批」分组配置 |

| 执行过程 | 工具调用在卡片顶部的「执行过程」折叠面板里逐条显示:正在跑哪一步、成没成、耗时多少 —— 长任务不再是黑箱 |

| 子agent 唤醒轮 | 子agent 异步跑完把主 agent 叫醒时,这一轮的回复同样回传飞书:新开一张「子agent 回来了 · 」卡,执行过程面板照常;网页端轮次不受影响 |

| 正文模式 | 默认只把本轮最终回复写进卡片正文;中间步骤的旁白、思考自动收进「执行过程」面板,不再和答案混在一起(replyBodyMode=live 可退回旧行为) |

| 停止按钮 | 回复中的卡片末尾有「停止」,点一下中断本轮(等价于 /stop),卡片转「已停止」 |

| 表情回执 | 收到消息先挂「收到」表情;跑完换成 DONE,失败换成 CRY(可关,可换收到时的表情) |

| 引用展开 | 回复某条消息时,插件会读出被引用内容并以 [Quoted message] 前缀附在正文前,模型知道「这个」指的是什么 |

| 内容去重 | 同一会话 5 秒内完全相同的一条文字只处理一次(飞书偶发重投换 message_id、手抖连发都在此列) |

工作原理

飞书客户端
   │  长连接(WSClient,事件 im.message.receive_v1)
   ▼
FeishuBridge ── 归一化/去重/白名单 ── 每会话串行队列
   │
   ├─ 斜杠命令 ──► 插件内部处理(直接回文本)
   │
   └─ 普通消息 ──► AgentPool(飞书会话键 → DSH Agent)
                        │  agent.followup(用户消息)
                        ▼
                   DSH Agent 跑一轮
                        │  agent/assistant-stream(text-delta)
                        ▼
                   ReplyCard ── CardKit 局部更新 ──► 飞书卡片
                        ▲
   DSH session/event ───┘(tool/call、tool/result → 卡片里的「执行过程」面板)

环境要求

  • Node.js >= 22
  • DSH(DeepSeek Harness)>= 0.2.1-rc.2,< 0.3.0
  • 一个飞书自建应用(企业自建应用),并开启下面的权限与事件

一、飞书开发者后台配置

1. 在 [飞书开放平台](https://open.feishu.cn/app) 创建企业自建应用,拿到 App ID / App Secret。

2. 权限管理里开通:

| 权限 | 用途 |

| --- | --- |

| im:message(获取与发送单聊、群组消息) | 收消息、发消息 |

| im:message:send_as_bot(以应用身份发消息) | 发卡片与文本回复 |

| im:chat:readonly(获取群组信息) | 读取群 / 话题会话信息 |

| im:message.p2p_msg:readonly | 接收单聊消息 |

| contact:user.base:readonly(建议开) | 把提问人姓名显示在消息首行;没开也能用,只是首行显示 open_id 尾号 |

群里不 @ 机器人也要响应时,额外开「获取群组中所有消息」(im:message.group_msg),

并把插件配置 requireMentionInGroup 设为 false。

3. 事件与回调 → 事件配置:订阅方式选使用长连接接收事件,添加事件 im.message.receive_v1(接收消息 v2.0)。

4. 事件与回调 → 回调配置:订阅方式同样选使用长连接,添加回调 card.action.trigger(卡片回传交互)。

不开这一步,飞书里的选择题卡片点了没反应,只能靠直接回文字。

5. 应用功能 → 机器人:启用机器人。

Compare in this category

The five most-starred plugins in the same category.

PluginAuthor StarsVersionUpdated
treg superdesigndev 7.7K 0.30.0 2026-11-10
dsh-im xmanrui 3.4K 5.10.0 2026-11-07
DeepSeekBot BotHarness 773 0.0.0 2026-11-10
sandbase-harness sandbaseai 642 0.0.1 2026-11-08
MisakaNet Ikalus1988 558 3.9.0 2026-11-10