长连接收发飞书消息,并行任务会话与流式卡片
27.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add tkwkeven/dsh-lark-all该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 77 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 7 处,展示前 7 条)
- 请求外部主机open.feishu.cnops.js:31
const tokenRes = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', { - 发起网络请求ops.js:31
const tokenRes = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', { - 请求外部主机open.feishu.cnops.js:38
const msgRes = await fetch('https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id', { - 发起网络请求ops.js:38
const msgRes = await fetch('https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id', { - 读取本地文件ops.js:61
marker = JSON.parse(await readFile(markerFile, 'utf8')) - 删除本地文件ops.js:80
await rm(markerFile, { force: true }) - 删除本地文件递归build.mjs:8
rmSync('dist', { recursive: true, force: true })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:open.feishu.cn
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-attachment@deepseek-ai/dsh-credentials@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 长连接收发飞书消息
- 并行任务会话与流式卡片
- 媒体收发与云文档
飞书/Lark 一体化渠道插件,面向 DeepSeek Harness(Cordis):WebSocket 桥接、并行任务会话配流式卡片、媒体收发、云文档、重启恢复通知。
README
由 DeepSeek 最新模型翻译生成dsh-lark-all — DeepSeek Harness 飞书 / Lark 一体化插件
基于飞书官方 @larksuiteoapi/node-sdk 的 DeepSeek Harness 长连接通道 + 进程重启恢复通知合并插件。使用官方 WebSocket 长连接接收事件,无需公网 IP、无需回调服务器,同时支持飞书中国版与国际版 Lark。
一个包、一次安装,同时提供两个插件入口:
| 入口 | 插件 ID | 作用 |
| dsh-lark-all | lark-channel | 飞书/Lark 消息通道桥:收发消息、并行任务会话、流式卡片、媒体与云文档 |
| dsh-lark-all/ops | dsh-ops | 重启恢复通知:进程重启完成后向发起重启的聊天发送恢复提示 |
功能特性
通道与消息
- 官方 WebSocket 长连接 + 自动重连,无公网服务器
- 单聊 / 群聊访问策略(open / allowlist / disabled),群聊默认要求 @机器人
- 文字、富文本、图片消息输入;图片按模型能力启用多模态输入,超大「原图」自动降级为工作区文件并告知模型路径
- 文件 / 语音 / 视频入站:自动下载到 .lark-inbox/,文本类文件附带内容预览,模型读路径即可处理
展开完整文档(README 剩余 1 节)
dsh-lark-all — DeepSeek Harness 飞书 / Lark 一体化插件
基于飞书官方 @larksuiteoapi/node-sdk 的 DeepSeek Harness 长连接通道 + 进程重启恢复通知合并插件。使用官方 WebSocket 长连接接收事件,无需公网 IP、无需回调服务器,同时支持飞书中国版与国际版 Lark。
一个包、一次安装,同时提供两个插件入口:
| 入口 | 插件 ID | 作用 |
| dsh-lark-all | lark-channel | 飞书/Lark 消息通道桥:收发消息、并行任务会话、流式卡片、媒体与云文档 |
| dsh-lark-all/ops | dsh-ops | 重启恢复通知:进程重启完成后向发起重启的聊天发送恢复提示 |
功能特性
通道与消息
- 官方 WebSocket 长连接 + 自动重连,无公网服务器
- 单聊 / 群聊访问策略(open / allowlist / disabled),群聊默认要求 @机器人
- 文字、富文本、图片消息输入;图片按模型能力启用多模态输入,超大「原图」自动降级为工作区文件并告知模型路径
- 文件 / 语音 / 视频入站:自动下载到 .lark-inbox/,文本类文件附带内容预览,模型读路径即可处理
- 飞书云文档(docx)分享入站:自动读取正文内容供模型回答
- 模型文字回复、生成图片上传发送
- 收到消息立即添加「进行中」表情(默认 Typing),完成后移除,可选添加完成表情
- 每个聊天独立、可恢复的 Harness 会话;消息路由决策写入 /.lark-routing.log 便于排查
并行任务会话(核心特性)
- 消息以 任务: 开头(或 ptc任务: / 标准任务: / 极简任务: / 创造任务: 指定 agent preset)创建独立、可持久化的 Harness 会话——相当于 Web 端新建对话
- 每个任务在各自的话题中运行,带实时流式交互卡片:蓝色「🧠 任务执行中」→ 完成绿色「✅ 任务完成」/ 失败红色「⚠️ 任务失败」,正文展示任务标题、模式与会话、状态、耗时、轮次步骤、最近工具、思考摘要(240 字)与任务清单(最多 3 项)
- 卡片更新按 1200ms 最小间隔节流,终态立即推送并冻结;同一聊天内多个任务并行执行(chatQueue: false 默认)
- 话题内继续发消息即继续该任务会话(自动归属,无需依赖 root_id/thread_id);每轮生成一张新的「第 N 轮」卡片
- 超长报告按每页 3500 字符分页,避开代码块、尽量在标题处断页,每页以回复形式投递到任务话题内
- 恢复旧的严格串行行为:设置 chatQueue: true
出站媒体
| 方式 | 说明 |
| 斜杠命令 | /bot-send-file(文件 ≤30MB)、/bot-send-image(原图 ≤10MB)、/bot-send-voice(opus 语音)、/bot-send-video(mp4 视频)、/bot-send-doc(markdown 生成飞书云文档) |
| 模型回复标记 | 模型在回复中单独一行输出 [lark-file: 路径]、[lark-image: 路径]、[lark-voice: 路径]、[lark-video: 路径]、[lark-doc: 路径] 即可附带媒体(标记行不显示在回复中) |
| 大文件 | 超过 IM 上限且开启 driveLargeFiles 时,自动分片上传云空间并回复分享链接(≤200MB) |
| 安全边界 | 本地文件必须位于 outboundAllowedDirs(默认 cwd)内,realpath 校验防路径穿越;URL 由 SDK 内置 SSRF 防护兜底 |
进程重启与恢复通知(ops)
- 在主聊天发送配置的重启命令(默认 重启进程)即可安全重启 DSH 进程:写入重启标记 → 调度 detached 重启(优先 dsh-safe-restart.ps1 安全重启脚本,失败自动回滚配置;否则使用内置 detached helper)→ 延迟退出
- 进程恢复后,dsh-ops 检测到重启标记,向发起重启的聊天发送 ✅ DSH 进程已恢复,重启完成 通知并清除标记;通知失败保留标记下次重试
凭据安全
- App Secret 通过 Harness 凭据服务(credentialRef)解析,不写入插件配置;App ID 建议通过环境变量注入
安装
方式一:直接安装到 DSH profile
从 GitHub Releases 安装(发布后)
pnpm dsh plugin --profile web add https://github.com/tkwkeven/dsh-lark-all/releases/download/v1.0.0/dsh-lark-all-1.0.0.tgz
本地源码目录安装(开发)
pnpm dsh plugin --profile web add /absolute/path/to/dsh-lark-all
方式二:从源码构建安装
git clone https://github.com/tkwkeven/dsh-lark-all.git
cd dsh-lark-all
pnpm install
pnpm build # 产出 dist/index.js(含 d.ts 与 source map)
pnpm pack # 产出 dsh-lark-all-1.0.0.tgz
飞书开放平台配置
1. 在飞书开放平台创建企业自建应用,启用「机器人」能力。
2. 添加权限:
- 必选:im:message.p2p_msg:readonly、im:message.group_at_msg:readonly、im:message:send_as_bot、im:resource
- 「进行中表情」:im:message.reactions:write_only
- 可选:docx:document(云文档收发)、drive:drive(大文件上传云空间)
3. 在「事件与回调」选择「使用长连接接收事件」,订阅 im.message.receive_v1(接收消息)。
4. 创建并发布应用版本,把机器人加入需要使用的聊天。
5. 配置凭据(二选一):
开发时环境变量注入
export LARK_APP_ID='cli_your-app-id'
export LARK_APP_SECRET='your-app-secret'
pnpm dsh --profile web
长期运行推荐:App ID 放 ~/.dsh/.env,App Secret 通过 Harness 凭据设置界面保存(引用名 LARK_APP_SECRET)
⚠️ 不要把真实凭据提交到 Git。
DSH 配置
插件包自带 cordis.patch.yml,安装后自动插入两行:
- insert:
- id: lark-channel
name: dsh-lark-all
config:
appId: !!js process.env.LARK_APP_ID
appSecretRef: LARK_APP_SECRET
cwd: !!js process.env.DSH_LARK_CWD ?? process.cwd()
responseTimeoutMs: 21600000
- id: dsh-ops
name: dsh-lark-all/ops
config:
appId: !!js process.env.LARK_APP_ID
appSecretRef: LARK_APP_SECRET
cwd: !!js process.env.DSH_LARK_CWD ?? process.cwd()
在 profile 自己的 cordis.patch.yml(最后应用的一层)中覆盖配置:
- id: lark-channel
config:
appId: cli_your-app-id # 建议保留环境变量方式 singlePolicy: allowlist
singleAllowFrom: [ou_xxx]
groupPolicy: allowlist
groupAllowChats: [oc_xxx]
taskReasoningEffort: max # 任务会话固定的推理强度 restartExitDelayMs: 2000 # 重启时退出延迟(配合 relaunch helper)
完整配置项
访问策略与输入
| 配置 | 默认 | 说明 |
| domain | feishu | feishu(中国版)或 lark(国际版) |
| singlePolicy / groupPolicy | open | open / allowlist / disabled |
| singleAllowFrom / groupAllowChats | [] | 白名单(ou_ / oc_) |
| groupRequireMention | true | 群聊要求 @机器人 |
| respondToMentionAll | false | 响应 @所有人 |
| imageInputMode | auto | auto / always / never |
| replyInThread | false | 回复是否进话题 |
超时与回复
| 配置 | 默认 | 说明 |
| responseTimeoutMs | 300000 | 单轮回复上限(合并版默认 6 小时) |
| mediaDownloadTimeoutMs | 30000 | 媒体下载超时 |
| sendTimeoutMs | 30000 | 发送超时 |
| sendRetries | 2 | 发送重试次数 |
| maxReplyChars | 20000 | 单条回复上限 |
| maxReplyImages | 4 | 单条回复图片上限 |
入站媒体
| 配置 | 默认 | 说明 |
| inboundFiles | true | 接收文件到 inbox |
| inboundMedia | true | 接收语音/视频到 inbox |
| inboundDir | '' | 自定义 inbox 目录(空用 /.lark-inbox) |
| inboundResourceLimitBytes | 104857600 | 入站资源上限(飞书 100MB) |
| inboundTextPreviewChars | 6000 | 文本类文件预览长度 |
出站媒体
| 配置 | 默认 | 说明 |
| outboundMedia | true | 出站媒体总开关(命令 + 标记) |
| outboundAllowedDirs | [] | 允许的出站本地目录(空默认 [cwd]) |
| maxOutboundFileBytes | 31457280 | 文件上限(30MB) |
| maxOutboundAudioBytes | 31457280 | 语音上限 |
| maxOutboundVideoBytes | 31457280 | 视频上限 |
| maxOutboundImageBytes | 10485760 | 图片上限(10MB) |
| driveLargeFiles | false | 超限文件改传云空间并回复链接 |
| maxDriveFileBytes | 209715200 | 云空间上传上限(200MB) |
| sendFileMarkers | true | 解析模型回复 [lark-: 路径] 标记 |
| docxInbound | true | 读取 docx 分享内容 |
| docxOutbound | true | 允许 /bot-send-doc 与 [lark-doc:] |
任务会话
| 配置 | 默认 | 说明 |
| taskSessions | true | 任务会话总开关 |
| taskPresets | {} | 额外前缀 → agent preset 映射 |
| taskDefaultPreset | code | 裸 任务: 前缀使用的 preset |
| taskReasoningEffort | max | 新建任务会话固定的推理强度(模型不支持时会按路由自动收敛) |
| reportIdentity | wdsh | 任务报告前缀中的身份标识 |
| taskCounterFile | '' | 每日任务计数器路径 |
| chatQueue | false | 关闭(默认)→ 任务并行;true → 同聊天严格串行 |
重启
| 配置 | 默认 | 说明 |
| restartCommand | 重启进程 | 主聊天中触发的重启命令 |
| restartMarkerFile | '' | 重启标记路径(ops 消费) |
| restartLaunch | dsh web | 重启后启动的命令行 |
| restartLogFile | '' | 重启后进程日志 |
| restartExitDelayMs | 4000 | 调度重启后退出延迟 |
其他
| 配置 | 默认 | 说明 |
| progressReaction | true | 收到消息先添加进行中表情 |
| progressEmoji | Typing | 进行中表情(Typing/THUMBSUP/THINKING/GLANCE/Fire…) |
| doneEmoji | '' | 完成表情(如 CheckMark;空 = 关闭) |
| maxInFlightMessages | 8 | 并行处理上限 |
| systemPrompt | 内置 | 通道系统提示词覆盖 |
使用方法
1. 基础命令(发给机器人)
| 命令 | 说明 |
| /bot-ping | 连通性检查,返回 pong |
| /bot-help | 查看命令帮助 |
| /bot-image-test | 发送蓝色测试图片,检查图片链路 |
| /bot-status | 查看连接状态 |
| /bot-cancel | 取消当前生成 |
2. 普通聊天
直接发文字、图片、文件、语音、视频或云文档分享即可。普通消息进入该聊天的常驻 Harness 会话,与 Web 端同一套模型配置。
3. 并行任务会话
任务:帮我调研一下开源社区的 Cordis 插件生态 ptc任务:写一个 PowerShell 脚本批量重命名文件标准任务:总结这篇文档的要点极简任务:翻译这段话创造任务:设计一个产品原型方案
- 每条任务消息创建独立会话并在话题中运行,带实时流式卡片
- 任务还在运行时,继续发 任务:… 即可并行处理
- 在任务消息的话题(或回复任务消息的回复链)里继续发消息 = 继续该任务会话,每轮一张新的「第 N 轮」卡片
- 任务完成后,报告以回复形式投递到话题内;超长报告自动分页
4. 发送媒体
/bot-send-file C:\path\to\demo.txt
/bot-send-image C:\path\to\photo.png
/bot-send-voice C:\path\to\audio.opus
/bot-send-video C:\path\to\clip.mp4
/bot-send-doc C:\path\to\report.md
也可以让模型在回复中直接输出标记(独立一行):
[lark-file: C:\path\to\demo.txt]
[lark-image: C:\path\to\photo.png]
[lark-doc: C:\path\to\report.md]
超过 IM 上限的文件在开启 driveLargeFiles 后自动上传云空间并回复分享链接。
5. 接收媒体
- 文件:下载到 /.lark-inbox/-/,文本类文件附带内容预览,可直接问文件内容相关问题
- 语音/视频:下载到 inbox 并告知时长与路径
- 原图:超过附件限制的图片自动降级为 inbox 文件并告知路径
- 云文档:docx 分享自动读取正文;sheet/bitable 识别名称与链接
6. 重启进程
在主聊天发送 重启进程(可配置 restartCommand)。机器人回复确认后调度安全重启,约 10~60 秒后恢复;dsh-ops 会向该聊天发送恢复通知。
7. 验证链路
/bot-ping → pong
/bot-image-test → 文字 + 蓝色图片
再发普通文字和一张图片验证模型与入站附件链路;发 demo.txt 后 /bot-send-file C:\绝对\路径\demo.txt 验证文件出站;向机器人发送一个文件或语音验证入站下载。
安全建议
- 生产环境使用白名单策略(singlePolicy / groupPolicy: allowlist),并为 agent 配置最小文件和工具权限
- App Secret 只存 Harness 凭据服务,App ID 走环境变量,绝不写进配置或提交 Git
- 出站媒体目录用 outboundAllowedDirs 收窄;不要在允许目录里放敏感文件
- 群聊保持 groupRequireMention: true 防止误触发
开发
pnpm install
pnpm check # tsc --noEmit + esbuild 打包校验
pnpm build # 产出 dist/index.js(esbuild 打包,@deepseek-ai/ 保持 external)
pnpm pack # 产出 .tgz
源码结构:
src/
├── index.ts # 插件入口(name/inject/Config/apply) ├── bridge.ts # 通道桥:连接、消息路由、命令、重启调度 ├── conversations.ts # 会话管理:普通会话 + 并行任务会话 + 卡片流 ├── card.ts # 流式交互卡片状态机与渲染 ├── inbound.ts # 入站内容解析(文本/图片/文件/语音/视频) ├── media.ts # 出站媒体构造与发送 ├── docx.ts # 飞书云文档读写 ├── drive.ts # 云空间大文件分片上传 ├── config.ts # 配置 schema(schemastery) └── util.ts # 工具函数 ops.js # 重启恢复通知(直接执行的纯 JS 入口)
致谢与许可
协议与配置行为参考 larksuite/openclaw-lark;通道桥核心源自 sliverp/DeepSeek-harness-lark(MIT)。本项目在二者基础上合并增强,使用 MIT 许可证;打包产物中的第三方软件见 THIRD_PARTY_NOTICES.md。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
tkwkeven/dsh-lark-all
长连接收发飞书消息,并行任务会话与流式卡片
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,170已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,041已汉化DSH
70.7
这是你的仓库?认领条目