dsh-im-phone-chat: Read-only mirroring of mobile IM sessions on DSH Desktop

前言

用 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。

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

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

Xiaoye