Back to home

shifan3

dsh-feishu-bridge

Feishu/Lark bridge plugin for the DeepSeek Harness (DSH): long-connection → agent → reply

Stars
0
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-feishu-bridge

飞书(Feishu / Lark)桥接插件,用于 DeepSeek Harness(DSH)。

通过飞书长连接(WebSocket)接收机器人消息 → 交给一个拥有完整工具集的常驻 Agent 执行命令 → 再通过飞书机器人回复。不需要公网 IP / 域名 / 内网穿透,本机能访问公网即可。

架构

飞书用户 → 飞书云 ←WS 长连接→ helper.mjs(本地) --POST--> 插件路由 → 常驻 Agent(执行命令) → 飞书 API 回复
  • helper.mjs:用官方 @larksuiteoapi/node-sdkWSClient 主动外连飞书服务器,接收 im.message.receive_v1 事件。
  • index.js:宿主插件,负责创建常驻 Agent、注册桥接路由、处理 / 命令、回发消息与 typing 指示器。

前置条件

  • 已部署 DSH,并能以 dsh web(web profile)启动。
  • 本机 Node.js ≥ 18(fetch / WebSocket 均可用)。
  • 一个飞书企业自建应用(含机器人能力)。

第一步:配置飞书应用

  1. 打开 open.feishu.cn/app → 创建企业自建应用 → 添加「机器人」能力。
  2. 权限管理开启:im:message(获取与发送消息)、im:message.p2p_msg(单聊)、im:message.group_at_msg(群聊 @)、以及消息表情回复权限(im:message.reaction,用于 typing 指示器)。
  3. 事件与回调 → 订阅事件 im.message.receive_v1,订阅方式选「使用长连接接收事件」。
  4. 创建版本并发布(个人租户需管理员审批通过后机器人才生效)。
  5. 在「凭证与基础信息」复制 App IDApp Secret

第二步:安装插件

mkdir -p ~/.dsh/plugins
git clone https://github.com/<你的用户名>/dsh-feishu-bridge.git ~/.dsh/plugins/feishu-bridge
cd ~/.dsh/plugins/feishu-bridge
npm install

第三步:配置凭证(二选一)

方式 A:环境变量(推荐)

export FEISHU_APP_ID=cli_xxxxxxxx
export FEISHU_APP_SECRET=xxxxxxxx

方式 B:本地 config.json(已 gitignore,不会进仓库)

cp config.example.json config.json
# 编辑 config.json,填入 appId / appSecret / cwd(工作目录)等

凭证优先级:环境变量 FEISHU_APP_ID / FEISHU_APP_SECRET > config.json

第四步:挂载到 web profile

编辑 ~/.dsh/profiles/web/cordis.patch.yml,加入:

- insert:
    - id: feishu-bridge
      name: '../../plugins/feishu-bridge/index.js'

重启 dsh web 即可生效。启动日志出现 [feishu-bridge][feishu-helper] 即表示加载成功。

内置命令

在飞书里直接发送:

命令作用
/help显示命令帮助
/new新建会话(重置)
/reset重置当前会话
/sessions列出会话(* 为当前)
/session <名称>切换 / 新建会话
/cd <路径>切换 workspace(相对 / ~ / / 绝对路径),会重置会话
/status当前状态
/context当前上下文占用
/usage本会话 API 用量(tokens)
/skills列出所有 skill
/models列出可用模型(* 为当前)
/model <模型>切换模型
/efforts列出思考强度(* 为当前)
/effort <强度>切换思考强度
/modes列出可用模式(* 为当前)
/mode <模式>切换模式(preset),会重置会话
/permissions列出 permission(* 为当前)
/permission <名称>切换 permission

⚠️ 会新建会话(清空历史与上下文)的命令/new/reset/cd/mode/session <名称> 会切换到已有会话(保留其历史);只有名称不存在时才新建。 /model/effort/permission 只切换对应设置,不会重置会话。 列表类命令(/sessions/models/efforts/modes/permissions)会用 * 标记当前项;切换类命令(/session/model/effort/mode/permission必须带参数

处理普通消息时,机器人会先在消息上显示 typing 表情,处理完成后移除。

config.json 字段

字段说明默认
appId飞书 App ID(也可用 FEISHU_APP_ID
appSecret飞书 App Secret(也可用 FEISHU_APP_SECRET
presetIdAgent 使用的 preset;null 为默认null
cwdAgent 工作目录
groupReplyOnlyWhenMentioned群聊仅被 @ 时回复true
maxReplyChars回复最大字符数4000

安全说明

  • 切换 workspace(/cd)会把该 Agent 的文件沙箱边界切换到新目录;/cd 到某目录即代表授权它在该目录下读写。

License

MIT