跳到主内容

dsh-lark

24Star6Fork2Issue0Watching

把飞书/Lark 接入 DeepSeek Harness,用 WebSocket 长连接让用户在聊天里直接使用 Agent,无需公网回调。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
main
deepseekdeepseek-harnessdeepseek-harness-plugindshdsh-plugindsh-plugins

安装

命令web profile
$ dsh plugin --profile web add @sugarforever/dsh-lark

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 sugarforever/dsh-lark:先查看仓库 https://github.com/sugarforever/dsh-lark 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

把飞书或 Lark 接入 DeepSeek Harness,让用户在飞书聊天里直接和 Agent 对话,模型、工具、会话存储仍由 Harness 提供。

核心能力

  • 通过 WebSocket 长连接接收飞书/Lark 消息,无需公网回调地址或域名。
  • 单聊和普通群聊按聊天复用 Harness 会话,话题群按线程使用独立会话。
  • 自动挂载 Harness Agent Preset,并把会话关联到指定或默认的 Workspace。
  • 通过 Harness Settings 页面配置 App ID、App Secret、群聊策略和单聊白名单,凭据支持热更新。
  • App Secret 仅写入 Harness Credentials,插件日志和界面不会回显明文 Secret。
  • 同一聊天内的事件由官方 SDK 串行处理,5 分钟以上延迟事件会被丢弃,重复事件通过去重窗口过滤。

技术实现

  • 语言: TypeScript(服务端 + 浏览器端 React 组件)
  • 关键依赖: @larksuiteoapi/node-sdk、@deepseek-ai/schemastery、@deepseek-ai/dsh-agent、@deepseek-ai/dsh-credentials
  • 架构模式: 双端 Cordis 插件。服务端通过 apply(ctx) 注入 Harness 的 agent、session、settings、credentials、webServer 等服务;浏览器端通过 apply(ctx) 注入 slots、locale、connection,向 Harness Settings 页面注册一个 "飞书与 Lark" 区块。
  • 入口文件: src/index.ts(服务端入口,name = 'lark-channel'),src/client/index.ts(客户端入口,name = 'dsh-lark'),patch 文件 cordis.patch.yml。

适用场景

希望把飞书或 Lark 作为 DeepSeek Harness 的入口的团队或个人用户。例如把机器人加入项目群,让成员直接在群里 @机器人提交问题或让机器人基于特定工作区排查代码;或者把机器人作为个人单聊助手,复用 Harness 已配置的模型、工具和工作目录。

前置依赖与兼容性

依赖最低版本说明
DSH Harness0.1.0-rc.6通过 peerDependencies 声明,需要 agent、session、credentials、settings、workspace、webServer 等服务
Node.js22.19.0README 要求 ^22.19.0 或 >=24.0.0,CI 在 Node 24 上构建
平台跨平台未声明 os 或 cpu 限制,纯 JS 实现,无原生模块
原生模块无仅依赖纯 JS 库和 Node 内置模块(node:crypto、node:http)
飞书/Lark 应用自建应用 + 启用机器人能力需订阅 im.message.receive_v1 事件并使用长连接接收方式

安装方式

dsh plugin --profile web add github:sugarforever/dsh-lark

配置项

配置类型说明默认值
appId字符串飞书/Lark 自建应用的 App ID,留空表示未配置""
appSecretRef字符串Harness Credentials 中保存 App Secret 的引用名,运行时按此名解析密钥DSH_LARK_APP_SECRET
domain枚举平台类型,中国版填 feishu,国际版填 larkfeishu
requireMention布尔群聊中是否必须 @机器人才会触发true
dmMode枚举单聊策略,open 全部开放,allowlist 仅白名单,disabled 关闭单聊open
groupAllowlist字符串数组允许使用机器人的群 chat_id 列表,空数组表示不限制[]
dmAllowlist字符串数组单聊策略为 allowlist 时允许的用户 open_id 列表[]
provider字符串为这个渠道指定 Harness 模型目录里的 Provider,留空跟随 Harness 默认值跟随 Harness 默认
model字符串为这个渠道指定模型,留空跟随 Harness 默认值跟随 Harness 默认
workspace字符串Agent 使用的工作目录绝对路径;留空时使用第一个已注册 Workspace,否则使用启动 DSH 的进程工作目录第一个已注册 Workspace
agentPreset字符串Agent 使用的 Preset 名称,决定工具和系统提示;留空时使用 Harness 当前默认 PresetHarness 默认 Preset
errorMessage字符串Agent 执行失败时返回给用户的文本,最长 500 个字符内置中文提示

provider 和 model 建议同时设置;App Secret 可在 Settings 页面保存到 Harness Credentials,也可在启动 Harness 前通过同名环境变量 DSH_LARK_APP_SECRET 注入。

常见问题

Q: 启动时提示鉴权失败怎么处理?

A: 先确认 App ID 和 App Secret 来自同一个飞书应用,且环境变量在启动 Harness 的进程里可见。如果凭据曾经泄露,应先在开发者后台轮换 App Secret 再重新配置。

Q: 终端显示 WebSocket 已连接,但机器人收不到消息怎么办?

A: 依次确认:应用已发布并安装到当前企业;机器人已加入目标群聊;订阅了 im.message.receive_v1;事件接收方式是长连接而非 Webhook;消息权限已通过企业管理员审批;群聊消息里 @了机器人;groupAllowlist 没有把当前群排除掉。

Q: 机器人能收到消息但不能回复怎么办?

A: 检查应用是否拥有 im:message:send_as_bot 权限,并查看终端里的飞书 API 错误。如果回复目标被撤回,官方 SDK 会尝试降级为普通消息;其他权限问题仍需要在应用后台处理。

Q: 修改配置后多久生效?需要重启 Harness 吗?

A: 在 Settings 页面保存普通参数或修改 Harness Credentials 后,插件会自动关闭旧 WebSocket 并重建连接,不需要重启。只有修改启动环境变量时才需要重启进程。

Q: 同一个单聊里能不能保留前文对话?

A: 可以。同一聊天内的消息会复用同一个 Harness Session,因此可以保留前文。Harness 重启后插件也会恢复持久化的 Session;如果该 Session 在当前进程中已经存在,则直接复用现有 Agent,不会重复创建。

Q: 长连接反复重连是什么原因?

A: 多数是运行环境无法访问飞书的 HTTPS 和 WebSocket 端点。请检查企业代理、防火墙、TLS 中间人和网络出口限制;同时不要为同一个飞书应用启动多个插件实例,否则平台可能把事件分发给多个连接,单实例只能收到部分消息。

Q: 群聊里没 @机器人也想触发,应该怎么设置?

A: 把 requireMention 设为 false,并为应用申请 im:message.group_msg 权限来接收群内全部消息。这个权限通常需要企业管理员审批,开启前应评估群消息的隐私范围和模型调用成本。

Q: 升级 Harness 后插件会失效吗?

A: 兼容范围从 0.1.0-rc.6 开始,CI 持续验证最新 Harness 版本,因此升级到后续 RC 通常不需要重新发布插件。如果遇到问题再升级插件到最新版本即可。

上手难度

入门 — 只需在飞书开发者后台创建一个自建应用、启用机器人和订阅事件,然后在 Harness Settings 页面填入 App ID 和 App Secret 即可使用,无需写代码。

已知问题与限制

  • appSecret(明文字段)和 resolveConfig 在源码中标注为 @deprecated,仍可作为只读兼容来源读取,但不建议继续保留;新增配置应使用 appSecretRef 加 Harness Credentials。
  • 升级到包含 Workspace/Preset 关联的版本后,同一飞书聊天会创建新的 v2 Session(lark-v2-<sha256> 前缀),旧版本产生的未关联 Session 不会被继续复用。
  • 一个飞书应用不应同时运行多个长连接消费者,平台可能在连接之间分发事件,导致单个实例只能收到部分消息。
  • App Secret 来源如果是启动环境变量或旧版 patch 中的明文 appSecret,Settings 页面会显示只读状态,不能通过 UI 覆盖或删除该来源。
  • 启动环境变量来源在 Harness 启动时冻结,运行时修改同名变量不会立刻生效,需要重启进程。

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/sugarforever/dsh-lark)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录