dsh-im

141Star25Fork6Issue0Watching

把九种 IM 渠道和公网 AI Office 接入 DeepSeek Harness,支持多机器人独立工作区与凭据。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
JavaScript
License
MIT
分支
main
ai-agentschatbotcordisdeepseekdeepseek-harnessdingtalk-botdiscord-botdsh

安装

$ dsh plugin --profile web add github:xmanrui/dsh-im

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 xmanrui/dsh-im:先查看仓库 https://github.com/xmanrui/dsh-im.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

把九种 IM 聊天工具(微信、飞书、钉钉、企业微信、QQ、Slack、Telegram、Discord、WhatsApp)和公网 AI Office 一起接到 DeepSeek Harness,让用户在不离开 IM 的同时调用 Harness 完成对话、生成与自动操作,每个渠道都能接入多个机器人并独立管理。

核心能力

  • 把九种主流 IM(微信、飞书、钉钉、企业微信、QQ、Slack、Telegram、Discord、WhatsApp)合并到一个「IM机器人」设置入口,各渠道使用各自的扫码或凭据流程接入
  • 支持同一渠道接入多个机器人,每张机器人卡片独立保存工作区、凭据、连接状态和聊天-会话映射,互不影响地查看、测试、重连或移除
  • 让本机 Harness 主动连接公网 AI Office 发起反向桥接,遵循 office-harness.v1 协议,不需要本机公网 IP、端口转发或 WebSocket
  • 为每个机器人提供 Harness 命令面板:/help/new/status/models/model/stop/steer/compact/workspace/workspacelist/sessionlist/session,以及交互式提问和远程审批
  • 按各平台能力显示流式回复与进度:飞书流式卡片、Slack 官方流式消息、企业微信原生「正在思考」、QQ/Telegram/Discord 通过编辑消息逐步呈现
  • 把 JPEG、PNG、WebP、以图片文件方式发送的 GIF 一起上传 Harness 做识别,单张 5 MB、单条总 20 MB、最多 20 张

技术实现

  • 语言: JavaScript / TypeScript(ESM,"type": "module",React 18 编写 Web UI)
  • 关键依赖: dingtalk-stream(钉钉 Stream 长连接)、@tencent-connect/qqbot-nodejs(QQ 频道)、@wecom/aibot-node-sdk(企业微信)、qrcode(扫码绑定用;react / @whiskeysockets/baileys 等为辅助依赖)
  • 架构模式: 单一 cordis 插件 @xmanrui/dsh-im,通过 cordis.patch.yml 注入 DSHCordis 运行时;同时声明 dsh.bundle.patch(注入 plugin 注册)与 dsh.client.inject(注入 @deepseek-ai/dsh-client-connection-runtime-ui-settings-ui-slots-locale 五个客户端包)。Host 通过 RPC 暴露在九个渠道,Client 在设置页内向 Harness 注册一个 IM机器人 Tab
  • 入口文件: plugin-src/host/index.mjs(Host 编排),plugin-src/client/index.js(Client 设置入口);运行时打包到 lib/index.jslib/client.js,原仓库命名规则下 src/ 是 Host 共享渠道实现(实际脚手架为 plugin-src/host/channels

适用场景

DSH 用户希望在被 IM / Web 办公工具打断时也能随时调用 Harness:销售或客服团队把 IM 渠道接到 DSH,让同事或外部用户在熟悉的聊天窗口里就触发代码生成、文档汇总、图片识别;多账号/多项目方需要为每个机器人指定不同的工作区与 Agent Preset,在群里互不串扰;需要让公网协作平台反向调用本机 DSH,而又不愿暴露端口。用户也可以让已配置好的机器人互相对话、做自动化串联。

前置依赖与兼容性

依赖最低版本说明
Node.js>=22.19来自 package.json:engines.node
DSH(cordis/connection/credentials/webServer/typertGateway/slots/locale/workspaces)未在 package.json 中声明插件依赖上述 Host 与 Client 服务,建议沿用同作者其他插件已验证的 DSH 0.1.0-rc.6+ 体系
平台macOS / Windows / Linux由 DSH Web profile 接管;不依赖操作系统特性
原生模块仅使用 IM 厂商 SDK 与 qrcode,无 node-ptynode:sqlite 等原生绑定

安装方式

dsh plugin --profile web add github:xmanrui/dsh-im

配置项

配置类型说明默认值
rpcAuthority字符串(loopbacktrusted-hostIM 管理 RPC(扫码、凭据提交、机器人增删)接受的浏览器来源。loopback 仅本机,trusted-host 放宽到 Connection 已信任的局域网loopback
各渠道机器人凭据在 dsh 设置页中按渠道分别配置例如飞书 App ID/Secret、Slack Bot Token + App Token、Telegram Bot Token、钉钉 Client ID/Secret、企业微信 Bot ID/Secret、QQ AppID/AppSecret、WhatsApp 设备扫码;token 只写入本机凭据存储首次安装后均为空
AI Office Base URL(实验)https URL(loopback 允许 http)反向连接到的公网 Office 地址;不能带用户名密码或 query,路径会被归一化为 /未配置时 AI Office Connector 不可用

常见问题

Q: 这个插件和其它 DSH IM 插件是什么关系?

A: dsh-im 是一个统一的合并包,把九种 IM 渠道放到同一个「IM机器人」设置入口。从 bin/dsh-im.mjs 走安装命令或 GitHub 源安装时,会读取 ~/.dsh/profiles/<profile>/package.json,把旧的 @xmanrui/dsh-feishu@xmanrui/dsh-weixin@xmanrui/dsh-dingtalk 三个独立包自动删除;旧的扫码绑定和凭据会保留下来,可以在 dsh-im 卡片里继续看到。

Q: 一个 IM 渠道能加几个机器人?

A: 可以加任意多,每个机器人在设置页里是一张独立卡片,凭据、连接状态、工作区、聊天-会话映射、连接测试、重连、移除都按机器人粒度生效。新机器人默认使用 Host 当时的工作目录,Preset 继承 Harness 的 agent-presets.default

Q: /model、/steer、/stop 这些命令有什么区别?

A: /model 查看或切换当前会话使用的模型,可在 /models 输出的序号和 Provider/模型ID 之间二选一;/steer <补充指令> 把文字指令追加到当前聊天正在运行的任务;/stop 立即停止当前聊天发起的运行任务、保留排队的消息。三者都只影响调用它们的聊天,即便多个聊天绑定到同一个 Harness 会话。

Q: 图片支持什么格式、大小有上限吗?

A: 九种渠道都识别 JPEG、PNG、WebP 以及以图片文件方式发送的 GIF;单张图片上限 5 MB,单条消息内图片总大小上限 20 MB,单条消息最多 20 张。超出限制会被 src/channels/shared/image-prompt.mjs 拦截并向用户给出中文错误提示,不会进入 Harness。

Q: AI Office 是什么?现在能用吗?

A: AI Office 是让本机 Harness 主动连接公网 Office 的反向通道,按 office-harness.v1 协议工作:先用 POST /api/harness/connector/heartbeat 握手,再用 GET /api/harness/connector/stream 接收 SSE 下行任务,租约 90 秒,每 30 秒续租。当前在设置页左侧 Tab 中标注为「实验功能」,需要先在公网 Office 拿到 Base URL 和 Device Token 才能启用。

Q: 为什么从外网/局域网访问不到管理页面?

A: 这是有意为之。plugin-src/host/rpc-authority.mjs 默认把 IM 管理 RPC 锁定到 loopback,避免扫码链接、凭据提交、机器人增删等敏感操作被外网调用。如果确实要把 dsh web 暴露到受信局域网内,可以在 profile 的 cordis.patch.yml 里写 config: { rpcAuthority: trusted-host };该模式只是复用 Connection 已信任的 Host authority,并不是用户认证。

Q: 如何完全卸载?

A: 运行 dsh plugin --profile web remove @xmanrui/dsh-im,或在插件包安装目录下用 npx -y github:xmanrui/dsh-im uninstall。之后重启 dsh web,设置页里的「IM机器人」入口会被移除,已保存的 Secret 和 Device Token 仍由本机凭据存储保管。

Q: 机器人的命令谁都可以执行吗?

A: 是的。任何在对应平台可见范围里、能给机器人发消息的用户都能触发 /session/workspace 等命令,从而把后续消息写到被绑定会话里、调用其可用工具。所以上线机器人前要确认可见用户是可信的;Telegram 安全模式可叠加白名单,群聊命令在该模式下会被无视。

上手难度

入门 — 安装一步完成,设置页有九个渠道的完整中文/英文引导,多数渠道支持扫码零配置;但每个渠道的凭据来源需要用户在对应 IM 平台开发者后台单独申请,所以首次接入时长取决于读者熟悉 IM 平台的程度。

已知问题与限制

  • AI Office Connector 当前在设置页 Tab 上明确标注为「实验功能」(plugin-src/client/index.js:61),协议版本 office-harness.v1 仍可能演进
  • workspace-command.mjscompact-command.mjs 中保留了「当前机器人暂不支持列出工作区 / 切换工作区 / 上下文压缩」的回退分支,意味着某些渠道的 /workspace/workspacelist/sessionlist/compact 命令会直接提示用户该功能暂不支持
  • IM 管理 RPC 默认仅 loopback;如要在受信局域网打开管理页,必须在 profile 的 cordis.patch.yml 中显式设置 rpcAuthority: trusted-hostplugin-src/host/rpc-authority.mjs:7-11);该模式只复用 Host/Origin 防护,不是用户认证
  • WhatsApp 通过 WhatsApp Web 长连接保持登录,手机端掉线或服务端主动断开会让机器人进入「离线」状态,需要重新扫码关联设备
  • 切换工作区只会清理本机器人旧聊天-会话映射,不会删除、清空或归档任何旧 Session;跨工作区绑定时则会一并清除该机器人所有聊天的旧映射,开放机器人前请评估可见用户是否可信
  • Plugin ID 含在 plugin ID 中的关键字限制:rpcAuthority 仅接受 loopbacktrusted-host,写入其它值会在 Host 启动时抛 TypeError
  • DSH(DeepSeek Harness)版本要求未在 package.json 中声明,需结合宿主版本实际验证;插件使用了 ctx.typertGatewayctx.workspacesctx.slots 等较新的注入点

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/xmanrui/dsh-im)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录