前言¶
用 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.bundle,dsh 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 / 幻方無官方從屬關係。