dsh-fschannel
Feishu/Lark bot bridge for DeepSeek Harness: bind a web-created session to a Feishu chat, messages flow both ways
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:cershuang/dsh-fschannel说明文档
阅读完整 README ↗dsh-fschannel
让 DeepSeek Harness Web 会话连接到飞书机器人:新建会话时选择「连接飞书」,之后在飞书里给机器人发消息,消息进入该 DSH 会话由 Agent 处理,回复自动发回飞书聊天。Web 与飞书可同时驱动同一个会话。
传输层使用飞书官方 @larksuite/channel SDK —— WebSocket 长连接,无需公网回调地址。
功能
会话 ↔ 飞书聊天桥接
- 一对一绑定(一个会话对应一个聊天,双向替换),绑定持久化在
$DSH_HOME/feishu-bindings.json - 待绑定机制:会话进入待绑定状态后,你在飞书里给机器人发的下一条消息所在聊天即完成绑定(FIFO)
- 会话 Agent 不在线时自动
resume恢复;重启后绑定关系保留
消息收发
- 流式卡片(默认
output: 'stream'):回合开始即开卡(先显示「正在处理…」),回复以打字机卡片逐字呈现;工具调用显示「正在调用工具:{name}」引用行;回合结束时卡片保留最终结果,并自动排版为结构化卡片(段落/表格/代码块按 markdown 渲染,无输出或失败也留在卡片内);无卡片权限时自动回退普通消息 output: 'plain'可切换为「每步一条 markdown 消息」- 队列处理:SDK 级去重(30s)+ 按聊天串行投递;Agent 忙碌时回复「前面还有 N 条消息在排队」
- 表情反馈:收到消息时在消息上自动加 👍,该回合完成变 ✅、失败变 ☹️(可配置 emoji 与开关;仅在你自己的消息上生效,Web 触发的回合不会误换)
- 图片暂存识别:飞书图片先暂存不处理,等你的下一条文字消息到达后,把图片路径连同识别指令一起发给 agent —— agent 加载 vision-tools 技能并调用视觉识别工具(vision_glance/vision_ocr 等)逐张识别,结合文字回答(需已安装 @anionex/dsh-vision-toolkit 且 runtime 就绪;图片保存在会话工作区的
.dsh-fschannel-images/) - 会话图片画廊:会话头部「飞书图片」按钮打开该会话的图片网格(点击查看原图)。图片元数据由插件自管(
feishu-bindings.json),不再写入会话日志 —— 旧版本写入的feishu/image事件类型不为 harness 所知,会导致整个会话历史无法加载;v0.1.5.3 起插件在启动时自动修复历史日志(给这类事件补上 harness 认可的ignorable标记),并自动补录历史图片索引 - 群聊默认仅响应 @ 机器人(
requireMention);未绑定聊天收到引导提示(可关)
飞书侧模型控制
- 提到「调整/切换/查看 模型/effort」时自动弹出按钮卡片,展示当前模型与推理等级,可一键切换
/model— 弹出同一张卡片(查询当前模型与 effort)/model list— 模型目录(含各模型支持的 effort 级别)/model use /— 切换模型(下一条消息起生效)/model effort— 切换思考强度/status— 会话与机器人状态;/stop— 停止当前回合;/help— 命令清单- 切换走宿主
apiProxy(与 Web UI 同一通道),会话级持久:重启后自动重放
连接飞书(创建新会话时)
- 会话头 chip:未连接 →「连接飞书」;待绑定 → 提示「给机器人发一条消息完成绑定」;已连接 → 显示聊天名(点击断开)
- 设置 → 飞书机器人 标签页(独立页):状态、输出方式、「新会话默认连接飞书」开关、「新建会话并连接飞书」按钮、绑定/待绑定管理、命令说明