前言¶
DeepSeek Harness (DSH) 專注於本地 Agent 運行與工具調用。在遠程或移動場景下,直接控制本地 Agent 通常需要配置公網端口或隧道。dsh-feishu-channel 插件通過飛書官方 WebSocket 長連接接收指令,將本地 DSH Agent 的能力接入飛書。它不監聽公網端口,通過飛書 Open API 回發文本,適合需要通過飛書進行會話複用與安全審批的開發場景。
核心能力¶
該插件通過飛書官方 WebSocket 長連接接收事件,本機不監聽公網端口。它實現了以下功能:
- 會話複用與綁定:綁定項目目錄後,會複用同一個 DSH Agent 會話,桌面端可以看到同一 session。
- 指令集:支持以下控制命令:
/project /absolute/path/to/project:綁定項目目錄。/status:查看當前狀態。/cancel:取消正在運行的任務。/approve <id>:審批高風險工具調用。/deny <id>:拒絕高風險工具調用。/new:清除當前會話級模型選擇,重置會話。/help:顯示幫助信息。
- 安全審批機制:高風險工具調用(如文件刪除、外部寫入、強制 Git 操作、系統級命令)需要一次性審批。審批默認 10 分鐘過期,取消、斷線或插件停止時按拒絕處理。
- 狀態恢復:重啓後恢復已保存的 session;若恢復失敗,不會靜默創建替代 session,需使用
/new顯式重置。 - 輸出限制:僅回傳階段摘要和最終結果(文本),不發送工具參數、文件內容、環境變量或完整模型流。
- 配置白名單:私聊需配置
allowedOpenIds,羣聊需配置發送者的open_id和羣的chat_id。
安裝與憑證配置¶
插件依賴 @larksuiteoapi/node-sdk,需要 Node.js 版本 >= 22。通過 DSH 生態的 bundle 機制安裝(具體安裝方式請參考項目 package.json 中的 dsh 字段配置)。
使用前需配置飛書憑證。App ID 和 App Secret 只通過 DSH 憑據服務讀取,插件配置和狀態文件只保存引用,不保存憑證值:
dsh credentials set FEISHU_APP_ID <your-app-id>
dsh credentials set FEISHU_APP_SECRET <your-app-secret>
默認引用名必須保持爲 FEISHU_APP_ID 和 FEISHU_APP_SECRET。
配置與安全¶
在 web profile 的 Cordis patch 中配置白名單和允許的項目根目錄。所有列表默認爲空,空列表會拒絕來源或項目綁定:
- insert:
- id: feishu-channel
name: dsh-feishu-channel
config:
allowedOpenIds: [ou_example]
allowedChatIds: [oc_example]
allowedProjectRoots:
- /Users/example/Projects
agentPreset: restricted
安全邊界:
* 白名單成員擁有所選 Agent preset 在本機上的全部能力,應把飛書接入視爲把終端交給白名單成員。
* 建議使用受限 preset,並只配置必要的 allowedProjectRoots。
* 插件創建或恢復會話前會強制使用 workspace-write 與 ask;已有但無法證明由插件管理的 live Agent 不會被複用。
* 文件刪除、外部寫入等需要一次性審批。
* 審批 token 只能由原 chat 使用一次,不能跨 chat 複用。
* stateFile 只能落在 DSH 主目錄的 cache 內。
典型用法¶
在飛書聊天窗口中輸入以下內容:
/project /absolute/path/to/project
請修改一個文件並運行測試
/status
/cancel
/approve <id>
/deny <id>
/new
/help
適用場景與注意¶
該插件適合需要在飛書環境中安全調用本地 DSH Agent 的場景。由於權限模型基於白名單,安裝前應檢查源碼與許可證(MIT)。若 App Secret 曾泄露,需立即在飛書開放平臺輪換,並通過 DSH 憑據服務更新。