wilshi/dsh-feishu:把 DSH 的飞书聊天接入面装进卡片控制台

前言

DSH 的运行环境默认是终端或者 Web 界面:模型跑起来以后,输出躲在终端里,权限请求要么等回车,要么在另一侧界面上点。想在飞书/Lark 里跟 agent 干活,通常的做法是自己写桥接,把消息转成一条条对话,再单独处理审批和提问。这样能跑,但每条命令入口、每个审批卡片、每次会话切换都要自己拼。

下面介绍的 wilshi/dsh-feishu 就是把这套界面做成了一个普通的 DSH 插件。它是 DSH 0.2.1-rc.5 的一个接入面实现,把聊天机器人、流式卡片、卡片内提问和审批、以及飞书应用的引导式配置都包在一起。维护者是 WilShi,仓库由 PGZXB/dsh-feishu 移植而来,上游实现保留在 lib/ 里,差异点打在 DSH 0.2.1 宿主 API 变化的 Patch 上。

它的位置很明确:提供飞书/Lark 的聊天接入面,不负责重新定义 DSH 的会话、权限或模型能力。

这是什么

一个 dsh-native 插件,定位是「飞书聊天接入面」。它的设计是 panel-driven:所有斜杠命令同时也作为按钮出现在一张控制台卡片上,审批和提问都以卡片形式在聊天里解决,环境配置通过一次扫码完成。

需要先说明两点来源和约束:

  • 它是 DSH 0.2.1-rc.5 端口上的版本,不是全新实现。仓库里保留上游代码,只在宿主 API 变化处打补丁。
  • DeepSeek Harness 本身仍处于 pre-release 阶段,跨版本可能 breaking。仓库 README 直接写了这个提示。

宿主包(@deepseek-ai/*、cordis)在 package.json 里是 peerDependencies,由 DSH 运行时提供,插件自身只依赖飞书 SDK、undici、markdown-it、qrcode-terminal 等少量包。

仓库按 MIT 许可发布,npm 包名为 @wilshi/dsh-feishu,当前版本 0.3.5,要求 Node.js >=22.13。GitHub 仓库截至本文写作时间为 0 星,属于很新的项目。

核心功能

以下能力来自仓库 README 和 package.json。

控制台卡片。 发 /panel 打开一张卡片,上面每个按钮对应一条斜杠命令。命令和按钮是同一组能力,用哪个都行。

流式卡片。 发消息后 agent 开始跑,工具调用、推理过程、Markdown、表格持续写进一张活动卡片;结束前卡片变绿,完整答案留在卡片内,并提供 Stop、复制、重试按钮。

卡片内审批与提问。 权限提升会发审批卡片,点 Allow once 或 Reject;agent 提问会发问题卡片,点按或直接回复即可。这两种交互都不需要跳出飞书。

引导式配置。 提供 dsh-feishu-setup 命令行程序,一条命令扫码即可创建并配置飞书应用,不需要去飞书开放平台手动建应用、配凭证。已有应用的话也可以改走 FEISHU_APP_ID / FEISHU_APP_SECRET 环境变量或 profile 配置。

工作区与会话管理。 面板上可切换、新增、搜索、收藏、重命名工作区,删除只解除注册、不动文件和历史;会话面板支持按全部会话、当前工作区、当前飞书聊天筛选,并在卡片上完成恢复、重命名、分叉、归档、导出。

Agent 模式切换。 在标准、Codex、Claude Code 和自定义 preset 之间切换,当前会话保留,另开一个安全的新会话。/model <provider/model> 可在会话内切换模型。

安装与启用

安装分 npm 和源码两种方式,都要求先装好 Node.js 和 pnpm。

从 npm 安装(README 原文步骤):

# 1. 安装 Node.js,要求 ≥ 22.13
#    macOS / Linux 可用 nvm:nvm install 22
#    Windows 可从 nodejs.org 安装,或执行 winget install OpenJS.NodeJS.LTS
node --version

# 2. 安装 pnpm
npm install -g pnpm

# 3. 装插件。pnpm ≥ 11 默认拦截 protobufjs 的构建脚本,
#    --allow-build=protobufjs 用于放行该构建步骤
npx @deepseek-ai/dsh plugin --profile feishu add @wilshi/dsh-feishu@latest

# 4. 扫码完成飞书应用创建与配置
npx --yes --package @wilshi/dsh-feishu dsh-feishu-setup --new --profile feishu

# 5. 启动
npx @deepseek-ai/dsh --profile feishu

从源码安装(需要自行 clone 和构建):

# 1、2. 同上,先准备好 Node.js 和 pnpm

# 3. 克隆并构建
git clone https://github.com/WilShi/dsh-feishu.git
cd dsh-feishu
pnpm install
pnpm run build

# 4. 以链接方式装进 profile
npx @deepseek-ai/dsh plugin --profile feishu add link:.

# 5. 扫码创建并配置飞书应用
pnpm run setup:feishu -- --new --profile feishu

# 6. 启动
npx @deepseek-ai/dsh --profile feishu

卸载:

# 从 profile 移除插件
npx @deepseek-ai/dsh plugin --profile feishu remove @wilshi/dsh-feishu

# 可选,彻底清理:删除 profile 以及该接入面的数据
# 以下路径对应默认 dsh home(~/.dsh)
rm -rf ~/.dsh/profiles/feishu ~/.dsh/feishu

装好后在飞书里给机器人发消息即可。

典型用法

README 给出的一次典型会话走这几步。

1、发起聊天。直接私信机器人;也可以跑 /group <name> 建个群把机器人拉进来。群里默认需要 @ 机器人才会响应,只有你和机器人两人的群也会响应纯文本消息,这个策略可配置。

2、打开控制台。发 panel 或 /panel。

3、选工作目录。首轮对话前机器人会自动弹出工作区选择器;面板里的 Workspaces 入口提供最近、收藏、搜索和自定义路径。

4、提问。发消息后输出流进活动卡片,结束后卡片内停着完整答案,并附 Stop、复制、重试和面板按钮。

5、回应审批或提问。权限提升发审批卡片,提问发问题卡片,直接在卡片上操作。

6、管理工作区、会话和 Agent 模式。Workspaces 支持切换、新增、搜索、收藏、重命名和解除注册;Sessions 支持按范围筛选,并对单个会话做恢复、重命名、分叉、归档、导出;Agent 模式切换如上所述;New chat 另开新会话而不删旧会话。

主要命令一览(完整列表用 /help 查看):

命令 作用
/panel 打开控制台卡片
/group <name> 建群并拉机器人加入
/cancel 中断当前这一轮
/cd <path> 设置本聊天的工作目录
/repo [path] 选择项目目录,不带参数扫默认根目录
/workspaces [path] 列出并管理已注册的 DSH 工作区
/status 查看当前工作区、会话、模型、Agent 模式和运行状态
/feishu-status 查看接入面诊断卡片
/model <provider/model> 切换本会话模型
/mode [preset] 选择 Agent 模式
/sessions 列出已保存会话
/resume <id> 恢复某个已保存会话
/export 把本会话日志发成文件
/log 发飞书侧诊断日志;默认关闭,需要配置 allowlist 或显式设置 allowLogExport: true

适用场景与注意

适合这几类人:

  • 想让团队的日常沟通入口(飞书/Lark)也能驱动 DSH agent,而不另开一套工具的人。
  • 希望审批和提问留在聊天窗口内、减少来回跳转的人。
  • 想只靠一条命令和一次扫码完成飞书应用配置,省掉开放平台后台操作的人。

需要留意的几点:

这个插件以当前 dsh 进程的权限运行。 它继承启动它的 dsh 进程的身份和权限,能读写该 profile 下工作区的文件、执行 agent 可执行的手段。安装前应检查源码与许可证——本仓库为 MIT,许可证本身宽松,但代码、来源、维护者状态仍要自己确认,尤其是它移植自 PGZXB/dsh-feishu,补丁面需要了解。

DSH 还是 pre-release。 README 明确写了可能跨版本 breaking,这个插件绑定的是 0.2.1-rc.5 宿主 API。升级 DSH 前要先看仓库是否已跟进。

Bundle patch 只插入 feishu 行。 仓库不重复插入 schedule 或 tool-ask-user,因为 DSH 0.2.1 通过 dsh-web-app 和 agent presets 已经挂载了它们,而 dsh-app-boot 追加 insert 条目时不去重,重复的服务提供者或工具名会导致启动失败。需要改 schedule 配置时要用 id-targeted override,具体见 cordis.patch.yml 里的注释。

可选能力是降级处理的。 插件的 inject 只声明了 agents、sessionQuery、commands、tools;approval、userQuestions、attachments、workspaceRegistry、sessionTitle、permissionPresets、planMode、agentDefaultModel、agentPresets、llm、schedule、credentials 都是通过 ctx.get(...) 读取的可选能力,缺失时打警告并降级,不会直接启动失败。这意味着具体行为取决于宿主装了哪些能力。

社区目录是独立站点。 wilshi/dsh-feishu 收录在 SkillHub 的插件目录里,该目录是第三方社区站点,与 DeepSeek / 幻方没有官方从属关系,不应把它当作官方应用商店。

结尾

这个插件的价值在于把飞书接入面收窄成一件可安装的插件:面板卡片、流式卡片、卡片内审批与提问、扫码配置一次到位,命令和按钮是同一件事的两种入口。安装命令、版本号和行为细节以仓库 README 为唯一来源,鉴于项目很新、宿主处于 pre-release,动手前建议先过一遍源码和 cordis.patch.yml。

  • 目录页:https://www.skillhub.cn/plugins/WilShi/dsh-feishu
  • GitHub:https://github.com/WilShi/dsh-feishu
  • npm:https://www.npmjs.com/package/@wilshi/dsh-feishu
羽毛球分组比赛记分
小程序二维码

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

小夜