前言¶
跑在本机的 DeepSeek Harness(DSH)适合需要真实文件系统、本地工具链和可控权限的开发场景,但人一旦离开电脑,就很难继续往同一条会话里发指令、看进度。常见做法包括自建带公网入口的网关、内网穿透,或在云端再跑一套 Agent——每条路径都会多出部署和维护成本,还容易和 DSH 网页里那条「标准 Session」脱节。
honor-99/dsh-feishu-bridge 走另一条路:复用你本机已有的 lark-cli 授权,用飞书 WebSocket 长连接收消息、用 CLI 回消息,在 DSH 里创建并驱动与网页端同链路的真实会话。DSH Web UI 与飞书聊天记录对应的是同一份会话记录,无需公网 IP 或内网穿透。本文按官方 README 说明定位、安装与配置要点;插件当前星标为 0,属社区客户端类插件,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
维护者 honor-99(npm 包名 @honor-99/dsh-feishu-bridge,版本 0.1.3,许可证 MIT)。分类为 客户端 插件。
一句话:用手机或桌面飞书给本机 DSH 发任务,入站走 lark-cli event consume im.message.receive_v1 --as bot,出站走 lark-cli im +messages-send / +messages-reply --as bot;会话经 ctx.sessionController.create / prompt / cancel / rename,与网页端同一套链路。DSH 侧日志为标准的 session.v4.jsonl.zstd,飞书侧为普通聊天;绑定关系落在 ~/.dsh/feishu-bridge/state.json。
架构与数据流¶
入站是机器人长连接消费,不依赖你给机器配公网地址。出站以 markdown 消息为主,过长内容会按 chunkLimit(默认 3200 字符)分片。
插件源码按职责拆分(README 目录表):
| 文件 | 作用 |
|---|---|
index.js |
插件入口:apply(ctx, config)、配置解析、生命周期 |
bridge.js |
路由、指令、会话事件镜像回飞书 |
lark.js |
长连接消费者(断线指数退避)+ 一次性 CLI 调用 |
store.js |
飞书会话 ↔ DSH sessionId 持久化 |
util.js |
日志、文本提取、分片 |
会话映射规则要点:
- 与机器人的单聊(p2p):一个 Session,长期复用。
- 群里 @ 机器人:整群一个 Session(受
groupSessions影响,默认按话题thread分裂)。 - 话题群某话题:按
thread_id一个 Session。 - 只有
thread_id参与分键;root_id用于发送定位,不参与分键。
核心能力¶
远程对话与同一份记录¶
任意文本会交给当前绑定的 DSH 会话执行;模型输出、工具调用(可选 showTools)、结束状态实时回到飞书。因为是普通 Session,你在 DSH 网页侧边栏看到的会话与飞书里对话的是同一条线。
工具授权与选项式提问¶
DSH 工具需要授权时会走 approval/request waterfall。插件只接管映射表里属于飞书会话的请求,避免飞书发起的任务在没人应答时静默卡住;其余请求 next() 交回网页端。
- 飞书侧可用
/approve、/reject,或卡片按钮、短回复1/2、y/n等。 feishuApprovals: false可关闭接管。- 超时
approvalTimeoutMs默认 600000 ms,按拒绝处理。
同样可接管 user-questions/request,把 ask_user 的选项渲染为编号列表与交互卡片;feishuQuestions、cardButtons、questionFreeText 等配置控制行为。若要用卡片按钮,须在飞书开放平台订阅回调事件 card.action.trigger 并发布版本,否则 CLI 会报 failed_precondition,插件会停止对该事件的重试(数字回复仍可用)。
附件与白名单¶
attachments: true 时可接收飞书图片与文件。allowOpenIds 为飞书 open_id 白名单:留空表示拒绝所有人;未授权者在单聊可收到配对提示(unpairedReply)。换飞书应用后 open_id 会变,需重新收集并写入白名单。
飞书内指令¶
除直接发任务文本外,README 列出的指令包括:/new、/stop、/approve、/reject、/status、/doctor、/model、/models、/title、/cwd、/sessions、/resume、/help 等,用于会话管理、自检与模型切换。
安装与启用¶
适用 DSH 版本:0.2.1-rc.5(开发者预览期,插件 API 可能变化)。依赖 Node ≥ 22、lark-cli(README 写明 1.0.96 已验证),以及宿主侧 sessionController 与 workspaceRegistry。
从 npm 安装(推荐):
dsh plugin --profile web add @honor-99/dsh-feishu-bridge
若 bundle 未被自动选中,在 DSH 里用 plugin_manager 完成安装与选择:
plugin_manager action: install_bundle target: @honor-99/dsh-feishu-bridge
README 也给出从 GitHub 克隆后以本地绝对路径安装的方式,供开发调试;profile 会记为 link:<路径>,改源码重载插件即生效。
安装后请在 cordis.patch.yml 的 config 中至少配置工作目录与白名单(改完可在「插件」面板关/开一次使之生效)。示例字段:
cwd: '/path/to/your/project'
allowOpenIds:
- 'ou_xxxxxxxx'
cwd 决定 Agent 工作目录并复用该路径的 workspace。其余常用键包括:identity(bot / user,默认 bot)、groupRequiresMention(默认 true)、acknowledge(收到任务先回「已收到」)、feishuApprovals、chunkLimit 等,完整表格见 GitHub README。
lark-cli 与飞书应用准备¶
插件不保存 App Secret;凭据经 lark-cli 落在系统钥匙串。换应用或重授权时,README 区分四种意图(auth login、profile add、config remove + config init --new、config strict-mode),并给出标准流程:开放平台开机器人、事件订阅选长连接、订阅 im.message.receive_v1(需要按钮时再加 card.action.trigger)、具备 im:message 相关权限后发布;本机 lark-cli config init 或 profile add 绑定,用 lark-cli doctor 验证 bot: ready。
lark-cli 路径可自动探测;也可在配置里用 nodePath + cliScript 或 cliCommand(默认 lark-cli)显式指定。
典型用法¶
- 本机安装并启用 DSH 与插件,配置
cwd与allowOpenIds。 - 确保
lark-cli auth status中 bot 就绪,插件启动后消费im.message.receive_v1。 - 在飞书单聊机器人发送项目相关任务;需要新上下文时用
/new,查看状态用/status或/doctor。 - 工具弹授权时在飞书回复
/approve或点卡片;长时间无操作注意approvalTimeoutMs会按拒绝处理。 - 在 DSH Web UI 打开同一会话,可核对与飞书一致的回合与工具轨迹。
离线调试可使用包内 npm run selftest(scripts/selftest.mjs):伪造飞书事件并真实回写飞书。
适用场景与注意¶
适合: 已有 DSH + lark-cli、希望用手机或飞书群远程触发本机 Agent,且希望飞书与网页共用标准 Session 的个人或小团队开发者。
务必注意:
- 插件以当前 DSH 进程权限在本机执行工具与读写
cwd;安装前请阅读源码与 MIT 许可证,仅将信任的用户open_id列入白名单。 - 社区目录页:SkillHub 插件条目;源码与细节以 GitHub 仓库 为准。
- 现阶段无图形化配置表单,改
cordis.patch.yml后需在插件面板重载;换飞书应用后记得更新白名单,必要时删除~/.dsh/feishu-bridge/state.json与welcome.json以清空绑定。
结尾¶
dsh-feishu-bridge 把飞书消息接到 DSH 的标准会话链路上,用长连接取代公网入口,并把授权与提问接回聊天里,降低「人不在电脑前就断了 Agent」的摩擦。若你正在用 DSH 做本地智能体开发,又已经使用飞书协作,可以按上文安装命令与 README 配置项做一次最小闭环验证。
- 目录页:https://www.skillhub.cn/plugins/honor-99/dsh-feishu-bridge
- GitHub:https://github.com/honor-99/dsh-feishu-bridge