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
羽毛球分组比赛记分
小程序二维码

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

小夜