dsh-feishu-channel:在 DSH 裏用單插件統一管理 Discord 與飛書渠道

前言

在 DeepSeek Harness(DSH)裏讓智能體對外收發消息,通常要單獨處理各平臺的憑證、會話綁定和進度展示。Discord 與飛書(Lark)各配一套渠道邏輯,規則和運維成本都會翻倍。社區插件 firstdreamlh/dsh-feishu-channel 在 dsh-channel-core(MIT)基礎上二次開發,把兩套渠道收進一個包:身份覈驗、私聊綁定、流式進度卡片和主動外發共用一套規則,智能體、歷史與任務執行仍由 DSH 原生能力承擔。

這是什麼

  • 定位:DeepSeek Harness 一體化渠道插件,同時承載 Discord 與飛書適配器,各自獨立憑證與連接生命週期。
  • 維護者:firstdreamlh(倉庫:https://github.com/firstdreamlh/dsh-feishu-channel)。
  • 與上游關係:本倉庫爲上游 fork;能力盡量保留,本分支側重飛書私聊回答卡片字號(完成態正文 16px,移動端 17px),並附中英文檔與迴歸測試。差異清單見倉庫內 docs/FORK.md。
  • 包信息:package.json 中名稱爲 dsh-channel-core,版本 0.9.1,許可證 MIT。

核心功能

雙渠道、一套規則

Discord 與飛書在同一插件內配置。主人認領、身份覈驗、DM 會話綁定可跨渠道對齊;在顯式配置下,同一 owner 的已覈驗私聊可映射到 同一個原生 DSH Session。入站消息有持久化回執、串行會話准入,並與原生 steer/queue/interrupt 配合,避免重複投遞。

飛書接入:掃碼爲主

支持掃碼創建或連接飛書機器人,再掃碼打開私聊,無需手抄密鑰。私聊與羣聊按路由與會話規則處理;羣聊與未覈驗用戶不自動繼承個人記憶權限。

流式進度與交互

  • 進度卡片:思考、草稿與工具調用在卡片內滾動更新,完成後可摺疊爲過程記錄;飛書側支持 CardKit 組件流式,並有 IM 卡片回退。
  • /model 卡片:可搜索下拉,需二次確認才切換模型,避免長列表誤觸。
  • Ask User:在卡片內作答;提交後卡片變爲只讀回執,已提交上下文保留且不會重複當作答案發送。
  • 斜槓命令:飛書支持文本形式的 /new、/stop、/status、/session、/answer、/model、/think、/reason 等;/reason 與插件頁的 streaming.progress.narration 設置一致,改連接級配置後會短暫重連生效。

每條非命令的入站消息會在正文前附帶本地時區日期前綴(例如 [2026-10-27 Tue 11:30]),便於模型理解時間;命令消息不打戳。

主動外發 channel_send

智能體可在無入站消息的前提下外發。面向模型的渠道工具主要爲:

channel_send({ text?, imagePath?, filePath?, bindingId?, idempotencyKey? })

一次調用發送一段文字、一張飛書圖片或一個飛書文件;文件路徑須在當前工作區內,按媒體上傳而非 Markdown 路徑。會話只能發往本會話已授權綁定;多綁定需顯式 bindingId。投遞經持久化 outbox,狀態含 pending、sent、failed、uncertain;穩定冪等鍵可避免重複發送。

可信宿主還可調用 ctx.channelCore.sendToBoundSession({ sessionId, text, idempotencyKey, bindingId?, source? });outboundTargets(sessionId) 返回可用綁定 ID,不暴露收件人原始 ID。

安裝與啓用

需要與 package.json 中 peer 服務兼容的 DSH 宿主,以及你要啓用的各平臺憑證。

命令行安裝(將 desktop 換成你的 DSH profile 名):

dsh plugin --profile desktop add github:firstdreamlh/dsh-feishu-channel

插件市場(實驗性):在 DSH 中打開 Custom plugin market bundle,於 Discover 添加索引源:

https://raw.githubusercontent.com/firstdreamlh/dsh-feishu-channel/main/market/index.json

在卡片上一鍵安裝即可。若需可復現部署,可將安裝釘到指定 Git commit。安裝或更新代碼後需重啓 DSH。

典型用法(Quick start)

README 給出的起步步驟如下:

  1. 打開 Settings → Plugins → Channels & Sessions。
  2. 在 Discord 和/或 Feishu 分頁配置平臺憑證,以及允許的用戶/頻道;僅有有效連接並不自動授權投遞。
  3. 檢查各渠道的主人識別模式:入站消息通過 allow 規則後,纔可能自動首次 DM 認領主人;也可選手動指定主人。
  4. 可選:關聯同一 owner 的賬號,使 多個渠道共享同一個在線 DSH 會話;共享長期記憶不必強制共享會話。
  5. 發送測試私聊,確認綁定的工作區、會話與進度輸出是否符合預期。

自動化場景可在任務生成報告後由作業調用 channel_send,或由可信插件直接調用 sendToBoundSession;這不會自動廣播所有定時結果,也不會授予向任意賬號發送的權限。

本地可執行 npm test 做無依賴公開回歸;npm run test:host 需在已配置的 DSH 開發環境中運行更廣集成套件。真實飛書/Discord 投遞需在本地憑據下單獨驗證。

適用場景與注意

適合誰:需要在 DSH 中同時接 Discord 與飛書、且希望統一主人覈驗、會話綁定、流式卡片與主動外發的開發者或自用部署者。SkillHub 分類爲「工作流」。

安全與邊界:渠道 owner 按機器人賬號覈驗;羣聊與未覈驗用戶不得繼承個人記憶權限。會話映射決策可審計(詳見 README「Security and operational boundaries」章節)。

使用前提:插件在 當前 DSH 進程權限 下運行;安裝前請自行審閱源碼與 MIT 許可證,確認憑證與 allow 列表符合你的安全策略。社區目錄頁(https://www.skillhub.cn/plugins/firstdreamlh/dsh-feishu-channel)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,不宜當作官方應用商店。

結尾

dsh-feishu-channel 把 Discord 與飛書渠道層併入單插件:掃碼建連、會話路由、CardKit 進度、/model 與 Ask User、channel_send 主動外發,並與 DSH 原生 Session 與任務執行銜接。需要細節與更新說明時,可查閱 SkillHub 目錄頁 與 GitHub 倉庫(含 README.zh-CN.md)。

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

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

小夜