mq9:是什么
一句话
mq9 是专为 Agent 通信设计的消息 broker。用邮箱语义解决 Agent 之间的可靠通信问题。只要你有多个 Agent 需要通信,你就需要 mq9。
为什么
多 Agent 协作的通信问题今天没有好的解法。OpenClaw 在运行过程中,Agent 之间的异步可靠通信靠的是 HTTP callback、Redis pub/sub、轮询数据库、自研队列——能用,但没有一个是从 Agent 本身的视角设计的,Agent 只是凑合着用。
mq9 想填的就是这个空白:解决 Agent 之间的可靠通信问题,无论同步还是异步,无论对方在不在线。
是什么,为什么这样设计
mq9 是一个消息 broker,像 Kafka 一样部署和使用,专门为 Agent 通信设计。不是把现有的消息队列拿来凑合用,而是从 Agent 的通信特征出发重新定义接口和语义。
为什么是邮箱语义? 把 Agent 当作人来看,不要把它当作服务。人和人之间有飞书、微信、邮件——发出去,对方空了来看,不需要同时在线。Agent 和 Agent 之间,今天没有这样的东西。
邮箱模型天然匹配 Agent 的通信特征:地址明确,投递可靠,异步接收,生命周期自动管理。Agent 生命周期短,邮箱就有 TTL——通信的生命周期跟着任务走,任务结束邮箱自动销毁,不留残留状态。
业界已经有 AgentMail 这样的项目,但它解决的是另一个问题——通过人类的邮件基础设施让 Agent 接入人类世界:注册网站、收验证码、给用户发邮件。mq9 解决的是 Agent 和 Agent 之间的可靠信息传递。
私有部署: 在公司内部署一个 mq9,一键启动,单一二进制,支持 Kubernetes 快速部署。公司内所有 Agent 通过这个 mq9 通信,数据不出内网。
公共服务: 我们计划提供一个公共的 mq9 服务,让运行在不同机器上的 Agent 也能互相通信——比如不同用户的 OpenClaw 之间发消息。
核心概念:邮箱
邮箱地址(mail_id)
每个 Agent 可以快速申请一个邮箱地址(mail_id),比如按任务申请。其他 Agent 知道这个地址,就能往里发消息——不管收件方在不在线。消息存在邮箱里,收件方上线后自然收到。发件方不需要等收件方在线,收件方不需要一直保持连接。异步、可靠、不需要协调。
私有邮箱
mail_id 由系统生成,不可猜测。只有知道 mail_id 的 Agent 才能发消息。适合点对点通信、任务结果回传。
公开邮箱
mail_id 由用户自定义,有意义的名字,比如 task.queue。创建时指定 public: true,自动注册到 PUBLIC.LIST,任何 Agent 可以发现和订阅。适合任务队列、广播频道、能力公告。
邮件发送
知道 mail_id 就能发,不需要任何授权。支持三个优先级,存储层保证顺序,收件方先收到高优先级消息:
| 级别 | 语义 | 典型场景 |
|---|---|---|
| high | 紧急,优先处理 | 任务中断、紧急指令 |
| normal | 常规通信 | 任务分发、结果返回 |
| low | 后台,不紧急 | 日志、状态上报 |
邮件接收
订阅邮箱即全量推送——所有未过期消息立即推送,后续新消息实时推送。重连后不会漏消息,不需要额外的拉取操作。
查看邮件
随时查看邮箱里当前存储的所有消息,不影响订阅推送。
怎么用
# 启动 mq9
docker run -d -p 4222:4222 mq9/mq9:latest
# 安装 SDK
pip install mq9五个 API,Agent 即可通信:
mailbox.create(ttl=3600) # 创建邮箱
mailbox.send(mail_id, payload, priority="normal") # 发消息
mailbox.receive(mail_id) # 收消息,全量推送
mailbox.fetch(mail_id) # 查看邮箱内容
mailbox.delete(mail_id, msg_id) # 删除单封信特性
无数量限制,随时申请。 一个 Agent 可以按需创建任意数量的邮箱——按任务、按会话、按角色都行。不需要提前规划,不需要申请配额,不需要复用邮箱来省资源。用就创建,用完丢掉。
短生命周期,只管用不用管。 每个邮箱创建时指定 TTL,任务结束邮箱自动销毁,连带清理所有未读消息。不需要显式关闭,不需要 GC,不留残留状态。通信的生命周期跟着任务走。
持久化是默认行为,不是配置项。 消息写入即持久化。发件方发出去就可以走了,不需要等收件方在线;收件方断线重连后消息仍在,不会丢。持久化是 mq9 可靠性的基础,不是可选的增强功能。
订阅即收到,毫秒级推送。 订阅邮箱的瞬间,所有未过期消息立即全量推送;此后新消息实时推送,延迟在毫秒级。断线重连后自动补发,不漏消息,不需要手动拉取。
公共邮箱:让其他 Agent 发现你。 创建时指定
public: true,邮箱地址自动注册到 PUBLIC.LIST。其他 Agent 可以通过系统目录发现并订阅,无需带外传递地址。适合对外暴露能力、接收任务、广播状态。优先级保序,紧急消息先到。 消息发送时标记 critical / urgent / normal,存储层保证优先级顺序。订阅方收到的消息序列中,critical 始终排在最前面——任务中断、紧急指令不会被普通消息淹没。
查看与删除,独立于推送流。 查看(fetch)是对邮箱当前存储状态的快照读取,不干扰订阅推送。删除(delete)按 msg_id 精确操作单封信,已处理的消息可以显式清理,保持邮箱干净,也便于调试时检查未处理消息。
