返回博客列表

AgentTeams 深度解析:多 Agent 协作为什么跑在 Matrix 房间里

2026-10-06T18:00:00+08:00
AgentTeams多 AgentMatrixKubernetesHITLDeepSeek Harness开源

AgentTeams 深度解析:多 Agent 协作为什么跑在 Matrix 房间里

大多数多 Agent 框架自己造一套通信层。这个项目反过来:直接住进一个已经存在的 IM 协议里。

AgentTeams 是 AgentScope 团队(阿里)开源的协作式多 Agent 运行时,目前 5,698 stars、705 forks、249 个 open issues,Go 实现,Apache-2.0,最新版本 v1.2.4(2026-09-20)。它今年 2 月 21 日才建仓,7 个多月做到这个体量,节奏不算慢——从版本记录看基本是月度发版。

它的一句自我描述把定位讲得很清楚:

An open-source Collaborative Multi-Agent OS for transparent, human-in-the-loop task coordination via Matrix rooms.

而它自己在 README 里先划清了边界,这一点值得赞赏:"AgentTeams 不与其它 Agent 运行时竞争"——它不实现 Agent 逻辑,而是编排和管理多个 Agent 容器(一个 Manager + 若干 Worker)。

换句话说,别人在做"Agent 的大脑",它在做"Agent 团队的操作系统"。这篇文章拆它的五个关键设计。

本文提纲

  1. 它是什么:不是又一个 Agent 框架,而是运行时编排层
  2. 设计一:Matrix 房间作为协作底座
  3. 设计二:Manager-Workers,让 Agent 管理 Agent
  4. 设计三:凭证隔离——Worker 只拿"消费券"
  5. 设计四:四种 Worker 运行时共存于同一个房间
  6. 设计五:MinIO 共享文件系统与无状态 Worker
  7. 部署:一条命令 vs Kubernetes
  8. 工程细节、版本节奏与选型边界

它是什么:不是又一个 Agent 框架,而是运行时编排层

多 Agent 系统通常有两种做法:在一个进程里调度多个 Agent(LangGraph、AgentScope 这类),或者让多个独立 Agent 通过消息互相调用(自研消息总线)。AgentTeams 走的是第三条:把每个 Agent 装进独立容器,用一套控制平面来编排它们,而"通信"这件事它不自己造——交给 Matrix。

架构组件清单很能说明它是个"系统"而不是"库":

组件 角色
agentteams-controller Kubernetes 原生控制平面,协调 Worker / Team / Manager 三类 CR
Higress AI Gateway LLM 代理、MCP Server 托管、凭证管理
Tuwunel(Matrix) 自托管 IM 服务器,承载所有 Agent 与人的通信
Element Web 浏览器客户端,零配置
MinIO 集中式文件存储,Worker 因此无状态

注意最后一行:Worker 是无状态的,状态在 MinIO。这一条决定了它可以被随意重建——这也是容器化编排思路的必然要求。

设计一:Matrix 房间作为协作底座

这是我认为整个项目最聪明的地方。它的做法是:

每个 Matrix 房间 = 你 + Manager + 相关的 Workers

为什么这个选择值得单独讲?因为多 Agent 协作最缺的三样东西,IM 协议早就解决了:

  • 可见性:房间里的每条消息所有人都能看到——官方原话是 "No hidden agent-to-agent calls"(没有隐藏的 Agent 间调用)。多 Agent 系统最让人不放心的就是"它们到底私下说了什么",把协作放在房间里,这个问题自动消失。
  • 人类介入:想插话就直接 @ 某个 Worker,不需要任何额外接口。这就是 human-in-the-loop 的"默认形态",而不是一个要额外开发的功能。
  • 客户端生态:手机端不用做,任何 Matrix 客户端(Element、FluffyChat)连上服务器就能用;而且 Matrix 是去中心化开放协议,可以自托管、可以联邦,没有厂商锁定。

官方还对比了一个很实际的收益:内置 Matrix 服务器意味着不需要申请钉钉/飞书机器人、不需要企业审批流程。用过企业 IM 集成的人知道这句话的分量——很多时候卡住项目的不是技术,是"等机器人审批下来"。

代价也要说清楚:组织要接受"协作过程落在自建 IM 服务器上",并且要自己负责这套服务器的可用性与安全(后面部署部分会看到,官方对此提了明确的 HTTPS 与网络暴露要求)。

设计二:Manager-Workers,让 Agent 管理 Agent

架构是经典的 Manager-Workers:一个 Manager 集中编排多个 Worker。README 里的交互示例很直观:

你:      Create a Worker named alice for frontend development

Manager: Done. Worker alice is ready.
         Room: Worker: Alice
         Tell alice what to build.

你:      @alice implement a login page with React

Alice:   On it... [a few minutes later]
         Done. PR submitted: https://github.com/xxx/pull/1

两个细节值得注意:

  1. 创建 Worker 是对话式的——不用写 YAML、不用改配置、不用重启。对比它自己给出的对照表,OpenClaw 原生方式是"手工配置 + 重启",这里是"说一句话"。
  2. 你随时可以绕过 Manager 直接对 Worker 下指令(示例里的 @alice)。这说明 Manager 是协调者而不是唯一入口——需要它编排时用它,不需要时直接指挥,这种灵活性在实际运维里很关键。

官方对 Manager 的定位是"AI chief of staff"(AI 幕僚长),它知道 Worker 在做什么,但不接触真实凭证(下一节)。

设计三:凭证隔离——Worker 只拿"消费券"

安全模型是这条产品线真正的差异化。数据流是这样的:

Worker(只持有 consumer token)
    → Higress AI Gateway(持有真实 API key、GitHub PAT)
        → LLM API / GitHub API / MCP Servers

也就是:Worker 看不到任何真实凭证,它只知道"通过这个网关去调用";真假钥匙都由网关持有和注入。

这个设计解决的是一个很现实的恐惧:当你往一个 Agent 里塞 80,000 个社区 skill 时,你到底把什么权限交给了它? AgentTeams 的答案是——即使 Worker 被恶意 skill 完全控制,攻击者也拿不到真钥匙,因为那台容器里本来就没有。

官方把这几点列成了"为什么选 AgentTeams",我按工程语言重述一下:

声明 实质
Enterprise-Grade Security Worker 只有 consumer token;真实凭证留在网关
Fully Private Matrix 可自托管、可联邦,无数据攫取
Human-in-the-Loop by Default 每个房间都有你,随时插话
Zero Configuration IM 内置 Matrix 服务器,无需机器人申请与审批
Skills Ecosystem Worker 按需从 skills.sh 拉取(8 万+ 社区 skill),因为拿不到真凭证所以风险可控
One Command Setup 一条安装命令装齐网关、Matrix、文件存储、Web 客户端、Manager

顺带说一句:"因为拿不到真凭证所以可以放心装社区 skill"这个论证是自洽的,但它只覆盖"凭证窃取"这一类风险——skill 仍可能消耗你的额度、写出错误代码、或做破坏性操作。凭证隔离降低了爆炸半径,不等于消除了风险。

设计四:四种 Worker 运行时共存于同一个房间

这是它另一个有意思的地方:Worker 不是绑定某一种 Agent 实现的。同一个 Matrix 房间里可以同时存在不同运行时的 Worker:

运行时 语言/来源 适合什么
OpenClaw Node.js 通用型 Agent,技能生态丰富,适合任务编排与工具调用
QwenPaw Python 轻量,适合浏览器自动化与快速任务
Hermes hermes-agent 自主编码 Agent,带终端沙箱、可自我改进的技能、持久记忆
DeepSeek Harness 实验性 无头编码 Agent,支持房间级会话续接、Matrix 文件交换、重启恢复;固定在一个经过测试的 DSH 候选版本

官方给的常见分工模式很有参考价值:用确定性的 Agent(OpenClaw / QwenPaw)当 Leader 去拆解和分配任务,用 Hermes Worker 做自主代码执行。 这其实是"编排用确定性、执行用自主性"的务实组合。

切换运行时也只是一条命令:

agt update worker --runtime hermes

两个边界要注意:Manager 不支持 Hermes 和 DeepSeek Harness(只有 OpenClaw 与 QwenPaw 能做 Manager);copaw 这个值仍保留作为兼容别名,CRD 同时接受 copaw 和 qwenpaw。

设计五:MinIO 共享文件系统与无状态 Worker

多 Agent 协作有个隐形成本:Agent 之间传递信息的 token 消耗。你把一份日志从一个 Agent 的上下文复制到另一个 Agent 的上下文,每一次都是钱。

AgentTeams 的方案是引入 MinIO 共享文件系统作为 Agent 间的信息交换通道——把"内容"放进共享存储,房间里只传引用。官方的说法是"显著降低多 Agent 协作场景的 token 消耗"。

这个思路和我们在其它 Agent 系统里看到的"工具结果 offload 到文件系统"是同一个道理,只是在跨容器、跨 Agent 的尺度上做了一遍:共享文件系统同时承担了通信降本和状态外置两个职责,Worker 因此可以是无状态的、可随意重建的。

部署:一条命令 vs Kubernetes

本地体验只要一条命令(前置条件是 Docker):

bash <(curl -sSL https://raw.githubusercontent.com/agentscope-ai/AgentTeams/main/install/agentteams-install.sh)

安装向导会问你三件事:LLM provider(支持 OpenAI 兼容 API)→ API key → 网络模式(仅本地或对外),然后装齐整套组件。打开 http://127.0.0.1:18088 登录 Element Web,Manager 会主动跟你打招呼并教你创建第一个 Worker。

资源要求官方写得很明确:最低 2 核 4 GB,多个 Worker 建议 4 核 8 GB。手机端用任意 Matrix 客户端连服务器地址即可。

生产/共享部署走 Helm,默认 profile 自带 Higress 网关、Tuwunel(Matrix)、MinIO 和 controller,无外部依赖:

helm repo add higress.io https://higress.io/helm-charts
helm repo update

helm install agentteams higress.io/agentteams \
  -n agentteams-system --create-namespace \
  --render-subchart-notes \
  --set credentials.llmApiKey= \
  --set credentials.adminPassword= \
  --set gateway.publicURL=http://localhost:18080

我觉得最有工程品味的一个细节是 LLM preflight(前置校验):Helm 安装时默认会跑一个 hook,发一条最小的 OpenAI 兼容 /chat/completions 请求来验证 key、base URL 与模型名;key 无效、地址不可达、模型不支持、额度错误、provider 故障,都会让安装在 controller 启动之前就失败。对离线或受限集群可用 preflight.llm.enabled=false 跳过。

这类"把错误提前到最便宜的时机"的设计,比事后在日志里翻 500 错误友好得多。

几个部署要点:镜像默认指向中国区仓库(另有美西、东南亚区可换);gateway.publicURL 会被写进 Element Web 配置作为 Matrix homeserver 地址,必须和用户实际访问的 origin 完全一致;对外暴露时只暴露 svc/higress-gateway,controller API、Tuwunel、MinIO 与 Higress Console 都应保持私有;共享访问必须用 HTTPS,因为 Matrix 登录凭据和 access token 会经过这个入口。验证方式也给了:

curl -fsSI https://agentteams.example.com/
curl -fsS https://agentteams.example.com/_matrix/client/versions

工程细节、版本节奏与选型边界

Kubernetes 原生是它从一开始就选的路:Worker / Team / Human 都是声明式 CRD,controller 负责协调;agt CLI 替代了早期的 shell 脚本;还提供可选的 Dashboard。版本记录里有几条演进线索很有意思:v1.1.0 把控制面做成 K8s 原生、引入 Hermes 运行时、镜像瘦身 1.7 GB;v1.1.1 把 MCP 声明式化到 CRD 上(破坏性变更);v1.2.3 让长跑 Project 工作流可见可控(Controller API、agt 命令、Dashboard、经审计的人类介入、Project 历史与检查点);v1.2.4 加入 TeamHarness 的任务状态历史、进度跟踪与完成通知。

还有一点让我印象深刻:它的 bug 报告流程本身是"AI 原生"的——官方让你先导出 Matrix 消息日志 + Agent 会话日志(PII 自动脱敏),然后把仓库丢给 Cursor / Claude Code 之类工具,让 AI 交叉分析日志与代码定位根因,再把分析贴进 issue。

选型边界:

适合它的场景: 你需要多个独立 Agent 容器协作、并且要求全过程可见可干预(合规、审计、企业内部);你不想自研 Agent 通信层,也不想走企业 IM 机器人的审批流程;你希望不同任务用不同 Agent 运行时(确定性编排 + 自主编码执行);你在 K8s 上已经有一套运维体系,愿意接受 CRD 这种声明式管理。

不必用它的场景: 你的多 Agent 只是一个进程里的几个角色——那 LangGraph、AgentScope 这类库更轻,引入 K8s + Matrix + 网关 + 对象存储是重型装备;你不想维护一套自托管 IM 服务器;或者你的团队对 Docker/K8s 不熟,curl | bash 装起来的这套东西出问题时排查成本会很高(249 个 open issues 也说明它还在快速演进期)。

一句话总结:AgentTeams 的价值不在"让 Agent 更聪明",而在"让多个 Agent 的协作变得可看、可管、可审计"——它把协作的复杂度从"你自己造通信层"转移到了"你运维一套成熟的通信与编排基础设施"。

参考链接

你觉得多 Agent 的协作过程应该让人看得见吗?还是只要结果对就行?评论区聊聊你的看法,觉得这份拆解有用就点个赞。


作者: itech001 来源: 公众号:AI人工智能时代(the-ai-era) 网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top

本文首发于 AI人工智能时代,转载请注明出处。

分享给朋友