前言¶
在 DSH 裏跑智能體任務時,常見做法是盯着桌面客戶端或瀏覽器等 turn 結束。任務一跑久,或者 DSH 不在前臺,就容易錯過完成通知、運行失敗(餘額、限流、鑑權、Token 上限)以及審批、ask_user_question 等人機交互。把結果推到飛書羣或私聊,再在飛書裏回覆繼續同一會話,是更貼近日常協作的路徑;若還要在飛書裏用命令新建指定工作區的 DSH 會話,就需要 Host 側插件把 DSH 事件、lark-cli 發消息和飛書 im.message.receive_v1 串起來。下面介紹社區插件 dsh-feishu-session-notify(維護者 Re-qi,分類:工作流),它實現 DSH 與飛書的雙向協作,默認話題模式(混合):每條 DSH 會話的第一條輸出進主聊天窗口作入口,後續輸出回覆進該話題;通知路徑不調用模型、不消耗 Token。
這是什麼¶
dsh-feishu-session-notify 是 DeepSeek Harness(DSH)的 Host 插件包(當前資料中版本 0.8.1,MIT 許可證)。一句話定位:用 lark-cli 把 DSH 助手輸出、失敗原因、審批與提問推到飛書 Markdown 消息,並按飛書消息與 DSH 會話的映射把話題內回覆路由回對應會話;授權用戶還可在飛書發送 /dsh 控制命令(例如列出工作區、在指定工作區新建會話)。
目錄頁:SkillHub 插件頁
源碼與說明:GitHub - Re-qi/dsh-feishu-session-notify
核心功能¶
DSH → 飛書¶
- DSH 每個完成的回覆自動發到飛書;運行失敗也會發錯誤通知(例如餘額不足、限流、鑑權失敗、達到最大 Token 限制)。
- 標題使用 DSH 當前會話名稱;正文使用飛書 Markdown 富文本。
- 話題模式(默認混合):每個 DSH 會話的第一條輸出發到主聊天窗口,作爲該會話的話題入口;後續輸出回覆進由第一條創建的話題,點開入口消息可看到同一會話歷史。
- DSH 的審批請求和
ask_user_question提問也會推到飛書,可直接在飛書裏用數字或選項回覆完成決策。 - 發送失敗自動重試;話題回覆失敗時退回到新消息,避免靜默丟消息;重啓後會補發上次因退出而未送出的最終輸出(詳見 README 中的 Delivery guarantees)。
通知路徑不調用 LLM,不消耗模型 Token;從飛書回覆觸發的 follow-up 會走正常 DSH 流程,可能消耗配置的模型與工具預算。
飛書 → DSH¶
- 飛書事件
im.message.receive_v1到達後,插件要求發送者與已認證用戶一致。 - 對映射消息回覆(或話題內任意消息回覆),內容會作爲 user follow-up 進入對應 DSH 會話;外層
```text圍欄會被規範化處理。 - 非回覆、且不能匹配已保存
message_id的普通消息會被忽略,避免誤觸其他會話。 - 授權用戶發送以
/dsh開頭的文本視爲控制命令,在飛書內應答,不轉發到 DSH 會話。
飛書內控制命令¶
| 命令 | 作用 |
|---|---|
/dsh workspaces |
列出各 DSH 工作區別名與絕對路徑 |
/dsh new --workspace <別名> <任務> |
在指定工作區新建 DSH 會話,剩餘文本作爲首條用戶任務 |
/dsh new 支持 --workspace demo 與 --workspace=demo 兩種寫法;工作區別名由 DSH workspaceRegistry 解析,不能通過消息指定任意文件系統路徑。
環境與依賴¶
安裝前需滿足 README 所列條件:
- 已配置 DSH Host 插件 profile 的 Windows、macOS 或 Linux;
- DSH 進程可用的 Node.js / npm;
- 已安裝並完成認證的 lark-cli;
- 具備發消息與接收
im.message.receive_v1的飛書應用 / 機器人;在開放平臺啓用該事件及 schema 要求的收消息權限。
可先檢查 CLI:
lark-cli --version
lark-cli auth status
Bot 身份應爲 ready;必要時:
lark-cli auth login --recommend
事件與權限可對照:
lark-cli event schema im.message.receive_v1
安裝與啓用¶
官方 README 說明:安裝前應先查看當前 Host profile,保留已有 profile 配置,修改 Host 插件配置後需完全退出並重啓 DSH(僅刷新瀏覽器不夠)。下列命令示例使用 Windows 的 $DSH_HOME;其他平臺請換成實際 DSH 主目錄及路徑寫法。
1. 克隆插件源碼¶
$DSH_HOME = Join-Path $env:USERPROFILE '.dsh'
New-Item -ItemType Directory -Force (Join-Path $DSH_HOME 'plugins-src') | Out-Null
git clone https://github.com/Re-qi/dsh-feishu-session-notify.git `
(Join-Path $DSH_HOME 'plugins-src/dsh-feishu-session-notify')
若目錄已存在,改用 git pull。
2. 寫入當前激活的 profile¶
從 DSH Host 啓動參數確認當前 profile;標準 Desktop 常見路徑爲:
%USERPROFILE%\.dsh\profiles\desktop
在該 profile 的 package.json 中追加本地包依賴與 bundle(勿覆蓋原有 dependencies / dsh.profile.bundles),路徑須與本機克隆位置一致:
{
"dependencies": {
"dsh-feishu-session-notify": "link:C:/Users/123/.dsh/plugins-src/dsh-feishu-session-notify"
},
"dsh": {
"profile": {
"bundles": [
"dsh-feishu-session-notify"
]
}
}
}
若 profile 的包管理器無法可靠 link 本地包,可在 profile 的 cordis.patch.yml 增加 Host 直插(使用本機絕對路徑):
- insert:
- id: feishu-session-notify
name: 'file:///C:/Users/123/.dsh/plugins-src/dsh-feishu-session-notify/lib/index.js'
3. 安裝 profile 依賴¶
在 profile 目錄執行:
pnpm install
若 profile 使用 npm,按該 profile 既有流程操作;勿刪除 lockfile 或重裝無關插件。
4. 重啓 DSH¶
完全退出後重新打開 DSH。
驗證與典型用法¶
驗證安裝¶
檢查飛書事件消費者:
lark-cli event status
期望輸出包含 Active consumers: 1 與 im.message.receive_v1。
插件診斷日誌常見路徑:
%USERPROFILE%\.dsh\feishu-session-notify.log
會話與飛書消息映射持久化文件:
%USERPROFILE%\.dsh\feishu-dsh-bindings.json
路由測試¶
- 讓 DSH 完成一次真實任務;
- 在飛書中找到對應消息(首條在主窗口,後續在同一會話話題內);
- 直接回復該消息或話題內任意消息;
- DSH 應在映射會話中收到 follow-up。
從飛書新建會話¶
在飛書向已認證賬號發送(示例):
/dsh new --workspace demo 修復登錄測試
會在工作區 demo 創建新會話,確認消息成爲該會話的話題根,任務文本作爲首條用戶消息。
審批與提問¶
插件以 prepend: true 監聽 approval/request 與 user-questions/request,在飛書展示工具名、原因或選項;回覆「1 / 2」或選項即可解析爲 allowed-once / rejected 或結構化 answers,不調用模型。
話題模式與平鋪模式¶
README 默認說明爲話題模式(混合):主窗口保留入口,後續摺疊進話題。若某類聊天不需要話題,可切換到平鋪模式,細節見倉庫 README 章節「Topic vs flat mode」。
適用場景與注意¶
適合:需要在飛書接收 DSH 完成與失敗通知、在移動端或羣聊裏回覆繼續同一會話、在飛書處理 DSH 審批與提問、或遠程用 /dsh new 在已知工作區開新任務的 DSH 用戶。
務必注意:
- 插件在 當前 DSH 進程權限 下運行,安裝前應自行審閱 GitHub 源碼 與 MIT 許可證。
- 依賴 lark-cli 與飛書開放平臺事件配置;映射與投遞決策會寫入上述 log 與
feishu-dsh-bindings.json,便於排查漏消息。 - SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝方式以倉庫 README 爲準,資料中未提供
dsh plugin add github:...一類一鍵命令。
結尾¶
dsh-feishu-session-notify 把 DSH 會話輸出、失敗與交互請求同步到飛書,並把話題回覆與控制命令接回 DSH,且通知鏈路不佔用模型 Token。需要雙向協作時,可按 README 克隆、寫入 profile、安裝依賴並重啓 Host,再用 lark-cli event status 與一次真實任務驗證路由。
- 目錄頁:https://www.skillhub.cn/plugins/Re-qi/dsh-feishu-session-notify
- GitHub:https://github.com/Re-qi/dsh-feishu-session-notify