前言¶
在本地使用 DeepSeek Harness(DSH)運行智能體時,常見問題不只是“能不能執行”,還包括:從哪裏下發任務、誰能執行、執行中如何看進度、高風險操作如何審批、結果和文件如何回來。
yangzhaofeng496/dsh-feishu-plugin 是一個社區 DSH 插件,把 Feishu/Lark 機器人接到 DeepSeek Harness。用戶在飛書中發送文字任務後,插件會把任務交給指定的 dsh profile 執行,並把進度、審批請求和執行結果回覆到原會話。
定位¶
- 插件名:
yangzhaofeng496/dsh-feishu-plugin - 維護者:
yangzhaofeng496 - 許可證:MIT
- 一句話定位:Feishu/Lark bot bridge for DeepSeek Harness with approvals, progress updates, context, and file transfer.
它面向需要把本地 DSH 任務接入飛書會話的開發者,而不是替代 DSH 本身。
核心能力¶
插件覆蓋從消息接收、用戶授權、執行反饋、權限審批到文件回傳的主要鏈路。
-
飛書接入
通過飛書開放平臺長連接接收消息,無需公網回調地址。目前只支持文字消息。 -
用戶授權
使用open_id白名單限制可執行任務的用戶。支持用戶在飛書內申請授權,由管理員審批、撤銷和查詢。動態授權會持久化保存,重啓後繼續生效。 -
執行反饋
執行期間會定時更新同一條飛書消息,顯示運行時長和最新輸出。排隊、執行和結果消息中會顯示當前 Provider 與模型。過長回覆會自動拆分。 -
上下文管理
按飛書會話和用戶隔離最近對話上下文,並持久化保存。後續任務可以基於此前上下文繼續處理。 -
權限審批
插件可以處理 Harness 原生的一次性權限審批。任務發起者或管理員在飛書中批准或拒絕後,審批結果會回到執行流程。 -
文件傳輸
支持授權用戶從飛書發送文件給 Harness,也支持 Harness 生成文件後自動回傳到原飛書會話。入站和回傳都受工作區邊界、文件大小和文件數量限制。 -
運行穩定性
使用串行任務隊列,避免多個任務同時操作同一工作區。插件會記錄任務接收、開始、完成、失敗和隊列深度日誌,自動過濾重複消息,並在執行超時、輸出長度限制、插件停止等場景中保持可控。
安裝與啓用¶
安裝插件¶
先確認本機已有可用的 DSH 環境和飛書企業自建應用。然後執行官方安裝命令,把插件添加到 web profile:
dsh plugin --profile web add github:yangzhaofeng496/dsh-feishu-plugin#main
安裝完成後,主插件默認處於禁用狀態,且用戶白名單爲空。接下來需要保存飛書憑據、配置管理員和工作區,再手動啓用插件。
配置飛書應用¶
在飛書開放平臺創建企業自建應用,並完成機器人能力配置。關鍵點是使用長連接接收事件,而不是公網回調。
通常需要做以下事情:
- 添加“機器人”能力。
- 開通接收消息和發送消息所需的即時通訊權限。
- 在事件與回調配置中選擇長連接。
- 添加接收消息事件
im.message.receive_v1。 - 創建版本併發布應用,使機器人和權限配置生效。
具體權限名稱可能隨飛書開放平臺界面更新而變化。發佈前確認機器人能夠接收用戶消息,並能向原會話發送消息。
保存憑據¶
不要把 App Secret 寫入 Git 倉庫或 cordis.patch.yml。將它保存到 Harness 憑據文件:
FEISHU_APP_ID: cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
保存後限制該文件只對當前用戶可讀:
chmod 600 ~/.dsh/.credentials.yaml
啓用插件¶
編輯 ~/.dsh/profiles/web/cordis.patch.yml,加入或覆蓋 feishu 配置:
- id: feishu
disabled: false
config:
appIdEnv: FEISHU_APP_ID
appSecretEnv: FEISHU_APP_SECRET
adminOpenIds:
- ou_admin_xxxxxxxxxxxxxxxxxxxxxxxxxx
allowedOpenIds:
- ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
authorizationFile: ~/.dsh/feishu-authorizations.json
contextFile: ~/.dsh/feishu-contexts.json
workspace: /absolute/path/to/your/workspace
attachmentDirectory: .dsh-feishu/inbox
maxInboundFileBytes: 31457280
maxOutboundFileBytes: 31457280
maxOutboundFiles: 5
timeoutMs: 900000
maxOutputChars: 50000
這裏有幾個字段需要特別注意:
adminOpenIds:可以審批和撤銷授權的管理員open_id列表。allowedOpenIds:允許發佈任務的普通飛書用戶open_id列表。authorizationFile:動態授權和待審批申請的持久化文件。contextFile:對話上下文持久化文件。workspace:執行任務時使用的工作目錄。
allowedOpenIds 默認爲空,因此沒有普通用戶能夠執行任務。adminOpenIds 中的管理員始終擁有執行權限。未授權用戶可以在飛書內發起授權申請,由管理員審批,無需重啓插件。
典型用法¶
啓動服務¶
完成配置後,啓動 DSH Web 服務:
dsh web --port 3081
啓動成功後,可以在飛書中直接向機器人發送文字任務,也可以發送 /help 查看簡要說明。
授權管理¶
未授權用戶可以發送:
申請授權
或:
/request
機器人會記錄申請,並回復申請人的 open_id。
管理員可以使用以下命令:
/requests
/approve ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/revoke ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/users
各命令作用如下:
申請授權、/request:創建或更新自己的授權申請。/requests:查看待審批申請。/approve <open_id>:批准用戶執行任務。/revoke <open_id>:撤銷普通用戶權限。/users:查看管理員和已授權用戶。
動態授權默認保存在 ~/.dsh/feishu-authorizations.json。該文件以 0600 權限創建,不應提交到 Git。配置文件中的管理員不能通過飛書命令撤銷,必須由本機管理員修改 adminOpenIds 並重啓服務。
上下文管理¶
插件會按飛書會話和用戶隔離上下文,並持久化最近對話內容。這樣“繼續剛纔的任務”“修改上一版”這類表達更容易被後續任務理解。
失敗或超時任務不會寫入上下文。
在飛書中可以使用以下命令管理上下文:
/new
/clear
/history
/context
說明:
/new:新建會話並清除此前上下文。/clear:清除當前上下文。/history:查看最近上下文摘要。/context:查看上下文輪數和字符用量。
上下文默認保存在 ~/.dsh/feishu-contexts.json,以 0600 權限創建。該文件可能包含任務和回答中的敏感內容,請勿提交到 Git 或發送給他人。
一次性權限審批¶
當工具執行需要更高權限時,Harness 會發起一次性權限審批。插件會在飛書中給出審批編號,任務發起者或管理員可以批准或拒絕:
/allow a1b2c3d4
/deny a1b2c3d4
批准僅對該次工具調用有效,不會永久提升權限。其他普通用戶不能審批不屬於自己的任務。如果審批等待超時,插件會按拒絕處理,避免任務長期掛起。
文件收發¶
授權用戶可以直接向機器人發送文件、圖片、音頻或視頻。插件會把入站文件保存到工作區內的目錄:
<workspace>/.dsh-feishu/inbox/<message_id>/<safe_filename>
隨後插件創建任務,並把工作區相對路徑交給 Harness。
文件限制:
- 入站文件必須位於工作區內部。
- 超過
maxInboundFileBytes或爲空的文件會被拒絕。 - 回傳文件只接受工作區內部路徑。
- 符號鏈接解析後如果越出工作區,會被拒絕。
- 默認單任務最多自動發送 5 個文件,每個文件不超過 30 MB。
用戶也可以手動要求機器人發送已有文件:
/send outputs/report.pdf
運行限制與日誌¶
插件在運行過程中會做幾類限制,避免飛書消息和執行環境失控。
-
串行任務隊列
避免多個任務同時操作同一工作區。 -
重複消息過濾
自動過濾重複消息,減少重複觸發。 -
執行超時
單個任務超過timeoutMs後會被終止。 -
輸出長度限制
捕獲輸出受maxOutputChars限制。 -
長消息拆分
過長的飛書回覆會自動拆分。 -
停止時清理子進程
插件停止時,會終止仍在運行的子進程。
運行日誌會顯示任務接收、開始、完成、失敗和隊列深度等信息。日誌不會輸出 App Secret,但可能包含用戶 open_id、飛書消息 ID 和任務執行錯誤。共享日誌前請先脫敏。
適用場景與注意¶
適合這些場景:
- 想在飛書中直接觸發本機 DSH 任務。
- 需要給飛書用戶做授權和審批。
- 需要在執行過程中看到進度和最新輸出。
- 需要保留跨任務上下文。
- 需要在飛書和 Harness 工作區之間來回傳文件。
使用前注意:
- 插件會在本機
dsh進程環境中執行任務。安裝前應先檢查源碼和 MIT 許可證,並確認所配置的工作區、profile 和憑據權限。 - 不要把
FEISHU_APP_SECRET寫入 Git 倉庫或cordis.patch.yml。 ~/.dsh/.credentials.yaml、~/.dsh/feishu-authorizations.json和~/.dsh/feishu-contexts.json都可能包含敏感信息,不要提交到 Git,也不要隨意發送給他人。- 主插件默認禁用,且
allowedOpenIds默認爲空。完成憑據、管理員和工作區配置後,再手動啓用。 - 目前只支持文字消息。
- DSH 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。
鏈接¶
GitHub:
https://github.com/yangzhaofeng496/dsh-feishu-plugin
目錄頁:
https://www.skillhub.cn/plugins/yangzhaofeng496/dsh-feishu-plugin