把 AI Agent 接进微信、QQ 和飞书:三条消息通道的实测评估
把 AI Agent 接入即时通讯工具,看起来只是”调个发消息接口”,真正跑起来才会发现:每条通道的脾气完全不同。有的平台会把你的消息悄悄吞掉,有的会限制你一天只能主动说几句话,还有的按字节数把你的长报告截成两半——而它们全都不怎么告诉你。
我的自建 Agent 在微信上跑了半个月,被限流逼着换到了飞书,最近又在评估 QQ。这篇就把三条通道的评估结果摊开讲:拦截、截断、限制各是什么情况,以及最后那条最有价值的结论。
一、评估方法:不看宣传,看三层证据
单看平台文档是不够的——文档往往只写”有频率限制”,不写具体阈值,更不会告诉你超限之后消息是报错还是静默丢弃。所以这次评估用了三层证据交叉验证:
| 层级 | 数据源 | 能回答什么 |
|---|---|---|
| 实测层 | 网关日志全量检索 + 投递台账 | 真实发生了多少次限流、多少条消息没送到 |
| 代码层 | 通道适配器源码 | 消息怎么分片、错误怎么重试、是否支持编辑 |
| 文档层 | 平台开放平台官方文档 | 配额、窗口期、错误码的官方定义 |
实测层最关键。日志不会美化自己,它直接告诉你这套东西在真实负载下的崩溃点在哪。
二、微信:黑箱限流,最难受的一种
微信通道的问题在两篇文章里已经详细写过(限流排查、tool_progress 真凶定位),这里只给结论性数据:
- 7 周内触发限流 725 次,单日峰值 199 次。错误信息只有一句
iLink sendmessage rate limited,服务端返回ret=-2,官方从未公开任何阈值 - 触发后的行为是熔断 30 秒再重试,若服务端仍在限流期,就继续熔断撞墙——实测最长连续 7 分钟发不出任何消息
- 用户侧的感受就是”这条消息我没收到”,而 Agent 侧只看到一条失败日志
- 长消息(5KB 以上或连续多条)会被整条吞掉;群聊场景基本不可用
- 真正的主因不在”发得太频繁”,而是微信不支持消息编辑:Agent 每执行一次工具调用就单独发一条进度消息,长任务下变成消息风暴
踩坑提醒:日志里的 Temporary failure in name resolution(域名解析失败)和限流是两回事。前者是网络/DNS 问题(出现了近 800 次),后者才是平台侧限流。排查时把两类错误混在一起,会得出完全错误的结论——我就拐过这个弯。
到了这一步,通道已经从”偶尔丢消息”退化到”不可用”。所以决定加一条新通道。
三、QQ:规则最透明,但配额最硬
QQ 走的是官方 QQ 机器人开放平台 API,和微信那种半私有的通道不同,规则和错误码都是公开的——这一点比微信好得多。但读完之后会发现,它的限制比微信更死:
1. 单聊的”主动消息”已经被官方下线。 平台公告明确写着主动推送能力于 2025 年 4 月起不再提供,调用会直接返回”主动消息失败, 无权限”。单聊只剩两种合法姿势:
- 被动回复:必须携带用户那条消息的 ID,单聊有效期 60 分钟、最多回 4 次
- 互动召回:用户主动对话后 30 天内分 4 个周期、每周期 1 条
这意味着定时任务、巡检推送、任务完成通知在单聊里基本发不出去。对于一个主要靠”长任务跑完再汇报”的 Agent 来说,这是致命的。
2. 被动窗口只有 60 分钟。 一个跑了 1 小时的升级或批处理任务,等到要汇报时,那条触发消息的 ID 已经过期,最终汇报直接失败。
3. 长度按字节截断,而且是静默的。 官方只给一个笼统的”消息长度超限”错误码,不告诉你具体数值。社区实测(官方仓库 issue)里能看到真实报错:content length 7456 exceeds max length 2000——上限 2000 字节,中文大约 666 字;而更麻烦的是超限时 HTTP 返回 200、内容却已经被截掉了。
4. 内容拦截更直接。 群聊场景不允许发送 URL(除非事先在后台报备域名),命中内容安全检测的消息会被直接打掉。
除了平台限制,适配器层面还有几处结构性问题:分片发送时只有第一片带回复 ID,后续分片在单聊里会被当成”主动消息”而失败;进度消息同样不带回复 ID。也就是说,即使接上了 QQ,长回复也只能送到第一段。
结论很清楚:QQ 适合”用户发一句、Agent 立刻回一句”的短问答,不适合我这种长任务 + 定时推送的用法。
四、飞书:唯一没有”消息级硬限制”的通道
飞书是三条通道里体验最不像”在跟平台斗智斗勇”的一条。7 周实测数据:
| 指标 | 数值 |
|---|---|
| 入站消息 | 129 条 |
| 出站回复 | 369 条 |
| 单条回复长度 | 中位数 577 字,90 分位 1552 字,最长 5227 字 |
| 限流命中 | 0 次 |
| 发送失败 | 1 次 |
| 投递台账 | 33 条全部送达,0 失败 |
平台侧规则也宽松得多:
- 接口频控 1000 次/分钟、50 次/秒;向同一用户 5 QPS
- 消息体上限:文本 150 KB(卡片/富文本 30 KB)——比 QQ 的 2000 字节宽了两个数量级
- 支持消息编辑,文本和富文本都能改
- 富文本支持 CommonMark + GFM,表格、任务列表、删除线、自动链接都能渲染
- 主动推送没有配额和窗口限制,机器人可以随时主动找用户
最关键的是那条加粗的:支持消息编辑。这一条直接消灭了微信时代的最大隐患——进度消息不再需要一条条新发,而是在一个气泡里原地更新。消息量从”每个工具调用一条”降到”整轮对话几条”,限流自然也就不存在了。
但它也有真实的薄弱点
风险从”消息层”转移到了”连接层”。 7 周内有 7 次长连接 30 秒超时,以及一次连续 4 分钟的域名解析失败——自建环境的出网质量成了真正的瓶颈。好消息是网关有自动重连机制,这几次都自愈了。
有一次真实丢消息。 一条 1000 多字的通知被平台以”字段校验失败”拒绝,纯文本兜底也失败了。这类问题属于偶发,我决定先不复现,等它复现频率升高再处理——不是所有异常都值得立刻投入排查成本,记录在案、设定观察阈值,往往更划算。
五、三条通道横向对比
| 维度 | 飞书 | QQ 官方机器人 | 微信 |
|---|---|---|---|
| 限流机制 | 1000/分 & 50/秒;同用户 5 QPS | 100 QPS + 严格配额 | 无公开阈值,黑箱 |
| 实测限流次数 | 0 | 未接入 | 725 |
| 主动推送 | 无限制 | 单聊已下线 | 需上下文令牌,易失效 |
| 被动回复窗口 | 无 | 单聊 60 分钟 / 4 次 | 无明确窗口 |
| 长度上限 | 文本 150 KB | 约 2000 字节 | 官方 4000 字,5KB+ 被吞 |
| 消息编辑 | 支持 | 不支持 | 不支持 |
| Markdown | GFM 完整 | 有限,群聊禁 URL | 无 |
| 内容审核 | 有(敏感信息拒收) | 安全打击 + URL 报备 | 不透明 |
| 适合场景 | 长报告 / 定时推送 / 富文本 | 即时短问答 | 已停用 |
六、结论:一个被低估的分水岭
回头看这三条通道,最能决定成败的不是”接口频率给得多宽”,而是平台是否支持编辑已发送的消息。
- 微信和 QQ 都不支持编辑。Agent 想显示进度,只能不断发新消息;用户看到的是一串刷屏,平台看到的是超频调用。长任务越复杂,越容易撞限流墙。
- 飞书支持编辑,同一个气泡原地更新。消息量降一个数量级,限流问题自动消失。
另一个体会是:选通道要看自己的用法,而不是看平台的”能力列表”。我的用法是长任务静默执行 + 完成后一次性汇报 + 定时推送,这套组合直接判了 QQ 死刑(主动推送下线 + 60 分钟窗口)。如果你的用法只是”随时问一句、立刻答一句”,QQ 其实完全够用——它的错误码还比微信透明得多。
最后,一条工程习惯:把平台的限制当成设计输入,而不是上线后才发现的意外。这次评估真正的产出不是”选哪条通道”,而是那张三层证据表——有了实测数据打底,后面再遇到”消息没送到”,至少能立刻回答”这是谁的问题、影响面多大、能不能回滚”。









