前言¶
DeepSeek Harness (DSH) 采用插件化架构,强调可扩展性。dsh-feishu-integration 插件旨在解决 DSH 在后台或 Web 端运行时,用户无法通过即时通讯工具进行交互的问题。它提供了一套机制,将 DSH 会话的总结发送到飞书,并允许用户通过回复飞书消息来反向控制或继续 DSH 会话。
核心能力¶
该插件提供以下核心功能:
* 会话总结推送:DSH 会话结束后,自动将总结内容发送到飞书。
* 回复路由:在飞书中回复某条总结,系统会自动识别并路由回产生该总结的 DSH 会话。
* 固定会话延续:支持点对点(p2p)和群聊场景下的固定会话延续。
* 管理入口:在 DSH 设置页提供绑定状态查看、扫码绑定、重连、断开和解绑功能。
* 配置管理:提供二维码 provisioning 和 fsum-admin CLI 管理入口。
* 多域支持:同时支持飞书 Feishu 域和国际版 Lark 域。
安装与绑定¶
安装插件需要在目标 DSH profile 中执行以下命令:
dsh plugin --profile web add github:yangwuan55/dsh-feishu-integration
安装完成后,重启对应的 DSH profile。插件自带 dsh.bundle.patch,会自动挂载到 profile 中。安装完成后,可以在 DSH 的设置页中查看绑定状态并扫码绑定。该插件默认不会开启入站长连接,因此安装时不会自动与已有的飞书长连接插件竞争事件流。
启用入站回复路由¶
要实现“在飞书中回复总结 -> 路由回 DSH 会话”的功能,需要启用入站接管。由于飞书长连接使用集群式事件分发,同一个应用同时运行多个长连接客户端可能导致事件随机分流,因此同一个 DSH profile 中必须先禁用其他飞书长连接插件,然后再启用此插件的入站接管。
在 profile patch 中覆盖配置以启用入站接管:
- id: xmanrui-dsh-feishu
disabled: true
- id: dsh-feishu-integration
config:
takeoverInbound: true
replyTimeoutMs: 600000
CLI 管理¶
除了网页端设置页,插件也提供了 CLI 工具 fsum-admin 用于绑定、验证和解绑等操作:
fsum-admin list
fsum-admin bind
fsum-admin bind --app-id cli_xxx --app-secret xxx --owner ou_xxx
fsum-admin verify --app-id cli_xxx
fsum-admin set-owner --app-id cli_xxx --open-id ou_xxx
fsum-admin unbind --app-id cli_xxx
数据与可靠性¶
- 数据迁移:插件保留了旧版
@xmanrui/dsh-feishu的本地数据布局($DSH_HOME/integrations/dsh-feishu/),以便迁移时延续已有绑定和固定会话。 - 安全存储:敏感的
app_secret使用 DSH credential store 存储,不写入公开配置文件。 - 发送重试:总结发送内置了重试机制,最多尝试 10 次,采用指数退避策略(1s 起、30s 封顶、±20% 抖动),总截止时间为 10 分钟。断网时顺延等待但不消耗尝试次数。每次逻辑发送携带飞书消息幂等
uuid,避免重复投递。 - 超时处理:当等待回答超时(默认 600s)时,插件保持静默,不追发错误回帖。转发回执本身被视为送达确认,超时仅记录在 host 日志中。
开发与维护¶
该插件使用 MIT 许可证。开发者可以通过以下命令进行开发:
git clone https://github.com/yangwuan55/dsh-feishu-integration.git
cd dsh-feishu-integration
pnpm install
pnpm build # 构建前端代码
pnpm test # 运行回归测试
- Host 侧逻辑:位于
lib/host/目录,直接编辑 JS 文件即可,无需构建。 - Client 侧逻辑:位于
client-src/目录,修改后必须运行pnpm build重新生成lib/client.js。
生态背景¶
DSH 理念是“一切皆插件”,本插件为该生态的一部分。该插件由社区用户 yangwuan55 维护,与 DeepSeek 或幻方官方无直接隶属关系。更多细节可查阅插件目录页或源码仓库。