dsh-feishu-notify:agent 會話結束或等待輸入時,用飛書機器人推送通知卡片

前言

用 DSH 跑 agent 任務有一個常見困擾:任務往往不短,模型回覆完可能要幾分鐘,中途還可能調用 ask_user_question 停下來等你回答。人一旦離開終端,任務結束了不知道,等輸入更是乾等。

已有的做法要麼輪詢日誌,要麼寫腳本盯進程,都要額外維護成本。dsh-feishu-notify 換了個思路:讓 DSH 在關鍵時機主動把通知卡片推到飛書羣裏。下面介紹這個插件是什麼、怎麼裝、怎麼配。

這是什麼

dsh-feishu-notify 是 omdsh-dev 維護的 DSH 插件,通過飛書羣自定義機器人發送通知卡片,已適配 DSH 0.1.0-rc.7(@deepseek-ai/cordis / @deepseek-ai/schemastery 等 fork 發行線)。許可證爲 MIT,包版本 0.1.0。

核心功能

插件在兩個時機觸發通知:

  • 會話結束(agent 進入 idle)時,發送「dsh 會話結束」卡片;
  • 模型調用 ask_user_question 等待輸入時,發送「dsh 等待輸入」卡片。

卡片內容包含工作目錄(末兩段),方便區分是哪個項目在跑,另帶可選的「打開會話」按鈕。

幾個工程上的細節:

  • subagent 會話不發送通知,不會被子任務刷屏;
  • webhook 發送失敗只記日誌,不影響 agent 主流程;
  • 包聲明瞭 dsh.bundledsh plugin add 會自動掛載到 profile 的 bundle 層,無需手改 cordis.patch.yml;
  • 編譯產物 lib/ 已提交到倉庫,git 安裝無需本地構建;
  • 支持 settings.yaml 熱重載,每次通知都會重讀配置,改完即時生效。

安裝

前置依賴:git、pnpm、運行中的 DSH(≥ 0.1.0-rc.7)。

方式 A,直接從 git 安裝(推薦):

# <profile> 換成實際名字,GUI 部署一般是 web
dsh plugin --profile <profile> add git+https://github.com/omdsh-dev/dsh-feishu-notify.git

方式 B,本地克隆構建後安裝:

git clone https://github.com/omdsh-dev/dsh-feishu-notify.git
cd dsh-feishu-notify
pnpm install && pnpm build
dsh plugin --profile <profile> add <路徑>/dsh-feishu-notify

後續更新(git 安裝)只需一條命令,更新後重啓 DSH 進程:

dsh plugin --profile <profile> update dsh-feishu-notify

配置

~/.dsh/settings.yaml 末尾追加 feishu-notify: 段,然後重啓 DSH:

feishu-notify:
  enabled: true
  webhookUrl: <你的飛書羣自定義機器人 Webhook 地址>
  webhookSecret: ""   # 僅開啓「簽名校驗」時填,否則留空 ""
  webUrl: ""          # 「打開會話」按鈕跳轉地址;留空則不顯示按鈕

字段說明:

  • webhookUrl:飛書羣 → 羣設置 → 羣機器人 → 添加機器人 → 自定義機器人 → 複製 Webhook 地址。注意它是私有 URL,等同密鑰,不要泄露或提交到任何倉庫;留空則不發送通知。
  • webhookSecret:僅在創建機器人時開啓「簽名校驗」才需要填,否則留空 ""
  • webUrl:你的 DSH 網頁端地址。YAML 中留空寫 "" 則不顯示按鈕;不寫該行則默認爲 http://127.0.0.1:3080

配置支持熱重載,之後修改無需重啓,改完即時生效。

驗證

先做一次端到端確認:發一條消息,模型回覆完成後飛書應收到「會話結束」卡;模型調用 ask_user_question 時收到「等待輸入」卡;subagent 結束不通知。

再單獨驗證 webhook,不經過 agent:

DSH_NOTIFY_WEBHOOK_URL=<你的地址> pnpm send-test
# 機器人開啓了「簽名校驗」時,再加 DSH_NOTIFY_WEBHOOK_SECRET

跑單測:

pnpm test

單測使用 fetch 樁,不會發出真實消息。

卸載

經過上面三步即可卸載:

1、刪除 cordis.patch.yml 中的兩行;
2、重啓;
3、在 profile 目錄執行:

pnpm remove dsh-feishu-notify

適用場景與注意

適合兩類人:一是跑長任務時人不守在終端前,想知道任務什麼時候結束;二是任務中途需要人工輸入,希望第一時間在手機上看到並回來處理。

使用前注意:

  • 由於 dsh-external/issues#397,目前不支持 sessionId + URL 跳轉,「打開會話」按鈕只會跳轉到 webui;
  • webhookUrl 等同密鑰,注意配置文件權限,不要提交到倉庫;
  • 適配依賴 @deepseek-ai/cordis@deepseek-ai/schemastery 等 fork 發行線,DSH 版本升級時留意兼容性;
  • 插件以當前 dsh 進程的權限運行,安裝前建議檢查源碼與許可證(本項目爲 MIT),確認無誤再裝。

結尾

dsh-feishu-notify 解決的是一個很具體的問題:讓 agent 的「結束」和「等待輸入」兩個狀態能推到你實際在看的地方。裝一個插件、配一段 YAML 就能用,值得跑長任務的 DSH 用戶一試。

  • GitHub:https://github.com/omdsh-dev/dsh-feishu-notify
  • 社區插件目錄:https://www.skillhub.cn/plugins/omdsh-dev/dsh-feishu-notify

目錄頁爲社區獨立維護的站點,與 DeepSeek / 幻方無官方從屬關係。

羽毛球分组比赛记分
小程序二维码

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

小夜