dsh-feishu-session-notify: Create a Bidirectional Bridge Between DSH Sessions and Feishu

前言

在 DSH 里跑智能体任务时,常见做法是盯着桌面客户端或浏览器等 turn 结束。任务一跑久,或者 DSH 不在前台,就容易错过完成通知、运行失败(余额、限流、鉴权、Token 上限)以及审批、ask_user_question 等人机交互。把结果推到飞书群或私聊,再在飞书里回复继续同一会话,是更贴近日常协作的路径;若还要在飞书里用命令新建指定工作区的 DSH 会话,就需要 Host 侧插件把 DSH 事件、lark-cli 发消息和飞书 im.message.receive_v1 串起来。下面介绍社区插件 dsh-feishu-session-notify(维护者 Re-qi,分类:工作流),它实现 DSH 与飞书的双向协作,默认话题模式(混合):每条 DSH 会话的第一条输出进主聊天窗口作入口,后续输出回复进该话题;通知路径不调用模型、不消耗 Token。

这是什么

dsh-feishu-session-notify 是 DeepSeek Harness(DSH)的 Host 插件包(当前资料中版本 0.8.1,MIT 许可证)。一句话定位:用 lark-cli 把 DSH 助手输出、失败原因、审批与提问推到飞书 Markdown 消息,并按飞书消息与 DSH 会话的映射把话题内回复路由回对应会话;授权用户还可在飞书发送 /dsh 控制命令(例如列出工作区、在指定工作区新建会话)。

目录页:SkillHub 插件页
源码与说明:GitHub - Re-qi/dsh-feishu-session-notify

核心功能

DSH → 飞书

  • DSH 每个完成的回复自动发到飞书;运行失败也会发错误通知(例如余额不足、限流、鉴权失败、达到最大 Token 限制)。
  • 标题使用 DSH 当前会话名称;正文使用飞书 Markdown 富文本。
  • 话题模式(默认混合):每个 DSH 会话的第一条输出发到主聊天窗口,作为该会话的话题入口;后续输出回复进由第一条创建的话题,点开入口消息可看到同一会话历史。
  • DSH 的审批请求和 ask_user_question 提问也会推到飞书,可直接在飞书里用数字或选项回复完成决策。
  • 发送失败自动重试;话题回复失败时退回到新消息,避免静默丢消息;重启后会补发上次因退出而未送出的最终输出(详见 README 中的 Delivery guarantees)。

通知路径不调用 LLM,不消耗模型 Token;从飞书回复触发的 follow-up 会走正常 DSH 流程,可能消耗配置的模型与工具预算。

飞书 → DSH

  • 飞书事件 im.message.receive_v1 到达后,插件要求发送者与已认证用户一致。
  • 对映射消息回复(或话题内任意消息回复),内容会作为 user follow-up 进入对应 DSH 会话;外层 ```text 围栏会被规范化处理。
  • 非回复、且不能匹配已保存 message_id 的普通消息会被忽略,避免误触其他会话。
  • 授权用户发送以 /dsh 开头的文本视为控制命令,在飞书内应答,不转发到 DSH 会话。

飞书内控制命令

命令 作用
/dsh workspaces 列出各 DSH 工作区别名与绝对路径
/dsh new --workspace <别名> <任务> 在指定工作区新建 DSH 会话,剩余文本作为首条用户任务

/dsh new 支持 --workspace demo 与 --workspace=demo 两种写法;工作区别名由 DSH workspaceRegistry 解析,不能通过消息指定任意文件系统路径。

环境与依赖

安装前需满足 README 所列条件:

  • 已配置 DSH Host 插件 profile 的 Windows、macOS 或 Linux;
  • DSH 进程可用的 Node.js / npm;
  • 已安装并完成认证的 lark-cli;
  • 具备发消息与接收 im.message.receive_v1 的飞书应用 / 机器人;在开放平台启用该事件及 schema 要求的收消息权限。

可先检查 CLI:

lark-cli --version
lark-cli auth status

Bot 身份应为 ready;必要时:

lark-cli auth login --recommend

事件与权限可对照:

lark-cli event schema im.message.receive_v1

安装与启用

官方 README 说明:安装前应先查看当前 Host profile,保留已有 profile 配置,修改 Host 插件配置后需完全退出并重启 DSH(仅刷新浏览器不够)。下列命令示例使用 Windows 的 $DSH_HOME;其他平台请换成实际 DSH 主目录及路径写法。

1. 克隆插件源码

$DSH_HOME = Join-Path $env:USERPROFILE '.dsh'
New-Item -ItemType Directory -Force (Join-Path $DSH_HOME 'plugins-src') | Out-Null
git clone https://github.com/Re-qi/dsh-feishu-session-notify.git `
  (Join-Path $DSH_HOME 'plugins-src/dsh-feishu-session-notify')

若目录已存在,改用 git pull。

2. 写入当前激活的 profile

从 DSH Host 启动参数确认当前 profile;标准 Desktop 常见路径为:

%USERPROFILE%\.dsh\profiles\desktop

在该 profile 的 package.json 中追加本地包依赖与 bundle(勿覆盖原有 dependencies / dsh.profile.bundles),路径须与本机克隆位置一致:

{
  "dependencies": {
    "dsh-feishu-session-notify": "link:C:/Users/123/.dsh/plugins-src/dsh-feishu-session-notify"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "dsh-feishu-session-notify"
      ]
    }
  }
}

若 profile 的包管理器无法可靠 link 本地包,可在 profile 的 cordis.patch.yml 增加 Host 直插(使用本机绝对路径):

- insert:
    - id: feishu-session-notify
      name: 'file:///C:/Users/123/.dsh/plugins-src/dsh-feishu-session-notify/lib/index.js'

3. 安装 profile 依赖

在 profile 目录执行:

pnpm install

若 profile 使用 npm,按该 profile 既有流程操作;勿删除 lockfile 或重装无关插件。

4. 重启 DSH

完全退出后重新打开 DSH。

验证与典型用法

验证安装

检查飞书事件消费者:

lark-cli event status

期望输出包含 Active consumers: 1 与 im.message.receive_v1。

插件诊断日志常见路径:

%USERPROFILE%\.dsh\feishu-session-notify.log

会话与飞书消息映射持久化文件:

%USERPROFILE%\.dsh\feishu-dsh-bindings.json

路由测试

  1. 让 DSH 完成一次真实任务;
  2. 在飞书中找到对应消息(首条在主窗口,后续在同一会话话题内);
  3. 直接回复该消息或话题内任意消息;
  4. DSH 应在映射会话中收到 follow-up。

从飞书新建会话

在飞书向已认证账号发送(示例):

/dsh new --workspace demo 修复登录测试

会在工作区 demo 创建新会话,确认消息成为该会话的话题根,任务文本作为首条用户消息。

审批与提问

插件以 prepend: true 监听 approval/request 与 user-questions/request,在飞书展示工具名、原因或选项;回复「1 / 2」或选项即可解析为 allowed-once / rejected 或结构化 answers,不调用模型。

话题模式与平铺模式

README 默认说明为话题模式(混合):主窗口保留入口,后续折叠进话题。若某类聊天不需要话题,可切换到平铺模式,细节见仓库 README 章节「Topic vs flat mode」。

适用场景与注意

适合:需要在飞书接收 DSH 完成与失败通知、在移动端或群聊里回复继续同一会话、在飞书处理 DSH 审批与提问、或远程用 /dsh new 在已知工作区开新任务的 DSH 用户。

务必注意:

  • 插件在 当前 DSH 进程权限 下运行,安装前应自行审阅 GitHub 源码 与 MIT 许可证。
  • 依赖 lark-cli 与飞书开放平台事件配置;映射与投递决策会写入上述 log 与 feishu-dsh-bindings.json,便于排查漏消息。
  • SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;安装方式以仓库 README 为准,资料中未提供 dsh plugin add github:... 一类一键命令。

结尾

dsh-feishu-session-notify 把 DSH 会话输出、失败与交互请求同步到飞书,并把话题回复与控制命令接回 DSH,且通知链路不占用模型 Token。需要双向协作时,可按 README 克隆、写入 profile、安装依赖并重启 Host,再用 lark-cli event status 与一次真实任务验证路由。

  • 目录页:https://www.skillhub.cn/plugins/Re-qi/dsh-feishu-session-notify
  • GitHub:https://github.com/Re-qi/dsh-feishu-session-notify
羽毛球分组比赛记分
小程序二维码

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

Xiaoye