dsh-im-gateway:把 DeepSeek Harness 接到微信、飛書和 Telegram

前言

DeepSeek Harness(簡稱 dsh)是 DeepSeek 開源的智能體運行時,官方倉庫寫明核心理念是「一切皆插件」:模型、工具、會話、沙箱、UI 都可以在配置層替換,不必改核心源碼。實際用起來,很多人會碰到另一件事:agent 跑在本機終端或 Web 界面裏,人卻經常不在電腦前。工具調用要批准、交互提問要選選項、改一行配置也得回到瀏覽器。手機上的微信、飛書、Telegram 反而纔是真正常開的入口。

社區插件 dsh-im-gateway 做的就是這件事:在 dsh 進程裏掛一個聚合 IM 網關,把入站消息歸一化成 agent 會話,再把回覆、審批請求和提問推回聊天軟件。它由 zhuiyueya 維護,TypeScript 實現,MIT 許可證,當前 npm 版本爲 0.1.0。社區目錄把它歸在「會話與消息」。2026-08-17 查詢 GitHub 倉庫爲 21 星。需要說明的是,DSH 插件庫 是獨立社區站點,與 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。

下面按目錄頁、GitHub README 和源碼能覈對到的內容,介紹它是什麼、裝什麼命令、連上之後怎麼用。

這是什麼

dsh-im-gateway 是一個標準的 dsh.bundle 插件。安裝後會往當前 profile 插入 im-gateway 這一行,並在 Web GUI 的設置頁註冊「IM 網關」面板。package.json 裏客戶端聲明的平臺是 web,也就是說它主要掛在 Web 配置上,而不是單獨做一個聊天客戶端。

它要解決的問題可以收成三句:

  1. 人在微信、飛書、Telegram、Discord、QQ 等聊天軟件裏發消息,就能驅動同一個 dsh agent。
  2. 不同聊天窗口默認對應不同會話,也可以用命令切工作區、繼續舊會話,或綁定本機已有的 live 會話。
  3. agent 請求工具批准、或調用 ask_user_question 時,問題可以同步到 IM;在聊天裏回覆即可,不必盯着瀏覽器。

倉庫地址是 zhuiyueya/dsh-im-gateway。社區裏還有名稱接近的其他 IM 插件,安裝時請認準這個 GitHub 路徑,不要混用。

核心功能

按 README 和 src/index.ts 的說明,網關側已經落地的能力大致如下。

每聊天一個會話。 默認 sessionModeper-chat:一個聊天窗口對應一個 agent 會話,羣裏說話就是在驅動 agent,回覆會即時回推。也可以改成 bound 模式,用 /bind 把某個 IM 聊天綁到本機已有會話上。重啓後會嘗試恢復該聊天上次綁定的會話。

遠程審批。 agent 走到需要用戶批准的工具調用時,網關把請求推到聊天裏。回覆「批准 / 拒絕」(也認 yes / no / 同意)即可。超時後轉回本機批准體系;README 裏默認超時是 120 秒,對應配置項 approvalTimeoutSecs。審批應答會校驗會話歸屬,不是任意一條消息都能放行。

交互式提問。 當 agent 調用 ask_user_question 時,Web GUI 上的結構化問題會同步到該會話綁定的全部 IM 聊天。Web 和 IM 都可以答,第一份有效答案生效,其餘渠道會收到已回答通知。單選可回編號或標籤,多選用逗號或頓號分隔,多個問題按 問題序號: 答案 分行。IM 側等待窗口由 questionTimeoutSecs 控制,README 默認 600 秒;超時後 Web 上仍可繼續回答。

手機輸入合併與長回覆分片。 消息以 .. 結尾表示還有後續,以 !! 結尾立即提交;裸文本有 5 秒合併窗口(mergeTimeoutSecs)。回覆按各渠道字數上限切開,優先在換行或句號處斷開,並帶 (i/n) 序號。

可視化連接。 打開 dsh Web GUI(README 寫的默認地址是 http://localhost:3080)→ 設置 → 「IM 網關」。微信 / WhatsApp 可以點「連接(掃碼)」彈出二維碼;飛書、Telegram、QQ 機器人、Discord、Slack 等則填 token 或 App 憑據後保存連接。連接後不必再爲渠道本身重啓;安裝插件本身需要重啓一次 dsh。登錄態會落盤,重啓後已配置渠道會嘗試自動重連。

媒體。 README 寫明微信渠道支持圖片、語音(服務端轉文字)、文件和視頻。agent 可調用 im_send_file,把工作區裏的文件發到當前聊天。

訪問控制。 源碼裏 allowAllUsers 的 Schema 默認值是 true,註釋寫的是個人或小團隊開箱即用。需要管控時改爲 false,再用 allowedUserIds 按渠道(或 * 全局)寫白名單。不在名單裏的用戶會收到未授權提示,同時在設置面板登記「有用戶請求訪問」,管理員點允許即可,不必手工翻用戶 ID。

支持哪些渠道

目錄頁和 package.json 都寫的是「20+ 聊天平臺」。GitHub README 給了一張狀態表,完整可用(收發)的包括:

  • Telegram(Bot API 長輪詢,需要 @BotFather token)
  • Discord(Gateway WebSocket)
  • Slack(Socket Mode,需要 xoxb-xapp- token)
  • 飛書 / Lark(官方 SDK 長連接,App ID + Secret)
  • 微信(iLink 掃碼登錄;README 建議用專用小號)
  • QQ 機器人(官方 WebSocket,AppID + Secret)
  • LINE、Matrix、Mattermost、IRC、Twitch
  • Signal(依賴本機 signal-cli
  • Nextcloud Talk、Synology Chat、Zalo
  • iMessage(macOS,依賴 imsg / osascript)

另外兩類不要和上面混爲一談:

  • 動態依賴: WhatsApp 需要額外安裝 @whiskeysockets/baileys 再掃碼;Nostr 需要 @noble/curves
  • 實驗性或骨架: Teams、Google Chat,以及 Tlon / 元寶 / 語音。README 寫明啓用前應閱讀源碼,其中部分還需要公網地址或專用基礎設施。

微信走的是騰訊 iLink Bot 協議。README 的安全說明裏寫:僅私聊、一個賬號一個 poller,建議專用小號;使用即表示同意微信相關功能條款。這不是網頁版微信的非官方協議包裝,但仍然要把號和 dsh 進程權限一起當作敏感資源來看。

安裝與啓用

插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前先看倉庫和許可證;生產環境建議固定 commit,而不是一直追 main

社區目錄頁給出的安裝命令是:

dsh plugin add github:zhuiyueya/dsh-im-gateway

需要可復現安裝時,按目錄頁的寫法把 commit 哈希接在後面:

dsh plugin add github:zhuiyueya/dsh-im-gateway#<commit>

GitHub README 面向 Web GUI 的推薦寫法帶了 --profile web,並且已經發布到 npm:

dsh plugin --profile web add dsh-im-gateway

也可以從倉庫直裝:

dsh plugin --profile web add https://github.com/zhuiyueya/dsh-im-gateway.git

本地開發或需要先構建時:

git clone --depth 1 https://github.com/zhuiyueya/dsh-im-gateway.git
cd dsh-im-gateway
npm install && npm run build
dsh plugin --profile web add "$(pwd)"

裝完後重啓一次 dsh web。之後打開設置裏的「IM 網關」,按渠道掃碼或填憑據即可。面板上「斷開」只是臨時停用,重啓仍會按已保存配置恢復;「刪除配置」纔會清掉憑據。

憑據也可以寫在 ~/.dsh/profiles/web/cordis.patch.ymlim-gateway 配置裏,或用環境變量。README 列出的常用變量包括 DSH_TELEGRAM_TOKENDSH_DISCORD_TOKENDSH_FEISHU_APP_ID / DSH_FEISHU_APP_SECRETDSH_QQ_APP_ID / DSH_QQ_APP_SECRET 等。微信和 WhatsApp 是掃碼啓用,不靠這類 token 環境變量。

通用配置示例(摘自 README,默認值以源碼 Schema 爲準):

- id: im-gateway
  config:
    sessionMode: per-chat
    cwd: /path/to/workspace
    allowAllUsers: true
    allowedUserIds:
      telegram: ['123456789']
      '*': ['u-common']
    mergeTimeoutSecs: 5
    approvalTimeoutSecs: 120
    questionTimeoutSecs: 600
    summaryOnTurnEnd: true

cwd 是 agent 工作目錄。provider / model 不寫則跟隨當前 dsh;源碼默認值分別是 deepseek-officialdeepseek-v4-flash。狀態目錄默認在 $DSH_HOME/dsh-im-gateway(未設置 DSH_HOME 時即 ~/.dsh/dsh-im-gateway)。

典型用法

渠道連上之後,在對應聊天裏給機器人發消息即可。以 / 開頭的是命令,普通文本會交給 agent。

/help
/status
你好,幫我看看當前工作區

README 中的命令如下:

命令 作用
/help 幫助
/status 當前會話 id、工作區、待批准情況
/new/clear per-chat 模式下開啓新會話
/workspaces 列出工作區
/workspace <路徑> 切換工作區,後續 /new 生效
/sessions [all\|路徑] 列出會話
/continue <會話id> 繼續已有會話,可跨渠道、跨工作區
/bind bound 模式下綁定本機 live 會話
/unbind 解綁
/channels 各渠道連接狀態
批准 / 拒絕 應答待批准請求

輸入比較長時,可以分幾條發,最後一條以 !! 結束;中間用 .. 表示還沒說完。

適用場景與注意事項

比較對口的用法是:人經常離開電腦,但希望用已經在用的聊天軟件盯着 agent;或者同一套工作區要在微信私聊、飛書羣、Telegram 之間切換,又不想爲每個平臺單獨寫機器人。遠程審批和交互提問,適合那些工具調用頻繁、又不能在本機一直點「允許」的情況。

使用前有幾條必須看清楚。

第一,這是第三方社區插件,不是 DeepSeek 官方組件。它以當前 dsh 進程權限運行,能接觸工作區文件、已配置的模型密鑰,以及你填進去的 IM token。安裝前應閱讀倉庫源碼和 MIT 許可證,敏感環境建議先用獨立的 DSH_HOME 試。

第二,不要讓多個 dsh 進程共享同一個 DSH_HOME。README 寫明:併發恢復同一會話會寫出重複 seq 並損壞歷史;網關會拒絕第二個實例。測試請用獨立目錄,例如 DSH_HOME=/tmp/dsh-test-8788 dsh web

第三,微信請用專用小號,不要拿常用個人號去掃。WhatsApp、Signal、iMessage 各自還有本機依賴或系統限制。實驗性渠道不要直接當生產入口。

第四,目錄頁上的星標、最近推送時間可能滯後於 GitHub。本文渠道列表、命令和配置以 2026-08-17 打開的 GitHub README、package.jsonsrc/index.ts 爲準。

小結

dsh-im-gateway 把 dsh 的會話從 Web 界面延到常用 IM:統一路由、遠程審批、交互提問、掃碼連微信,這些在倉庫文檔裏都能對上。安裝入口以社區目錄爲準:

dsh plugin add github:zhuiyueya/dsh-im-gateway

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-im-gateway/

GitHub:https://github.com/zhuiyueya/dsh-im-gateway

DeepSeek Harness 官方倉庫:https://github.com/deepseek-ai/deepseek-harness

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

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

小夜