跳到主内容

dsh-im-gateway

32Star2Fork1Issue0Watching

把 dsh agent 接入 25+ 聊天渠道:微信/飞书/钉钉/QQ/Telegram/Discord/Slack 等,统一会话路由、远程审批、交互提问桥与聊天级定时提醒。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
main
deepseekdeepseek-harnessdeepseek-harness-plugindshdsh-plugindsh-plugin-marketdsh-pluginsgateway

安装

命令web profile
$ dsh plugin --profile web add dsh-im-gateway

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

对话式安装

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

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

一句话定位

dsh-im-gateway 把 DeepSeek Harness 接入你常用的聊天软件:微信、飞书、钉钉、企业微信、QQ、Telegram、Discord、Slack 等 25 个渠道都变成 dsh agent 的前端通道,在聊天里发消息就能驱动 agent 处理代码与办公任务,agent 的回复也会实时推回聊天。

核心能力

  • 25 个聊天渠道接入:覆盖国内(微信/飞书/钉钉/企业微信/QQ)、海外(WhatsApp/Telegram/Discord/Slack/Signal/LINE/Matrix/Mattermost/IRC/Twitch/Nostr/Nextcloud/Synology/Zalo/Teams/Google Chat)和 Apple 生态(iMessage)共 25 个渠道
  • 统一会话路由:每个聊天窗口对应独立 agent 会话,支持 per-chat/bound 两种模式、/new /sessions /continue /bind /unbind 等命令,重启后自动恢复上次绑定
  • 远程审批与交互提问:工具批准请求推到聊天,回「批准/拒绝」即可;agent 调用 ask_user_question 时问题同步到所有绑定渠道,第一份有效答案生效
  • 聊天级定时提醒:定时任务绑在 chatId 上而非会话,支持一次性/每天/按星期与 IANA 时区,状态落盘重启自动恢复
  • 微信扫码登录与官方扫码接入:微信/WhatsApp 走手机关联设备;飞书/QQ/钉钉/企业微信支持官方 SDK 扫码一键创建机器人,自动落盘凭据
  • 访问控制与白名单:默认放行所有用户;可改为按渠道白名单,未授权用户首次发消息在设置面板一键批准

技术实现

  • 语言: TypeScript(ESM,tsc 编译到 lib/,main 指向 lib/index.js)
  • 关键依赖: @deepseek-ai/cordis(宿主插件框架)、@deepseek-ai/schemastery(配置 Schema)、qrcode(本机生成二维码 data URL);可选依赖按渠道动态引入,如 @larksuiteoapi/node-sdk / @tencent-connect/qqbot-connector / @wecom/aibot-node-sdk / @whiskeysockets/baileys / dingtalk-stream
  • 架构模式: Cordis bundle 插件(cordis.patch.yml 通过 insert 把 im-gateway 注入 profile 组合层),inject = ['agents','jobs','tools','attachments','webServer','sessionQuery','agentPresets','userQuestions','workspaceRegistry'];通过 ctx.effect 注册定时器和 Web GUI HTTP API(/dsh-im-gateway/api/*),所有凭据与状态落到 $DSH_HOME/dsh-im-gateway/(默认 ~/.dsh/dsh-im-gateway/)
  • 入口文件: src/index.ts(Cordis 插件入口 + Schemastery Config 声明);每个渠道独立 src/channels/<name>.ts 实现 ChannelAdapter 契约(src/core/types.ts:46-74)

适用场景

适合想在常用 IM 里跟 DeepSeek Harness 交互、让 agent 帮忙读代码、跑命令、写文件的用户:日常不用打开 web 控制台,直接在聊天框发消息即可。团队或小工作室可在群聊里把 agent 当助理,每个人的对话上下文彼此隔离;管理员也能用远程审批、提问桥、定时提醒等把 agent 嵌进已有的协作流。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness0.1.0-rc.6+peerDependencies 锁 @deepseek-ai/dsh-agent / dsh-agent-presets / dsh-attachment / dsh-host-webserver / dsh-jobs / dsh-llm / dsh-session / dsh-session-query / dsh-tools / dsh-user-approval / dsh-user-questions / cordis@^4.0.1 / schemastery@^3.18.1
Node.js未声明package.json 没有 engines 字段;devDependencies 含 @types/node ^22.10.0,实际运行需支持 AbortSignal.timeout、fetch 等内置 API
平台macOS / Windows / LinuxiMessage 渠道仅 macOS 可用(src/channels/imessage.ts:37 用 osascript+imsg 桥);其余渠道跨平台
原生模块无仅依赖 Node 内置 fs/crypto/http/path,不引入 node-pty / sqlite 等原生绑定
可选渠道 SDK—WhatsApp 需 npm i @whiskeysockets/baileys;Nostr 需 @noble/curves(dev 已有,正式依赖可选);飞书/QQ/钉钉/企业微信 SDK 已纳入 optionalDependencies,未装时会提示安装

安装方式

dsh plugin --profile web add github:zhuiyueya/dsh-im-gateway

配置项

插件通过 Schemastery Schema(src/index.ts:48)声明字段。下表「说明」列写人话:默认值已能跑通普通场景,普通用户无需调整,需要管控或多账号时再改。

配置类型说明默认值
channels字典各渠道凭据(token/appId/appSecret 等),未配置的渠道保持关闭{}
sessionMode字符串会话模式:per-chat 每聊天一个会话 / bound 绑定现有会话per-chat
cwd字符串agent 默认工作目录进程当前目录
provider字符串agent 默认 LLM 提供商deepseek-official
model字符串agent 默认模型deepseek-v4-flash
agentPreset字符串创建会话时挂入的 agent preset(决定可用工具集)standard
allowAllUsers布尔是否放行所有用户(关闭后走白名单)true
allowedUserIds字典按渠道白名单:{ channelId: [userId,...] },* 键表示任意渠道{}
mergeTimeoutSecs数字手机多段输入的合并窗口(秒)5
longInputAckChars数字输入字符超过该数先回「收到,处理中」180
approvalTimeoutSecs数字远程审批超时(秒),超时回退到本机审批120
questionTimeoutSecs数字ask_user_question 在 IM 侧的回答窗口(秒),超时仅停止 IM 等待600
summaryOnTurnEnd布尔每轮结束是否推送摘要到聊天true
cronTickIntervalSecs数字im_cron 定时器扫描间隔(秒)30
cronMaxConcurrent数字im_cron 同时执行的 task 任务数上限(remind 不受限)2
cronCatchUp布尔网关错过触发时刻是否补跑最近一次false
stateDir字符串状态/登录文件落盘目录$DSH_HOME/dsh-im-gateway(默认 ~/.dsh/dsh-im-gateway)

各渠道独立的字段(如 channels.telegram.token、channels.feishu.appId 等)见 src/core/types.ts:86-114;连接方式上 微信 / WhatsApp 是扫码绑定,飞书 / 钉钉 / 企业微信 / QQ 支持官方扫码一键创建或手动填凭据,Telegram / Discord / Slack / LINE / Matrix / Mattermost / IRC / Twitch / Signal / Nostr / Nextcloud / Synology / Zalo / Teams / Google Chat 走凭据表单,iMessage 在 macOS 上开关即用。

常见问题

Q: 安装后从哪里开始?

A: 重启 dsh web,打开「设置 ⚙️ → 🐋 IM 网关」面板;点击任意渠道卡片即可扫码或填凭据接入,无需再次重启。微信/WhatsApp 用手机扫码关联设备,飞书/QQ/钉钉/企业微信支持官方扫码一键创建机器人,其它渠道按需填 token 即可。

Q: 不同聊天之间上下文会互相串吗?

A: 默认「per-chat」模式下每个聊天窗口对应独立 agent 会话;可发 /new 开新会话、/sessions 列出当前工作区会话、/continue 跨会话续接,或切到 bound 模式用 /bind 绑定一个本机现有 live 会话。

Q: 怎么让某个用户能驱动 agent?

A: 默认 allowAllUsers=true 全部放行。需要管控时在设置面板或 cordis.patch.yml 里把 allowAllUsers 改为 false,并通过「设置 → IM 网关 → 待授权请求」一键批准新用户,或在 allowedUserIds 配置按渠道白名单。

Q: 工具需要批准时怎么应答?

A: agent 触发工具批准时会把请求推送到对应聊天,直接回复「批准/拒绝/yes/no/同意」即可;超过 approvalTimeoutSecs(默认 120 秒)会自动回退到本机批准体系。

Q: 手机端怎么把长消息分多次发?

A: 在 IM 里逐段发送,结尾加「..」表示还没说完,5 秒合并窗口内(可调 mergeTimeoutSecs)会拼成一段发往 agent;想立即提交就以「!!」结尾,崩溃或断网后未发送的缓冲区也能恢复。

Q: 微信聊天登录态会丢吗?

A: 微信 iLink 登录态(bot_token)会持久化到 $DSH_HOME/dsh-im-gateway/wechat-state.json,重启后自动跳过扫码直接轮询;只有连续 3 次 token 失效才会清除登录态要求重新扫码,建议使用专用小号。

Q: 定时提醒是绑在聊天还是会话上?

A: 绑在聊天(chatId)上,与会话轮换无关。在聊天里说「每天 9 点提醒我喝水」,agent 会创建 im_cron 任务;即使 /new 切换会话,定时也会按时推回同一个聊天,支持一次性/每天/按星期与 IANA 时区。

Q: 可以中途撤回某个渠道的连接吗?

A: 「断开」只是停止运行态并保留配置,重启 dsh 后会自动恢复;「删除配置」才会清空凭据与白名单,之后需要重新接入。

上手难度

入门 — 扫码或填 token 即可接入主流渠道;进阶用户可调整会话模式、白名单、合并/审批/定时阈值,深度定制则按 ChannelAdapter 契约(src/core/types.ts:46)新增渠道。

已知问题与限制

  • 部分渠道仅提供骨架(src/channels/stubs.ts):Tlon(Urbit)、腾讯元宝、Twilio 语音电话三个渠道目前仅有占位实现,v0.1 未实现收发,启动后状态停留在「骨架(未实现)」
  • 实验性渠道需专用基础设施:Microsoft Teams 需 Azure Bot Framework 注册;Google Chat 接收需公网 webhook;Nextcloud Talk 与 Zalo 标注「实验性」,文档与凭据流程可能变化
  • iMessage 仅支持 macOS(src/channels/imessage.ts:37 用 osascript 发送,接收依赖本机 imsg 子进程,未配置时只能发不能收)
  • 微信 iLink 协议仅支持私聊且需专用小号(src/channels/wechat.ts:8);一个账号一个 poller,群聊不响应
  • 微信登录态仅在连续 3 次 token 失效(errcode -14)后才清除,长时间断网重连可能需要手动重新扫码
  • 配置覆盖优先级:$DSH_HOME/dsh-im-gateway/channels.json(UI 写入)> cordis.patch.yml 中 channels 字段;手改配置后建议重启 dsh 让 initAll 重新加载
  • 二维码只在本机 Host 内生成 data URL,不经过第三方二维码服务(README.md 引用 docs/qr-login-matrix.md),但要求 Node ≥ 18 的 fetch/AbortSignal.timeout 支持

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

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/zhuiyueya/dsh-im-gateway)

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

返回插件目录