dsh-feishu-bridge:用飞书远程驱动本机 DeepSeek Harness

前言

跑在本机的 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)显式指定。

典型用法

  1. 本机安装并启用 DSH 与插件,配置 cwd 与 allowOpenIds。
  2. 确保 lark-cli auth status 中 bot 就绪,插件启动后消费 im.message.receive_v1。
  3. 在飞书单聊机器人发送项目相关任务;需要新上下文时用 /new,查看状态用 /status 或 /doctor。
  4. 工具弹授权时在飞书回复 /approve 或点卡片;长时间无操作注意 approvalTimeoutMs 会按拒绝处理。
  5. 在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜