前言¶
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 中的表格。
三条投递路径¶
- 智能体工具
lark_notify:任意 DSH 会话中,模型可主动发通知。必填参数text;可选image_path(本地 PNG/JPEG,最大 10MB)、chat_id(群oc_xxxxxxxx,省略则发给绑定者私信)、markdown(以 Markdown 卡片发送)。 - 本机 HTTP API:挂在 DSH Host HTTP 服务上,仅监听 loopback,端口与 DSH Web 端口一致。Bearer 令牌文件默认位于
~/.dsh/integrations/lark-notify/http-token(DSH_HOME默认为~/.dsh)。 - 飞书内回复:会话范围内,助手在回合结束时会将最终文本发回原聊天;长连接入库消息与附件处理由插件完成。
双向对话与会话隔离¶
绑定后插件建立飞书 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 秒)¶
- 打开 Settings → Lark Notify。
- 点击 Link a bot,飞书扫码并在确认页批准。
- 等待插件完成自建应用创建与权限配置。
- 点击 Send test message,飞书应马上收到测试通知。
- 若仅需单向推送、不需要双向聊天,到此即可。
若绑定时跳过了部分媒体相关权限,之后需要收图、收文件或读群名/成员名时,可在设置页点击 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 为准。