dsh-plugin-weixin
WeChat (personal WeChat, iLink Bot API) channel: chat with your DSH agent from WeChat, with images, files and voice-note transcription. One WeChat conversation can hold several DSH Sessions (/new, /list, /use) and every option is editable from the settings page. Also published to npm as dsh-plugin-w
Install
dsh plugin --profile web add dsh-plugin-weixin
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
<div align="center">
微信BOT · dsh-plugin-weixin
把你的个人微信,变成 DeepSeek Harness 的远程控制面。
在微信里说一句话,DSH Agent 在你自己的机器上开一个会话执行,把结果回给你 —— 文字、图片、文件、语音,双向都能走。






简体中文 | [English](README.en.md)
<img src="assets/icon-128.png" width="88" alt="微信BOT 图标" />
</div>
<img src="assets/hero.png" alt="微信BOT:在微信里与 DSH Agent 对话" />
为什么是它
不用公网、不用服务器 · Agent 在你自己的机器上跑,微信只是入口。凭证以 0600 存在本机 ~/.dsh/weixin/,不上传任何第三方。
默认拒绝所有人 · allowedSenders 默认为空,等于谁都不能驱动你的 Agent;扫码后的第一条消息自动登记你本人,之后要加人再逐个放行。
双向都通 · 文字、图片、文件、语音(SILK → WAV → 本地 ASR)、视频抽帧、表情图;长回复自动分气泡,超长代码块改发文件。
多账号互不干扰 · 几个微信号可以同时接入,各有自己的长轮询、白名单与会话线;一个号登录、暂停或退出,不影响其他号。
不花模型也能用 · 命令、提醒、日报、/diag、/usage、/outbox 都由插件直接回答,不消耗模型对话。
看得见、查得到 · npm run doctor(13 项体检)、npm run onboard(上手清单)、聊天内 /diag、消息流水、统计页签、工具审计、备份与恢复。
30 秒上手
第 1 步 · 安装(三种任选其一)
npx dsh-plugin-weixin --profile desktop # 不需要先 clone node bin/install.mjs --profile desktop --pin # 从源码安装并钉住版本
也可以在 DSH 的插件页(侧边栏 Plugins)填 dsh-plugin-weixin。装完重启 DSH 生效。
第 2 步 · 登录
打开「设置 → 插件 → 微信BOT」,点扫码登录微信,用手机微信扫卡片上的二维码(终端党也可以 npm run login)。扫码成功后不需要重载 DSH。
第 3 步 · 授权
allowedSenders 默认是空的,等于拒绝所有人。新账号的第一条消息的发信人会被自动登记并放行 —— 扫码时只知道 bot id,人的微信 id 要等第一条消息才出现。所以拿自己的微信发一句话,它就开始干活了;要加别人,在卡片的「微信账号 → Allowlist」里填。
装完想确认一遍:
npm run onboard # 上手清单:还差什么、下一步做什么(退出码 0 = 能用了) npm run doctor # 13 项体检:账号 / 白名单 / 实例锁 / 积压 / 日志 / 宿主版本 npm run doctor -- --fix # 体检 + 修它能自己修的(目录、权限、陈旧临时文件、坏掉的 JSON 挪到一边)
它是什么,不是什么
是 · 个人微信 ↔ DSH 的双向通道插件。微信侧走官方 iLink Bot API(ilinkai.weixin.qq.com),传输层是腾讯官方开源插件 @tencent-weixin/openclaw-weixin(MIT)的 vendor 副本;DSH 侧直接绑定 agents 服务。
不是 · 不是微信官方产品,也不是企业微信 / 公众号方案。用的是个人微信的机器人绑定通道,账号风控与可用性由微信侧决定。
不旁路权限 · 真实的文件修改与命令执行仍由 DSH 自己的权限层与确认流程决定,插件不绕过、不代批。
目前做不到 · 出站语音气泡(实测服务端接受但不投递,voiceOutbound 默认关);原生贴纸 / 表情包(微信没给 bot 这类消息类型);原生图像理解(入站图片以本地路径交给 Agent,能否读懂取决于你的模型与工具链);发送视频(需要视频编码)。
功能地图
按「你要做什么」分组,每组直接跳到对应章节。
接入与账号 —— [安装](#安装) | [登录](#登录) | [授权(重要)](#授权重要) | [多账号管理](#多账号管理) | [配置](#配置)
会话控制 —— [会话线](#会话一个微信会话可以用多条-dsh-会话) | [在设置页管理](#在设置页管理) | [会话列表里怎么认出微信会话](#会话列表里怎么认出微信会话)
消息与媒体 —— [出站附件](#出站附件插件发给你的图片视频文件) | [入站媒体](#入站媒体微信发来的图片文件语音视频) | [出站语音](#出站语音voiceoutbound) | [语音识别](#语音识别asr) | [表情图片](#表情图片stickerenabled) | [视频抽帧](#语音与视频voiceoutbound--videoframes) | [Markdown 处理](#markdown-处理)
主动与时间 —— [定时提醒](#定时提醒remind-与设置卡) | [定时主动消息](#定时主动消息subscribe) | [主动开口](#主动开口proactiveenabled) | [日报与记忆核对](#日报与记忆核对digestenabled--memoryreviewenabled) | [免打扰时段](#免打扰时段quiethours)
记忆与个性化 —— [个性化与记忆](#个性化与记忆mode--remember--forget--memory) | [知识库](#知识库把你交给它的资料变成答案knowledgeenabled) | [陪聊节奏与生活状态](#陪聊节奏与生活状态humanpacing--lifestate) | [记忆改口](#记忆改口remember-旧--新--自动纠错) | [本地回忆检索](#本地回忆检索recall) | [关系曲线与联系人](#关系曲线与群里的人affinity--contacts)
群聊 —— [群聊](#群聊groupchatenabled--groupreplywhen--groupsharememory)
运维与可观测 —— [命令速查](#会话一个微信会话可以用多条-dsh-会话) | [统计页签](#统计页签stats) | [账单页签](#账单页签usage) | [消息流水](#消息流水messagejournal) | [指标与长稳](#指标与长稳metricsexport--npm-run-metrics--npm-run-soak) | [备份与恢复](#备份与恢复backupenabled) | [工具审计](#工具审计toolaudit) | [危险工具提醒](#危险工具提醒toolnotices) | [兼容性](#兼容性)
集成与进阶 —— [模型路由](#模型路由chatprovider--sideprovider--memoryprovider) | [记忆模型](#记忆模型结构化档案--事件--人物小传--独立模型) | [语言](#语言locale) | [ASR 桥](#仓库自带一个桥binasr-bridgepy) | [模型目录可以自定义](#模型目录可以自定义) | [模板包](#模板包npm-run-pack--packexport--packimport) | [预演模式](#预演模式dryrun)
完整目录 —— [亮点](#亮点) · [当前状态](#当前状态) · [目录结构](#目录结构) · [安装](#安装) · [登录](#登录) · [授权(重要)](#授权重要) · [配置](#配置) · [会话](#会话一个微信会话可以用多条-dsh-会话) · [出站附件](#出站附件插件发给你的图片视频文件) · [入站媒体](#入站媒体微信发来的图片文件语音视频) · [定时提醒](#定时提醒remind-与设置卡) · [定时主动消息](#定时主动消息subscribe) · [消息流水](#消息流水messagejournal) · [本地回忆检索](#本地回忆检索recall) · [即时总结与导出](#即时总结与导出summary--export) · [免打扰时段](#免打扰时段quiethours) · [统计页签](#统计页签stats) · [个性化与记忆](#个性化与记忆mode--remember--forget--memory) · [陪聊节奏与生活状态](#陪聊节奏与生活状态humanpacing--lifestate) · [记忆改口](#记忆改口remember-旧--新--自动纠错) · [语言](#语言locale) · [模型路由](#模型路由chatprovider--sideprovider--memoryprovider) · [记忆模型](#记忆模型结构化档案--事件--人物小传--独立模型) · [表情图片](#表情图片stickerenabled) · [主动开口](#主动开口proactiveenabled) · [语音与视频](#语音与视频voiceoutbound--videoframes) · [富内容](#富内容richcontent--codefilethreshold) · [危险工具提醒](#危险工具提醒toolnotices) · [群聊](#群聊groupchatenabled--groupreplywhen--groupsharememory) · [工具审计](#工具审计toolaudit) · [语音识别](#语音识别asr) · [Markdown 处理](#markdown-处理) · [兼容性](#兼容性) · [开发](#开发) · [发布](#发布) · [文档](#文档)
亮点
每个版本改了什么在 [CHANGELOG.md](CHANGELOG.md);这一节只讲现在能做什么。
它现在能做什么
- 多微信账号同时接入 —— 不止一个微信号。设置卡里逐个扫码添加(或
node bin/login.js --account work),每个账号独立收发、独立长轮询,登录/退出/重登一个账号不影响其他账号;扫码完成后即时生效,不需要重启 DSH。 - 账号级白名单 —— 每个账号可以覆盖全局的
allowedSenders/allowedChats(设置卡里直接改,保存即重挂该账号);留空则回退全局配置。谁能让你的 Agent 干活,按账号说了算。 - 会话按账号隔离 —— 每个账号的微信会话有独立的 DSH 会话线(
/new、/list、/use),互不串上下文;新会话标题带备注名:前缀并镜像成宿主侧栏会话名,多账号一眼分得清;不需要的会话线随时删。 - 一键暂停 —— 某个账号先静默:Pause 立即停掉它的入站轮询(其余账号照常收发),Resume 无缝恢复,都不用重启。
- 语音开箱即用 —— 入站语音 SILK → WAV 本地转码,ASR 桥识别成文字交给 Agent(热调用约 300ms),识别不了自动降级存文件;音频附件也能转成语音气泡(
voiceOutbound,默认关——实测 iLink 服务端会接受机器人语音ret=0但不投递,打开前请读[出站语音](#出站语音voiceoutbound)一节)。 - 管理都在设置卡,也在左侧栏 —— 账号、会话、全部
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::58,最后更新 2026-11-05