跳到正文
dsh-market 浏览插件 GitHub EN

dAI-aigc/dsh-wechat

基于腾讯 iLink 机器人通道的微信桥:每个联系人一个独立会话,支持入站文本/图片/文件,并在整轮运行期间显示微信原生“正在输入”。

Star 数 ★ 0 分类 通知与集成 收录于 2026-09-19

安装

在 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 分钟),扫完自动退出。

第三步:用手机微信扫

  1. 手机打开微信 → 底部「发现」→「扫一扫」(或点右上角「+」→「扫一扫」);
  2. 对着电脑屏幕上的二维码扫 → 手机上确认绑定/授权;
  3. 电脑端状态依次变为 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),让气泡显示在右侧;实测该通道会接受但不投递这类消息,因此默认关闭

使用

  1. 装好插件、扫码登录、重启服务。
  2. 用登录时那个微信号给机器人发消息,随便聊即可 —— 每条消息都会进它自己的会话。
  3. 在 Web 端打开对应会话:你从微信发的话会显示成你自己的消息,回复是普通的助手消息,两边是同一份上下文。
  4. 一轮跑得久时,微信端会显示"正在输入",回复发出前自动收起。

已知限制

  • 语音、视频、转发卡片不入站(会跳过并记一行日志)。
  • 一个 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。

内容来自项目 README(GitHub)↗

评论

评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。