前言¶
在 DeepSeek Harness(DSH)里跑 agent,常见入口是 Web 或 Desktop 会话。若希望把同一套 agent 接到微信里、和用户单聊收发消息,自行对接协议或走非官方客户端往往成本高、合规风险也不清晰。
dsh-weixin-channel 是社区维护的 DSH 插件(维护者 ChencLi819,分类为客户端),通过腾讯官方 iLink Bot API(微信 ClawBot 通道)接入:扫码授权机器人身份,不模拟个人号登录、不读通讯录与朋友圈,只做「能收发消息的机器人」。微信用户与 DSH 会话做确定性映射,并内置白名单与工具收口。
插件当前版本 0.1.0,许可证 MIT,GitHub 星标为 0。目录页:https://www.skillhub.cn/plugins/ChencLi819/dsh-weixin-channel;源码:https://github.com/ChencLi819/dsh-weixin-channel。
这是什么¶
一句话:dsh-weixin-channel 把 DSH agent 接到微信单聊,走官方 Bot 通道,支持文本、图片、语音、文件(及入站视频)的收发,并把每个微信用户映射为独立 DSH 会话。
与「PC 微信逆向 / 协议模拟」不同,通信基址默认为 https://ilinkai.weixin.qq.com,依赖已开通 ClawBot / iLink Bot 通道的微信号完成扫码登录。
核心功能¶
下面能力均来自插件 README 的功能表与说明。
| 能力 | 说明 |
|---|---|
| 扫码登录 | 生成二维码 PNG,微信扫码授权;凭证落盘,重启可免扫 |
| 入站消息 | 长轮询接收文本、图片、语音、文件、视频;消息 ID 去重 |
| 图片处理 | 入站图片经 DSH attachments 服务转为原生图片块,进入模型视野 |
| 语音转写 | 优先使用平台自带转写文本,不依赖外部 ASR |
| 出站消息 | 文本按句子边界切分;图片与文件按扩展名路由 |
| 会话映射 | 微信用户与 DSH 会话确定性映射,重启后可续接上下文 |
| 白名单 | 默认仅放行登录者本人;名单为空时不会退化为放行所有人 |
| 工具收口 | 微信会话可见工具限制为白名单内若干项(默认 26 个) |
| 插件页二维码 | DSH 界面内可直接显示登录二维码 |
协议侧不提供群聊能力;插件定位为单聊渠道。
兼容性与依赖¶
使用前确认环境与账号条件:
| 项目 | 要求 |
|---|---|
| DSH 宿主 | ^0.1.0-rc.6 或 ^0.2.0-rc.1(见 peerDependencies) |
| Node.js | >= 22 |
| 微信 | 已开通 ClawBot / iLink Bot 通道的微信号 |
@deepseek-ai/schemastery |
^3.18.1(配置校验) |
silk-wasm |
可选,解码 SILK 语音 |
| Python | 可选,仅用于二维码解码对照测试 |
安装与启用¶
通过 DSH CLI 安装(推荐)¶
Web 与 Desktop 使用不同 profile;安装后需重启 DSH。
# 从 npm 安装
dsh plugin --profile web add dsh-weixin-channel
# 或从源码安装
dsh plugin --profile web add github:ChencLi819/dsh-weixin-channel
# Desktop 版
dsh plugin --profile desktop add dsh-weixin-channel
以 link: 方式本地联调时,需在插件目录补指向宿主包的链接,并在 profile 的 package.json 的 dsh.profile.bundles 中加入 dsh-weixin-channel,细节见仓库 README「3.2 通过仓库脚本 / link 安装」。插件会写入体检文件 ~/.dsh/wechat-channel/diagnostic.json。
升级与卸载¶
升级:重新执行上述 CLI 安装命令;link: 方式更新源码后重启 DSH。
卸载:从 dsh.profile.bundles 移除并卸载依赖;若不再使用,可删除 ~/.dsh/wechat-channel。
登录流程¶
登录依赖插件自身的长轮询,不要用截图代替插件发起的流程,也不要关进程后再扫——二维码有时效,扫码后凭证需在轮询中接收。
- 调用
wechat_login(action=start)申请二维码,返回 PNG 路径(默认~/.dsh/wechat-channel/login-qr.png)。 - 用微信扫码。
- 若手机提示输入配对码,调用
wechat_login(action=verify,code=<配对码>)。
凭证保存在 ~/.dsh/wechat-channel/sdk/,之后启动可自动登录(受配置 login.autoLogin 控制)。action=logout 会停止轮询并删除凭证目录。
工具与典型用法¶
插件注册 3 个工具,输出均为 { text: string }。
wechat_login¶
管理登录状态:action 为 start(生成二维码)、verify(提交配对码,需 code)、logout(清除登录状态)。
wechat_status¶
查询渠道状态:登录情况、二维码位置、收发计数、白名单。可选 selftest: true 真实建立一次会话,校验工具收口名单有效性(日常不必开启)。
wechat_send¶
向微信发送内容:userId 默认为当前会话对端;text 与 file(http(s) 链接或本地绝对路径)可同时提供,会拆成两条消息(微信不支持图文混合单条)。
回复当前会话时不需要调用 wechat_send,agent 正文会自动发送。
配置要点¶
在 profile 的 cordis.patch.yml 中深合并覆盖,示例:
- id: wechat-channel
config:
allow:
users: ['wxid_xxxxxxxx'] # 留空 = 只放行登录者本人
send:
maxPerMinute: 6
session:
resetCommand: '/new'
tools:
restrict: true
allow: [wechat_login, wechat_status, wechat_send]
常用项摘要:
allow.users/allow.selfOnly:白名单;列表为空时默认只放行扫码登录的微信号,不会全员开放。send.maxPerMinute:出站限流,默认12(示例里改为6)。session.resetCommand:默认/new重置会话。tools.restrict+tools.allow:微信会话工具收口;写错工具名时插件会向安全方向回退(移除无效名后重试),避免收口失败导致工具面全开。stateDir:默认~/.dsh/wechat-channel,存放凭证、context token、日志与媒体。
iLink 要求出站消息回带最近一次入站的 context_token;该 token 需持久化,重启丢失会导致无法继续发送。完整配置表见仓库 README「6. 配置」。
安全模型与适用场景¶
三道边界(默认)¶
- 谁能触发:白名单,默认仅登录者本人。
- 能做什么:工具收口,默认 26 项(无 shell、文件编辑、子代理等)。
- 能聊什么:仅单聊,不可配置成群聊。
即便有上述边界,插件背后仍是具备工具调用能力的 agent。不要把该渠道暴露给不可信的人。 安装前请自行阅读源码与 MIT 许可证;插件以当前 DSH 进程权限运行,与 DSH 本体一样,社区目录站点与 DeepSeek / 幻方无官方从属关系。
适合谁¶
- 已在 DSH 中跑 agent,且微信号已开通 ClawBot / iLink Bot,希望把单聊作为轻量触达通道。
- 需要官方 Bot 通道而非客户端逆向,并愿意接受白名单、限流与工具收口等默认安全策略。
- 需要图片进模型、语音转写、会话续接与
/new重置等开箱行为。
已知限制(节选)¶
- 单聊 only;出站文本有长度与每分钟条数限制。
- 部分全局工具(如
web_search、write、pwsh)不在微信会话继承链上,即使写入allow也不会出现;联网检索走advanced_search/multi_search/research等已放行工具。 - 运维与故障排查、合规说明见仓库 README 第 9–11 节。
结尾¶
dsh-weixin-channel 把 DSH agent 接到微信单聊:官方 iLink Bot API、扫码登录、多媒体与会话映射,并用白名单与工具收口收窄暴露面。安装使用上述 CLI 命令,登录走 wechat_login 实时流程,配置在 cordis.patch.yml 中按需覆盖。