DSH 採用「一切皆插件」的架構,插件化是擴展其能力邊界的主要方式。在實際部署中,讓智能體與特定平臺進行交互是一個常見需求。dsh-feishu 是一個爲 DeepSeek Harness (DSH) 設計的飛書(Lark)長連接通道插件,它將 DSH 智能體橋接爲飛書機器人,允許用戶通過聊天界面派發任務、接收結果以及進行權限審批。
由 0x0101010 維護,該插件的核心優勢在於零 npm 依賴,直接基於 Node.js >= 22 的原生 WebSocket 實現,並手寫了 protobuf 幀編解碼器,與飛書官方 SDK 兼容。
核心功能¶
- WebSocket 長連接:使用飛書官方的 WebSocket 回調接口 (
callback/ws/endpoint),無需公網 IP、端口轉發或自建回調服務器。 - 會話隔離:每個聊天窗口對應一個獨立的智能體上下文。空閒會話會在默認 30 分鐘後自動回收。
- 交互式審批卡片:DSH 的審批請求會渲染爲飛書卡片按鈕(允許/拒絕),點擊或回覆
y/n即可操作,卡片會原地更新。 - 中途轉向:任務運行期間發送的普通消息會被注入到當前回合的下一步邊界,無需打斷任務;使用
/stop進行硬中斷。 - 命令橋接:飛書中的所有 DSH 內置命令(如
/permission,/plan,/compact等)均可直接使用。 - 可靠傳輸:內置自動重連(斷開後 5 秒重試)、心跳保活、事件 ACK(防止重發)以及基於序列號的斷線去重。
安裝與啓用¶
安裝命令如下:
npx @deepseek-ai/dsh plugin --profile feishu add /path/to/dsh-feishu
插件會將配置寫入 DSH 的配置文件中,但憑證不會存儲在配置文件裏,必須通過環境變量提供。
在對應 profile 的 .env 文件(或全局 ~/.dsh/.env)中配置以下內容:
FEISHU_APP_ID=cli_xxxxxxxx
FEISHU_APP_SECRET=xxxxxxxx
# 可選:指定智能體的工作目錄
DSH_FEISHU_CWD=/your/workspace
驗證配置並啓動:
npx @deepseek-ai/dsh --profile feishu --dump-config # 驗證配置是否正確
npx @deepseek-ai/dsh --profile feishu # 啓動
典型用法¶
基礎操作命令¶
在飛書聊天中,可以使用以下原生命令進行管理:
/new:銷燬當前會話,清空上下文,創建一個新的智能體。/mode:列出所有智能體預設(minimal/standard/code/cordis),並顯示當前選中項。/mode <preset>:切換當前會話的智能體預設(僅對空白會話立即生效,有歷史記錄的會話需配合/new使用)。/status:查看當前模型、模式、會話狀態、空閒回收倒計時等。/stop:硬中斷正在運行的回合,取消未完成的任務並清空輸入隊列。/help:顯示內置幫助文本。
權限與計劃¶
權限預設通過 /permission 切換:
* read-only:文件只讀,無需審批。
* workspace-write:工作區可寫,越界操作需審批(默認)。
* danger-full-access:完全訪問,無需審批。
使用 /plan 可以開啓計劃模式:智能體先制定計劃,執行前等待審批。
普通消息交互¶
- 任務運行中:此時發送普通消息不會打斷任務,消息會被注入到當前回合的下一步,系統會回覆
📌確認收到。 - 任務空閒時:發送的消息會像普通對話一樣開始新的一輪。
配置與安全¶
在 cordis.patch.yml 中可以調整以下配置項:
| 配置項 | 默認值 | 說明 |
|---|---|---|
appId |
必填 | 飛書 App ID |
appSecret |
必填 | 飛書 App Secret |
cwd |
process.cwd() |
智能體工作目錄 |
allowUsers |
[] |
開放用戶 ID 白名單,爲空則無限制 |
allowChats |
[] |
開放羣聊 ID 白名單,爲空則無限制 |
sessionTimeoutMs |
1800000 | 會話空閒回收時間(毫秒) |
defaultMode |
standard |
默認智能體模式 |
安全注意事項:
當 allowUsers 或 allowChats 爲空時,任何能與機器人對話的人都可以驅動你的智能體(即在本地執行任務)。在生產環境中部署前,務必配置好白名單。憑證僅通過環境變量讀取,不會寫入配置文件。
生態與維護¶
該插件遵循 MIT 許可證。DSH 生態強調插件化與社區貢獻,插件目錄與 DeepSeek 或幻方官方無直接從屬關係。