dsh-feishu-session-notify:把 DSH 會話與飛書做成雙向橋接

前言

在 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

路由測試

  1. 讓 DSH 完成一次真實任務;
  2. 在飛書中找到對應消息(首條在主窗口,後續在同一會話話題內);
  3. 直接回復該消息或話題內任意消息;
  4. 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜