dsh-lark-message:把飞书接到 DSH 的通知出口与对话入口

前言

DeepSeek Harness(DSH)里的智能体常在本地完成长任务,结果却要你盯着终端或 Web 界面才能看到。邮件、Webhook 能推消息,但和手机上的即时沟通往往仍是两套系统。若你团队日常在飞书上协作,更理想的做法是:任务结束能主动推到你飞书,你在手机里 @ 机器人或私聊时,又能继续同一套 DSH 会话。

下面介绍社区插件 dsh-lark-message(维护者 respawnlife)。它把飞书企业自建应用绑到 DSH:一次扫码即可完成应用创建与绑定,智能体可通过工具或本地 HTTP 接口发通知,飞书侧私信与群 @ 也能回灌到 DSH,并在需要审批的回合里把确认请求转发到飞书。

这是什么

dsh-lark-message 是面向 DSH profile 的 bundle 插件(npm 包名 dsh-lark-message,当前资料中的版本为 0.1.1,许可证 MIT)。官方描述是:用二维码绑定飞书/Lark 机器人,把智能体通知、任务结果和本地脚本消息推到飞书,并支持从飞书与助手对话。

插件声明的运行环境为 Node >=22,DSH >=0.2.2-rc.1 且 <0.3.0-0。目录页见 SkillHub,源码与说明见 GitHub 仓库。

核心能力(据 README 与 package 信息)

绑定与凭据

  • 扫码绑定:在 Settings → Lark Notify 中点击 Link a bot,用飞书移动端扫码并在确认页点「同意」。插件会自动创建并绑定企业自建应用(默认名称「DSH 通知助手」),无需手写 App Secret。二维码约 1 小时失效,可再次点击生成。
  • 已有自建应用:可展开 Enter App ID / Secret manually 手动填写;投递目标 open_id 或 chat_id 可选。首次绑定时会校验凭据(一次 tenant_access_token 请求)。
  • 隐私:凭据保存在本机(权限 0600),不写入 profile 配置,也不进代码仓库。
  • 国际版 Lark:代码通过 tenantBrand 选择飞书/Lark 域名;国际租户可用手动填入该租户应用凭据的方式绑定。

绑定后插件会配置机器人能力、消息收发与事件订阅等范围(如 im:message:send_as_bot、im.message.receive_v1 等),详见仓库 README 中的表格。

三条投递路径

  1. 智能体工具 lark_notify:任意 DSH 会话中,模型可主动发通知。必填参数 text;可选 image_path(本地 PNG/JPEG,最大 10MB)、chat_id(群 oc_xxxxxxxx,省略则发给绑定者私信)、markdown(以 Markdown 卡片发送)。
  2. 本机 HTTP API:挂在 DSH Host HTTP 服务上,仅监听 loopback,端口与 DSH Web 端口一致。Bearer 令牌文件默认位于 ~/.dsh/integrations/lark-notify/http-token(DSH_HOME 默认为 ~/.dsh)。
  3. 飞书内回复:会话范围内,助手在回合结束时会将最终文本发回原聊天;长连接入库消息与附件处理由插件完成。

双向对话与会话隔离

绑定后插件建立飞书 WebSocket 长连接:私信与群内 @ 机器人 → 注入 DSH 会话 → 智能体处理 → 回复发回原聊天。首条入站消息会注册名为 Feishu 的工作区,默认目录 $DSH_HOME/workspaces/feishu,可用 config.cwd 覆盖。

会话命名规则:绑定者私信为 feishu-main;其他成员私信为 feishu-dm-<open_id>;每个群为 feishu-group-<chat_id>。群聊默认仅响应 @ 机器人(groupMode: "all" 可改为回复全部消息;allowGroups 可限制群列表)。入站支持图片、文件与引用回复。

审批与投递可靠性

  • 审批中继:需要用户确认的回合会转发到飞书,回复 approve / deny(或中文「同意」「拒绝」)即可。
  • 可靠投递:失败进入重试队列;长文本自动分片;支持 Markdown 卡片。

安装与启用

插件以 DSH bundle 形式分发。安装到指定 profile 后需重启 DSH 生效。官方安装命令如下(将 <name> 换成你的 profile 名称):

dsh plugin --profile <name> add dsh-lark-message

亦可从 DSH 的 Plugins 页面搜索安装;本地开发时可链接源码目录:

dsh plugin --profile <name> add link:/path/to/dsh-lark-message

安装完成后,Settings 下会出现 Lark Notify 插件页。

首次配置(约 30 秒)

  1. 打开 Settings → Lark Notify。
  2. 点击 Link a bot,飞书扫码并在确认页批准。
  3. 等待插件完成自建应用创建与权限配置。
  4. 点击 Send test message,飞书应马上收到测试通知。
  5. 若仅需单向推送、不需要双向聊天,到此即可。

若绑定时跳过了部分媒体相关权限,之后需要收图、收文件或读群名/成员名时,可在设置页点击 Grant media permissions 再扫一次码,无需重新绑定。

典型用法

在会话里让智能体发飞书

绑定完成后,可在提示中直接要求模型调用工具,例如:

整理完结果后,用 lark_notify 发到我的飞书。

本地脚本走 HTTP 推送

先读取令牌与端口(端口填你当前的 DSH Web 端口):

TOKEN=$(cat ~/.dsh/integrations/lark-notify/http-token)
PORT=<your DSH Web port>

发送纯文本:

curl -s -X POST http://127.0.0.1:$PORT/plugins/lark-notify/notify \
  -H "Authorization: Bearer $TOKEN" -H 'content-type: application/json' \
  -d '{"text":"Build finished: all 3 tasks passed"}'

Markdown 卡片、本地图片路径、指定群 chat_id 等示例见仓库 README;notify 请求体至少包含 text、markdown、imagePath、filePath 之一,可选 target: { type: "chat_id" | "open_id", id }。

常用端点摘要:

方法 路径 认证 说明
POST /plugins/lark-notify/notify Bearer 发送文本 / Markdown / 图片 / 文件
GET /plugins/lark-notify/health 无 健康检查,是否已绑定机器人
GET /plugins/lark-notify/chats Bearer 列出机器人所在群
POST /plugins/lark-notify/dsh-send Bearer 向指定 DSH 会话注入用户消息
GET /plugins/lark-notify/inbound 无 长连接与审批等诊断信息
POST /plugins/lark-notify/reset Bearer 清除本地绑定(破坏性操作)

仓库 examples/lark_notify_client.py 提供无第三方依赖的 Python 客户端,可自动读取 endpoint 文件,避免手写端口。

在飞书里继续对话

在已绑定的私信或已配置的群里 @ 机器人发消息即可;回复由 DSH 在对应隔离会话中处理并自动回传到原聊天。

适用场景与注意

适合谁:已在用 DSH 做本地/私有化智能体开发,希望把「任务完成、审批、运维脚本结果」推到飞书,并偶尔用手机飞书续聊同一助手的人。仅需单向通知时,完成扫码与测试消息即可,不必启用复杂群策略。

权限与信任:插件与当前 DSH 进程同权限运行,可访问本机文件路径(例如 lark_notify 的 image_path、HTTP API 的 imagePath),并持有飞书应用凭据。安装前应阅读 源码 与 MIT 许可证,确认符合你的安全策略。HTTP 接口虽只绑定 loopback,Bearer 令牌仍应视为本机敏感文件。

兼容性:面向飞书企业自建机器人应用;与 DeepSeek / 幻方无官方从属关系。社区插件目录 SkillHub 独立于 DSH 本体分发,属于「一切皆插件」生态中的第三方扩展。

结尾

经过上面的步骤,你可以把飞书当作 DSH 的外设通知渠道和轻量对话前端:智能体用 lark_notify 或脚本用本地 API 推送,你在飞书上的回复与审批则回到同一套 Harness 会话。更多参数、配置项与截断部分未列出的细节,以仓库 README.zh.md 为准。

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

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

Xiaoye