dsh-im-phone-chat:在 DSH 桌面端只讀鏡像手機 IM 會話

前言

用 DSH 跑智能體時,若 IM 通道經 dsh-im(@xmanrui/dsh-im)從手機 QQ、微信、飛書等橋接進來,消息會落在 DSH 的會話列表裏。要在左側欄或主區域像聊天軟件一樣連續看「手機發來的話」和助手流式回覆,並順帶排版 Markdown、LaTeX 和圖片,單靠 dsh-im 自帶的「IM 機器人」管理面板不夠——那個面板面向連接與配置,不是聊天內容鏡像。

FST-EchoFly/dsh-im-phone-chat(npm 包名 dsh-im-phone-chat)是 dsh-im 的配套客戶端插件:在 DSH 界面裏提供只讀聊天鏡像,不寫入會話、也不改 dsh-im 安裝包。維護者爲 FST-EchoFly;倉庫在 GitHub 上約 2 stars,許可證 MIT,當前 npm 版本 1.4.0(以 package.json 爲準)。

這是什麼

一句話:把經 dsh-im 橋接的手機 IM 對話,以實時氣泡形式顯示在 DSH 左側欄入口對應的主面板裏。

插件是純客戶端 UI(宿主側 index.js 爲空實現),通過 DSH 公開會話 API 訂閱事件,按時間摺疊用戶消息與助手回覆;助手內容支持 Markdown、$...$ / $$...$$ LaTeX(KaTeX → MathML),手機圖片內聯展示並可點擊放大、旋轉。多個手機會話可在面板頂部切換,並支持「加載更早消息」。README 註明已在 DSH 0.2.1-rc.2 與 dsh-im 5.0.3(Windows 桌面端)組合下實測可用;其他環境需自行驗證。

核心功能

下面介紹 README 中已列出的能力,均可在倉庫說明中核對。

  1. 入口與佈局:左側欄底部、設置按鈕上方註冊「聊天氣泡」圖標;點擊後在 main 全局面板槽位打開「手機聊天」面板。
  2. 實時同步:手機側消息與助手流式 chunk、結算消息隨 binding.eventSource 事件窗口更新;流式未結束前公式按純文本顯示,結算後再排版。
  3. 富文本與圖片:內置 markdown-it、KaTeX;圖片經 session.readAttachment() 取字節,懶加載 Blob URL,離開視圖後釋放。
  4. 會話發現:優先用 dsh-im 管理 RPC(connection.status 的 bot.workspace)定位手機通道工作區,並結合標題帶 IM 通道前綴的會話做兜底。
  5. 只讀邊界:不能在鏡像面板裏發消息;需要繼續對話時,用面板裏的「在會話中打開」跳到真實 DSH 會話,或在手機上直接回復。

安裝與啓用

前置條件

  1. 已安裝 DSH(Web 或桌面端均可)。
  2. 已安裝並啓用 @xmanrui/dsh-im,且至少一個 IM 通道(例如 QQ)已連接。
  3. 若用命令行安裝,需保證本機 dsh 命令可用;用插件管理器安裝則不必。

方式一:npm(推薦)

<profile> 在桌面端一般爲 desktop,Web 端一般爲 web:

dsh plugin --profile <profile> add dsh-im-phone-chat

安裝完成後刷新一次頁面(桌面端 Ctrl+R 或 F5)。左側欄應出現聊天氣泡圖標。

方式二與方式三

README 還支持:設置 → 插件 → 安裝本地插件(選擇克隆或下載後的倉庫目錄),或命令行 dsh plugin --profile <profile> add link:<克隆目錄絕對路徑>。本地 link 方式卸載插件不會刪除源碼目錄。

更新與卸載

  • npm:重新執行 dsh plugin --profile <profile> add dsh-im-phone-chat,或在插件管理器中更新。
  • 本地 link:在克隆目錄 git pull 後重啓 DSH 或刷新頁面。
  • 卸載:插件管理器停用/移除「手機聊天鏡像」,或:
dsh plugin --profile <profile> remove dsh-im-phone-chat

典型用法

經過上面的安裝與刷新,可按 README 步驟操作:

  1. 從手機向已連接的 IM 機器人發送一條消息。
  2. 點擊左側「手機聊天」面板:頂部列出發現的手機會話(例如帶 QQ · 前綴與日期),默認選中最新的手機通道會話。
  3. 面板實時顯示你的消息與助手回覆;需要更早記錄時點「加載更早消息」(當前事件窗口約 500 條,更早內容靠該按鈕擴展)。
  4. 若一次手機對話被 DSH 拆成多個會話,在頂部下拉中切換即可。

配置與開發

一般情況下無需配置。僅在 dsh-im 管理 RPC 不可用、且手機機器人工作區不是默認路徑時,需改 src/plugin.js 頂部的 FALLBACK_WORKSPACES 數組(填工作區絕對路徑),再執行 pnpm install 與 pnpm run build 重新生成 client.js。普通使用可直接用倉庫已提交的 client.js。

適用場景與注意

適合誰:已經在用 dsh-im 把手機 IM 接進 DSH,希望在桌面側欄常駐一個只讀、帶公式與圖片渲染的聊天視圖,而不是隻在會話列表裏逐條點開。

權限與安全:插件以當前 DSH 進程權限運行,能訪問你已打開的會話與附件;安裝前建議瀏覽 GitHub 源碼 與 MIT 許可證,並確認社區插件目錄 skillhub.cn 條目 與倉庫一致。DSH 社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

已知限制(摘自 README):純只讀;會話發現爲啓發式;依賴 dsh-im 公開管理 RPC,協議變更可能影響自動發現;首次安裝後必須刷新頁面一次(Electron 桌面端限制)。

結尾

dsh-im-phone-chat 的定位是 dsh-im 配套:左側欄入口 + 實時氣泡鏡像 + Markdown/LaTeX/圖片,與 dsh-im 自帶管理面板、dsh-im-connect 的 Channels 會話列表、以及 DSH 間聊天類插件方向不同。若要安裝或提 issue,可從目錄頁 https://www.skillhub.cn/plugins/FST-EchoFly/dsh-im-phone-chat 進入,或直接打開 https://github.com/FST-EchoFly/dsh-im-phone-chat。

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

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

小夜