前言¶
DeepSeek Harness(dsh)是 DeepSeek AI 开源的智能体运行时,核心理念是「一切皆插件」:模型、工具、会话、审批、界面都可以用插件替换或组合。官方仓库写明它仍处于开发者预览阶段,接口可能不兼容升级。当前版本用 npx @deepseek-ai/dsh web 启动时,默认 Web 界面在 http://127.0.0.1:3080。
对很多团队来说,真正卡住的不是「智能体能不能跑」,而是「人在飞书里,任务却在本机终端里」。改一句需求、批一次工具调用、看一眼进度,都要切回电脑。社区目录里有一类「通知与集成」插件专门补这块缺口。本文介绍其中的 dsh-lark-bridge:把飞书私聊、群聊、话题变成 DeepSeek Harness 的控制面,任务发过去,进度卡片回过来。
需要先说明:社区插件目录 deepseek-harness-plugin.com 是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。目录当前收录约 287 个插件,「通知与集成」分类约 9 个。安装任何插件前都应自己看源码和许可证。
这是什么¶
dsh-lark-bridge 是一款面向 DeepSeek Harness 的双向飞书 / Lark 控制器。GitHub 仓库由 imetn 维护,目录页分类为「通知与集成」,许可证为 MIT。package.json 中的版本是 0.1.0,主要语言是 TypeScript,要求 Node.js 22+。仓库 README 写明已针对 DeepSeek Harness 0.1.0-rc.6 验证。本文写作时,目录页与 GitHub 上的星标均为 7。
它解决的问题很具体:你在飞书里发一条任务,Bridge 把它交给对应的 Harness Project 和 Session,用一张原生卡片原位更新进度;审批、提问、文件、图片和控制命令也走同一段会话回来。传输使用飞书开放平台的 WebSocket 长连接,不需要自己暴露公网 Webhook。
仓库地址:https://github.com/imetn/dsh-lark-bridge
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-lark-bridge/
核心功能¶
根据仓库 README 与 SECURITY.md,当前已经写明的能力如下。
1、从飞书创建、继续、纠偏、停止、恢复和检查 Harness Session。
2、每个群可以绑定独立的 Project、工作目录、模型路线、访问策略和卡片视图。
3、默认一个话题或线程对应一个隔离的 Session;同一话题里的回复共享上下文。
4、同一张卡片从运行中原位更新为完成、阻塞、取消或失败。卡片只展示受长度限制、已脱敏的工具摘要,不展示模型隐藏思维链。原始任务出现在飞书的引用回复里,卡片内部不再重复任务正文。
5、可以用卡片按钮批准一次工具调用,或回答 Agent 的结构化问题。一次审批按钮只授权当前这一次操作。
6、接收文字、图片和文件;Agent 可通过 lark_deliver 把工作区内的安全文件发回飞书。出站路径必须落在该 Project 的 workspaceRoot 内,符号链接逃逸会被拒绝。
7、卡片密度可选 compact、standard、developer,可按 Project 或当前 Session 设置。
8、使用 WebSocket 长连接,不部署公网回调服务。
飞书实体和 Harness 实体的默认对应关系可以记这张表:
| 飞书实体 | Harness 实体 | 用法 |
|---|---|---|
| 机器人私聊 | 个人控制面 | 切换 Project,处理私密任务 |
| 一个群 | 一个 Project | 承载一个代码库或长期工作流 |
| 一个话题或线程 | 一个 Session | 把一个任务和后续交流放在一起 |
默认 groupSessionScope: thread。sender 会为每位群成员保留独立 Session;chat 让全群共享一个 Session,README 明确写了:只有在你确实需要共享上下文时才用。
安装与启用¶
目录页给出的安装命令如下,在 DeepSeek Harness 终端里运行即可:
dsh plugin add github:imetn/dsh-lark-bridge
dsh 会从 GitHub 解析插件并装进当前配置。插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。需要可复现安装时,按目录页说明固定 commit 哈希:
dsh plugin add github:imetn/dsh-lark-bridge#<commit>
把 <commit> 换成你审查过的提交哈希,不要直接复制占位符。
只执行上面这条命令,还不会自动创建飞书应用、写入凭据、生成 lark Profile。仓库 README 推荐的接入方式是 setup 向导。前置条件是:Node.js 22+、pnpm、已经可用的 DeepSeek Harness 模型配置,以及已安装的 dsh CLI,或附近一份官方 Harness 源码。进入希望机器人控制的 Project 目录后执行:
pnpm dlx github:imetn/dsh-lark-bridge setup --project "$PWD"
向导会做这些事:打开飞书 / Lark 官方授权页创建新的机器人应用;只申请 Bridge 用到的消息、附件、表情、事件和卡片回调能力;把 App Secret 写入 Harness 仅 Owner 可读的凭据文件,不写进 Profile;安装插件,幂等写入 lark Profile,绑定授权用户并启动 Bridge;平台返回用户 Open ID 后,机器人会发一张欢迎卡片。
自动流程固定使用 createOnly: true,不会选择或修改已有应用。字节租户加 --brand larkoffice,国际版 Lark 加 --brand lark:
pnpm dlx github:imetn/dsh-lark-bridge setup --project "$PWD" --brand larkoffice
如果企业已经有应用,命令只验证凭据并写本机 Harness 配置,不会改现有应用:
printf '%s' "$LARK_APP_SECRET" | pnpm dlx github:imetn/dsh-lark-bridge setup \
--project "$PWD" \
--app-id cli_xxxxxxxxxxxxxxxx \
--app-secret-stdin
企业策略不允许一键创建时,加 --manual。向导会打开开发者后台,让你输入 App ID 和 App Secret。手动创建时需要:启用机器人能力、选择长连接、发布一个版本,并配置 README 列出的权限与事件,主要包括 im:message.p2p_msg:readonly、im:message.group_at_msg:readonly、im:message:send_as_bot、im:resource;接收入站附件还需要 im:message:readonly;消息事件 im.message.receive_v1;卡片回调 card.action.trigger。群聊只申请 @机器人 消息,不需要读取群内全部消息。
package.json 声明了 dsh.bundle.patch,指向 ./cordis.patch.yml,并带有官方发现关键词 dsh-plugin。仓库提交了已构建的 lib/,并打包了飞书官方 SDK,README 写明从 Git 安装不需要现场构建。
典型用法¶
先在机器人私聊里发:
/status
再发一个小任务。回复卡片应展示 Project、结果、耗时,以及当前视图对应的信息。欢迎卡片里的按钮测试是可选项,不点也能直接发文字任务。随时可以用下面这条命令检查本机接入状态:
pnpm dlx github:imetn/dsh-lark-bridge doctor
常用控制命令来自 README,不要自己发明别的斜杠指令:
- 文字或附件:继续当前 Agent
/steer <内容>:在运行中补充或纠正最近一步/stop:取消当前任务/approve、/reject:处理当前一次工具审批的文字兜底/new:创建新 Session/sessions、/resume:列出或恢复属于当前飞书来源的 Session/projects、/project:在私聊中列出或选择 Project/bind [project-id]、/unbind:管理群聊的 Project 绑定/view compact|standard|developer:切换当前 Session 的卡片密度/commands、/help:查看 Harness 原生命令或 Bridge 帮助
Profile 只有一个可用 Project 时,Owner 第一次在群里 @机器人 会自动绑定。存在多个 Project 时,需要发送一次 @机器人 /bind [project-id]。卡片按钮也支持停止、新会话、状态、审批、视图切换和结构化提问。
卡片三档视图的差异如下:
compact:结果、耗时、关键操作standard:精简视图加上 Project、模型、近期工具名、工具次数和总 tokendeveloper:标准视图加上 cwd、Session ID、已脱敏工具摘要与耗时、输入 / 输出 / 缓存 token
向导会写入 ~/.dsh/profiles/lark/cordis.patch.yml。需要多个 Project 时,按 README 在这个文件里追加,例如:
- id: dsh-lark-bridge
config:
appId: cli_xxxxxxxxxxxxxxxx
appSecretRef: DSH_LARK_APP_SECRET
brand: feishu
defaultProjectId: web
groupSessionScope: thread
projects:
- id: web
name: Web App
cwd: /absolute/path/to/web-app
workspaceRoot: /absolute/path/to/web-app
cardPreset: developer
- id: ios
name: iOS App
cwd: /absolute/path/to/ios-app
workspaceRoot: /absolute/path/to/ios-app
cardPreset: compact
每个 Project 还可以设置 chatIds、allowedOpenIds、provider、model 和 inboundDir。从飞书完成的群绑定保存在仅 Owner 可读的 Bridge 状态文件中;静态 chatIds 优先。
有两个容易混的点。第一,dsh --profile lark 只启动 Bridge,不提供 HTTP 页面;http://127.0.0.1:3080 属于单独的 dsh web。第二,README 列出的常见故障:收不到消息时检查是否发布了应用版本、是否选择了长连接、消息事件和权限是否齐全;群聊无响应时先把机器人拉进群并 @ 它;卡片按钮无响应时补上 card.action.trigger,文字任务、/approve、/reject 仍然可用。
适用场景与注意事项¶
适合已经在用 DeepSeek Harness、日常沟通又在飞书或 Lark 里的个人开发者和小团队:希望在手机或群聊里下任务、看进度、批一次工具调用,而不把本机终端一直开着。多代码库场景可以把每个群绑到不同 Project,用话题隔离 Session。
它不适合当成「把 Harness 公开到互联网上的网关」。SECURITY.md 写得很清楚:Bridge 会把获准的飞书用户变成本机 Harness Agent 的远程入口,每个允许的 open_id 都应视为拥有该 Harness profile 实际能力的操作者。Bridge 不能替代 Harness 沙箱、审批策略、操作系统权限和凭据保管。
安装和使用时建议同时记住这些边界:
- 目录页与 README 都强调:插件以当前
dsh进程权限运行,安装前检查源码和许可证;可复现安装请固定 commit。 - App Secret 放在 Harness 仅 Owner 可读的凭据文件、密钥管理器或受保护的进程环境里,不要写进 Profile,也不要出现在聊天、日志、截图或提交里。
SECURITY.md建议保持allowAllUsers、allowAllGroups关闭,同时使用全局allowedOpenIds和更窄的 Project 名单;保持requireMention: true;每个群只绑一个 Project;workspaceRoot设成最小够用的目录。- Owner 通过官方授权身份绑定,或使用经过哈希保存、十分钟有效、只能用一次的
/claim配对码。 - 入站附件使用
0700目录和0600文件,文件名会被净化并加随机后缀。 - 脱敏是按常见密钥形态做的,异常格式可能漏网;获准操作者可以请求底层 Harness profile 允许的任何操作。群成员能看到该群可见的消息,即使其中只有部分人能操作机器人。
- WebSocket 事件投递不是分布式锁:多个 Bridge 进程挂到同一个飞书应用上,可能把事件和内存中的交互状态拆散。一个飞书应用对应一个 Bridge,生产和开发应用分开。
- DeepSeek Harness 仍是开发者预览,本插件验证过的版本是
0.1.0-rc.6。升级 Harness 前要再对一下插件的 peer 依赖。
同类目录里还有 dsh-lark 等飞书通道插件,维护者和许可证都不同。本文只依据 dsh-lark-bridge 自己的目录页和仓库说明,不把别的插件的能力算到它头上。
结语¶
dsh-lark-bridge 做的事情比较克制:不另起一套 Web 控制台,而是把飞书会话映射到 Harness 的 Project 和 Session,用一张卡片把进度、审批和文件送回去。对已经把日常协作放在飞书里的人来说,这条路径比反复切回本机终端更直接。
它是 MIT 许可的社区项目,不是 DeepSeek 官方应用。装之前看源码、看许可证、固定 commit,把飞书应用权限和本机 Harness 审批策略一起收紧,再开始把任务从聊天窗口丢进去。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-lark-bridge/
GitHub:https://github.com/imetn/dsh-lark-bridge
DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness