前言¶
在 DeepSeek Harness(DSH)里让智能体对外收发消息,通常要单独处理各平台的凭证、会话绑定和进度展示。Discord 与飞书(Lark)各配一套渠道逻辑,规则和运维成本都会翻倍。社区插件 firstdreamlh/dsh-feishu-channel 在 dsh-channel-core(MIT)基础上二次开发,把两套渠道收进一个包:身份核验、私聊绑定、流式进度卡片和主动外发共用一套规则,智能体、历史与任务执行仍由 DSH 原生能力承担。
这是什么¶
- 定位:DeepSeek Harness 一体化渠道插件,同时承载 Discord 与飞书适配器,各自独立凭证与连接生命周期。
- 维护者:firstdreamlh(仓库:https://github.com/firstdreamlh/dsh-feishu-channel)。
- 与上游关系:本仓库为上游 fork;能力尽量保留,本分支侧重飞书私聊回答卡片字号(完成态正文 16px,移动端 17px),并附中英文档与回归测试。差异清单见仓库内
docs/FORK.md。 - 包信息:
package.json中名称为dsh-channel-core,版本 0.9.1,许可证 MIT。
核心功能¶
双渠道、一套规则¶
Discord 与飞书在同一插件内配置。主人认领、身份核验、DM 会话绑定可跨渠道对齐;在显式配置下,同一 owner 的已核验私聊可映射到 同一个原生 DSH Session。入站消息有持久化回执、串行会话准入,并与原生 steer/queue/interrupt 配合,避免重复投递。
飞书接入:扫码为主¶
支持扫码创建或连接飞书机器人,再扫码打开私聊,无需手抄密钥。私聊与群聊按路由与会话规则处理;群聊与未核验用户不自动继承个人记忆权限。
流式进度与交互¶
- 进度卡片:思考、草稿与工具调用在卡片内滚动更新,完成后可折叠为过程记录;飞书侧支持 CardKit 组件流式,并有 IM 卡片回退。
/model卡片:可搜索下拉,需二次确认才切换模型,避免长列表误触。- Ask User:在卡片内作答;提交后卡片变为只读回执,已提交上下文保留且不会重复当作答案发送。
- 斜杠命令:飞书支持文本形式的
/new、/stop、/status、/session、/answer、/model、/think、/reason等;/reason与插件页的streaming.progress.narration设置一致,改连接级配置后会短暂重连生效。
每条非命令的入站消息会在正文前附带本地时区日期前缀(例如 [2026-10-27 Tue 11:30]),便于模型理解时间;命令消息不打戳。
主动外发 channel_send¶
智能体可在无入站消息的前提下外发。面向模型的渠道工具主要为:
channel_send({ text?, imagePath?, filePath?, bindingId?, idempotencyKey? })
一次调用发送一段文字、一张飞书图片或一个飞书文件;文件路径须在当前工作区内,按媒体上传而非 Markdown 路径。会话只能发往本会话已授权绑定;多绑定需显式 bindingId。投递经持久化 outbox,状态含 pending、sent、failed、uncertain;稳定幂等键可避免重复发送。
可信宿主还可调用 ctx.channelCore.sendToBoundSession({ sessionId, text, idempotencyKey, bindingId?, source? });outboundTargets(sessionId) 返回可用绑定 ID,不暴露收件人原始 ID。
安装与启用¶
需要与 package.json 中 peer 服务兼容的 DSH 宿主,以及你要启用的各平台凭证。
命令行安装(将 desktop 换成你的 DSH profile 名):
dsh plugin --profile desktop add github:firstdreamlh/dsh-feishu-channel
插件市场(实验性):在 DSH 中打开 Custom plugin market bundle,于 Discover 添加索引源:
https://raw.githubusercontent.com/firstdreamlh/dsh-feishu-channel/main/market/index.json
在卡片上一键安装即可。若需可复现部署,可将安装钉到指定 Git commit。安装或更新代码后需重启 DSH。
典型用法(Quick start)¶
README 给出的起步步骤如下:
- 打开 Settings → Plugins → Channels & Sessions。
- 在 Discord 和/或 Feishu 分页配置平台凭证,以及允许的用户/频道;仅有有效连接并不自动授权投递。
- 检查各渠道的主人识别模式:入站消息通过 allow 规则后,才可能自动首次 DM 认领主人;也可选手动指定主人。
- 可选:关联同一 owner 的账号,使 多个渠道共享同一个在线 DSH 会话;共享长期记忆不必强制共享会话。
- 发送测试私聊,确认绑定的工作区、会话与进度输出是否符合预期。
自动化场景可在任务生成报告后由作业调用 channel_send,或由可信插件直接调用 sendToBoundSession;这不会自动广播所有定时结果,也不会授予向任意账号发送的权限。
本地可执行 npm test 做无依赖公开回归;npm run test:host 需在已配置的 DSH 开发环境中运行更广集成套件。真实飞书/Discord 投递需在本地凭据下单独验证。
适用场景与注意¶
适合谁:需要在 DSH 中同时接 Discord 与飞书、且希望统一主人核验、会话绑定、流式卡片与主动外发的开发者或自用部署者。SkillHub 分类为「工作流」。
安全与边界:渠道 owner 按机器人账号核验;群聊与未核验用户不得继承个人记忆权限。会话映射决策可审计(详见 README「Security and operational boundaries」章节)。
使用前提:插件在 当前 DSH 进程权限 下运行;安装前请自行审阅源码与 MIT 许可证,确认凭证与 allow 列表符合你的安全策略。社区目录页(https://www.skillhub.cn/plugins/firstdreamlh/dsh-feishu-channel)为独立站点,与 DeepSeek / 幻方无官方从属关系,不宜当作官方应用商店。
结尾¶
dsh-feishu-channel 把 Discord 与飞书渠道层并入单插件:扫码建连、会话路由、CardKit 进度、/model 与 Ask User、channel_send 主动外发,并与 DSH 原生 Session 与任务执行衔接。需要细节与更新说明时,可查阅 SkillHub 目录页 与 GitHub 仓库(含 README.zh-CN.md)。