dsh-im README

The project's README from github.com/xmanrui/dsh-im. As one markdown file: README.md.

DSH-IM — Connecting DeepSeek Harness   DSH-IM phone logo


让 DeepSeek Harness 触手可及

Connecting DeepSeek Harness

滑动变祖器:今天是梁子或今天是梁圣(随机) MIT 许可证 DeepSeek Harness dshfind dshfind: 分类第一 dshfind downloads

微信 飞书 钉钉 企业微信 QQ Slack Telegram Discord WhatsApp

简体中文 · English


简介

通过扫码、App Manifest 或已有机器人凭据把 IM 机器人接入 DeepSeek Harness,并让本机 Harness 主动连接公网 AI Office。一个插件、一个设置入口,统一管理内置 IM 渠道和 AI Office Connector。每个 IM 渠道都支持接入多个机器人,各机器人的连接状态、工作区、模型和会话绑定彼此独立;iMessage 是本机 Messages.app 身份接入的例外,详见iMessage 渠道说明。

Connect IM bots to DeepSeek Harness by scanning a QR code, using an App Manifest, or entering existing bot credentials, and let the local Harness connect outward to a public AI Office. One plugin and one settings entry manage the built-in IM channels and the AI Office Connector.

界面

IM 机器人页面

上下文增强页面 访问模式页面

当前内置渠道

渠道 接入方式 消息与回复
飞书 扫码创建机器人,或使用 App ID + App Secret 手动绑定 长连接接收消息;通过飞书流式卡片显示思考、工具进度和回答
微信 使用微信扫码绑定机器人 腾讯 iLink 长轮询收发消息;等待 Harness 回答时显示“正在输入”,最终回复按 1,800 字符分段发送
钉钉 扫码创建机器人,或使用 Client ID + Client Secret 手动绑定 钉钉 Stream 长连接;通过 AI Card 流式显示回答
企业微信 使用企业微信 App 扫码创建智能机器人,或使用 Bot ID + Secret 手动绑定 官方 WebSocket 长连接;原生显示“正在思考中”、工具执行进度和流式回答
企业微信应用 在企业微信管理后台创建自建应用,填写企业 ID、AgentId、Secret、Token、EncodingAESKey(可选代理地址) HTTP 回调接收;私聊支持流式回复(微信端不支持时自动改为分段文本),支持图片输入与结果文件回传;成员的微信关注该企业的微信插件后可在微信中直接使用
QQ 使用手机 QQ 扫码创建机器人,或使用 AppID + AppSecret 手动绑定 WebSocket 长连接;私聊显示“正在输入”并以单条 Markdown 回复,群聊被 @ 后只发送最终答案
Slack 使用预置 App Manifest 创建应用,再填写 Bot Token(xoxb-)和 App Token(xapp-) Socket Mode 长连接;私聊直接回复,频道被 @ 后响应,优先使用官方流式消息 API
Telegram 使用 @BotFather 生成的 Bot Token Bot API 长轮询;默认私聊直接响应、群聊被提及或回复时响应,也可为每个机器人独立启用私聊白名单安全模式;私聊通过 Rich Message Draft 流式预览并持久化最终富消息,群聊和 Topic 原位完成占位消息,平台不支持时回退为普通文字
Discord 使用 Developer Portal 生成的 Bot Token Gateway v10 长连接;私信直接回复;服务器文字/公告频道首次 @ 后创建原生 Thread,后续在线程中无需重复 @,并通过编辑消息流式显示回答
WhatsApp 使用手机 WhatsApp 扫码关联设备 WhatsApp Web 长连接;默认仅响应账号自聊,也可切换到指定联系人或开放响应模式;显示已读和“正在输入”,通过每秒编辑同一条消息显示工具进度和逐步生成的回答,长回复自动分段,编辑失败时回退为完整文字回复
iMessage 在 macOS Messages.app 中登录 iMessage,并按渠道说明授予本机权限 使用 macOS 原生 Messages.app 收发文本私聊;不依赖 BlueBubbles;每个 macOS 用户账户使用一个本机 iMessage 身份

企业微信自建应用的回调基址、代理地址和企业可信 IP 配置,见企业微信自建应用接入说明。

其他 IM 平台可继续按同一渠道适配器结构接入。

飞书群聊默认接收其他机器人明确 @ 当前机器人的消息,无需额外开关;未 @、仅 @ 其他成员或全体、机器人自身发送的消息和机器人私聊消息仍会忽略,即使群聊响应方式设为“全部”。消息仍受群聊白名单与命令权限约束。飞书应用需要租户权限 im:message.group_at_msg.include_bot:readonly(“获取群组中其他机器人和用户@当前机器人的消息”);扫码新建应用会默认申请,已有或手动绑定的应用可点击“补全权限”或私聊执行 /repair,扫码并完成飞书要求的发布审批后生效。详见飞书接收消息权限说明。

支持图片输入的内置渠道均支持把 JPEG、PNG、WebP 图片,以及以图片文件方式发送的 GIF,连同可选文字说明发送给 Harness;单张图片上限为 5 MB,单条消息中的图片总大小上限为 20 MB。iMessage 首版仅支持文本私聊,不包含在图片能力中。飞书下载用户消息中的图片或文件需要租户权限 im:message:readonly,确认页将其显示为“获取单聊、群组消息”;飞书目前没有为该下载接口提供仅限图片的更窄权限。扫码新建的应用会默认申请;已有或手动绑定的应用可私聊机器人执行 /repair,或在「IM机器人」设置页点击“补全权限”,扫码增量补全该权限、上传机器人图片或文件所需的 im:resource、原生命令面板所需的 application:app_slash_command:read / write,以及卡片回调。

超时后的结果补发

已接入的 IM 渠道共用超时任务跟踪:收到“等待模型回复超时”后,插件会继续检查原任务,完成后向原聊天或线程补发最终文字;插件重启或连接恢复后也会继续检查。/stop 只停止当前聊天提交的对应回合,切换会话后不再向该聊天补发旧会话的结果。无需新增设置,正常回复流程保持原样。

补发仍受渠道发送权限和配额限制。明确发送失败最多尝试三次;发送结果不确定时保留记录并停止自动重试,避免重复消息。此机制恢复文字结果和终态通知,不重放问题、审批或文件工具调用。详见延迟交付说明。

结果文件与图片回传

支持文件回传的内置渠道均可把 Harness 可读取的文件作为渠道原生附件回传。已有文件和当前任务新生成的文件都可以直接发送;该能力对所有已连接机器人默认可用,无需开关或机器人白名单,原有文字、图片、流式回复、命令和会话行为保持不变。iMessage 首版不支持文件或附件回传。

模型调用文件回传工具后,插件把指定文件交给当前渠道的原生接口。图片会优先以原生图片消息呈现;渠道不支持或明确拒绝图片发送时自动回退为文件附件,发送结果不确定时不会补发文件造成重复消息。插件不额外设置文件来源、创建时间、工作区边界、扩展名、内容、数量、大小或有效期规则;文件只需真实存在且可读取。渠道平台仍可能依据自身权限、配额、文件能力或账号等级拒绝发送,插件会按平台返回结果提示。

渠道 平台要求
微信 当前绑定协议和会话需支持原生文件消息,实际可发送范围以微信接口返回为准。
飞书 飞书文件上传接口要求文件非空且不超过平台 30 MB;应用需有租户权限 im:resource(“读取与上传图片或文件资源”)。内置扫码流程新建应用时默认申请该权限;已有或手动绑定的应用可通过“补全权限”或私聊 /repair 增量补全并完成飞书要求的审批。飞书开发者后台当前没有单独的 im:resource:upload 权限。
钉钉 应用需开通 qyapi_base,机器人需具备文件消息能力;实际格式和大小以当前 OAPI 与机器人能力返回为准。
企业微信 应用需具备素材上传和文件消息能力,实际可发送范围以企业微信接口返回为准。
QQ 机器人需具备文件消息能力,并受 QQ 当日文件上传配额约束;额度耗尽时会明确提示稍后重试。
Slack Bot Token 需有 files:read、files:write 和 reactions:write;实际文件大小上限由 Workspace 当前策略决定。已有 App 新增或变更 Scope 后,必须重新授权/安装 App 并重新连接机器人。
Telegram 机器人必须能在当前聊天发送文档,实际可发送范围以 Bot API 返回为准。
Discord Developer Portal 的 Bot 设置中需启用 Message Content Intent;机器人需有 Send Messages、Create Public Threads、Send Messages in Threads 和 Read Message History 权限;发送结果文件还需 Attach Files。实际附件额度由当前账号与服务器能力决定。
WhatsApp 当前绑定会话需支持 Document Message,实际可发送范围以 WhatsApp/Baileys 返回为准。

AI Office Connector

查看 AI Office Connector 说明

安装

推荐从 npm 安装已发布的稳定版本:

dsh plugin --profile web add -w @xmanrui/dsh-im

重启 dsh web、刷新浏览器,然后打开「设置 → IM机器人」。IM机器人使用 order: 21,尽量排在一级设置菜单的「Agent 预设」之后;插件页面不再保留旧入口。从旧版升级不会改变已有机器人、凭据、工作区、Agent Preset 或会话绑定。

本机 dsh web 和 DSH Desktop 默认直接复用当前 Host 的内部服务:旧版 Harness 使用 apiProxy,新版 Harness 自动使用 Typert Gateway、Session Controller 和 Workspace Controller,不需要配置 Harness 地址,也不绕行本机 HTTP 端口。Desktop 的兼容模式、扩展窗口和增强模式均无需开启“允许在浏览器中打开”或局域网访问。渠道配置中显式设置的 harnessBaseUrl 仅保留给旧版远程 HTTP/WebSocket Harness;内部调用失败不会自动改连其他 Host。

如需试用尚未发布到 npm 的最新代码,可以改用 GitHub 源安装器:

npx -y github:xmanrui/dsh-im install

GitHub 源安装会直接拉取并构建 Git 依赖;pnpm 10 及以上版本可能要求先在 profile 的 pnpm-workspace.yaml 中允许该依赖执行构建脚本。普通用户建议优先使用 npm 稳定版。

安装后,在对应渠道页面按照内置引导完成扫码或凭据配置。所有 Secret 和 Token 只提交给本机 Harness Host,并写入受保护的凭据存储;状态接口和机器人列表不会回传这些凭据。

如果本机必须通过正向代理访问飞书,请在启动 dsh web 前把 HTTPS_PROXY 设置为包含协议的 HTTP 代理 URL(例如 http://proxy:8080;也支持小写 https_proxy,并兼容使用 HTTP_PROXY 作为回退),修改后重启 Host。飞书注册和凭据验证会复用 SDK 的代理感知 HTTP 客户端,消息长连接会显式通过这个代理建立 WebSocket;长连接目前不读取 ALL_PROXY 或 NO_PROXY。

如果本机无法直连 Telegram Bot API,请使用 Node.js 22.21 或更高版本,并在启动 dsh web 前启用 Node 的环境变量代理支持:

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。绑定 Telegram Bot Token 时,如果页面提示无法访问 Bot API,请优先检查代理地址、Node.js 版本和 NO_PROXY 配置。

默认行为 说明
机器人别名 点击机器人名称旁的铅笔设置别名,保存后立即显示,无需重启或重连。原名称始终保留,可点击“恢复原名称”或清空别名后保存;仅影响本机设置页中的显示名称。
机器人工作区 每个机器人独立保存工作区。新机器人默认使用 Host 当时的工作目录;之后可在机器人卡片中修改。
模型 每个 IM 渠道的每个机器人都可在工作区下方独立选择模型;未选择时跟随 Host 默认。切换只影响之后新建的会话;当前聊天先发送 /new,再发送普通消息才会使用新选择。
思考强度 在模型下方显式选择该模型支持的思考强度,或跟随模型默认。档位、说明和默认值来自 DSH;切换模型后恢复新模型默认强度。每个机器人独立保存,只影响之后新建的会话。
Agent Preset 每个机器人可在设置页卡片中选择 Agent Preset。未选择时跟随 Host 的 agent-presets.default;渠道级 config.agentPreset 只作为该渠道之后新接入机器人的默认值。切换不会修改或清空已有会话;若当前聊天已有会话,需先发送 /new,再发送一条普通消息,才会按新选择创建会话。
上下文增强 从机器人卡片打开设置,分别决定群聊、私聊是否增强;两个开关默认均关闭,旧机器人升级后也不会自动开启。
会话渠道标识 本机 Host 的 IM 渠道与 AI Office 会话自动标记来源。Web 会话列表和搜索结果将「微信 ·」等前缀显示为渠道 Logo;保留 DSH 原有的自动标题生成与更新。已有会话在下次加载时补上。

渠道前缀在 DSH 生成标题后追加,完整保留原始标题与自动/手动来源,不会将自动标题锁定为手动命名,也不会额外调用模型。重复生成、刷新或重启不会叠加前缀;真实的手动命名仍遵循 DSH 原有的锁定规则。此功能由当前 Host 的会话事件驱动,显式连接远程 harnessBaseUrl 时需在目标 Host 上安装该插件。

Logo 由 dsh-im 的浏览器适配显示,无需修改 DSH。适配保留原始文字节点和点击、菜单、拖拽操作;复制、读屏及其他界面仍保留文字渠道名。DSH 页面结构不匹配、浏览器不支持或图标加载失败时,自动保留文字前缀;插件卸载后恢复原始显示。

主动投递

支持主动投递的 IM 渠道可以使用稳定的 botId + targetId 主动发送文字消息。机器人设置页支持从已聊会话选择或手工填写目标、保存前测试当前路由,�

dsh-im (xmanrui/dsh-im)

dsh
Searching Database…

2.1K ·GitHub
What is this?dsh-im is a plugin that connects IM bots to DeepSeek Harness (DSH), letting you talk to your DSH agent through 9 built-in messaging channels: Feishu, WeChat, DingTalk, WeCom, QQ, Slack, Telegram, Discord and WhatsApp, plus iMessage on macOS.
Is this a standalone bot app or does it need DeepSeek Harness?It is a plugin that runs inside DeepSeek Harness (DSH) and adds one settings page that manages all built-in IM channels and the AI Office Connector; it is not something you run on its own.
How do I install and connect a bot?Install the published stable package from npm, restart dsh web, then open Settings -> IM Bots and follow the built-in flow for the channel you want: most channels (Feishu, WeChat, DingTalk, WeCom, QQ, WhatsApp) are set up by scanning a QR code, while Slack, Telegram and Discord are connected by pasting a Bot Token generated on their developer portals.
Do I need a DeepSeek Harness instance already running?Yes, dsh-im is an add-on for an existing dsh web or DSH Desktop installation and requires Node.js 22.19 or newer; it reuses the Harness's internal services instead of needing a separate connection address.
Any approval or permission pitfalls to expect?Some channels need extra approval beyond just connecting a bot: Feishu requires specific tenant permissions (like reading group @-mentions and file resources) that must go through Feishu's own publish approval, and Slack requires re-authorizing the app if you later add file-related scopes.
Does this work on Windows and Linux, or do I need a Mac?All the messaging channels except iMessage run cross-platform on Node.js; only the iMessage channel is an exception and requires running on macOS with Messages.app signed in.
Can I send and receive images or files through these channels?Most channels can forward JPEG/PNG/WebP images (up to 5MB each, 20MB per message) to Harness and return generated files as native attachments; iMessage's first version is text-only and does not support images or files.
Can one channel run several bots at the same time?Yes, every IM channel supports multiple bots simultaneously, and each bot keeps its own independent connection state, workspace, model, thinking level, Agent Preset and session bindings.
What happens if DeepSeek Harness takes too long to answer?The plugin tracks timed-out tasks and automatically resends the final text reply to the original chat once the answer finishes, even after a restart, though it only retries a failed send up to three times and never replays the original question.
What is the AI Office Connector mentioned alongside the IM channels?It is a companion feature managed from the same settings page that lets your local Harness proactively connect outward to a public AI Office, rather than only receiving messages from the built-in IM channels.
Creator
xmanrui
Size
213.8 MB
Stars
2.1K
Age
2mo
Commits · 90 Days