DeepSeek Harness Hub
← 返回列表

itr-del/dsh-feishu

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
⚠ 装前注意

dsh-feishu — 飞书/Lark IM 桥接 DeepSeek Harness

基本兼容但装前注意:npm 同名包「dsh-feishu」归属 omdsh-dev/dsh-lark,装到的可能不是本插件 · 最近上游提交 2026/9/16 · 已提供中文文档

DeepSeek Harness (dsh) 的飞书(Lark)IM 桥接 — 一个 cordis 插件

综合分
35.6
GitHub 分
35.6
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add itr-del/dsh-feishu
npm 同名包「dsh-feishu」归属 omdsh-dev/dsh-lark,装到的可能不是本插件,改用 GitHub 源安装
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-feishu @ 0.0.1
Node 引擎未声明 engines.node
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

npm 同名包「dsh-feishu」归属 omdsh-dev/dsh-lark,装到的可能不是本插件

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 16:16:05

用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-feishu — 飞书/Lark IM 桥接 DeepSeek Harness

可插拔 cordis 插件,把飞书自建机器人接入运行中的
DeepSeek Harness (dsh) web
profile —— 通过 dsh plugin add 一行安装。

┌────────┐   WS    ┌──────────────┐   cordis    ┌──────────┐    LLM    ┌──────────┐
│ 飞书 IM │ ──────> │  本插件      │ ──────────> │ dsh agent │ ────────> │ DeepSeek │
│        │ )。
- 多轮对话跨重连保持。
- 把助手回复流回飞书,4000 字分块。
- 过滤 DeepSeek  工具调用标记。
- 交互式提问桥接:模型调用 ask_user_question 时,问题(含选项)会被渲染成文本发到飞书,
并立刻解开死锁 —— 否则在纯 IM 部署下这个工具会一直挂到超时(它只接受 dsh web 浏览器端的回答)。
- 进度回传:turn 跑超过 45 秒还没结束,就每 30 秒把新产出的正文增量发一次「进行中」消息。
长任务不再全程静默。
- 超时看门狗:turn 卡死时强制 agent.cancel() 并通知用户,阈值可配(默认 30 分钟)。
- 纯 ESM,无需 TypeScript 编译。
- 无遥测、完全本地。

安装

1. 安装 dsh
bash
npm install -g @deepseek-ai/dsh
dsh web --help

2. 安装本插件
bash
dsh plugin add dsh-feishu

会自动装到 ~/.dsh/profiles/web/node_modules/dsh-feishu 并写入 cordis.patch.yml。

3. 配置飞书应用

到  创建自建应用,复制 appId + appSecret。

在事件与回调里:
- 订阅方式选使用长连接接收事件/回调。
- 添加事件 im.message.receive_v1。

在权限里授予:
- im:message
- im:message.p2p_msg(私聊必需)

发布版本 —— 没发布就收不到事件。发布后等约 2 分钟缓存刷新。

4. 导出环境变量并启动
bash
export DEEPSEEK_API_KEY="sk-..."
export FEISHU_APP_ID="cli_..."
export FEISHU_APP_SECRET="..."

dsh web

日志里应该看到:

[feishu] WebSocket started (appId=cli_xxx)
[feishu] FeishuBridgeService initialized

给机器人发私聊消息,agent 会在同一会话里回复。

环境变量

| 变量 | 必需 | 默认 | 备注 |
|---|---|---|---|
| DEEPSEEK_API_KEY | 是(LLM 调用) | — |  |
| DEEPSEEK_BASE_URL | 否 | https://api.deepseek.com | 代理场景 |
| FEISHU_APP_ID | 是 | — | 应用控制台里的 cli_xxx |
| FEISHU_APP_SECRET | 是 | — | 应用控制台 —— 切勿提交 |
| DSH_FEISHU_WATCHDOG_TIMEOUT_MS | 否 | 1800000(30 分钟) | turn 卡死的强制取消阈值 |
| DSH_FEISHU_PROGRESS_AFTER_MS | 否 | 45000 | 本轮跑多久之后才开始发进度更新 |
| DSH_FEISHU_PROGRESS_INTERVAL_MS | 否 | 30000 | 相邻两条进度更新的最小间隔 |

消息流

1. 用户私聊机器人。
2. 飞书 SDK 触发 im.message.receive_v1 → 本插件。
3. 插件为 feishu: 加载/创建 agent。
4. 插件调用 agent.followup(userMessage)。
5. agent 回到 idle 后,插件读取 agent.session.events,过滤 DSML 噪声,通过
larkClient.im.message.create(...) 把回复发回飞书。
6. turn 进行期间,一个 2 秒轮询的看门狗负责两件事:发现未结算的 ask_user_question 调用
就把它转投到飞书并取消该轮(解死锁);turn 超过阈值就把正文增量作为「进行中」消息发出。
ask_user_question 与最终回复共用同一个 seq 游标,所以同一段文字不会发两遍。

限制

- 仅文本。图片/文件/卡片/post 消息未处理。
- 非增量 token 流式。回复仍按整段发送;turn 进行中只有周期性「进度更新」(见上)。
- 暂不支持群聊。仅私聊。
- 交互式 UI 工具降级:ask_user_question / exit_plan_mode 在 dsh 里只接受 web 端回答。
IM 场景下插件会把问题转成文本并取消该轮(同时注入环境约束,让模型优先直接用正文提问)。

协议

MIT。

致谢(第三方来源)

- DeepSeek Harness (dsh) —— 本插件所扩展的 Agent 运行时。
- @larksuiteoapi/node-sdk —— 飞书官方 SDK,MIT 协议。
- DeepSeek API —— 大模型后端。

作者

itr-del — 13918029394@163.com

在 Ubuntu 22.04 上集成 dsh 与自托管飞书机器人过程中编写。

English docs: README.md。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群