@lijian-ui/dsh-im-gateway:爲 dsh 接入釘釘、QQ 和個人微信通道

前言

DeepSeek Harness (dsh) 的插件體系允許把 agent 能力接到更多入口裏。對需要在 IM 客戶端中使用 dsh agent 的人來說,常見問題是釘釘、QQ、個人微信的消息協議、會話狀態、審批請求、提問請求和長文本限制各不相同,單獨適配每個渠道會分散精力。

@lijian-ui/dsh-im-gateway 針對這類場景提供一個網關插件:把釘釘、QQ、個人微信接入同一個 ctx.imGateway,讓 agent 在聊天窗口裏獲得流式回覆、工具審批、交互提問、長文本分片、多段合併等能力。

下面介紹這個插件的定位、核心能力、安裝方式和典型用法。

這是什麼

@lijian-ui/dsh-im-gateway 是一個爲 dsh 提供多 IM 通道接入的網關插件,支持釘釘 / QQ / 個人微信。

它的主要能力包括掃碼綁定、流式回覆、工具審批、交互提問、長文本分片、多段合併和雙語界面。維護者爲 lijian-ui,許可證爲 MIT,GitHub 倉庫地址爲 https://github.com/lijian-ui/dsh-im-gateway 。

核心能力

多通道與統一網關

插件支持以下通道:

  • 釘釘
  • QQ
  • 個人微信

多個通道會匯聚到統一的網關服務 ctx.imGateway,提供會話管理、斜槓命令、流式回覆和狀態廣播。

它也支持多機器人實例:同一通道類型可以配置多個實例,每個實例使用各自獨立的憑據。

插件會在 dsh web UI 內渲染「IM 通道」設置頁,通道綁定和配置可以從這裏完成。

流式回覆與長文本處理

流式回覆支持:

  • 釘釘 AI 卡片
  • QQ stream_messages

如果渠道不支持流式回覆,插件會回退爲純文本。

當回覆超過渠道單條上限時,長回覆會被自動切分,並帶有分段前綴。

工具審批與交互提問

當 agent 調用需要審批的工具時,插件提供工具審批橋。用戶可以在 IM 中直接回復批准或拒絕。超時後,請求會委託回 dsh 原生審批體系。默認審批超時爲 approvalTimeoutSecs: 120 秒。

當 agent 調用 ask_user_question 時,插件提供交互提問橋。問題會同步推送到 IM,用戶回覆選項編號或文字即可作答。超時後會轉回 Web 端。默認提問超時爲 questionTimeoutSecs: 600 秒。

多段輸入合併

用戶連續發送多條消息時,插件會自動合併輸入。

控制後綴如下:

  • 無後綴:進入合併窗口
  • ..:續傳合併
  • !!:立即提交

文件發送

插件提供 im_send_file 工具,用於把工作區文件發送到當前 IM 會話。

語言與權限

插件支持雙語界面。配置 im-gateway.languagezhen,可以切換用戶可見回覆的語言。

權限控制使用用戶白名單:

  • allowAllUsers
  • allowedUserIds

allowAllUsers 是全局放行所有用戶,僅適合開發環境,生產環境不建議開啓。

安裝與啓用

先安裝插件:

dsh plugin --profile web add @lijian-ui/dsh-im-gateway

npm 包自帶預構建的 lib/,無需構建授權。

如果從 Git 安裝,拉取的是源碼,首次安裝需要批准包的 prepare 構建腳本。pnpm >= 10 場景下,按提示把包鍵加進 profile 的 pnpm-workspace.yaml 中的 allowBuilds。優先使用 npm 或 tarball 方式可以跳過這一步。

安裝後可以用下面命令查看配置:

dsh --profile web --dump-config

然後啓動 dsh web UI,打開「設置 → IM 通道」完成通道配置。

需要注意,插件對 dsh 相關依賴有版本範圍要求。它會依賴 @deepseek-ai/cordisschemastery 等包,並要求特定範圍的 @deepseek-ai/dsh-agentdsh-llmdsh-session。安裝前應確認當前 dsh 環境是否匹配。

Windows 環境下,如果修改了 src/,必須重新構建後再重啓 dsh 進程:

npm run build

典型用法

添加通道

下面介紹在 dsh web UI 中添加通道的基本步驟。

1、打開 dsh web UI → 設置 → IM 通道。

2、點擊添加通道,選擇 QQ、個人微信或釘釘。

3、按通道完成綁定。

QQ:

  • 點擊掃碼登錄
  • 用手機 QQ 掃碼
  • 憑據自動填入後保存

個人微信:

  • 點擊掃碼登錄
  • 用手機微信掃碼
  • 如要求則輸入配對碼
  • 憑據自動填入後保存

釘釘:

  • 手動填寫 AppKey / AppSecret
  • 或者直接編輯配置文件
  • 保存配置

配置會存儲在 ~/.dsh/settings.yamlim-gateway.channels。在 UI 中保存配置會熱重載通道,無需重啓。

發送消息和斜槓命令

在 IM 客戶端給機器人發消息後,回覆會即時流式返回。

插件內置以下斜槓命令:

/help
/model
/status
/new
/reset
/stop
/sessions
/continue
/workspaces
/workspace

常見用法包括:

/model
/status
/new
/sessions
/continue <會話id>
/workspaces
/workspace <路徑>

審批迴復

當 agent 請求審批時,可以在 IM 中直接回復。

批准類回覆:

批准
同意
yes
y
allow

拒絕類回覆:

拒絕
no
n
reject
deny

多段輸入

連續輸入時使用後綴控制:

..
!!

.. 用於續傳合併,!! 用於立即提交。

切換界面語言

配置 im-gateway.languagezhen

im-gateway:
  language: zh

適用場景與注意

這個插件適合以下場景:

  • 需要把 dsh agent 接到釘釘、QQ 或個人微信
  • 希望在 IM 中直接處理工具審批和交互提問
  • 需要多個機器人實例分別使用獨立憑據
  • 需要長回覆自動分片和多段輸入合併
  • 需要在聊天窗口中發送工作區文件

使用注意:

  • 個人微信僅支持單聊。
  • allowAllUsers 僅適合開發環境,生產環境建議使用 allowedUserIds 做白名單。
  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼和 MIT 許可證。
  • 從 Git 安裝時需要注意 allowBuilds 構建授權。
  • 如果本地修改了源碼,需要重新構建後再重啓 dsh 進程。

結尾

@lijian-ui/dsh-im-gateway 的價值在於把釘釘、QQ、個人微信三個通道統一到 ctx.imGateway,減少爲每個 IM 單獨維護消息、審批、提問和會話邏輯的成本。

當前資料未給出可用的目錄頁地址,因此這裏不列出具體目錄頁鏈接。可直接使用 GitHub 倉庫地址:

https://github.com/lijian-ui/dsh-im-gateway
羽毛球分组比赛记分
小程序二维码

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

小夜