前言¶
DSH(DeepSeek Harness)的理念是「一切皆插件」,Agent 跑在本机上处理代码、文件和各种自动化任务。麻烦在于,这些任务往往不是几秒钟能结束的:跑一轮测试、批处理一批文件,期间你得守在终端前才能看到进展;如果 Agent 中途发起权限确认,人也必须在场。
用 SSH 或远程桌面连回机器能解决「能操作」,但体验割裂——在小屏幕上敲命令、翻会话,都不如日常聊天来得自然。
下面介绍的 @lanbaolu/dsh-wechat-bridge 走的是另一条路:它把微信接进 DSH。扫码绑定个人微信后,在微信里就能和本机 Agent 对话、收发文件、接收任务通知、完成权限审批。
插件概况¶
这个插件由 lanbaolu 维护,当前版本 0.9.0,MIT 许可证。微信协议层移植自 wechat-claude-code(iLink Bot 协议);DSH 侧以 Host 插件实现,同时提供模型工具(CLI/Headless 可用)与 Web 管理面板(Web/桌面可用)两个管理入口。
三端通用:Windows / macOS / Linux 的守护进程都用纯 Node.js 进程管理,不依赖 launchd / systemd / Windows Service。
整体链路是:桥接守护进程处理微信协议,通过只监听 127.0.0.1、带随机 token 鉴权的 HTTP + SSE 与 DSH Host Plugin 通信,再由后者创建或恢复 DSH Agent。
微信 App ←→ iLink Bot API ←→ bridge daemon (Node.js)
│ HTTP + SSE (127.0.0.1, token 鉴权)
▼
DSH Host Plugin
│ ctx.agents.create/resume + followup
▼
DSH Agent (本机 LLM + 工具)
仓库代码分三部分:src/bridge/ 是微信协议层与桥接守护进程,src/index.ts 是 DSH Host 插件(内部 API、Agent 生命周期、守护进程管理、模型工具),src/client/index.ts 是 Web 管理面板(经 settings.section 槽位注册)。
下面分节展开功能。
对话与会话延续¶
微信扫码绑定个人微信后,在微信里直接与 DSH 本机 Agent 对话。每个微信账号对应一个 DSH 会话,DSH Host 重启后会自动 resume 原持久化会话,上下文不断档;/clear、/new、/stop、/cwd、/model、/prompt 等斜杠命令可在微信内使用,完整列表见下文。
流式回复、超时安抚与防卡死¶
DSH Agent 的 assistant/chunk 输出通过本地 SSE 推送到微信,攒批聚合发送,长回复不会刷屏。
当 DSH 超过 5 分钟没有输出时,桥接会自动发一条「还在处理」的消息,避免你误以为它卡住了。这个行为可以配置,见后文「超时安抚」。
防卡死方面,桥接会向微信会话自动注入通道约束提示词,禁用浏览器端的交互式选项工具(手机上看不到,会永久阻塞),改用纯文本编号选项。
主动通知与微信内审批¶
Agent 可以通过 wechat_notify 工具,在任务完成、失败或需要确认时主动推送微信。通知内置节流:每小时最多 6 条、每日最多 50 条,超限排队延迟发送,以规避个人号风控。
Agent 请求权限时,桥接会把审批消息推到微信:回复 /yes 批准、/no 拒绝,超时自动拒绝(fail-closed)。只有绑定账号本人可以裁决,且不影响桌面 GUI 会话。
文件与媒体双向¶
媒体收发能力(截至 0.9.0 版本):
| 方向 | 文本 | 图片 | 语音 | 文件 | 视频 |
|---|---|---|---|---|---|
| 微信 → DSH | 支持 | 支持,CDN 下载 + 解密落盘 | 支持,转写为文本 | 支持,下载落盘交给 agent | 支持,CDN 下载落盘交给 agent |
| DSH → 微信 | 支持,攒批聚合发送 | 支持,按扩展名路由直发 | 不支持 | 支持,回复提及自动推送 | 支持,按扩展名路由直发(mp4/mov/webm/mkv/avi) |
两点补充:
- 视频收发于 2026-08-29 补齐,2026-08-30 完成真机收发抽验。
- 语音出站(DSH → 微信)暂不支持,协议尚无公开实现参考。
另外,DSH 回复中提到的本地文件会自动推回微信;微信里也可以直接发图片、文件给 DSH。
消息队列与多用户¶
处理中收到的普通消息会排队,等当前任务结束后继续处理。多用户场景下按用户独立排队,A 的长任务不会阻塞 B。
多用户支持基于信任集加 per-user 会话:每个受信用户拥有独立的 DSH 会话、上下文、消息队列和审批归属,互不可见;信任集可控、可吊销。细节见「安全模型」一节。
安装与启用¶
安装¶
三种安装方式,任选其一。
方式一,npm 一键安装(推荐):
npm install @lanbaolu/dsh-wechat-bridge
dsh plugin --profile web add @lanbaolu/dsh-wechat-bridge
dsh web
第一条命令安装包,第二条把插件注册进 DSH 的 web profile,第三条启动 Web 界面。
方式二,本地路径安装(开发/个人使用):
git clone https://github.com/lanbaolu/dsh-wechat-bridge.git
dsh plugin --profile web add /path/to/dsh-wechat-bridge
dsh web
开发模式下还可以用超级注入器:
dev_inject_plugin /path/to/dsh-wechat-bridge
方式三,从源码运行:
npm install
npm run build
npm run build:client
npm run typecheck
运行时要求 Node.js >= 18;注意 build:client 脚本使用 tsdown,需要 Node.js 22.18+ 或 24.11+(CI 用 22/24 验证)。
扫码绑定与启动¶
推荐在 DSH Web 设置页完成:
- 打开 Settings,进入「微信桥接」区块。
- 填写 DSH 工作目录。
- 点击「扫码绑定」,用微信扫描页面上的二维码。
- 绑定成功后点击「启动」。
也可以在 DSH 所在机器的终端执行:
node lib/bridge/main.js setup
按提示用微信扫码,完成后选择 DSH 工作目录。
守护进程管理¶
守护进程的启动 / 停止 / 重启 / 状态 / 日志全部由 DSH 插件管理,两条路径:
- 模型工具:在 DSH 对话中让模型执行
wechat_bridge_start、wechat_bridge_status、wechat_bridge_logs、wechat_bridge_stop; - Web 面板:在设置页「微信桥接」区块点击启动 / 停止 / 重启。
经过上面的步骤,微信端和 DSH 端的通道就通了,日常操作都可以在微信里完成。
微信端常用命令¶
| 命令 | 说明 |
|---|---|
/help |
显示帮助 |
/clear |
清除当前 DSH 会话 |
/new |
开启全新会话(等价 /clear) |
/stop |
停止当前任务并清空排队消息 |
/status |
查看会话状态 |
/cwd [路径] |
查看 / 切换工作目录 |
/model [名称] |
查看 / 切换模型 |
/prompt [内容] |
查看 / 设置系统提示词 |
/history [数量] |
查看最近对话 |
/send <路径> |
发送本地文件到微信 |
/trust <userId> [备注] |
添加信任用户(manual 模式;仅 owner) |
/distrust <userId> |
吊销信任用户(仅 owner) |
/trustlist |
查看信任集(仅 owner) |
/trustmode [模式] |
查看/切换信任模式(owner-only / bootstrap / manual) |
可选配置¶
插件数据目录默认在 ~/.dsh/wechat-bridge/,可通过 DSH_HOME 环境变量调整。下面两项配置都在该目录下的 config.json 中编辑。
超时安抚¶
DSH 长时间没有产出时,桥接会主动发「还在处理」的消息(默认静默 5 分钟后触发)。如果嫌频繁或想自定义文案,编辑 config.json 的 calm 节:
{
"calm": {
"enabled": true, // 是否启用安抚,默认 true
"silenceMs": 600000, // 首次静默多久后安抚(毫秒),默认 300000(5 分钟)
"intervalMs": 900000, // 两次安抚最小间隔(毫秒),默认同 silenceMs
"maxCount": 3, // 每轮任务最多安抚次数,0/省略 = 不限制
"messages": [ // 自定义文案(随机取一条),留空用内置默认
"还在处理中,这个问题有点复杂,请再稍等一下",
"马上就好,正在收尾"
]
}
}
保存后即时生效(最长延迟数秒),无需重启守护进程。也可以在 Web 面板的「超时安抚」区块调整。
防休眠¶
默认关闭。开启后,守护进程运行期间会抑制系统休眠——锁屏 / 合盖不挂起,微信消息持续响应,适合挂机跑长任务。编辑 config.json:
{
"preventSleep": true
}
也可以用 Web 面板的「防休眠」开关。切换后需重启守护进程生效,在面板点「重启」即可。平台实现:macOS 用 caffeinate,Linux 用 systemd-inhibit,Windows 用 SetThreadExecutionState,均为尽力而为。
安全模型¶
先明确一个前提:iLink 协议的扫码绑定是 bot 自身登录(不是与用户配对),所以「多用户」的边界是在协议层之上划定的——把可信微信用户的 from_user_id 加进信任集,据此放行或拒绝入站消息。
信任有三种模式,默认 fail-closed:
| 模式 | 行为 | 适用 |
|---|---|---|
owner-only(默认) |
只认绑定账号 owner 本人,陌生人一律拒绝 | 单用户 |
bootstrap |
首个联系的陌生人自动入信任集(一次性),之后不再自动 | 快速开号试用 |
manual |
仅 owner 用 /trust 或 Web 面板显式添加的人可对话 |
正式多人使用 |
几条补充规则:
- 陌生人消息只记日志、不回复,不泄露内部信息;可选设置
notifyRejected: true,让 owner 收到「陌生人尝试联系」的提醒。 - 信任集持久化在
trust.json(权限 0600),mode是唯一真相源。 - 通过
/distrust或面板吊销后,该用户新消息立刻被拒绝;其历史会话文件保留只读,不丢历史。
隔离方面,每个受信用户(含 owner)有一套独立的东西:DSH 会话(以 ${botAccountId}::${userId} 为 key)、会话文件、消息队列、上下文 token,以及 /history、/status、/cwd、/model 的作用范围。A 的 /yes、/no 只裁决 A 自己 agent 的待审批事项,B 无权替 A 裁决。
验证状态需要如实说明:多用户路径(bootstrap 入集、双用户隔离并发)的真机验证尚未完成,需要第二个微信账号走查;在此之前,请仅在受控环境开启 bootstrap / manual 模式。
凭证安全方面:守护进程与 DSH 插件之间的内部 API 只监听 127.0.0.1,使用随机 token 鉴权;微信账号凭证仅保存在本机 ~/.dsh/wechat-bridge/accounts/,权限为 0600;日志中的 token / secret / password 会自动脱敏。
适用场景与注意¶
适合这些场景:
- 需要挂着长任务、人离开电脑,还想随时收到进展并处理审批;
- 想把个人微信作为轻量控制入口,与 CLI、Web 面板配合管理 DSH 会话;
- 多人共用一个 bot,需要每人独立的会话与审批边界(注意上文的多用户验证状态)。
使用前有几点注意:
- 项目免责声明写明:仅用于个人学习与自动化,使用非官方微信协议存在账号风险,需自行评估并承担后果。
- 语音出站尚不支持;多用户路径真机验证待补,
bootstrap/manual模式请先在受控环境使用。 - 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(本项目采用 MIT)。
结尾¶
总体来看,这个插件把微信接入了 DSH 的对话、通知与审批流程,安装、绑定、启动、配置都有明确的命令与面板入口,守护进程统一由 DSH 插件管理,三端可用。如果你也需要在外出时够到本机的 Agent,可以按上文「安装与启用」一节试一试。
- 社区目录页:https://www.skillhub.cn/plugins/lanbaolu/dsh-wechat-bridge
- GitHub 仓库:https://github.com/lanbaolu/dsh-wechat-bridge