前言¶
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