微信网关启动失败的主因是凭证缺失、SSL验证失败、防火墙拦截、配置语法错误或日志级别过低;需依次验证账户凭证、禁用SSL校验、放行HTTPS出站规则、修正.env格式,并启用DEBUG日志定位首条致命错误。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您尝试启动HermesAgent微信网关,但服务立即退出或日志中持续出现报错信息,则可能是由于凭证缺失、网络拦截、SSL验证失败或配置项冲突所致。以下是解决此问题的步骤:
一、验证微信账户凭证有效性与自动恢复机制
微信网关依赖iLink Bot API提供的长期有效凭证(account_id、session_key等),若凭证过期、被主动注销或首次扫码未完成授权流程,将导致启动时认证失败并退出。
1、检查凭证文件是否存在且可读:执行ls -l ~/.hermes/weixin/accounts/,确认目录下有非空JSON文件。
2、若文件为空或不存在,删除整个~/.hermes/weixin/accounts/目录后重新运行hermes gateway setup,严格使用手机版微信扫码并完成“确认登录”操作。
3、扫码成功后,终端应明确输出微信连接成功,account_id=your-account-id;若仅显示二维码无后续响应,说明iLink服务端未回调成功,需检查服务器能否访问https://api.ilink.bot。
二、禁用SSL证书验证以绕过内网自签名证书拦截
在企业内网或私有部署环境中,微信网关底层依赖的httpx与requests库会因无法校验iLink Bot API返回的自签名SSL证书而抛出[SSL: CERTIFICATE_VERIFY_FAILED]异常,导致进程崩溃。
1、创建补丁脚本:mkdir -p ~/.hermes/hermes-agent && nano ~/.hermes/hermes-agent/hermes_agent_ssl_patch.py。
2、粘贴以下内容并保存:
import httpx, ssl, warnings, requests
from requests.adapters import HTTPAdapter
class NoVerifySession(requests.Session): def request(self, *args, **kwargs): kwargs.setdefault('verify', False); return super().request(*args, **kwargs)
requests.sessions.Session = NoVerifySession
def _make_ssl_patch(init_method): def wrapper(self, *args, **kwargs): if 'verify' not in kwargs: kwargs['verify'] = False; init_method(self, *args, **kwargs); return wrapper
httpx.Client.__init__ = _make_ssl_patch(httpx.Client.__init__)
公众号运营:文章发布至草稿、样式封面、评论与用户管理、数据统计等。用户要求将 Markdown 发送到公众号草稿、查看阅读量统计或类似后台操作时,使用本技能。
httpx.AsyncClient.__init__ = _make_ssl_patch(httpx.AsyncClient.__init__)
3、确保该脚本在Agent启动前被导入:编辑~/.hermes/hermes-agent/__init__.py(若不存在则新建),添加一行import hermes_agent_ssl_patch。
三、检查微信网关专用防火墙放行规则
微信网关采用长轮询方式主动拉取消息,需持续维持与api.ilink.bot:443的HTTPS连接;若系统防火墙默认阻断出站HTTPS连接或限制连接时长,会导致连接被强制中断并重试失败。
1、Linux环境下临时测试:执行sudo ufw status verbose,确认Status: active且Outgoing: Allow (on system default);若为Deny,执行sudo ufw default allow outgoing。
2、若使用firewalld,运行sudo firewall-cmd --list-ports,若无输出,执行sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload。
3、Windows WSL2用户需额外检查宿主机防火墙:在PowerShell(管理员)中运行Get-NetFirewallRule -DisplayName "*ilink*" | Remove-NetFirewallRule清除干扰规则,再启用hermes gateway。
四、校验微信环境变量配置语法与加载顺序
网关启动时优先读取~/.hermes/.env,若其中存在语法错误(如等号前后空格、未闭合引号、注释符位置错误),会导致环境变量解析失败,进而使WEIXIN_ACCOUNT_ID等关键字段为空字符串,触发初始化校验异常。
1、使用grep -n "^[^#;[:space:]]" ~/.hermes/.env提取所有非注释、非空行,逐行检查格式是否为KEY=VALUE且无多余空格。
2、特别验证WEIXIN_DM_POLICY值是否为open、allowlist或disabled三者之一,禁止使用di等拼写错误值。
3、若修改了.env,必须重启终端或执行source ~/.hermes/.env使其生效,再运行hermes gateway。
五、强制启用调试日志定位具体失败点
默认日志级别可能隐藏关键堆栈信息,启用详细日志可直接暴露报错源头,例如异步事件循环冲突、JSON解析异常或HTTP状态码401/403等。
1、设置环境变量:export HERMES_LOG_LEVEL=DEBUG。
2、启动网关并实时捕获输出:hermes gateway 2>&1 | tee /tmp/hermes-weixin-debug.log。
3、在日志中搜索关键词:ERROR、Traceback、401、403、ssl.SSLCertVerificationError、asyncio.run,定位首条致命错误行。


















