dsh-fschannel:让 DeepSeek Harness Web 会话与飞书机器人双向通信

前言

在 DSH 里做一个智能体时,常见需求是:会话已经建好,但希望临时在飞书里发消息、看结果,而不是只盯着 Web 界面。如果飞书机器人需要公网回调,接入成本会更高。dsh-fschannel 选择使用飞书官方 @larksuite/channel SDK 的 WebSocket 长连接,无需公网回调地址,直接桥接 DSH Web 会话和飞书/Lark 聊天。

这是什么

dsh-fschannel 是一个 DeepSeek Harness(DSH)插件。它把 DSH Web 会话绑定到飞书/Lark 聊天后,飞书消息会进入该 DSH 会话并由 Agent 处理,处理结果自动发回飞书。

仓库用户名为 cershuang,源码仓库为:

https://github.com/cershuang/dsh-fschannel

许可证为 MIT。DSH 的扩展方式是「一切皆插件」;社区目录属于独立站点,与 DeepSeek / 幻方无官方从属关系,本文不按官方应用商店口径描述。

核心能力

会话与飞书聊天绑定

插件支持将 DSH Web 会话与飞书聊天做一对一绑定,绑定关系持久化到:

$DSH_HOME/feishu-bindings.json

会话进入待绑定状态后,下一条飞书消息所在的聊天会完成绑定。这样可以在 Web 中先建会话,再到飞书私聊或群里完成关联。

消息通道

插件使用 @larksuite/channel SDK 建立 WebSocket 长连接,无需配置公网回调地址。群聊中默认仅响应 @ 机器人;单成员群可以免 @。未绑定聊天收到消息时,插件可按配置返回引导提示。

消息投递层面,插件提供 SDK 级去重(30s),并按聊天串行投递。当 Agent 正在处理时,飞书侧会提示当前消息的排队位置。

收到消息时,插件可以自动添加表情反馈;是否开启以及不同阶段使用什么表情可以配置。

流式输出与卡片

插件支持流式卡片输出:回合开始时开卡,回复逐字呈现,回合结束后保留最终结果。输出内容支持 markdown 表格、代码块和图片内嵌。

若飞书侧没有卡片权限,插件会回退为普通消息;也可以设置:

output: 'plain'

让每一步都发送一条普通消息。

图片处理与发送

飞书发来的图片会先暂存,不立即处理;当下一条文字消息到达时,插件会把图片路径交给 Agent,由视觉识别能力结合文字消息处理。该能力需要 @anionex/dsh-vision-toolkit 就绪,并且需要 runtime 就绪。

插件还提供会话图片画廊,并对历史 feishu/image 日志做自动修复。

Agent 在回合中也可以把结果发回飞书:

  • 调用 send_feishu_image 发送图片,支持 PNG/JPEG/WebP/GIF,且图片路径须在会话工作区内。
  • 调用 send_feishu_file 发送文件,大小限制为 ≤30 MiB。

飞书侧命令

插件在飞书侧提供模型与 effort 控制入口。发送「调整模型」「切换模型」「把 effort 调一下」等短语,会弹出模型与 effort 按钮卡片。

也可以直接使用命令:

/model
/model list
/model use <provider>/<model>
/model effort <off|high|max>
/status
/stop
/help

其中 /model/model list/model use/model effort 用于查询或切换模型与思考强度;/status/stop/help 用于查看状态、停止当前回合和查看命令。

安装与启用

前置要求:

Node 22.19+
dsh CLI
pnpm

凭据推荐保存在 DSH 凭据库:

$DSH_HOME/.credentials.yaml

.env 文件只放路径配置。

按 README 安装时,通常按下面顺序执行:

cp example.env .env
npm install && npm run build
dsh plugin --profile web add file:<插件仓库路径>
dsh web

这里先复制示例环境文件,再构建客户端包,然后以 file: 方式安装到 web profile,最后启动 dsh web 生效。安装命令中的 <插件仓库路径> 是本机插件仓库路径,不要按 owner/repo 名称自行拼接远程安装命令。

如果 pnpm 因 protobufjs 构建脚本报:

ERR_PNPM_IGNORED_BUILDS

需要在 profile 的 pnpm-workspace.yaml 中加入:

allowBuilds:
  protobufjs: false

修改插件源码后,需要重新构建并重装:

npm run build
dsh plugin --profile web add file:<插件仓库路径>
dsh web

典型用法

1、在 Web 界面新建会话后,点击会话头「连接飞书」,让会话进入待绑定状态。

2、在飞书私聊机器人,或在群里 @ 机器人发送一条消息,完成该聊天与当前 DSH 会话的绑定。

3、之后在飞书里继续发消息,消息会进入该 DSH 会话;Agent 的回复会自动发回飞书聊天。

4、如果需要让新会话默认进入待绑定,可打开「设置 → 飞书机器人」标签页中的「新会话默认连接飞书」,或点击「新建会话并连接飞书」。

适用场景与注意

适合这类插件的场景是:你已经在用 DSH Web 会话,同时希望把同一个会话接入飞书/Lark,用于移动端、群聊或日常协作入口;也希望 Agent 能向飞书发送图片、文件,并使用模型切换、停止、状态查看等命令。

使用前建议检查以下事项:

  • 插件会作为 DSH 插件运行,并以当前 dsh 进程权限读取本地路径与文件。安装前应自行检查源码与许可证。
  • 许可证为 MIT。
  • 凭据推荐保存在 $DSH_HOME/.credentials.yaml.env 只放路径配置。
  • HTTP API /feishu/* 仅接受 127.0.0.1 访问。
  • 流式卡片依赖飞书卡片能力;无卡片权限时会自动回退普通消息。
  • 图片暂存识别依赖 @anionex/dsh-vision-toolkit 且 runtime 就绪。
  • send_feishu_image 支持 PNG/JPEG/WebP/GIF,且路径须在会话工作区内;send_feishu_file 限制 ≤30 MiB。
  • 群聊默认仅响应 @ 机器人;单成员群免 @。
  • dsh 升级后,插件本体、注册行、绑定数据保留,无需重打补丁。

链接

源码仓库:

https://github.com/cershuang/dsh-fschannel

社区目录线索:

https://www.skillhub.cn/plugins/cershuang/dsh-fschannel

该目录链接来自线索,未在本次资料中核实;如需以源码为准,优先使用仓库地址。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye