dsh-feishu:在飞书 / Lark 上跑 DSH 智能体与会话底座

前言

把 DeepSeek Harness(DSH)接到 IM 里,常见做法是自建一层消息转发或薄封装。飞书侧还有长连接事件、互动卡片回调、群话题与附件等细节;若还要持久会话、工作区读写、隔离 shell 以及对外写入前的审批,单做一个 relay 往往不够。

下面介绍社区插件 dsh-feishu(维护者 ycp424c):在 DSH 之上提供飞书 / Lark 机器人基础能力,属于 DSH 社区目录中的「工作流」类插件。仓库当前为 alpha 源码预览,尚无独立 npm 包或官方预编译二进制;部署以在目标 Linux 上构建并校验归档后安装为主。

这是什么

dsh-feishu 一句话定位:带持久会话、隔离工作区工具、审批卡片,以及可选职场 API 的社区 DSH 飞书 / Lark 机器人底座(仓库描述与 README 一致)。

  • 一个实例对应一个飞书应用;共享工作区不是按用户隔离的文件沙箱。
  • 默认可在工作区内读写并运行隔离 shell,能力上不只是文本聊天中继。
  • 通用飞书工具可按群组启用;经这些工具的外部写入需当前请求者审批。
  • 浏览器自动化、领域工作流、组织身份与内部知识库等,README 明确应放在消费方项目中扩展。

基线环境(README 已验证目标):Ubuntu 22.04、Linux x64、Node.js 22.19+、Python 3.10+、bubblewrap、用户级 systemd。DSH 固定为 0.2.1-rc.5,飞书 SDK 固定为 @larksuiteoapi/node-sdk 1.76.0。package.json 中插件版本为 0.1.0-alpha.3。项目代码 MIT 许可;运行时依赖另有各自许可证(含 MPL/LGPL 组件)。

核心功能

以下均来自 GitHub README 能力列表与范围说明。

会话与指令

  • 按应用、会话、话题区分的持久会话;支持 /status、/new,以及请求者自己的 /cancel。
  • 图片与文件输入、处理中 reaction、话题回复与最终消息投递;图片需支持图像的模型,普通文件以原始附件交给 agent 工具处理。

工作区与 shell

  • 工作区文件生成与隔离 shell 命令,含显式子目录与保留的只读授权。

飞书工具与审批

  • 通过 toolGroups 可选十六类通用飞书工具:文档、知识库、云盘、群聊 / 讨论、多维表格、权限诊断、消息 / 媒体、妙记等。
  • 绑定请求者的审批卡片、写入回执、读回、去重;对不确定的写入不会自动重试。
  • 资源权限仍生效:仅有应用 scope 并不等于能访问所有文档或录音;无内置 Office 解析、OCR 或音频转写。

扩展

  • 面向可信应用代码的版本化扩展契约;必选扩展须在频道连接前就绪。

信任边界(务必阅读)

  • Shell 的网络副作用不会自动变成飞书审批卡片。管理员 Web 默认仅 loopback,经 DSH 认证;私有登录 URL 在 state/web-login-url,常用 SSH 隧道访问。详见仓库 SECURITY.md。

安装与启用

插件不是 dsh plugin add github:… 一类一行命令安装;流程为:在 Linux 上构建发行包 → 校验 SHA-256 → 解压并用 install.py 注册实例 → 填密钥 → doctor → 用户 systemd 启服务。

1. 飞书应用与配置

  1. 创建飞书 / Lark 应用,开启机器人能力,配置长连接消息事件与互动卡片回调。
  2. 将 examples/basic-bot/config.example.json 复制到源码目录外,填写应用 ID、允许的 sender open ID、provider、model、endpoint;open ID 须属于同一应用。
  3. 权限、群话题、模型输入类型、可选 toolGroups 等见 Configuration。

构建步骤(含依赖与 scripts/package-release.py)见仓库 README「Build from source on Linux」;产物由 dist/release.json 指明归档文件名与 SHA-256。

2. 安装已构建并校验的归档

安装不会自动启动服务。密钥写入实例目录 state/secrets.json(DSH_FEISHU_APP_SECRET、DSH_MODEL_API_KEY,权限 600),状态应放在源码库外。

export DSH_FEISHU_INSTANCE="$HOME/.local/share/dsh-feishu"
export DSH_FEISHU_CONFIG="$HOME/dsh-feishu-config.json"
export DSH_FEISHU_ARCHIVE="$PWD/dist/$(node -p 'require("./dist/release.json").file')"
export DSH_FEISHU_RELEASE="$(basename "$DSH_FEISHU_ARCHIVE" .tar.gz)"
mkdir -p "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE"
# Compare sha256sum output with dist/release.json before extracting.
sha256sum "$DSH_FEISHU_ARCHIVE"
tar -xzf "$DSH_FEISHU_ARCHIVE" -C "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE"
python3 "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE/scripts/install.py"   --root "$DSH_FEISHU_INSTANCE"   --release "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE"   --config "$DSH_FEISHU_CONFIG" --service dsh-feishu

3. 自检并启动

doctor 会演练已配置的沙箱,而不只是核对版本号:

node "$DSH_FEISHU_INSTANCE/current/scripts/doctor.mjs" "$DSH_FEISHU_INSTANCE"
systemctl --user enable --now dsh-feishu.service

典型用法

会话控制(群内 / 私聊以实际配置为准)

  • /status:查看当前会话状态。
  • /new:开启新会话上下文。
  • /cancel:由当前请求者取消进行中的请求。

带附件的对话

  • 向机器人发送图片或文件;处理过程中可有 reaction,结果通过话题回复或最终消息返回。图片模型需具备图像能力;非图片文件由 agent 在工作区工具中自行处理。

启用飞书写入类工具

  • 在配置中按文档设置 toolGroups,为对应群开启文档、云盘、多维表格等工具;模型发起的外部写入会弹出绑定当前请求者的审批卡片,通过后才有写入回执。

扩展开发

  • 消费方实现仓库 Extensions 中的契约;若声明为必选扩展,须在长连接就绪前完成加载。

运维与排错可参考 Operations。

适用场景与注意

适合谁

  • 已在用 DSH(0.2.1-rc.5 基线),希望在飞书 / Lark 内落地带工具与审批的智能体,并愿意自行构建、部署 Linux 实例的团队。
  • 需要群话题、附件、可选飞书 Open API 工具组,而不是纯文本 webhook 转发的场景。

不适合或需另做项目的部分

  • README 明确:浏览器自动化、强领域工作流、组织 SSO、内部知识库等应放在基于本底座的消费项目中,而非期待插件内置。
  • 其他操作系统与架构未作为验证目标;勿在 macOS 上直接运行为 Linux 打好的 runtime 拷贝。

安全与权限

  • 插件以你部署时的 DSH / 进程与用户权限 运行;默认能读写其工作区并执行隔离 shell。安装前请阅读源码、SECURITY.md 与 THIRD_PARTY_NOTICES.md,确认许可证与信任边界可接受。
  • 单实例单应用;多人共用实例时,工作区与 shell 副作用并非按飞书用户自动隔离。

DSH 生态强调「一切皆插件」;SkillHub 社区目录 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-feishu 把 DSH 的会话、工作区工具与审批模型接到飞书 / Lark,并预留扩展契约与可选职场 API 工具组。当前仍为 alpha 预览,部署以 Linux 构建 + 归档安装为主;使用前完成飞书应用配置、密钥与 doctor 自检即可。

羽毛球分组比赛记分
小程序二维码

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

小夜