xmanrui/dsh-im · 上手攻略
- 仓库:xmanrui/dsh-im
- 链接:https://github.com/xmanrui/dsh-im
- 分类:AI · IM 集成 / DeepSeek 生态
- 作者:Tom
- 更新:2026-10-01
§0 速览
| 维度 | 详情 |
|---|---|
| 定位 | 把 IM 机器人接入 DeepSeek Harness 的插件 |
| 支持渠道 | 飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord、WhatsApp、iMessage、Matrix(实验性)共 11 个 |
| 接入方式 | 扫码 / App Manifest / 已有机器人凭据 |
| 核心优势 | 一个插件统一管理多渠道 + Workspace 隔离 + 流式回复 + 文件回传 |
| 技术栈 | DeepSeek Harness 插件(npm 安装) |
| 许可证 | ⚠️ 未在 README 中明确声明许可证 |
§1 是什么
DSH-IM(DeepSeek Harness IM)是 DeepSeek Harness 的官方插件,通过扫码或机器人凭据将主流 IM 平台接入 DeepSeek Harness,让本机 Harness 主动连接公网 AI Office。
简单理解:它是 DeepSeek Harness 的"IM 机器人网关"——配置好后,飞书/微信/Telegram 等平台的用户发消息,消息经 DSH-IM 传给 Harness,Harness 调用 AI 模型后,回复通过原渠道发回去。全程本机运行,无需服务器。
§2 解决什么问题
当你有 DeepSeek Harness(本地或 Desktop 版)后,想让 AI 模型通过 IM 机器人与用户对话,会面临两个核心问题:
- 多渠道各自对接的碎片化:每个 IM 平台(飞书、Telegram…)的 API、鉴权方式、消息格式完全不同,逐个对接成本极高。
- 机器人状态隔离:同一个平台(如企业微信)上可能跑多个不同用途的 AI 机器人,它们的 Workspace、模型选择、会话历史需要彼此独立。
DSH-IM 用一个插件 + 一个设置入口统一解决以上两个问题,支持 11 个渠道,且每个机器人的配置彼此独立。
§3 快速安装
前置条件
- 已安装 DeepSeek Harness(
dsh web或 DSH Desktop)⚠️ 未测试与第三方 Harness 兼容 - Node.js 环境(飞书/Telegram 代理场景需要 Node.js 22.21+)
安装插件
# 稳定版(推荐)
dsh plugin --profile web add -w @xmanrui/dsh-im
# 尝鲜最新代码(不推荐生产环境使用)
npx -y github:xmanrui/dsh-im install
安装后重启 dsh web,刷新浏览器,打开「设置 → IM机器人」。
⚠️ 注意:旧版升级不会改变已有机器人、凭据、工作区、Agent Preset 或会话绑定,但插件页面入口已迁移,需从「设置 → IM机器人」进入。
§4 核心用法
4.1 各渠道接入配置
飞书
| 步骤 | 操作 |
|---|---|
| 方式一 | 扫码创建机器人(会自动申请所需权限) |
| 方式二 | 手动填入 App ID + App Secret |
| 接收协议 | 长连接(无需暴露公网地址) |
| 特殊能力 | 语音交互(开启后语音转文字 + 语音回复);原生流式卡片展示任务过程 |
⚠️ 坑:应用需要 im:message.group_at_msg.include_bot:readonly 权限才能接收群聊 @ 消息;扫码新建会自动申请,已有应用需要手动点「补全权限」或私聊 /repair。
⚠️ 坑:如果本机需要通过正向代理访问飞书,启动 dsh web 前需设置 HTTPS_PROXY=http://proxy:8080(也支持小写 https_proxy,HTTP_PROXY 作回退);长连接代理需 Node.js 环境变量支持,飞书 SDK 的 HTTP 请求与消息长连接走不同路径代理。
微信
| 步骤 | 操作 |
|---|---|
| 接入方式 | 手机微信扫码绑定机器人 |
| 接收协议 | 腾讯 iLink 长轮询 |
⚠️ 坑:微信对机器人消息限制严格,长回复按 1,800 字符分段发送;文件回传依赖腾讯接口返回值,插件不额外限制。
钉钉
| 步骤 | 操作 |
|---|---|
| 方式一 | 扫码创建机器人 |
| 方式二 | Client ID + Client Secret 手动绑定 |
| 接收协议 | 钉钉 Stream 长连接(HTTP 回调可选) |
| 特殊能力 | AI Card 流式展示回答 |
⚠️ 坑:应用需开通 qyapi_base,机器人需具备文件消息能力;文件大小以钉钉接口返回为准。
企业微信(两个入口)
| 类型 | 接入方式 | 接收协议 |
|---|---|---|
| 企业微信智能机器人 | 企业微信 App 扫码 | WebSocket 长连接(官方渠道) |
| 企业微信自建应用 | 手动填入企业 ID、AgentId、Secret、Token、EncodingAESKey | HTTP 回调 |
⚠️ 坑:自建应用可配置回调基址、代理地址和企业可信 IP,但这些是企业微信管理后台的概念,配置错误机器人不会响应。详细内容见 企业微信自建应用接入说明。
| 步骤 | 操作 |
|---|---|
| 方式一 | 手机 QQ 扫码创建机器人 |
| 方式二 | AppID + AppSecret 手动绑定 |
| 接收协议 | WebSocket 长连接 |
| 特殊能力 | 私聊 Markdown 回复;群聊被 @ 后只发最终答案 |
⚠️ 坑:文件消息需要 QQ 机器人具备对应能力,且受 QQ 当日文件上传配额限制,额度耗尽时插件会提示。
Slack
| 步骤 | 操作 |
|---|---|
| 方式 | 预置 App Manifest 创建 → 填入 Bot Token(xoxb-)+ App Token(xapp-) |
| 接收协议 | Socket Mode 长连接 |
⚠️ 坑:Bot Token 需要 files:read、files:write、reactions:write 权限;App 新增或变更 Scope 后必须重新授权并重新连接机器人。
Telegram
| 步骤 | 操作 |
|---|---|
| 接入方式 | @BotFather 生成 Bot Token → 填入插件 |
| 接收协议 | Bot API 长轮询 |
| 特殊能力 | 私聊 Rich Message Draft 流式预览;群聊 / Topic 原位占位消息;平台不支持时回退普通文字 |
⚠️ 坑:如果本机无法直连 Telegram Bot API,需要 Node.js 22.21+,并启用环境变量代理:
NODE_USE_ENV_PROXY=1 \
HTTPS_PROXY=http://proxy:8080 \
HTTP_PROXY=http://proxy:8080 \
NO_PROXY=localhost,127.0.0.1 \
dsh web
⚠️ 代理地址需按本机网络环境填写,修改后重启 Host。
Discord
| 步骤 | 操作 |
|---|---|
| 接入方式 | Discord Developer Portal 生成 Bot Token |
| 接收协议 | Gateway v10 长连接 |
⚠️ 坑:Developer Portal 的 Bot 设置中必须启用 Message Content Intent;机器人需要 Send Messages、Create Public Threads、Send Messages in Threads、Read Message History 权限;发送附件还需要 Attach Files 权限。
| 步骤 | 操作 |
|---|---|
| 接入方式 | 手机 WhatsApp 扫码关联设备 |
| 接收协议 | WhatsApp Web 长连接(基于 Baileys) |
⚠️ 坑:默认仅响应账号自聊(与自己聊天);切换到指定联系人或开放响应模式需手动开启设置。发送"正在输入"和已读回执依赖 WhatsApp/Baileys 实现。
Matrix(实验性)
| 步骤 | 操作 |
|---|---|
| 接入方式 | 填写 homeserver 地址 + 访问令牌,或用户 ID + 密码 |
| 接收协议 | Client-Server API 长轮询 |
⚠️ 坑:加密目前仅供非敏感测试,仅支持 optional/required 两种模式,密钥备份、交互式设备验证、媒体加密均未实现,且未与真实 homeserver/Element 互通。请勿用于生产敏感场景。
iMessage(仅 macOS)
| 步骤 | 操作 |
|---|---|
| 接入方式 | macOS Messages.app 登录 iMessage,授予本机权限 |
| 接收协议 | macOS 原生 Messages.app(不依赖 BlueBubbles) |
⚠️ 坑:首版仅支持文本私聊;不支持文件、图片、附件回传;每个 macOS 用户账户使用一个本机 iMessage 身份。
4.2 通用配置项
每个机器人独立配置以下内容:
机器人别名 → 仅本地显示名,不影响渠道端
机器人工作区 → 每个机器人独立,默认为 ~/.dsh/im
模型 → 每个机器人可选,优先级:机器人设置 > Host 默认
思考强度 → 取决于所选模型支持档位
Agent Preset → 每个机器人可选,未选则跟随 Host
上下文增强 → 开启后从机器人会话中提取信息注入 Harness
切换模型后需先发 /new 再发普通消息才会用新模型创建会话。
4.3 消息补发机制
收到"等待模型回复超时"后,插件会自动继续检查原任务,完成后向原聊天补发最终文字。插件重启或连接恢复后也会继续检查。/stop 只停止当前回合。⚠️ 注意:补发不重放工具调用、审批流程。
4.4 文件回传
除 iMessage 外所有内置渠道均支持文件回传(图片优先以原生图片消息发送,被拒绝时回退为文件附件)。⚠️ 各渠道文件大小限制以平台接口返回为准,插件本身不设额外上限。图片自动缩压到单张 5 MB、总计 20 MB 以内(可在「通用设置 → 附件」调整)。
§5 典型适用场景
- 企业内部 AI 助手:通过企业微信或钉钉机器人,为团队提供本地 DeepSeek 模型的企业级 AI 问答,支持流式回复和文件上传。
- 多平台 AI 客服:一次配置,同时在飞书、微信、Telegram、Discord 等多个平台提供 AI 客服,后端共享同一个 Harness 实例。
- 个人 AI 办公流:用飞书/Telegram 机器人对接本地 DeepSeek,实现任务管理、知识库查询等技能,适合不习惯 Web 界面的用户。
- AI + iMessage 实验:macOS 用户可将本地 AI 模型接入 iMessage,低成本测试对话效果(仅文本)。
§6 坑与注意
- ⚠️ Matrix 加密不等于生产级安全:当前 Matrix 加密是 optional/required 两种模式,密钥备份、交互式设备验证、媒体加密均未实现,请勿用于传输敏感信息。
- ⚠️ 微信文件回传依赖腾讯接口:插件不保证微信原生文件消息的发送成功,平台返回失败时不自动降级。
- ⚠️ 飞书/Telegram 代理配置繁琐:需要分别在 SDK HTTP 层和 Node.js 长连接层配置代理,缺一不可,且长连接不支持
ALL_PROXY/NO_PROXY。 - ⚠️ AI Office Connector 为付费功能:该功能需要 DeepSeek 官方价值 ¥1,000 的 Token 赞助,README 未明确免费额度。
- ⚠️ DeepSeek Harness 强依赖:本插件是 Harness 专用插件,无法直接对接 OpenAI Assistant API、Claude 等其他 AI 平台(如后续无社区适配)。
- ⚠️ 未声明开源许可证:README 未提及许可证类型,生产使用前需确认法律风险。
- ⚠️ 企业微信自建应用配置复杂:需要同时在插件填入企业 ID、AgentId、Secret、Token、EncodingAESKey,配置错误时静默失败,不易排查。
§7 与同类对比
| 工具 | 支持 AI 平台 | 渠道数 | 许可证 | 特点 |
|---|---|---|---|---|
| DSH-IM | DeepSeek Harness(专用) | 11 个 | ⚠️ 未声明 | Workspace 隔离强,流式回复完整 |
| Botimize | 通用意图分析 | 5 个(Slack/FB/Line/Kik/Telegram) | MIT | 开源但已停止维护 |
| Wechaty | 通用意图接入 | 6+ 个 | Apache-2.0 | 通用框架,配置复杂度高 |
| QQBot | 通用 | 1 个(QQ) | ⚠️ 不明 | 单一渠道 |
核心差异:DSH-IM 专为 DeepSeek Harness 设计,与 Harness 的 Workspace/Agent Preset/模型管理深度集成,其他工具无法直接复用这一套配置体系。
§8 一句话结论
如果已有 DeepSeek Harness 且需要在飞书/微信/Telegram 等 IM 平台快速部署 AI 机器人,DSH-IM 是目前支持渠道最广、配置最统一的开源方案;使用前需确认许可证,并注意 Matrix 加密和微信文件回传的局限性。