dsh-lark-message:把飛書接到 DSH 的通知出口與對話入口

前言

DeepSeek Harness(DSH)裏的智能體常在本地完成長任務,結果卻要你盯着終端或 Web 界面才能看到。郵件、Webhook 能推消息,但和手機上的即時溝通往往仍是兩套系統。若你團隊日常在飛書上協作,更理想的做法是:任務結束能主動推到你飛書,你在手機裏 @ 機器人或私聊時,又能繼續同一套 DSH 會話。

下面介紹社區插件 dsh-lark-message(維護者 respawnlife)。它把飛書企業自建應用綁到 DSH:一次掃碼即可完成應用創建與綁定,智能體可通過工具或本地 HTTP 接口發通知,飛書側私信與羣 @ 也能回灌到 DSH,並在需要審批的回合裏把確認請求轉發到飛書。

這是什麼

dsh-lark-message 是面向 DSH profile 的 bundle 插件(npm 包名 dsh-lark-message,當前資料中的版本爲 0.1.1,許可證 MIT)。官方描述是:用二維碼綁定飛書/Lark 機器人,把智能體通知、任務結果和本地腳本消息推到飛書,並支持從飛書與助手對話。

插件聲明的運行環境爲 Node >=22,DSH >=0.2.2-rc.1 且 <0.3.0-0。目錄頁見 SkillHub,源碼與說明見 GitHub 倉庫。

核心能力(據 README 與 package 信息)

綁定與憑據

  • 掃碼綁定:在 Settings → Lark Notify 中點擊 Link a bot,用飛書移動端掃碼並在確認頁點「同意」。插件會自動創建並綁定企業自建應用(默認名稱「DSH 通知助手」),無需手寫 App Secret。二維碼約 1 小時失效,可再次點擊生成。
  • 已有自建應用:可展開 Enter App ID / Secret manually 手動填寫;投遞目標 open_id 或 chat_id 可選。首次綁定時會校驗憑據(一次 tenant_access_token 請求)。
  • 隱私:憑據保存在本機(權限 0600),不寫入 profile 配置,也不進代碼倉庫。
  • 國際版 Lark:代碼通過 tenantBrand 選擇飛書/Lark 域名;國際租戶可用手動填入該租戶應用憑據的方式綁定。

綁定後插件會配置機器人能力、消息收發與事件訂閱等範圍(如 im:message:send_as_bot、im.message.receive_v1 等),詳見倉庫 README 中的表格。

三條投遞路徑

  1. 智能體工具 lark_notify:任意 DSH 會話中,模型可主動發通知。必填參數 text;可選 image_path(本地 PNG/JPEG,最大 10MB)、chat_id(羣 oc_xxxxxxxx,省略則發給綁定者私信)、markdown(以 Markdown 卡片發送)。
  2. 本機 HTTP API:掛在 DSH Host HTTP 服務上,僅監聽 loopback,端口與 DSH Web 端口一致。Bearer 令牌文件默認位於 ~/.dsh/integrations/lark-notify/http-token(DSH_HOME 默認爲 ~/.dsh)。
  3. 飛書內回覆:會話範圍內,助手在回合結束時會將最終文本發回原聊天;長連接入庫消息與附件處理由插件完成。

雙向對話與會話隔離

綁定後插件建立飛書 WebSocket 長連接:私信與羣內 @ 機器人 → 注入 DSH 會話 → 智能體處理 → 回覆發回原聊天。首條入站消息會註冊名爲 Feishu 的工作區,默認目錄 $DSH_HOME/workspaces/feishu,可用 config.cwd 覆蓋。

會話命名規則:綁定者私信爲 feishu-main;其他成員私信爲 feishu-dm-<open_id>;每個羣爲 feishu-group-<chat_id>。羣聊默認僅響應 @ 機器人(groupMode: "all" 可改爲回覆全部消息;allowGroups 可限制羣列表)。入站支持圖片、文件與引用回覆。

審批與投遞可靠性

  • 審批中繼:需要用戶確認的回合會轉發到飛書,回覆 approve / deny(或中文「同意」「拒絕」)即可。
  • 可靠投遞:失敗進入重試隊列;長文本自動分片;支持 Markdown 卡片。

安裝與啓用

插件以 DSH bundle 形式分發。安裝到指定 profile 後需重啓 DSH 生效。官方安裝命令如下(將 <name> 換成你的 profile 名稱):

dsh plugin --profile <name> add dsh-lark-message

亦可從 DSH 的 Plugins 頁面搜索安裝;本地開發時可鏈接源碼目錄:

dsh plugin --profile <name> add link:/path/to/dsh-lark-message

安裝完成後,Settings 下會出現 Lark Notify 插件頁。

首次配置(約 30 秒)

  1. 打開 Settings → Lark Notify。
  2. 點擊 Link a bot,飛書掃碼並在確認頁批准。
  3. 等待插件完成自建應用創建與權限配置。
  4. 點擊 Send test message,飛書應馬上收到測試通知。
  5. 若僅需單向推送、不需要雙向聊天,到此即可。

若綁定時跳過了部分媒體相關權限,之後需要收圖、收文件或讀羣名/成員名時,可在設置頁點擊 Grant media permissions 再掃一次碼,無需重新綁定。

典型用法

在會話裏讓智能體發飛書

綁定完成後,可在提示中直接要求模型調用工具,例如:

整理完結果後,用 lark_notify 發到我的飛書。

本地腳本走 HTTP 推送

先讀取令牌與端口(端口填你當前的 DSH Web 端口):

TOKEN=$(cat ~/.dsh/integrations/lark-notify/http-token)
PORT=<your DSH Web port>

發送純文本:

curl -s -X POST http://127.0.0.1:$PORT/plugins/lark-notify/notify \
  -H "Authorization: Bearer $TOKEN" -H 'content-type: application/json' \
  -d '{"text":"Build finished: all 3 tasks passed"}'

Markdown 卡片、本地圖片路徑、指定羣 chat_id 等示例見倉庫 README;notify 請求體至少包含 text、markdown、imagePath、filePath 之一,可選 target: { type: "chat_id" | "open_id", id }。

常用端點摘要:

方法 路徑 認證 說明
POST /plugins/lark-notify/notify Bearer 發送文本 / Markdown / 圖片 / 文件
GET /plugins/lark-notify/health 無 健康檢查,是否已綁定機器人
GET /plugins/lark-notify/chats Bearer 列出機器人所在羣
POST /plugins/lark-notify/dsh-send Bearer 向指定 DSH 會話注入用戶消息
GET /plugins/lark-notify/inbound 無 長連接與審批等診斷信息
POST /plugins/lark-notify/reset Bearer 清除本地綁定(破壞性操作)

倉庫 examples/lark_notify_client.py 提供無第三方依賴的 Python 客戶端,可自動讀取 endpoint 文件,避免手寫端口。

在飛書裏繼續對話

在已綁定的私信或已配置的羣裏 @ 機器人發消息即可;回覆由 DSH 在對應隔離會話中處理並自動回傳到原聊天。

適用場景與注意

適合誰:已在用 DSH 做本地/私有化智能體開發,希望把「任務完成、審批、運維腳本結果」推到飛書,並偶爾用手機飛書續聊同一助手的人。僅需單向通知時,完成掃碼與測試消息即可,不必啓用複雜羣策略。

權限與信任:插件與當前 DSH 進程同權限運行,可訪問本機文件路徑(例如 lark_notify 的 image_path、HTTP API 的 imagePath),並持有飛書應用憑據。安裝前應閱讀 源碼 與 MIT 許可證,確認符合你的安全策略。HTTP 接口雖只綁定 loopback,Bearer 令牌仍應視爲本機敏感文件。

兼容性:面向飛書企業自建機器人應用;與 DeepSeek / 幻方無官方從屬關係。社區插件目錄 SkillHub 獨立於 DSH 本體分發,屬於「一切皆插件」生態中的第三方擴展。

結尾

經過上面的步驟,你可以把飛書當作 DSH 的外設通知渠道和輕量對話前端:智能體用 lark_notify 或腳本用本地 API 推送,你在飛書上的回覆與審批則回到同一套 Harness 會話。更多參數、配置項與截斷部分未列出的細節,以倉庫 README.zh.md 爲準。

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

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

小夜