昨天,Hermes正式宣布了对微信的接入,使用的腾讯官方的iLink Bot API,并非逆向工程协议或非官方客户端。
不过,如果你担心账号被封禁,请务必使用小号进行连接测试。
前提条件
安装所需的依赖,,在终端执行命令:
pip install aiohttp cryptography
pip install qrcode
升级Hermes至最新版:
hermes update
设置
**** 1、运行设置向导
执行命令:
hermes gateway setup
选择 Weixin:

是否开启QR登录,输入 Y:

如果提示二维码渲染失败,则复制链接到浏览器打开:

扫码成功后微信会出现对话窗口,回到终端
选择第一项:禁用群聊

跟你确认是否使用微信,输入 Y :

最后重启完Hermes gateway等待重启结束!
2、进行配对
在微信ClawBot对话框中随便发一条消息:

将 hermes pairing approve weixin xxx 这段命令复制到终端执行:

看到如此返回便证明配对成功,可以正常通过微信与Hermes对话了。

环境变量
位于~/.hermes/.env文件内:
变量|默认|描述
| 变量 | 默认 | 描述 |
|---|---|---|
WEIXIN_ACCOUNT_ID |
— | iLink 机器人账户ID(来自二维码登录) |
WEIXIN_TOKEN |
- | iLink 机器人令牌(二维码登录自动保存) |
WEIXIN_BASE_URL |
https://ilinkai.weixin.qq.com |
iLink API 基础网址 |
WEIXIN_CDN_BASE_URL |
https://novac2c.cdn.weixin.qq.com/c2c |
媒体传输的 CDN 基础 URL |
WEIXIN_DM_POLICY |
open |
私信访问政策:open allowlist disabled pairing |
WEIXIN_GROUP_POLICY |
disabled |
组访问策略:open allowlist disabled |
WEIXIN_ALLOWED_USERS |
(空的) | DM允许列表的逗号分隔用户ID |
WEIXIN_GROUP_ALLOWED_USERS |
(空的) | 组允许列表的逗号分隔组ID |
WEIXIN_HOME_CHANNEL |
— | cron/通知输出的聊天ID |
WEIXIN_HOME_CHANNEL_NAME |
Home |
主频道的显示名称 |
WEIXIN_ALLOW_ALL_USERS |
— | 网关级标志允许所有用户(由设置向导使用) |
故障排除
| 问题 | 修复 |
|---|---|
Weixin startup failed: aiohttp and cryptography are required |
两者都安装:pip install aiohttp cryptography |
Weixin startup failed: WEIXIN_TOKEN is required |
运行完成二维码登录,或手动设置WEIXIN_TOKEN hermes gateway setup |
Weixin startup failed: WEIXIN_ACCOUNT_ID is required |
在.env中设置WEIXIN_ACCOUNT_ID ,然后执行 hermes gateway setup |
Another local Hermes gateway is already using this Weixin token |
先停止另一个网关实例——每个令牌只允许一个轮询器 |
Session expired (errcode=-14) |
您的登录会话已过期。重新运行以扫描新的二维码hermes gateway setup |
| QR code expired during setup | 二维码最多自动刷新3次。如果它一直过期,检查一下你的网络连接 |
| Bot doesn’t respond to DMs | 检查.env——如果设置为空,发送方必须设置WEIXIN_DM_POLICY allowlist WEIXIN_ALLOWED_USERS |
| Bot ignores group messages | 组策略默认为空。设置或disabled WEIXIN_GROUP_POLICY=open allowlist |
| Media download/upload fails | Ensure已安装。检查网络接入cryptography novac2c.cdn.weixin.qq.com |
Blocked unsafe URL (SSRF protection) |
出站媒体URL指向私有/内部地址。只允许使用公共URL。 |
| Voice messages show as text | 如果微信提供转录,适配器会使用文本。这是预期的行为 |
| Messages appear duplicated | 适配器通过消息ID进行重复处理。如果发现重复,检查是否有多个网关实例在运行 |
iLink POST ... HTTP 4xx/5xx |
iLink 服务的 API 错误。检查你的令牌有效性和网络连接 |
| Terminal QR code doesn’t render | 打开二维码上方打印的网址qrcode pip install qrcode |