slaveOftime

把个人微信变成 Agent 出口,用 wechat-relay 接上 open-relay

2026-04-09

如果你已经习惯在终端里使用各种 agent cli,一个很现实的问题很快会出现:这些 agent 很强,但它们往往停在 terminal、HTTP API 或 webhook 里,不容易自然地进入微信这样的高频沟通场景。

这正是 wechat-relay 的价值所在。

  • wechat-relay:https://github.com/slaveoftime/wechat-relay
  • open-relay:https://github.com/slaveoftime/open-relay

一句话理解,wechat-relay 是一个把个人微信账号暴露成极小事件管道的 CLI。你扫码登录,启动监听,它就会持续接收微信消息;每一条入站消息都会被整理成标准 JSON,再交给你配置的 hook 命令处理。处理完之后,你还可以再通过 CLI 把文本、图片、音频发回微信。

这件事为什么重要?因为它把 WeChat 从“只能人手操作的 IM 客户端”,变成了一个可以接入自动化系统、脚本、agent runtime 的 bridge。

一个非常实用的场景:任意 agent cli 通过 oly 接入 WeChat bridge

最值得讲的使用方式,不是单独把 wechat-relay 当成收发工具,而是把它放进一个更大的 agent 链路里:

任意 agent cli -> oly / open-relay -> wechat-relay -> WeChat

可以把它理解成三层:

  1. agent cli 负责推理、生成、调用工具
  2. oly / open-relay 负责把 agent 输出整理成统一 relay / hook 流
  3. wechat-relay 负责把微信个人号接进来,承接入站消息并把结果送回微信

这样一来,微信就不再只是“通知终点”,而是 agent 的真实交互入口之一。用户在微信里发一句话,wechat-relay 收到后会进入监听队列,持久化,再把消息作为 JSON payload 交给 hook;而 hook 的另一端完全可以是你通过 oly 串起来的任意 agent cli。

换句话说,wechat-relay 解决的是 WeChat bridgeopen-relay / oly 解决的是 agent relay。两者接上之后,就能把终端里的 agent 能力送进微信这个最自然的对话场景。

为什么这个桥接方式是实用的

从当前仓库 README 和实现来看,wechat-relay 不是一个“演示级别”的消息转发器,它已经具备几个特别适合接 agent 的点。

1. 扫码登录 + 本地会话持久化

首次扫码后,登录状态会保存在本地,适合做长期驻留的 bridge。

2. 长轮询监听 + 崩溃恢复队列

监听过程中,入站消息会先进入持久化队列;即使进程在 hook 执行前异常退出,下次启动也会把待处理消息重新 drain 出来,不容易丢消息。这对 agent 场景很关键,因为 agent 链路通常比普通 webhook 更长、更容易受外部服务影响。

3. hook 命令直接吃 JSON

每条微信消息都会被整理成统一 payload,里面包含这些对 agent 很有用的字段:

  • from_user_id
  • to_user_id
  • text
  • summary
  • items
  • context_token

这意味着你不需要在微信协议层做复杂适配,直接把 payload 喂给 oly / open-relay 那一层即可。

4. 可回发文本、图片、音频

agent 不只能“回答一句文本”。如果你的 agent cli 能生成图片结果、语音结果,wechat-relay 也预留了发送图片和音频的能力。

一个更贴近真实工作的例子

假设你在本地已经有一个通过 oly 驱动的 agent cli,负责做这些事情:

  • 总结群聊里的需求
  • 把一句自然语言变成任务草稿
  • 根据消息触发内部脚本
  • 生成回复文本或语音

这时可以让 wechat-relay listen --hook "..." 持续运行。

微信里来了新消息后,wechat-relay 会:

  1. 收到消息
  2. 把消息和上下文 token 写入本地队列
  3. 组装成 JSON payload
  4. 调用你的 hook 命令
  5. 由 hook 把 payload 送入 oly / open-relay
  6. 再由后面的 agent cli 给出处理结果
  7. 最终通过 wechat-relay send 把结果送回微信

这条链路的好处是:agent 继续待在它最舒服的 CLI 世界里,而微信只是被桥接进来。

为什么我会更关注 wechat-relay

很多人做 agent 集成时,第一反应都是 Web UI、Slack、Discord、Telegram。但对中文语境和个人使用来说,微信往往才是最自然、最高频的真实入口。

wechat-relay 做的不是“大而全平台”,而是把问题压缩得很小很硬核:

把个人微信账号变成一个可编程消息桥。

这种思路很对。因为一旦 bridge 成立,后面的玩法就都出来了:

  • 个人微信接 agent assistant
  • 微信消息进入本地自动化工作流
  • open-relay 统一接多个 agent cli
  • oly 把 agent 输出编排进同一条 relay 链路
  • 让微信成为 agent 的前台入口,而 CLI 仍然是后台引擎

wechat-relay 当前的设计看,它已经把几件最麻烦的基础设施问题处理掉了:扫码登录、监听、消息转 hook、崩溃恢复、以及把结果再发回微信。对一个真正想把 agent 接进微信的人来说,这些都不是边角料,而是决定能不能长期跑起来的关键。

最后

如果你对“让任意 agent cli 通过 oly 接入 WeChat bridge”这个方向感兴趣,我会建议直接看这两个项目:

  • open-relay:https://github.com/slaveoftime/open-relay
  • wechat-relay:https://github.com/slaveoftime/wechat-relay

前者更像 agent / relay 侧的组织层,后者更像 WeChat 侧的接入层。把这两层接起来,才是真正有实战味道的 agent-to-WeChat 方案。

Do you like this post?