安装
在 DeepSeek Harness 里通过 dsh-market 安装
dsh plugin --profile web add dshmarket
或使用命令行
dsh plugin --profile web add github:dAI-aigc/dsh-wechat
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
把微信联系人接到 DeepSeek Harness 会话上的桥插件。
它做什么
- 一个联系人一个会话:每个微信发送者对应一个独立的 DSH 会话(
wechat-<联系人id>),各自保留上下文,互不串味。 - 白名单:只服务允许的发送者。不配置
allowFrom时,白名单就是扫码登录的那个微信号本人。 - 入站内容:文本、图片、文件都会进会话 —— 图片经微信 CDN 下载后作为图片附件附上,文件读入会话;语音、视频、转发卡片会跳过,并在日志里留一行提示。
- 出站回复:纯文本,超过 1800 字符自动分片发送。
- 原生"正在输入":一轮运行期间向微信发送原生 typing 指示(每 15 秒续发一次,回复发出前取消);取不到票据或发送失败只记日志,绝不影响回复。
- 自动归属工作区:桥接会话会挂到
cwd对应的工作区,因此能直接出现在 Web 端侧栏对应分组下。
安装
# 装进 web profile;`dsh plugin` 这个命令由市场插件 dshmarket 提供
dsh plugin --profile web add github:dAI-aigc/dsh-wechat
装好后按下一节扫码登录一次,再重启 dsh web 生效。
没有装 dshmarket 时的手动方式:在 ~/.dsh/profiles/<profile>/cordis.patch.yml 里加一行,
并让 profile 能解析到本包(把本目录 junction/软链到 profile 的 node_modules/dsh-wechat,
或在 profile 的 package.json 里声明它):
- insert:
- id: dsh-wechat
name: 'dsh-wechat'
登录:怎么扫码接入微信
登录是在电脑上的插件目录里跑一条命令,微信那边只需要「扫一扫」—— 微信里没有入口可点,也不用建群。
第一步:装一次依赖(仅首次)
cd <插件目录> # 你 clone / 下载下来的 dsh-wechat 目录
pnpm install # 装 tsx 等开发依赖,登录脚本要用它
第二步:起扫码页
pnpm login
这条命令会:
- 在本机起一个扫码页面:http://127.0.0.1:8899 —— 页面每 3 秒自动刷新,二维码过期会自动换新,不用手动刷;
- 同时把二维码与状态写进
$DSH_HOME/data/dsh-wechat/(qr-content.txt、login-state.json、qr-login.png),方便排查; - 一直等你扫码(最长 8 分钟),扫完自动退出。
第三步:用手机微信扫
- 手机打开微信 → 底部「发现」→「扫一扫」(或点右上角「+」→「扫一扫」);
- 对着电脑屏幕上的二维码扫 → 手机上确认绑定/授权;
- 电脑端状态依次变为
scaned(已扫描)→confirmed(已确认),最后打印LOGIN_OK account=<机器人id>,凭据写入$DSH_HOME/data/dsh-wechat/weixin/accounts/<机器人id>.json。
第四步:让插件读到凭据
重启一次 dsh web(插件启动时才读取凭据)。
第五步:开始对话
用刚才扫码的那个微信号给这个机器人发消息即可。allowFrom 留空时,白名单就是扫码账号本人;
要让别人也能用,在设置里把他们的微信 id 加进 allowFrom。
常用命令
| 命令 | 作用 |
|---|---|
pnpm login |
扫码登录/重新登录(机器人会话过期时用) |
pnpm accounts |
查看本机已保存的账号 |
pnpm listen |
只用探针收消息做调试;插件挂着时不要跑 —— 同一个 bot token 只能有一个进程长轮询 getupdates |
登录常见问题
- 8899 端口被占用:先关掉占用它的程序再跑(端口定义在
scripts/probe.ts的QR_PORT)。 - 扫了没反应:页面每 3 秒自动刷新,等下一张二维码再扫,或手动刷新页面。
errcode -14(机器人会话过期):在插件日志里看到它时,重新执行pnpm login。- 想换微信号:重新登录即可,新账号会写入新的
<机器人id>.json。 - 凭据安全:只落在这台机器的
$DSH_HOME/data/dsh-wechat/weixin/(仅所有者可读), 不要提交进 Git;本仓库里不含任何账号、联系人 id 或本机路径。
配置(设置命名空间 dsh-wechat)
在 DSH 设置里打开 dsh-wechat 卡片即可改,值落在 ~/.dsh/settings.yaml:
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
消息循环总开关 |
allowFrom |
[] |
允许驱动智能体的微信 id 列表;留空表示"仅限已登录的那个账号" |
provider / model |
"" |
桥接会话使用的模型路由;留空继承 Harness 默认 |
cwd |
"" |
桥接会话的工作目录;留空用本插件自己的目录(这样会话会落进对应的工作区) |
replyAsSelf |
false |
以登录账号本人身份发送回复(message_type: USER),让气泡显示在右侧;实测该通道会接受但不投递这类消息,因此默认关闭 |
使用
- 装好插件、扫码登录、重启服务。
- 用登录时那个微信号给机器人发消息,随便聊即可 —— 每条消息都会进它自己的会话。
- 在 Web 端打开对应会话:你从微信发的话会显示成你自己的消息,回复是普通的助手消息,两边是同一份上下文。
- 一轮跑得久时,微信端会显示"正在输入",回复发出前自动收起。
已知限制
- 语音、视频、转发卡片不入站(会跳过并记一行日志)。
- 一个 bot token 只能有一个进程长轮询
getupdates。 - 微信发起的轮次无法回答审批提示:请把桥接会话的权限/审批策略配成不需要审批,否则会卡住。
errcode -14表示 bot 会话过期:插件会停止消息循环,需要重新执行pnpm login扫码。replyAsSelf(让回复显示在右侧)经实测无效:服务端接受message_type: USER的发送却不投递,故默认关闭。
传输与上游
传输层是腾讯官方 iLink 机器人通道(https://ilinkai.weixin.qq.com),协议实现来自
@tencent-weixin/openclaw-weixin(MIT,见 LICENSE-tencent 与 UPSTREAM-README.md)。
协议层(src/api、src/cdn、src/messaging)为 vendored 代码;原 OpenClaw 运行时胶水
已替换为 Harness 原生实现(src/util/logger.ts、src/storage/state-dir.ts、
src/auth/accounts.ts)。
许可
MIT —— 见 LICENSE。vendored 协议层(src/api、src/cdn、src/messaging)
来自腾讯 openclaw-weixin,按其自身 MIT 许可保留为 LICENSE-tencent,
并附 UPSTREAM-README.md。
评论
评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。