DeepSHPlugins
dsh-im-bridge 项目预览
GITHUB / COMMUNITY PROJECT

dsh-im-bridge

工具与集成TypeScript

微信(iLink)双向桥:turn 完成/批准请求推送、聊天内批准与消息注入、持久去重与长回复收敛分段;通道层为多 IM 预留。

9 StarsBiBoyang 更新时间 2026-08-13
访问 GitHub 仓库
dsh-im-bridge 项目预览

项目介绍

中文

微信(iLink)双向桥:turn 完成/批准请求推送、聊天内批准与消息注入、持久去重与长回复收敛分段;通道层为多 IM 预留。

English

Two-way WeChat (iLink) bridge: turn-end and approval-request push, in-chat approve/reject and message injection, persistent dedup and convergent long-reply chunking; channel layer extensible to other IMs.

项目信息与收录信号

快照 2026-09-11
作者 / 组织
BiBoyang
仓库
BiBoyang/dsh-im-bridge
GitHub Stars
9
Forks
0
开发语言
TypeScript
许可证
未记录
最近推送
2026-08-13
Manifest
数据中检测到声明

公开仓库不自动等于可商用;许可证与当前兼容性以原项目文档为准。Manifest 和数据评分不构成安装安全认证。

数据评分

71/ 100
维护活跃
80
文档与实用信息
99
生态关注度
29
安装便捷信号
100
项目声明信号
80

README 含完整安装与使用说明;关注度尚低(9);标准命令一键安装。

评分来自已有数据快照的五维模型,仅作浏览参考,不是实际使用评测或安全检测结论。

安装与使用

所有项目资料与许可均以对应 GitHub 仓库为准。

dsh plugin --profile web add github:BiBoyang/dsh-im-bridge

复制命令不会自动执行。请先阅读仓库文档,确认环境要求与许可证。

项目截图

仓库 README

GitHub 原文

已保存的仓库文档快照;文档抓取时间未记录,可能与上方目录介绍处于不同版本。安装前请核对当前仓库说明。

dsh-im-bridge

DSH(DeepSeek Harness)插件:把 DSH 桥接到 IM。v0.1 先落地微信(iLink 通道),架构上通道层(src/ilink.ts 协议客户端)与桥接层(src/index.ts 事件/批准/注入)分离,后续按同样模式接钉钉、飞书、Telegram。

当前(微信通道)能力:在电脑上跑长任务,离开后用微信远程监控、批准、追加指令。

  • DSH → 微信:turn 完成 / 出错 / 被阻塞、批准请求(含工具名与原因)实时推送
  • 微信 → DSH:回复文本注入绑定会话;回复「批准 / 拒绝」应答 pending approval;/bind <session> 切换绑定会话
  • iLink 扫码登录,单用户白名单,消息去重、长回复分段、.. / !! / 超时合并

差异化:为什么又一个微信桥

IM 桥方向已有一批竞品(dsh-chatnode-wechat、dsh2wechat、dsh-wechat-notify 等)。本插件不抢"先做出来",而是把一个生产级微信 bot(AMClaw,Rust)在微信通道上踩过的坑完整移植到 DSH 插件形态:

  • 消息去重是持久的:iLink 的轮询 cursor 不落盘,重启后全靠去重防重复回复。本插件用持久化去重表(跨重启有效)+ 内存 FIFO 双层判重,而不是只在内存里记 msg_id。
  • 长回复分段是收敛的:微信单条消息有长度限制,按 1200 字符(Unicode 码点)拆分,分段前缀 (i/n) 的长度参与递归收敛,不会出"第 3/2 段";某段发送失败即停后续段并持久化补发队列,避免乱序。
  • .. / !! / 超时合并:手机输入长指令天然分多条发。.. 后缀=还有后续先别回,!! 后缀=说完了立即提交,裸文本进 5 秒合并窗口。缓冲会话每次写入即快照落盘,进程崩溃重启后自动恢复并 flush。
  • context_token 缓存:iLink 回复必须携带该用户最近的 context_token,双层缓存(内存 + 落盘)保证重启后仍能回复。
  • 协议层容错:iLink 响应字段全部多候选 fallback(qrcode/cursor/msgs/message_id),异构消息宽松解析、单条失败跳过不炸整个轮询;登录确认后支持服务端下发的新 baseurl 运行时切换。
  • 安全默认:approval 应答强制校验白名单 user_id + pending approval id 一一对应;微信消息只能进会话流,不能直接执行任意 shell。

安装

dsh plugin --profile web add <本仓库目录>
# headless profile 需单独安装:
dsh plugin --profile headless add <本仓库目录>

使用

  1. 启动 DSH Web 后查看日志获取微信扫码链接,手机扫码完成登录
  2. 扫码确认的用户自动成为白名单用户(也可在配置里显式指定 allowedUserId)
  3. 微信里发消息即注入当前绑定会话;/bind <session-id> 切换;/status 查看状态
  4. agent 请求批准时收到推送,回复「批准」或「拒绝」

配置

在 profile 的 cordis.patch.yml 行上加 config 字段:

字段默认说明
allowedUserId空白名单微信用户 id;空时首个扫码确认的用户自动绑定
mergeTimeoutSecs5消息合并窗口
chunkMaxChars1200分段长度(字符)
pollTimeoutSecs70iLink 长轮询超时

安全红线

  • 微信通道等于绕过本机批准体系:approval 应答必须来自白名单 user_id 且对应真实的 pending approval id
  • token 不落库;不打印聊天内容明文以外的任何东西
  • 微信来的消息只能进会话流(source.kind = 'plugin'),不能直接执行任意 shell

开发命令

pnpm install
pnpm build     # tsc,产物在 lib/(提交入库,git 安装不跑构建)
pnpm test      # vitest

改完代码必须 pnpm build 并重启 DSH Web 才生效(ESM 缓存)。

使用前核对

安装步骤、兼容版本与授权范围以原项目当前文档为准。Stars 和评分是快照中的导航信号。

安装与排错 · 项目问题反馈

同类项目