跳转至

第 11章 Multi-Agent 协作与编排

当 Agent 从单点能力验证走向真实业务,系统面对的问题也在发生变化。很多任务已经不是一次模型调用,或者一个 Agent 完成一轮规划和工具执行就能结束。它们往往持续更长时间,涉及不同专业领域,需要访问不同的系统和数据,还可能穿插人工确认、结果评审和异常处理。此时,真正困难的已经不只是如何让一个 Agent 变得更强,而是如何让多个 Agent 与人围绕同一个目标有序协作。

把多个 Agent 放在一起并不会自然形成团队。如果缺少清晰的分工、协作方式和状态管理,参与者越多,反而越容易出现重复执行、信息不一致、任务遗漏和责任不清。多智能体编排要解决的,正是如何把原本相互独立的执行能力组织起来,让它们既能发挥各自的专业优势,又能在共同目标和统一约束下形成完整的执行过程。

本章沿着“异构接入—团队组织—任务协作—共享信息—通信—治理”的顺序展开。构建篇已说明单个 Harness 如何规划、委派与使用上下文,这里重点讨论多个独立成员共同运行时的责任交接、状态一致性与成果接受;底层调度和消息投递分别沿用异步任务章与分布式通信章的机制。

11.1 从单 Agent 到 Agent 团队:编排层的价值与边界

构建与运行能力使单个 Agent 能在明确边界内持续工作。当目标涉及多种专业能力、独立权限或可并行交付时,团队编排需要把这些执行能力组织到同一任务中,并保持责任、依赖和结果可追踪。

11.1.1 单 Agent 的适用范围与团队价值

单 Agent 的执行链路相对简单。它拥有较为集中的上下文,可以围绕一个目标连续思考和行动。对于范围明确、上下文关联紧密的任务,这种方式往往更加直接,也更容易控制。但在真实的企业场景中,一项工作可能同时涉及需求分析、方案设计、代码实现、测试验证、安全检查和上线审批。如果把这些工作全部交给一个 Agent,它就需要不断在不同的专业角色之间切换,同时维护越来越多的上下文、工具和权限。原本可以并行推进的任务也会被压缩到一个执行循环中,其中任何一步遇到阻塞,都可能让整个任务停下来。

这种情况下,引入多个 Agent 的目的并不是简单追求更多执行者,而是让不同能力能够以更合适的方式组合起来。例如,在一次复杂的软件变更中,可以由一个 Agent 理解总体目标并梳理工作范围,由熟悉代码的 Agent 完成实现,由测试和安全 Agent 从不同角度并行验证,再由人类负责人判断是否满足发布条件。每个参与者都聚焦于自己擅长的部分,只获得完成当前工作所需要的信息、工具和操作范围。相比让一个 Agent 承担全部工作,这种方式更容易形成专业分工,也为并行执行、权限控制和结果复核提供了空间。

11.1.2 围绕共同目标建立持续协作

不过,多个 Agent 能够互相调用或交换消息,还不能说明它们已经组成了一个团队。团队需要有共同的目标,也需要知道每项工作由谁推进、依赖哪些前置结果、完成后交给谁,以及怎样才算真正结束。参与者之间不仅要传递消息,还要围绕任务、状态和产物形成稳定的协作关系。这里所说的 Agent 团队,可以理解为一组围绕共同目标组织起来的 Agent 与人:每个成员拥有相对稳定的身份和能力边界,团队内部存在明确的分工与协作关系,工作过程能够被持续追踪,最终结果也能够被验证。

编排层为这种团队协作提供了一条贯穿始终的主线。它把一个相对宽泛的目标逐步转化为可以执行和验收的任务,建立任务之间的先后关系和依赖,并在推进过程中持续汇集各个成员的状态和产物。当部分工作可以独立完成时,编排层可以让它们并行推进;当某个环节依赖前序结果时,也可以在条件满足后再进入下一阶段。最终,各成员的输出需要重新汇集到共同目标上,形成可以交付、检查和验收的整体结果。

显式记录协作过程,对于持续时间较长的任务尤其重要。如果团队只依靠对话历史来维持进度,一旦参与者发生变化、运行环境重启,或者任务中断一段时间,很多隐含信息就可能难以恢复。将目标、任务、依赖关系、执行状态和工作产物沉淀下来,可以让新的成员快速理解当前进展,也可以在失败后继续推进。当某个 Agent 无法完成任务、长时间没有响应或产出不符合要求时,系统可以选择重新执行、调整分工、请求其他成员协助,或者将问题交给人进一步判断。这样,团队的连续性就不再依赖某一个 Agent 始终在线。

11.1.3 编排层与执行系统的职责边界

多智能体编排并不是脱离既有能力单独存在的。在完整的 Agent 系统中,Harness 将模型、工具、上下文和控制循环组织成 Agent 的执行过程,并完成必要的局部检查;Runtime 让这些执行过程能够稳定启动、持续运行,并在异常后恢复,具体运行环境则提供计算、网络、文件、凭证映射和隔离条件;Gateway 为模型、工具和 Agent 提供统一的连接入口,A2A、MCP 与消息系统进一步支持参与者之间的能力发现、信息交换和协作调用。编排层将这些能力串联到团队工作中,使目标、成员、任务、进度和结果形成稳定联系。至于最终交付是否达到业务目标,仍需要由任务发起人或获得授权的验收者依据约定标准确认。

编排层也不需要介入每个 Agent 的所有执行细节。团队可以统一目标、分工、约束和验收标准,但每个成员仍然可以在自己的能力范围内选择合适的执行方式。如果所有信息都必须先汇总到一个主管 Agent,再由它决定每一个步骤,多智能体系统很容易重新回到单点决策的模式,主管 Agent 也会成为新的上下文和执行瓶颈。更加合理的方式,是在团队协调与成员自主之间保持平衡:日常工作由成员独立推进,只有在任务阻塞、结果冲突、资源不足或触及高风险操作时,才需要进一步协调或引入人工判断。

image

11.1.4 协作收益与协调成本

多智能体协作同样会带来新的成本。任务需要被合理拆分,参与者之间需要反复传递信息,共享状态需要保持一致,更多的执行主体也会产生额外的模型调用和运行开销。如果任务本身目标单一、上下文高度集中,或者执行步骤必须严格串行,那么使用单 Agent 往往更加简单有效。只有当专业分工、并行执行、故障隔离和过程治理带来的收益,能够覆盖沟通与协调成本时,Agent 团队才真正具有价值。

团队编排需要验证的,是成员分工与共同交付是否成立。后续各节依次说明接入、组织、协作、共享信息、通信和治理如何支持这一目标。

11.2 异构 Agent 的接入:不同框架、Coding Agent 与个人工作区助手

一个业务 Agent 已经查出了服务中需要升级的依赖,接下来希望让开发者电脑上的 Coding Agent 修改代码并运行测试。两者使用不同的软件和运行环境,需要把修改要求交给对方,并取回补丁和测试报告。

类似协作会涉及框架开发的 Agent、产品化 Coding Agent、托管 Agent 服务和个人工作区中的助手。它们并非互斥分类;本节按可控制的接口和运行位置说明接入方式,构建入口分类沿用构建篇。

这些类型并不互斥。Coding Agent 可以部署在云端,使用框架开发的 Agent 也可以运行在个人电脑上。构建方式决定能够怎样扩展其执行逻辑,运行位置则影响资源访问、在线时间和维护责任。选择接入方式时,两方面都需要考虑。

11.2.1 保留原有执行方式

一个已经能够完成业务任务的 Agent,通常有自己的 Harness,负责组织上下文、调用工具和维护执行状态。让它加入团队时,可以继续使用这套执行逻辑,在外部补充协作所需的接口和能力。

可以先根据自己能够控制的范围选择接入方式:

已有条件 接入方式 主要需要准备什么
能修改 Agent 的应用代码 在现有框架中加入协作 SDK(软件开发工具包)或任务接口 接收任务、反馈状态和提交成果
能安装插件或控制启动方式 使用插件和适配程序 配置工作环境,关联会话和执行状态
只能调用远程服务 API 在外部增加适配程序 记录远端任务编号,取得状态和结果

这里的适配程序负责在团队与 Agent 之间转接请求和结果,可以独立运行,也可以集成在已有服务中。选择之后,还要检查 Agent 在执行过程中能够反馈什么、接受哪些控制。例如,能够逐步返回文本,不代表支持任务查询或中断恢复。团队应根据这些实际能力安排工作。

对于只能通过外部 API 调用的 Agent,适配程序记录团队任务对应的远端任务编号,并取得远端状态和成果。远端的运行管理仍由服务提供方负责。如果接口只返回最终结果,就无法提供实时进度;取消和恢复等操作也应以远端实际支持的能力为准。

11.2.2 框架开发的 Agent 如何加入协作

对于使用框架开发的 Agent,可以从已有服务入口开始接入。应用接收任务输入,调用原有 Agent,并将执行结果返回给团队。模型、工具和业务流程可以继续沿用,不必为加入团队而整体迁移。

承担持续协作任务的成员,需要能够读取分配给自己的工作、报告阻塞并提交成果。应用可以通过 SDK 将这些能力组合进原有 Harness:指令说明职责,工具提供任务操作入口,较长的操作步骤可以放入 Skill。应用也可以用确定性代码或工作流完成这些步骤,并不要求全部交给模型调用工具。

无论采用哪种方式,都要约定任务状态由谁维护、哪些操作由成员发起,以及结果如何提交。涉及任务写入时,由任务服务根据调用身份、任务归属和当前状态检查操作权限。

应用验证请求来源后,将所属团队和任务信息传给 Agent 及相关工具。即使请求已经开始返回内容,后续工具操作也要归属到同一个任务,避免将进度或成果记入其他任务。

应用也可以逐步接入。一个只承担短时查询的 Agent,可能只需稳定的请求与结果接口;需要接收子任务、报告进度和提交文件的执行者,则要补齐相应的协作能力。接入范围应与实际职责一致,不必要求所有成员一开始就具备完整的团队管理能力。

例如,具备协作 SDK 的平台可以向执行成员提供任务读取、进度反馈和成果提交接口。应用将这些接口接入已有框架后,仍由原有 Harness 执行业务逻辑;具体接入范围以所用版本实际支持的能力为准。

11.2.3 Coding Agent 的运行适配

Coding Agent 已经具备文件操作、命令执行和代码验证等能力。接入这类 Agent 时,通常可以通过插件或适配程序增加协作能力,同时保留其原生执行流程。

插件适合装配协作指令、Skill 和工具;在自行启动进程的接入方式中,适配程序负责启动、加载配置、接收请求和检查运行状态。Coding Agent 仍使用自己的任务循环完成工作。

适配程序还需要记录团队中的交互对应 Coding Agent 的哪个会话,让后续消息能够延续已有上下文,并按隔离要求分开无关工作。任务与会话分别标识,按需要关联,不要求一一对应;同一任务可以跨会话继续推进,会话中也可以先后处理不同任务。具体的状态组织见上下文、协作状态与运行工作空间相关章节。

原生接口返回的进度、等待输入和结束原因,需要转换为团队能够理解的状态。成员支持取消时,适配程序将请求传给正在执行任务的 Agent,并返回实际处理结果。关闭输出连接后,后台命令仍可能继续运行,因此需要确认取消是否生效。

Coding Agent 内部的子代理仍由当前 Harness 管理,不因接入而自动成为团队成员。只有需要独立分派或管理时,才为其建立相应的成员身份和协作关系。

11.2.4 个人工作区的接入边界

有些任务适合留在个人工作区执行。例如,一个项目已经在开发者电脑上准备好依赖和测试环境,或者需要使用只能在特定网络中访问的工具。此时可以将指定的本地 Agent 实例接入团队,由本地适配程序接收工作并反馈结果。接入的是这个运行实例,能否延续用户原来打开的会话,取决于 Agent 提供的接口。

接入前需要确定工作目录和可用资源。项目随附的 Skill、团队分配的工具与用户个人配置,往往有不同的使用范围。团队任务需要使用个人工具时,应由用户明确选择,避免自动继承个人目录中的全部配置。用户允许某个 Agent 处理项目代码,也不意味着团队中的其他成员可以借此使用该用户的所有账号权限。

工作目录用于确定默认操作位置,实际的访问限制还取决于执行环境。仅设置一个目录参数,通常不足以阻止程序访问其他文件。需要限制文件、命令或网络访问的任务,应由相应的权限控制或沙箱实施约束,具体机制见运行环境与安全相关章节。

本地成员的可用性也与云端常驻服务不同。机器休眠、网络断开或本地登录失效,会影响接收任务和反馈状态。本地适配程序应报告可观察到的连接及执行状态,无法确认时如实说明。需要持续在线的工作,应选择具备相应运行条件的成员承担。

文件交付尤其容易被忽略。本地 Agent 生成报告后,如果只回复一个绝对路径,其他机器上的成员通常无法读取。需要共享的文件应通过约定的交付通道提交,并在任务结果中附上接收方可访问的引用。上传哪些文件、哪些内容保留在本地,应按任务范围决定,而不应默认同步整个工作目录。

本地执行也不代表数据始终留在本机。调用远程模型、工具或交付文件时,都可能向外传输数据。接入前应核对实际使用的服务和发送内容,按数据要求选择配置。

11.2.5 用一次实际交接验证接入

接入完成后,可以通过一项范围较小的任务检查成员是否能够参与协作。验证既要覆盖请求到达和实际执行,也要覆盖接收方取得成果的过程。

检查内容 可观察的结果
任务到达 指定成员收到正确的输入,使用预期的身份和工作环境
连续交互 后续消息进入对应会话,不混入无关任务
状态反馈 能够区分执行中、等待、失败和结束,并提供必要原因
成果交付 接收方能够读取文件或结构化结果,并核对其所属任务
控制与恢复 对声明支持的取消、重试和恢复能力,分别验证实际行为

回到开头的依赖修复场景,可以检查修改要求是否到达指定 Coding Agent,工作目录是否正确,执行状态能否返回,以及业务 Agent 能否取得对应任务的补丁和报告。如果本地缺少依赖,阻塞信息也应能够传回团队。

这项验证检查的是协作接入链路。补丁是否解决漏洞、结果是否满足交付要求,仍按任务本身的验收约定处理,具体过程将在任务编排部分展开。

接入后,团队能够了解各成员的能力、运行条件和交付方式。在此基础上,还需要确定哪些成员负责协调、哪些承担执行,以及它们之间如何分工,下一节将讨论这些组织关系。

11.3 团队组织拓扑:主管—执行、对等协作与分层编排

当不同能力的 Agent 加入同一个协作体系后,还需要明确它们之间的组织关系:哪些成员统筹目标,哪些成员承担专业工作,哪些决定可以自主作出,出现分歧时又由谁协调。组织方式不仅影响工作分派,也影响信息传递、决策效率和团队的并行能力。 主管—执行、对等协作和分层编排,是对决策、委派和汇报关系的不同安排。它们不是从低级到高级的演进阶段,而应根据实际工作特点选择。

image

11.3.1 团队与成员:组织关系与角色分工

可以从团队与成员两个层面理解 Agent 的组织关系。Team 表达相对稳定的协作组织,Agent 则作为成员加入其中,并承担相应角色。

团队通常具有共同的职责范围,可以连续承接不同任务,而不是随着某一次 Agent 执行结束就解散。团队成员可以变化,但其组织关系不需要在每次执行时重新建立。

专业能力说明 Agent 擅长什么,例如代码实现、测试验证或数据分析;组织角色说明它负责什么,例如总体协调、局部执行或结果复核。

专业能力较强的 Agent 不一定承担主管职责,主管也不需要比所有成员都更擅长具体业务。角色存在于具体团队关系中,同一个 Agent 可以在不同团队承担不同角色。

团队成员关系与具体任务责任需要分别记录:团队成员关系说明 Agent 属于哪个组织,任务参与关系说明它需要参与或了解哪项工作,执行责任明确谁负责完成并交付,审核责任则明确谁有权检查和接受结果。

加入团队,不意味着必须参与每一项任务;能够查看任务,也不意味着负责执行或审核。组织管理身份同样不能自动替代业务决策或最终验收职责。

角色不能只停留在名称上,还应说明成员可以自主决定什么、需要交付什么,以及何时寻求协调。如果主管持续代替执行者解决专业问题,执行者又等待主管决定所有步骤,团队就难以形成真正的分工。

人也可以承担需求澄清、专业判断或关键决策等角色,而不只是 Agent 无法继续工作时的临时兜底者。

11.3.2 主管—执行:集中协调,分散执行

主管成员统筹总体目标、组织分工、处理跨任务依赖,并汇总交付结果。执行成员在明确的目标和约束下,自主完成局部工作。

这种模式容易建立清晰的责任归属,但也要避免所有局部决定都等待主管确认,形成决策瓶颈;还要避免主管在分派前提前解决业务问题、在交付后重复验证,造成重复执行。

目标、交付物、负责人和依赖已经清楚时,就应允许执行者开展工作。主管重点处理总体协调,不应决定每一个执行动作。

11.3.3 对等协作:直接协商,明确共同决策规则

成员按照专业职责直接交换信息、协商方案并相互复核,不要求所有事情经过固定主管。

这种方式能够缩短沟通路径,但必须预先约定分歧如何解决、哪些事项需要共同决定、谁负责整合共同产物,以及谁承担最终交付责任。

对等不意味着责任模糊,也不意味着每个成员对所有事项拥有相同的决定权。

11.3.4 分层编排:按专业小组组织交付

总体负责人协调多个专业小组,小组内部再安排具体执行。它可以让局部问题在较小范围内解决,减少总体负责人需要处理的细节。

分层也会带来额外成本,包括需求逐层传递时的信息损耗、进度汇报延迟,以及跨层协调开销。只有当一个小组能够承担相对完整的交付责任时,增加层级通常才有实际意义。

11.3.5 组织关系与沟通路径

主管—执行结构可以允许执行成员直接讨论问题,分层组织中的不同小组也可以围绕明确的接口直接交流。

直接沟通不会自动改变任务归属,也不意味着参与者获得相同的决策权。选择组织模式时,应关注专业分工、工作耦合和决策要求,而不是单纯根据 Agent 数量增加主管或层级。

11.4 协作机制:任务分解、分派、并行执行与结果聚合

组织关系说明团队由谁组成,但一次具体工作还需要通过任务持续推进。本节沿用前文的依赖修复场景:业务 Agent 发现服务依赖需要升级,Coding Agent 负责修改代码,测试 Agent 负责验证,Leader 负责协调交接和汇总,最终由用户验收交付。这个过程依次经过任务定义、计划制定、调度执行和结果聚合。

image

11.4.1 任务与子任务:目标分解与交付责任

Task 是围绕具体目标建立的持续工作约定,记录目标、范围、输入、交付物、验收条件、负责人及必要约束。Subtask 承载其中可以明确分派、独立负责的局部交付,其价值仍要回到父 Task 的目标上判断。

本章将 Task 的一次实际执行称为 Task Run。Task 保存相对稳定的目标、责任、依赖和状态,Task Run 则记录某一次执行的起止、执行者、输入输出和结束原因。一个 Task 可以因重试、恢复或重新分派产生多个 Task Run;Session 是具体 Agent 的交互或执行上下文,可以与 Task Run 关联,但两者不要求一一对应。消息可以触发任务或补充信息,但发送成功不代表任务已经被承接。

在依赖修复场景中,根 Task 的目标是完成依赖升级并形成可验收的补丁和验证结果。实现子任务由 Coding Agent 负责,交付代码修改及说明;验证子任务由测试 Agent 负责,交付与指定代码版本对应的测试结果。只有当工作存在独立交付、不同责任或明确依赖时才拆成子任务;同一成员连续完成的内部步骤不必逐项建成任务。

任务信息以能够支撑执行和验收为准。目标和约束已经清楚时,可以直接推进;只有歧义会实质改变交付内容、责任或执行边界时,才需要进一步澄清。已有材料能够证明结果时,也不必为了形式完整重复制作报告。

11.4.2 Task 的计划制定

计划回答如何完成根 Task:怎样划分交付单元、选择执行者、安排依赖,并利用可以安全展开的并行机会。计划节点的创建顺序不等于实际执行顺序,依赖关系和可用条件才决定任务何时能够开始。

在依赖修复场景中,Coding Agent 可以先定位修改范围并生成补丁,测试 Agent 同时准备测试环境和用例;完整验证则等待补丁产物可用后开始。计划需要明确测试使用哪个补丁版本,以及什么结果可以作为验证完成的依据。这样,成员可以并行准备,又不会把尚未完成的前序结果当成有效输入。

执行者的选择需要结合专业能力、可用权限和当前负载。Leader 明确目标、交付条件和依赖,但不预先替执行者解决所有专业细节。父 Task 已经记录的共同目标和约束可以由子任务引用,子任务只补充自己的责任、交付物和特有条件,避免多份描述在后续修改中产生不一致。

需求变化时,计划更新应保留已经形成的有效进展。例如,目标版本从 V1 调整到 V2 时,需要标明哪些分析仍可复用、旧补丁和测试结果对应哪个版本、哪些工作必须返工,而不是直接覆盖旧状态或重新生成整套任务。

11.4.3 Task 的调度执行

调度根据任务当前状态决定哪些工作可以执行,并处理分派、承接、等待、恢复和重新分派。通知用于提醒成员出现了新工作或状态变化,真正的执行判断仍以 Task State 中的负责人、依赖和有效版本为准,避免延迟或重复消息重新触发已经结束的工作。

在示例中,Coding Agent 承接实现子任务并提交补丁 Artifact V1,测试 Agent 随后基于该版本执行验证。如果测试环境缺少依赖,验证子任务应记录阻塞原因和所需条件;能够独立推进的其他工作可以继续。条件补齐后,可以为同一验证 Task 创建新的 Task Run;如果原执行者不再适合,也可以在保留已有记录的前提下重新分派。

如果测试发现补丁不符合要求,应把失败用例、对应产物版本和修订要求关联回实现子任务。Coding Agent 提交 Artifact V2 后,旧结果仍作为历史事实保留,但后续验证只对当前有效版本作出判断。这样可以区分重试、返工和需求变更,避免成员在不同版本上反复工作。

团队级停止条件需要在根 Task 开始前约定,包括总体时间或成本预算、最大委派深度、派生任务数量、单项任务的重试次数、结果返工轮次,以及连续多轮没有新增有效产物或状态进展时的处理方式。具体阈值由任务风险、成本和时效要求决定,不在编排过程中无限追加。

触及停止条件后,系统应暂停新的委派和自动返工,保留已经完成的结果、当前阻塞和剩余预算,并将根 Task 标记为失败、已阻塞或等待人工判断。任务发起人可以据此终止任务、调整范围、补充资源或明确授权后继续;单个 Agent 的重试上限不能替代这一级团队约束。

11.4.4 Task 的结果聚合

结果聚合把局部交付重新连接到根 Task 的目标。执行者提交结果,表示候选成果已经产生;Leader 或指定审核成员接受子任务结果,表示它具备继续用于下游工作的条件;根 Task 达到完成条件,则要求当前有效版本的成果共同覆盖总体目标。三者相关,但不能互相替代。

在依赖修复场景中,Leader 需要确认代码补丁、修改说明和测试报告属于同一有效版本,必要检查已经完成,并且不存在阻碍交付的实质性限制。代码、日志和成员报告最初只是候选材料;只有与具体验收条件建立关联后,才能作为支持判断的 Evidence。Leader 可以在授权范围内接受普通子任务,但这类内部接受不等于最终业务验收。

根 Task 汇总成果并达到约定完成条件后,可以进入“已完成”状态。这里的“已完成”表示团队执行阶段已经结束、产物具备交付条件,但不是任务生命周期的真正终态。用户或指定的人工验收者还需要取得并下载产物,依据预先约定的验收规则确认接受,或者提出修订要求;确认接受后再执行归档,Task 才真正完结。未通过验收时,应沿用原有 Task 和结果关系继续修订,而不是另建一套任务。

最终交付应说明当前有效产物如何覆盖目标、各项结果是否一致、仍有哪些限制,以及停止条件是否曾经触发。已经接受的子任务结果可以直接复用;只有多份结果确实需要统一口径、解决冲突或形成综合判断时,才需要额外整合,不必固定增加一个新的“聚合执行阶段”。

11.5 团队共享上下文、记忆与协作状态

在单 Agent 系统中,上下文、记忆和工作空间通常围绕一个执行主体组织。进入 Agent 团队后,问题不再只是“怎样让模型看到足够的信息”,而是多个角色不同、权限不同、推进节奏不同的成员,怎样在保持各自判断空间的同时,对共同目标形成一致理解。

共享不足会导致重复探索、任务冲突和错误依赖;共享过多又会让对话、工具结果和中间判断不断挤占上下文,并把局部错误扩散给其他成员。因此,团队需要的不是所有成员共用一个不断增长的“共享大脑”,而是一套有边界的信息协作机制:成员保留相对独立的推理空间,任务模型维护协作状态,产物系统保存实际成果,团队记忆沉淀可复用知识,每个 Agent 再根据当前角色和任务取得必要信息。

11.5.1 团队共享上下文:形成面向任务的信息视图

团队共享上下文并不意味着所有 Agent 看到完全相同的 上下文窗口。研究、编码、测试和安全等成员关注的信息不同,即使面对同一项任务,也应形成与自身职责相匹配的上下文视图。

更准确地说,团队共享的是 上下文来源,而不是完全相同的 Context。统一维护的目标、约束、任务状态、已确认事实和协作产物构成上下文来源;每个 Agent 再结合 角色、任务、权限 和执行阶段,从中选择当前决策所需的信息。Context 是团队状态在某个成员、某个时刻的局部视图,而不是团队状态本身。

这种选择应遵循“最小充分”原则:既包含完成任务所需的目标、约束、依赖结果和相关产物,又避免把完整项目历史、无关工具输出和其他成员的全部推理过程一并注入。这样既能降低 token 和通信成本,也能减少噪声对判断的干扰。

Handoff 是这种上下文边界最典型的体现。交接内容可以按下面四类组织:

信息类别 需要传递的内容
目标 当前目标、工作范围和交付要求
已知事实 已确认的信息和已经完成的工作
待处理事项 尚未解决的问题、依赖和关键约束
可用引用 可以继续使用的 Task、数据和 Artifact 引用

完整搜索过程、工具调用记录和未经验证的中间推理,通常不需要原样传递。清晰的 Handoff 应让接收者可以继续工作,同时能够判断信息来源和适用范围。

11.5.2 团队共享记忆:沉淀经过验证的经验

团队共享记忆回答的是“过去积累了什么,以及哪些内容值得在后续任务中继续使用”。它不等于多个 Agent 共用一个向量数据库,也不是对所有 对话历史 的永久保存。

Agent 在探索过程中会产生大量假设和临时判断。未经验证的内容如果直接进入长期记忆,容易在后续任务中被当作事实反复引用。更适合沉淀为团队记忆的,是经过任务结果、外部数据、其他成员或人工确认的信息,例如已确认的领域事实、有效或失败的方法、重要决策及其背景、团队工作约定和可以复用的操作策略。

团队记忆还应保留必要的来源和边界:由谁产生、经过什么验证、适用于哪个团队和场景、何时写入,以及当前是否仍然有效。随着业务规则和外部环境变化,记忆也需要被更新、降级或淘汰。相比存储技术,决定什么可以成为记忆、由谁维护以及何时失效,更能影响团队长期协作的可靠性。

11.5.3 共享协作状态与产物:维护共同事实

复杂任务可能持续数小时甚至数天,并产生任务状态、计划、代码、数据、文档和测试结果等持续存在的信息。这些内容不能依赖某个 Agent 的上下文窗口才能存在,但也不需要被统一塞进一个含义宽泛的 Workspace。更清晰的方式,是由 Task State 和 Artifact 分别维护协作过程与实际成果。

Task State 记录目标、责任、依赖、当前进度和验收状态,使成员退出、替换或重新加入后仍能继续推进;其分解、调度和结果聚合方式已在 11.4 展开。Artifact 保存研究报告、设计文档、代码、数据集和测试结果等实际成果,使下游成员可以基于同一份产物继续工作,减少自然语言转述带来的信息损失。

消息用来说明“发生了什么”,Task State 和 Artifact 则共同记录“当前事实是什么”。成员可以通过消息通知某项任务已经完成,但其他成员仍应读取任务的当前状态;成员可以通知一份报告已经生成,但接收方应通过可访问的 Artifact 引用取得报告本身,而不是只依赖消息摘要。

协作状态和产物也不意味着所有成员可以读取和修改全部内容。不同任务、数据等级和组织边界下,成员看到的对象及可执行的操作可能不同。共享的是统一、可引用的事实载体,访问范围仍应结合角色、任务和权限进行控制。

11.5.4 Context、Memory、Task State、Artifact 与 Workspace 的关系

这些对象相互关联,但解决的问题不同:

对象 回答的问题 生命周期 典型内容或用途
Context 当前 Agent 此刻需要知道什么 当前步骤或当前任务 目标、约束、依赖结果和 Handoff 信息
Memory 团队过去积累了什么 跨任务、跨 Session 已验证事实、方法、决策和经验
Task State 当前工作推进到哪里 随 Task 持续 责任、依赖、进度和验收状态
Artifact 团队实际产出了什么 由业务应用定义 报告、代码、数据和测试结果
Workspace Agent 在哪些工作文件和获准资源上开展任务 按任务或项目的持久化策略管理,可跨运行实例重新挂载 工作目录、文件、分支、快照,以及映射到其中的工具与凭证引用
Environment 当前执行采用哪些运行条件 随运行实例或部署配置变化 计算、网络、文件系统、凭证映射与隔离条件

Context 根据成员当前角色和任务,从 Task State、Artifact、Memory 及实时事件中选择必要信息,形成当下的决策视图。Workspace 是 Agent 可直接操作的工作目录及其中映射的获准资源,Environment 描述这些工作发生时采用的计算、网络、文件系统、凭证映射与隔离条件。前者便于工作文件在运行实例之间延续,后者约束每次运行可如何访问和执行;二者共同支撑任务开展,但任务状态、长期记忆和正式产物仍由相应对象维护。

11.5.5 从共享一切走向最小充分共享

团队共享遵循四项要求:成员保留独立判断空间;关键事实进入任务记录;已交付成果通过稳定引用共享;可复用经验经过验证后进入记忆。底层存储、版本合并和记忆生命周期沿用状态存储章的机制。

在这套信息结构下,团队不必让每个成员知道所有事情,也能维持共同目标和协作连续性。接下来还需要解决状态变化、任务请求和产物引用如何在不同 Agent 之间传递,这正是团队通信与协议需要回答的问题。

11.6 团队通信与协议:A2A、MCP 与消息路由

共享上下文、记忆、任务状态和产物解决了团队信息如何组织,通信机制则让不同成员能够发现彼此、建立联系并持续交换请求、事件和结果。早期多 Agent 系统通常由同一框架创建所有成员,调用关系和接口也由应用预先确定;当团队开始接入不同框架、不同运行环境乃至不同组织提供的 Agent 时,通信就需要从框架内部的消息传递走向更稳定的协作协议。

11.6.1 从消息交换到持续协作

传统服务调用通常围绕已知 Endpoint 和一次请求响应展开。Agent 协作则可能经历能力发现、任务委派、上下文交接、过程反馈、补充输入和成果交付,并持续数分钟甚至更长时间。

因此,通信层不只需要传递一段自然语言,还要回答:怎样识别合适的协作者,怎样关联同一项工作的多轮交互,怎样表达执行中、等待输入、失败和完成等状态,以及怎样交付可继续使用的结果。一次消息可以触发协作,却不能单独代表工作已经被承接或完成;团队仍应以 Task State 和 Artifact 作为协作事实,具体模型见 11.4 和 11.5。

11.6.2 A2A:面向异构 Agent 的开放协作

Agent2Agent(A2A)为不同框架和平台中的 Agent 建立共同的协作语义。它的价值不仅是提供一种网络传输方式,还在于把能力发现、持续任务和成果交付纳入统一协议。

A2A 对象或机制 主要作用 与本章对象的关系
Agent Card 描述 Agent 的名称、能力、接口和交互元数据 为发现和选择提供信息,但不能仅凭声明建立可信身份
Task 表达 A2A 协议中的一次可跟踪工作 需要与业务 Task 建立映射,同名不代表生命周期和权威来源完全相同
Message 表达客户端与 Agent 之间的一次通信 可以关联 Task,也可以在简单交互中直接返回而不创建 Task
Artifact 表达 A2A Task 产生的协议输出 需要映射为业务应用可管理和验收的 Artifact
contextId 关联同一交互上下文中的多个 Message 和 Task 用于协议交互关联,不替代业务 Task 或 Session 的定义

Agent Card 可以附带签名和安全配置,但调用方仍需结合签名验证、信任来源和授权策略判断是否可信。协议中的 Task、Message 和 Artifact 解决互操作问题,本章中的同名对象则承载业务责任、状态和验收语义,两者需要通过适配层明确关联。

A2A 为长时间运行提供多种更新方式。Streaming 用于在连接保持期间持续接收事件;轮询允许调用方稍后查询 Task 状态;Push Notification 则可以在调用方不维持连接时接收更新。三者可以按运行条件组合,但不应统一描述为“不占用连接”。

11.6.3 A2A、MCP 与内部消息机制如何配合

A2A 用于 Agent 之间的任务交接和结果交换;MCP 为模型应用连接工具、资源和提示;内部消息系统则承载状态通知、广播和组件解耦。协议的传输形态、版本演进和续传机制由分布式通信章展开,本节关注它们在团队中的映射关系。

研究 Agent 可以经 MCP 查询资料,再经 A2A 委派报告工作,团队内部通过事件通知状态变化。适配层需要把协议标识映射到业务 Task、Session 和 Artifact,并保留来源与权限。MCP 的可选 Tasks 扩展需要双方显式支持,其句柄不自动等同于业务任务或 A2A Task。

团队应按参与方声明且经过验证的能力选择查询、流式或推送。协议接通后仍要验证任务承接、产物可读和恢复路径,避免把传输成功视为协作完成。

11.6.4 团队通信模式

团队可以根据任务特点组合不同通信方式,组织关系并不必然决定所有消息都经过同一路径:

通信方式 适用场景 需要注意的问题
Direct / Handoff 能力边界清晰、可以直接交接的协作 交接目标、状态和产物引用需要完整
Shared Message Space 探索、讨论和相互复核 通过订阅和角色过滤控制信息噪声
Event-driven / Publish-Subscribe 规模较大、异步程度较高的团队 处理重复投递、顺序变化和消费恢复

主管—执行、对等协作和分层编排描述的是团队的组织与决策关系,已在 11.3 讨论;Workflow 和 Graph 描述任务之间的确定性依赖,主要由 11.4 的计划与调度机制承载。通信层需要支持这些关系,而不必重复定义它们。

11.6.5 从语义选择到混合路由

当成员数量增加,发送方未必预先知道应该调用哪个 Agent。路由可以从“调用 Agent B”转向“寻找能够处理某类任务的 Agent”:系统先根据 Agent 声明的能力、当前任务语义和可用状态筛选候选者,再选择合适的执行者。

模型可以参与理解任务内容、判断所需能力并给出候选成员建议,但最终选择还需要校验团队边界、权限、数据范围、成员可用性、成本和安全策略。更实际的方向是 混合路由:语义判断帮助理解和选择,确定性规则完成约束、执行和留痕。A2A 的能力描述可以作为候选发现入口,团队策略和运行状态则共同决定最终路由结果。

11.6.6 消息平面与协作状态分离

消息适合传播意图、事件、交接信息和对象引用。普通通知不作为任务完成的唯一依据,接收者应查询对应任务和产物;若系统采用事件溯源,也可以由持久化事件日志形成权威状态,但需具备完整事件、顺序、保留和重建契约,不能直接将任意消息队列等同于任务账本。

通信协议需要让消息与对应的 Team、Task、Task Run、Session 和 Artifact 建立稳定关联,同时处理重复投递、顺序变化和断线恢复。协作事实继续由 Task State 和 Artifact 维护,避免把对话历史当作 Team State。

11.6.7 从封闭团队走向开放协作网络

随着开放协议逐步成熟,Agent 团队可以从单一应用内部扩展到跨部门、跨平台甚至跨组织协作。能够发现和调用某个 Agent,并不代表可以默认信任其能力声明或数据处理方式;采用标准协议的 Tool 也不因此自动可信。

开放协议解决互操作问题,Identity、Delegation、Policy、Data Boundary 和 Audit 决定连接是否可以发生。通信需要携带足够的身份、任务和调用上下文,并与团队治理机制共同完成信任判断;具体的主体、授权、权限与审计模型将在 11.7 展开。

由此,团队通信形成了一条清晰链路:MCP 连接模型应用与外部能力,A2A 连接自治 Agent,内部消息机制传播平台事件,混合路由选择合适的协作者,而 Task State 和 Artifact 保存持续的协作事实。它们共同支撑 Agent 从独立执行走向开放、可持续的团队协作。

11.7 团队治理与可观测:身份、权限与全链路追踪

11.7.1 身份治理

身份治理需要严格区分主体、凭证与授权关系。“主体”回答谁在行动,“委托授权”回答主体为什么可以代表他人行动,“凭证”只是主体向目标系统证明身份或权限的载体。三者分离后,平台才能避免把用户长期凭证直接交给 Agent,也能在审计时还原从发起人到执行工作负载的责任链。

对象类别 生命周期 主要用途 产品要求
人员主体 随企业账号生命周期变化 登录、管理、审批、发起任务和人工接管 对接企业身份源,支持单点登录、停用同步和强认证。
服务主体 随应用或自动化任务变化 API 调用、定时触发和系统集成 独立于人员账号,支持轮换、撤销和最小权限。
Agent / 工作负载主体 随 Agent 创建、发布和归档变化 稳定标识数字成员,绑定职责、策略、审计与成本 每个 Agent 唯一,不与模型或临时容器实例绑定。
执行主体 随运行实例创建和终止 表示实际发起模型、工具或数据访问的运行时工作负载 必须关联 Agent、版本、Task Run 和运行环境。
临时凭证 短期、按运行或资源签发 向目标系统证明执行主体及其获准范围 限定资源、动作和时段,不落盘长期密钥。凭证本身不是身份。
委托授权 随 Session 或 Task Run 建立与到期 表达人员或服务允许 Agent 代办的范围 保留授权方、受托方、范围、目的、审批证据和到期时间。委托本身不是身份。

Agent / 工作负载主体用于标识数字成员,人员主体或用户池主体用于标识请求来源,执行主体用于标识实际访问资源的运行实例,临时凭证则是执行主体向目标系统证明身份和权限的载体。审计记录应关联主体标识、委托关系以及凭证标识或指纹,但不得记录凭证秘密。

11.7.2 权限治理

权限治理采用“稳定角色与动态策略”的组合。角色适合表达管理员、负责人、开发者、观察者和审计员等长期职责;动态策略适合表达环境、数据等级、运行时段、成本等级、审批状态和风险评分等上下文条件。

权限可以按组织管理、团队管理、Agent 管理、运行控制、资源访问和观测审计分层组织,各层的典型动作与约束如下。

层级 典型动作 关键约束
组织管理 配置组织空间、身份源和安全基线 仅平台管理员可操作;关键变更是否需要多人审批,由组织风险模型和具体场景决定。
团队管理 创建 Team、邀请成员、纳管 Agent 团队负责人只能管理本团队资源。
Agent 管理 编辑配置、发布版本、绑定工具、调整策略 开发与发布权限分离,生产变更保留审批证据。
运行控制 发起、暂停、终止、重试、人工接管 权限同时受发起人、Agent、任务和环境约束。
资源访问 调用模型、工具、知识、记忆和业务数据 在每次实际访问前重新决策,禁止只在入口检查。
观测审计 查看 Trace、Prompt、输出、成本和审计记录 原始内容与脱敏摘要分权,敏感字段按需授权。

一次动作的有效权限取人员权限、团队边界、Agent 策略、资源策略和委托范围的交集,任何显式拒绝优先。Agent 间交接不会扩大权限:接收方只能获得当前任务所需且双方都被允许的最小范围。对于高风险工具、跨团队数据、生产写操作和预算突破等场景,应结合组织风险模型配置人工审批;紧急授权必须有短时有效期、明确原因和事后复核。

每次 Task Run 固化策略版本和关键决策结果。策略后续变化不会改写历史事实,但可按风险等级决定是否中止仍在运行的任务。拒绝结果需要返回可理解的原因,例如缺少角色、委托已过期、资源超出团队边界或动作需要审批,而不是只返回通用的“无权限”。

Agent 的权限应区分入站与出站两个方向。入站权限决定“谁可以调用 Agent、发起什么任务”;出站权限决定“Agent 可以代表谁、访问哪些外部资源并执行什么操作”。两类权限独立配置、分别校验,不得因调用者能够访问 Agent,就默认 Agent 可以访问调用者拥有的全部资源。

入站权限面向人员、服务和其他 Agent,控制 Agent 的调用入口。平台应校验调用主体、允许的接口或任务类型、适用环境、调用频率及有效期。对于高风险操作,还应增加审批、强认证或人工确认。入站鉴权只能证明调用者有权发起请求,不能直接转化为 Agent 的出站权限。

出站权限面向模型、工具、数据源和外部系统,控制 Agent 运行期间的资源访问。平台应依据有效的委托授权和任务上下文,提供临时凭证或受控凭证代理,并将权限限定在必要的资源、动作和时段内。Agent 不得持有或复用用户的长期凭证,也不得超出本次任务范围扩大访问权限。

入站与出站权限通过任务、委托关系和调用标识建立关联。每次入站请求都应形成明确的授权边界,出站访问不得超过该边界。调用主体、任务目的或授权范围发生变化时,应重新校验出站权限,必要时重新审批和签发凭证,防止越权。

审计记录应关联入站调用主体、Agent 主体、执行主体、委托关系和出站访问结果,形成从“谁发起”到“谁执行、访问了什么”的完整责任链。任一环节的身份、授权或策略校验失败,都应拒绝执行,不得降级为共享账号或平台默认权限。

11.7.3 观测

团队观测重点解释成员间的责任交接、阻塞、返工和结果接受。通用 Trace、指标、日志及评估体系在治理篇展开;这里保留协作特有的关联对象与诊断问题。

平台以根 Task 关联各次 Task Run、成员运行、交接、模型与工具调用。长程任务可能跨多条 Trace,不能强制将整段生命周期置于同一条追踪中;任务标识与产物引用承担跨恢复关联,每段 Trace 记录实际发生的调用因果。

追踪上下文采用万维网联盟(W3C)Trace Context 传播,并使用 teamId、taskId、taskRunId 和 sessionId 作为业务关联标识。调用关系应根据实际因果和上下文传播方式选择父子 Span 或 OpenTelemetry Span Links:能够连续传播上下文的执行可使用父子 Span,跨 Trace、并行汇合或无法形成单一父子关系的执行再通过 Links 关联。这样既保留真实因果,也避免将动态执行图强行简化为一棵调用树。

模型、Agent 和工具调用可参考 OpenTelemetry GenAI 语义约定,但考虑到相关规范仍在演进,平台应锁定所采用的版本,维护内部字段映射,并提供兼容升级机制。

Trace 用于还原单次运行,指标用于观察整体趋势,日志和事件用于保留诊断细节。三类数据应通过统一标识相互关联。

数据类别 主要观测内容
运行指标 成功率、端到端耗时、排队时间、重试次数、交接次数和任务阻塞时长
模型指标 调用时延、Token 用量、成本、限流、失败率和降级情况
工具指标 调用成功率、外部依赖时延、策略拒绝率、超时和幂等冲突
资源指标 并发量、配额使用率、执行环境负载,以及团队、Agent 和任务维度的成本
治理事件 授权变更、策略命中、人工接管、凭证签发与撤销、敏感数据访问和高风险操作

日志应保留必要的诊断上下文,但不直接记录凭证、完整提示词、敏感数据或未经处理的模型输出。对于输入输出、记忆内容和工具参数,应根据数据等级执行摘要化、脱敏、采样和访问控制。

可观测性不仅关注系统是否可用,还应回答团队协作是否有效。平台应支持对任务完成度、结果质量、交接有效性、记忆相关性、工具选择合理性和策略执行一致性进行评估,并将评估结果关联到相应的 Task、Task Run 和 Agent 版本。

评估可以来自规则、模型评审、业务反馈或人工复核。线上评估用于发现异常和质量退化,离线评估用于版本比较和回归验证。评估结论应与事实记录分开保存,明确评估方法、版本和时间,避免将模型判断视为不可质疑的运行事实。

平台应支持按团队、Agent、版本、模型、工具、策略和运行环境检索与聚合观测数据,并从失败任务、成本异常或越权事件反向定位到责任主体和具体执行节点。告警应优先基于稳定的运行状态和聚合指标,而不是高基数字段或单条日志。

观测数据本身也属于治理对象,需要设置分级访问、保留期限、采样策略和审计要求。通过统一的追踪模型和数据关联机制,平台能够同时支撑故障定位、性能优化、成本分析、质量评估与安全审计,同时避免可观测性建设成为新的敏感数据暴露渠道。

11.8 本章小结

Agent 团队的连续性依赖清晰的组织与任务关系。成员可以保留不同的 Harness 和运行环境,通过适配接口承接工作;组织拓扑决定协调与决策关系,任务计划表达依赖,结果接受把局部交付连接到共同目标。

共享上下文、记忆、任务状态、产物与工作区各有职责,通信机制负责在成员间传递可关联的信息。身份、委托和权限贯穿交接过程,观测则帮助定位阻塞、返工与成本。团队规模应由实际分工需要决定,协作效果最终以整体交付和协调成本共同衡量。