接入飞书自建应用,把每个飞书会话映射到独立的 DSH Agent,经卡片 JSON 2.0 流式回复,不可用时回退纯文本。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/andyfan1094/dsh-feishu/releases/download/v0.2.2/dsh-feishu-0.2.2.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:andyfan1094/dsh-feishu
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DSH 的独立飞书自建应用集成插件。
功能
- 通过官方 WebSocket 长连接接收飞书文本与富文本(post)消息;保留链接与 @提及,内嵌图片会下载并保留为图片输入,其他媒体降级为可读占位文本。
- 通过官方资源 API 下载图片消息到本地媒体目录,经 DSH 附件服务保存后,向所选 agent 模型发送原生
{ type: 'image', attachment }内容块;下载失败或附件准入被拒时,降级为基于路径的识图提示或纯文本告知。 - 每个飞书 chatId 对应一个独立的顶级 DSH agent/会话,绝不复用 Web 对话。
- 把所有现存及持久化的
session-feishu*会话挂到拥有其 cwd 的真实 DSH 工作区。新会话标题为飞书 · <首条有效消息>;泛泛的问候先以飞书会话起名,出现有效内容后再升级;用户手动改过的标题不会被覆盖。 - 默认跟随 DSH 当前默认模型,也可为飞书单独指定 provider、model 及该模型声明的推理级别。
- 用可配置的 Agent 预设(默认
cordis)组装每个飞书 Agent,继承宿主的文件沙箱与审批策略。 - 收到消息后先在原消息上添加 OK 表情作为即时确认。
- 表情回复 API 不可用时,降级为短文本确认。
- 在
turn/start时打开一张蓝头部的飞书卡片 JSON 2.0 流式卡片:状态、记号字号纯文本工具进度、Markdown 答案与独立的hr+ 记号字号元数据行各占独立元素。仅工具事件不会重发答案元素,答案的累计更新保留 CardKit 的前缀流式行为,只让新后缀参与动画。页脚每秒一次心跳刷新模型、推理级别与已用时长,完成/取消/出错/卸载时停止。 - CardKit 流式 API 不可用或失败时降级为普通文本,最终答案不丢失。
- 容忍 DSH 启动竞态(模型适配器晚于本插件注册):飞书 WebSocket 立即启动,会话创建短暂等待
NO_ADAPTER消除。 - 错误与会话被释放的提示会发回同一会话。
- 使用配置的飞书应用 API,无需自建群 webhook。
截图

安装
从 Releases 下载最新的 dsh-feishu-*.tgz 并加入 profile:
dsh plugin --profile web add D:\downloads\dsh-feishu-0.2.2.tgz
安装后重启 DSH Web 宿主,再完成下方的 profile 配置。
本地开发可改用 checkout 链接安装:
dsh plugin --profile web add link:D:/项目/dsh-feishu
Profile 配置
把插件加入 profile bundle 列表并在 profile patch 中配置。未配置凭据时,随包 bundle 行保持禁用:
- id: dsh-feishu
config:
enabled: true
appId: cli_xxx
appSecret: your-secret
allowUsers:
- ou_xxx
ack: true
ackReaction: OK
provider: ''
model: ''
reasoningEffort: ''
agentPreset: cordis
业务消息必须配置 allowUsers,空列表会拒绝所有用户。
provider 与 model 都留空时跟随 DSH 当前默认选择。Web 面板通过 llm.resolveModelInfo(provider, model) 读取推理级别,只提供所选模型声明过的档位。
修改 provider、model、推理级别或 Agent 预设会释放所有在跑的飞书 Agent。更新是事务性的:替换的桥接启动失败时,恢复存储的配置与原桥接。会话 id 使用 v2 配置指纹,缺 meta.agentPreset 的旧会话会被保留,但不会在新的工具组合下恢复;下一条飞书消息会创建或恢复匹配的 v2 会话。
命令
/status显示当前飞书会话的独立会话及其真实 provider、model、推理级别与 Agent 预设。/stop取消当前飞书会话的任务。/help显示命令列表。
插件包含宿主集成与 Web 配置面板,使用 session/event 与 agent/* 宿主事件,注册仅回环可访问的 /api/dsh-feishu/* 路由,不修改 DSH 核心源码。
链接
同类插件
xmanrui/dsh-im★ 1636
通过二维码或机器人凭据将 IM 机器人接入 DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord 和 WhatsApp 共 9 种渠道)。
shaobeichen/dsh-pocket★ 1558
手机远程访问 DSH Web 界面:扫码即用局域网或公网(cloudflared 隧道)访问,实时同屏、移动端适配布局,带设置页管理。
inclusionAI/Avernet#deepseek-harness-channel-bcn★ 677
通过 WebSocket V2 将 DeepSeek Harness 接入 Avernet Bot 协作网络,支持自动注册、Agent 会话隔离、工具调用事件和多 Bot 路由工具。
omdsh-dev/dsh-notification★ 85
回合完成桌面通知,按结果分控 + 关键词过滤。
whyihaveyou/dsh-suite#plugin-notify★ 56
回合完成、错误或待审批时推送 IM webhook(飞书/企微/钉钉/Slack/Discord/自定义)与本地通知。
omdsh-dev/dsh-lark★ 55
DeepSeek Harness 的飞书/Lark 机器人渠道:每个会话驱动独立 agent,工具审批、模型提问与计划审阅都以卡片回到聊天,点按钮或直接回复即可作答;聊天里用 `/cd`、`/model`、`/new` 切工作区、换模型、重开会话,多个机器人各自独立并可在同群交接回合。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。