ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

多人多AI协同系统架构:从消息机制到任务编排的工程实践

多人多AI协同系统架构:从消息机制到任务编排的工程实践 如果你和我一样曾经试着把两个以上的AI代理放进同一条业务流程你大概率会遇到这种场面A代理在研究竞品B代理在写方案初稿C代理负责检查结果三个人互相覆盖文件任务重复执行甚至开始互相“讨论”起谁先谁后——注意它们的讨论是真的会消耗token的。我后来意识到这类问题的根源不是模型能力强弱而是缺少一个让“多人多AI”真正协同的系统架构。这也是“基于AI代理代为交互的多人多AI协同系统架构研究”这个方向真正要解决的事把模型能力和工程组织能力接起来让AI代理之间、人类与AI代理之间的交互变成一种可控、可追踪、可回滚的消息流。这篇文章我从自己搭过的实践经验出发拆解这类系统到底该怎么设计角色怎么划分、消息怎么传递、状态怎么管理、任务怎么分配以及中间通常会踩到哪些坑。适合正在做多智能体应用、企业级AI工作流编排或者准备在手项目里引入多个AI代理的开发者读完可以直接照着做技术选型和架构设计。1. 为什么需要“多人多AI”协同而不是一个大模型干到底1.1 单Agent的瓶颈上下文单线、任务单线、工具单线先明确一个前提市面上很多AI应用其实只有一个Agent用户提问题Agent调工具返回结果。它能处理复杂任务但本质上是单线程的上下文只有一个任务目标只有一个工具调用是顺序执行的。这在“问答案”的场景完全够用但在“做项目”的场景就撑不住了。举个例子你要AI完成一份产品发布计划。单Agent的做法是起草方案→分析竞品→写推广文案→检查合规全部自己来。问题是竞品分析可能需要专门检索工具文案可能需要A/B测试数据合规可能需要查内部知识库这些东西混在一个上下文里模型容易被无关信息带偏工具调用链也越来越长一旦中间某一步出错后面全乱。我用一个生活化的类比单Agent像一个人开小卖部进货、收银、理货、打扫全是自己干货少的时候没问题货多了必然顾头不顾腚。多Agent协同则像开了一个正经公司有采购、有店长、有财务各管一段效率高而且出了问题能定位到具体环节。这就是多智能体系统的价值把一个大而全的任务拆成若干小而专的子任务每个子任务交给专门的Agent执行再用一套机制把它们的结果拼起来。1.2 三个角色先把边界划清楚人类、AI代理、协同中枢设计多人多AI协同系统第一件事不是写代码而是先在纸上把角色划清楚。我习惯把所有参与者分成三类人类、AI代理、协同中枢。人类是决策者和最终负责人。人负责提需求、审批关键节点、处理AI拿不准的例外情况。AI代理是执行者每个代理有自己擅长的领域比如文档撰写代理、代码审查代理、数据分析代理它们只对自己负责的子任务负责。协同中枢是调度者接收人类的需求拆解成任务列表分发给合适的AI代理收集结果处理冲突并且在关键节点要求人类确认。这个划分非常重要因为很多失败的多人多AI项目就是让AI代理之间“自由聊天”人类完全插不上话结果AI们互相确认了三轮还没开始干活。在实际架构里协同中枢不是一个普通的Agent它更像一个调度服务核心职责有三个任务路由把任务发给正确的人、状态管理记录每个任务到了哪一步、异常处理超时、失败、冲突怎么处理。1.3 架构选型集中编排为什么比分布式自治更现实多智能体系统在学术界讨论时经常提分布式自治每个Agent自己判断下一步做什么Agent之间通过消息相互协商。这种模式听着很智能但在工程落地时问题很大你没有办法保证Agent A不会和Agent B做重复的事也没有办法在出问题时快速定位责任。我自己早期做过一个分布式版本最后定位一次死锁花了三个小时从那以后就学乖了。实际项目里我更推荐“集中编排分布式执行”的混合架构。集中编排指所有任务的拆解、分配、状态流转由协同中枢统一管理分布式执行指每个AI代理自己负责具体的工具调用、模型推理执行过程是独立的。这样既有分布式的高效又有集中的可控性。维度集中编排分布式自治控制力强所有任务状态可见弱Agent各自为政故障定位容易任务有明确状态难问题可能散落在多个Agent扩展性受制于中枢理论上更好实现成本较低较高适用场景业务流程固定、需要人审探索型、无固定流程现实中的协同系统大多是业务驱动的比如“生成周报”“评审技术方案”“整理客户反馈”这些流程本身就相对固定集中编排完全够用而且人类可以随时介入。真正需要完全分布式自治的场景极少至少在我接触过的项目里几乎遇不到。2. 面向协同的架构分层把Agent变成“可调度单元”2.1 接入层多模型统一接入是底座多人多AI系统里的Agent不一定是同一个模型。我会让代码审查Agent用编程能力强的模型让文案Agent用表达好的模型甚至有些数据敏感场景会接本地部署的模型。这就引出一个工程问题不同模型API格式不一样、参数不一样、限流策略不一样如果每个Agent都直接调不同厂商的API代码会非常散乱后期改模型成本极高。解决办法是在最底层加一个模型网关Model Gateway用一套统一的接口包装所有模型调用。接口至少包含通信协议统一用HTTP/流式SSE、请求参数统一传入model、messages、temperature等、错误格式统一返回错误码和重试建议。这样上层Agent完全不知道底层用的是哪个模型哪天想把某个Agent的模型从闭源换成开源只需改网关配置业务代码一行不动。这个设计思路其实就是LLMAPI架构的实践形态核心在“”模型只是能力引擎真正让系统健壮的是包在模型外面的路由、限流、降级和缓存。我在实际里还会在网关层做两件额外的事一是记录每次调用的token消耗和耗时方便后面做成本核算二是对敏感数据的出站请求做拦截防止隐私信息被发给外部模型。2.2 代理层把Agent拆成“大脑”和“躯干”很多人对Agent有个误解觉得Agent就是一个带System Prompt的模型调用。实际上可维护的Agent必须拆成两部分大脑和躯干。大脑负责理解和规划输入任务输出行动计划。它可以是ReAct模式Reasoning Acting即模型先推理下一步要做什么然后调用工具根据工具结果再推理下一步。躯干负责执行是一组定义好的工具和调用规范比如搜索、数据库查询、文件编辑、API调用。大脑不直接碰数据它只负责“决定”具体动作由躯干执行。为什么要拆很简单如果让Agent直接调用数据库它可能写出危险的查询语句直接改文件可能改错位置。把所有外部操作收敛为预定义的“工具”每条工具都有限定参数和权限Agent就只能在规则范围内活动。好比你想让员工去仓库拿货你不会给他整栋仓库的钥匙你只给他一张领货单告诉他在哪拿、拿多少。在这个层级每个Agent还需要暴露两个标准接口接收任务的消息入口和上报结果的消息出口。协同中枢只需要和这两个接口打交道不需要关心Agent内部是怎么规划的。这就把一个复杂的Agent对象变成了一个标准的“可调度单元”架构上立刻清爽很多。2.3 协同层任务总线与状态机让一切有迹可循有了可调度单元接下来要解决“调度”的问题。我强烈建议引入事件驱动机制每个Agent之间不要直接互相调用而是通过一个任务总线Task Bus收发消息。直接调用的问题在于强耦合Agent A需要知道Agent B的地址、接口、等待方式一旦某个环节失败整个链路易断。用任务总线把它们解耦之后Agent A只需把消息发布到总线上总线会根据路由规则把消息投递给Agent B这个过程天然支持重试和异步处理。配合任务总线还需要为每个任务维护一个状态机。在我的设计里任务状态是固定的几个pending待处理、running执行中、waiting_review等待人工审批、done完成、failed失败。人工审批状态尤其重要因为多Agent协同不能完全放权关键产物体必须经过人确认才能进入下一环节。状态机都记录在数据库里谁在处理、处理多久、卡在哪一步一目了然。任务总线和状态机相当于系统的心血管和神经一个负责流动一个负责感知。我见过很多团队前期嫌这些机制“重”觉得用个普通队列就行了结果排查问题的时候只能翻聊天记录痛苦程度完全不一样。2.4 数据层三层记忆体系防止“串台”多Agent协同比单Agent多一个巨大难题记忆怎么共享。如果每个Agent都只用自己的上下文信息不流通如果全部共享一个上下文不同Agent的历史会互相污染我称之为“串台”。我的解决方案是把记忆分成三层。私有记忆只属于单个Agent存自己的历史交互和偏好其它Agent不可见。共享记忆供所有Agent读包括当前任务的公共背景、用户需求原文、已经确定的目标和约束。全局记忆是长期知识库放组织的知识沉淀比如历史项目总结、规范文档、最佳实践所有Agent都能读取但不能随意修改。用这样三层隔离Agent A在写代码的时候不会被Agent B做竞品分析的对话历史干扰但在需要了解“项目交付标准”时又能从全局记忆里读取统一知识。三层之间不是单向流动核心原则是共享度越高写入权限越低。私有记忆可随意写共享记忆需要协同中枢确认后才能写全局记忆则只能通过专门的入库流程写入。这一层很多人会忽略但实际是决定系统稳定性的关键。你可以想象一下没有隔离的记忆就像公司所有人都用同一个共享盘有人清了临时文件结果把别人的项目代码也删了这种混乱程度完全不适合正式业务。3. 多代理协同的三个关键机制消息、任务、上下文3.1 任务拆解与分配从用户意图到可执行队列上一节讲了架构的四层这一节要落地到具体的协同机制。先说怎么把用户的自然语言需求变成可执行的任务队列。这部分我建议不要完全交给模型自由发挥而是先定义任务模板每个模板对应一类高频业务场景。比如“月度汇报生成”模板固定拆解为数据汇总、图表生成、文本撰写、合规检查。模板的好处是规定了子任务之间的关系以及每个子任务要产出什么格式的结果。拿到模板后还要做一步“动态补全”因为每个任务的具体内容不同。比如“数据汇总”子任务要明确数据源是CRM还是Excel“合规检查”要明确适用哪几条规范。这些细节可以用一次大模型调用完成让协同中枢根据用户输入从模板生成一份结构化的任务清单。分配阶段做三件小事。按能力分配看哪个Agent擅长这个类型。按负载分配避免同一个Agent接了过多任务。按依赖分配有依赖关系的任务排队处理没有依赖的可以并行。我在自己的实现里会在这一步做个简单预估如果预计某个Agent的队列等待超过30秒就把它的一部分任务分流给同类的备份Agent。任务清单最终会落到队列里每个任务包含明确的输入数据、期望输出格式、优先级和关联的人工审批标记。到了这一步AI们的协作就有了一个坚实的起点不再是一团模糊的“帮我做点事”。3.2 消息协议不要让Agent用自然语言互相对话多Agent之间通信最容易犯的错误是让它们直接用自然语言对话。Agent A发一段话说“请帮我分析一下这份报告的营收部分”Agent B再回复“好的我分析了你的营收增长了15%”。短对话还能应付一旦任务复杂这种自然语言来回既浪费token又有大量歧义。你如何保证Agent A听到的15%是来自哪个时间段是毛利还是净利这中间隐含的细节用自然语言绝对传不清。工程上一定要用结构化消息协议。每条消息至少包含发送者、接收者、任务ID、消息类型、时间戳、业务数据。消息类型需要枚举定义比如task_request、task_result、task_progress、approval_request。业务数据用JSON传每条数据字段有明确的schema约束。一个消息的JSON示例大概长这样{ message_id: msg_8f3a2c9e, task_id: task_20240517_001, sender: coordinator, receiver: competitor_analysis_agent, type: task_request, timestamp: 2024-05-17T10:00:00Z, payload: { industry: saas, target_period: 2024_q1, output_fields: [market_share, growth_rate, key_strategy] } }这种消息是程序可以直接解析执行的Agent拿到之后不需要去猜用户的意图能大幅降低歧义和幻觉风险。顺带说一句如果需要在用户界面展示Agent的“对话”建议把结构化消息再翻译成自然语言而不是让Agent原本就用自然语言交流。这是反向操作但效果完全不一样。3.3 冲突处理与人工介入关键节点必须有人拍板多个Agent同时干活冲突几乎是必然的。最常见的是资源冲突Agent A和Agent B需要同时修改同一个文档或者同时向同一个状态字段写入数据。我的做法是引入两种机制乐观锁和版本化。乐观锁在数据表里加版本号Agent在提交前先确认版本号没变变了就重来版本化则是每次修改都产生一个新版本允许回滚不覆盖旧记录。这两种机制能解决绝大多数资源冲突。还有一类冲突不容易用锁解决是语义冲突。比如要写产品定位文案Agent认为应该强调性价比品牌Agent认为应该强调高端感。这种冲突没有对错只能交给人类仲裁。设计协同架构时要提前标记哪些任务产物需要人工审批一旦相关Agent之间的产出互相矛盾系统就把矛盾内容和双方论据一起打包推给人类决策等待输入后再继续执行。我把这个环节称作“关键节点的人肉确认”。这个机制不该是可有可无的选项而是架构的一部分。在多AI协同系统里AI负责提效但方向性决策必须由人来定否则一旦AI给出一个错误方向后面的执行再快也只是更快地把错误做完。3.4 上下文传递共享信息的同时保住专心最后一个关键机制是上下文怎么在多个Agent之间传递。我前面提过三层记忆体系这里补充一下在执行层面怎么做。每个Agent收到任务时协同中枢会打包一份上下文包给它而不是让它自己去“翻”共享记忆。上下文包分三部分任务说明、必要背景数据、输出约束。任务说明写清楚这个Agent要做什么、产出什么格式必要背景数据是完成这个任务一定要知道的事实比如统计口径、指定数据源输出约束说明格式、长度、风格要求。为什么要统一打包因为如果让Agent自己去共享记忆里找很容易找偏找到一堆无关信息消耗不必要的上下文甚至被干扰导致幻觉。主动打包上下文本质上是把“信息检索”这个环节从Agent手里收回交给中央统一管理。另一个重点是防止上下文膨胀。多个Agent协同的任务如果要求每个Agent都拿到全部历史上下文很快就会爆炸。实际做法是当任务链条较长时上一个Agent的输出先经过一次“摘要压缩”只把关键结论传递到下一步而不是把全部中间推理过程都传过去。这个操作能大幅节省token成本也是系统能否在真实环境中跑起来的决定性因素。4. 一套可落地的参考实现从框架选型到最小示例4.1 部署形态微服务配消息队列是稳妥起点架构设计讲了一大堆落到部署上我建议用微服务形态起步每个Agent实例运行在独立进程或容器里通过外部的消息队列通信。这个选择和消息总线机制是呼应的Agent之间没有直接RPC调用都走MQ交换消息天然支持水平扩容。Agent负载高了多起几个实例消息队列会分散投递某个Agent挂掉了消息会堆积等待恢复不会整个链路崩溃。技术选型上消息队列用Redis Stream还是RabbitMQ都可以量级不大时Redis Stream更轻量直接复用Redis资源如果团队熟悉RabbitMQ它的路由规则更成熟适合复杂分发场景。数据库层面要用PostgreSQL这类支持版本控制和JSON字段的关系型数据库用来存任务状态机、消息事件表和共享数据。向量数据库按需引入用来做长期记忆的语义检索但注意不要把它当成万能存储能进关系型表的尽量进表。部署上我还有一个具体建议给协同中枢开一个管理后台。后台不用多花哨三个页面就够了。任务列表页看所有任务的状态和所在代理消息流水页查任意一条消息的流转过程审批页处理等待人工确认的事项。这一个后台能省掉大量排查问题的时间。4.2 框架怎么选LangGraph、AutoGen、CrewAI到底差在哪聊到多智能体框架绕不开几个主流名字。我先把它们的区别说清楚再讲怎么选型。LangGraph最核心的价值是StateGraph适合把复杂的流程定义为有状态的图每一步的输入输出都有明确约束适合业务流程固定、要求强可控的项目。AutoGen最大特色是多Agent对话模式让Agent之间自由协作完成编码和解决问题的过程适合探索型任务和做研究原型。CrewAI强调的是角色分工用“团队”概念组织Agent定义role和goal写起来很快适合任务相对简单、希望快速上手的业务。选择一个框架要看两点你的业务流程可控性要求有多高以及团队的工程能力。如果做生产力工具嵌入公司流程我倾向选择LangGraph或直接自研状态机因为流程的每一步都要可控。如果只是做快速验证AutoGen对话式很爽改起来也方便。CrewAI卡在两者之间写代码最舒服但控制粒度有待提升。我的个人建议是不要一上来就迷信框架核心协同机制消息协议、状态机、任务队列完全可以自己实现框架只是帮你省掉一部分Agent内部推理逻辑的重复代码。一旦框架和业务冲突优先考虑脱离框架自己写否则后期改造成本极高。4.3 最小实现一个消息总线加一个调度循环就够跑起来为了不让前面的理论悬空我给一个最小可运行的实现思路用Python加asyncio写一个极简版的消息总线和调度循环。命名和结构都做了简化核心是说明协同中枢的运作方式。import asyncio import logging from dataclasses import dataclass, field from typing import Dict, Optional dataclass class TaskMessage: message_id: str task_id: str sender: str receiver: str msg_type: str # task_request / task_result / task_progress payload: dict dataclass class AgentWrapper: name: str handler: callable async def handle(self, msg: TaskMessage): # 每个代理只需实现这个入口内部自己规划 result await self.handler(msg.payload) return result class TaskBus: def __init__(self): self._queue asyncio.Queue() self._registry: Dict[str, AgentWrapper] {} def register(self, agent: AgentWrapper): self._registry[agent.name] agent async def publish(self, msg: TaskMessage): await self._queue.put(msg) async def dispatch_loop(self): while True: msg await self._queue.get() agent self._registry.get(msg.receiver) if not agent: logging.warning(no agent registered for %s, task %s, msg.receiver, msg.task_id) continue # 这里调度器不等待结果新开一个任务并发处理 asyncio.create_task(self._run_agent(agent, msg)) async def _run_agent(self, agent: AgentWrapper, msg: TaskMessage): try: result await agent.handle(msg) # 结果通过消息发回主调度器 await self.publish(TaskMessage( message_idmsg.message_id _reply, task_idmsg.task_id, senderagent.name, receivermsg.sender, msg_typetask_result, payloadresult )) except Exception as e: logging.exception(agent %s failed on task %s: %s, agent.name, msg.task_id, e)这段代码的逻辑是TaskBus是全局消息队列Agent放到注册表里调度循环从队列取消息找到对应Agent来执行执行完了再发回一条task_result。真实系统只需在此基础上加上持久化、超时控制、重试和状态机骨架和这个最小版完全一致。如果你的团队之前没有接触过多智能体系统我建议不要一上来就上全套微服务先用这种方式在单进程里跑通流程验证角色划分为题、消息协议合理、协同逻辑顺畅再把Agent拆到独立容器里。渐进式改造比一步到位稳得多。4.4 场景演练让三个AI代理协同完成产品需求评审理论看一百遍不如走一遍真实场景。我拿“产品需求评审”来演示多AI协同是怎么跑的。准备工作是三个Agent需求分析代理、竞品分析代理、技术评估代理外加协同中枢负责调度。流程从需求原文进入中枢开始。比如输入是“我们要做一个支持多人在线协作的文档工具支持实时同步优先服务中小团队”。协同中枢拆成三个子任务。需求分析代理输出用户画像、核心功能列表、非功能需求。竞品分析代理开检索工具对比三家竞品的核心功能、定价、差异点。技术评估代理判断技术方案可行性包括实时通信技术选型、架构风险点。这三个子任务之间没有强依赖所以并行执行。并行过程中需求分析代理和技术评估代理可能产生冲突前者建议优先做移动端后者认为移动端实时同步的风险更大建议先做Web端。系统检测到两个任务的产物体存在矛盾自动进入waiting_review状态把两份结论打包推送给审批人。审批人拍板“先做Web端”技术评估代理据此更新方案需求分析代理调整功能优先级流程继续。最后三个Agent的产物汇总成一份评审报告交给评审会议使用。整个过程在用户的感知上是“一个AI团队帮我做了一次完整调研”内部则是几个Agent在结构化消息的驱动下分工协作。从这个例子可以看到多AI协同系统架构的核心价值不是让AI变聪明而是让AI们在明确的分工里各司其职并在关键节点接受人类的校验。5. 实测踩坑记录多代理协同的常见问题与排查思路5.1 任务重复执行你的消息没有做到幂等我在早期版本里经常遇到一个症状某个Agent把同一个任务执行了两遍。排查起来头大但原因其实很集中。最常见的情况是消息队列投递了两次客户端处理完但没来得及确认队列重新投递另一个情况是Agent内部工具调用失败后重试重试逻辑没有检查“这个任务是不是已经做过了”。解决方法是在消息层引入幂等控制。每个任务生成一个全局唯一的task_idAgent在执行前先把task_id写入去重表执行完更新状态。重新投递的消息到达时去重表已经有这个ID了直接跳过。这招是普通分布式系统的常规操作但很多人在做AI应用时想不起来总觉得Agent“应该有判断力”结果让模型自己判断偶尔正常偶尔翻车。请务必让去重变成代码逻辑而不是模型的自觉。5.2 上下文互相污染共享记忆缺少隔离命名空间另一个高频问题是Agent A做的任务结果被Agent B当成了自己的参考信息。原因是共享记忆库里的数据没有按任务或者领域做隔离Agent检索时抓到了不该抓的内容。这件事在单Agent系统里不存在在多Agent里几乎是必然发生的。我的解决办法是为共享记忆加命名空间。每个任务一个namespace每条写入时带上来源Agent和任务ID。Agent在读取时默认只能读到当前namespace的内容只有在显式声明“需要跨任务参考”时才能扩大读取范围。另外建议在Agent读取之前由协同中枢根据当前任务先筛选好候选片段再把筛选结果发给Agent而不是让Agent直接连记忆库去搜。控制输入是控制多Agent行为最有效的手段。5.3 token成本失控不设边界的上下文传播多人多AI协同跑一段时间后成本账单会让不少人肉疼。我在一个测试项目里见过一次多Agent协同流程消耗了超过50万token因为每个Agent都把前一个Agent的完整输出复制进了自己的上下文。导致后面每个Agent都在“读一篇长文再写一篇短文”大量成本花在无关的历史信息上。优化思路有三个层次。第一层是中间压缩上个Agent输出先摘要减到500字以内再传给下个Agent。第二层是只传结论字段结构化消息里单独定义summary字段详细文档走文件引用而不是复制进上下文。第三层是计划用途如果某条信息只是给用户看的不需要被后续Agent阅读就不要进入Agent的上下文链。把这些规则固化到消息模板里成本能降一半以上。5.4 权限混乱AI代理拿到了它不该有的操作能力再强调一遍安全边界。给AI代理分配权限的原则是最小化每个Agent只能访问完成自己任务所必需的工具和数据。代码审查代理可以读代码库但不能写生产环境配置数据分析代理可以查数据库但不能执行删除操作所有对外API调用都必须经过网关的权限校验。安全边界不只是保护数据它也在保护AI自己。Agent拿到的能力越宽行为越不可控。我遇到过因为给Agent分配了文档库写权限它在执行任务时顺便改了几份无关文档虽然没造成大的事故但已经足够让人后背发凉。后续我在Agent工具层加了一层“工具白名单”Agent只能从白名单里选择工具工具参数还要通过正则或JSON Schema校验有效过滤掉越界请求。现象可能原因排查方向长期解法任务被重复执行消息重投、重试未去重查消息流水看是否有重复投递记录task_id幂等表Agent引用别人的旧结论共享记忆缺少隔离查该Agent检索时命中的namespace强制按任务命名空间隔离费用异常暴涨全量上下文在Agent间传递按task_id聚合token消耗摘要压缩、只传结论字段Agent动了不该动的东西权限范围过大查工具调用日志最小化权限、工具白名单5.5 日志追踪技巧给每条任务加trace_id最后分享一个我认为性价比最高的工程习惯从任务进入系统的那一瞬间生成一个trace_id让它贯穿所有环节。不管是Agent之间的消息、数据库记录还是异常日志全部带上这个字段。排查任何一个多Agent问题只需要拿trace_id一查从需求拆分到每个Agent的执行轨迹、消息流转、状态变化清清楚楚地摆在那里。没有trace_id的时候我在一个失败任务上反复核对三个Agent的日志花了两个小时才拼出现场全貌。加上trace_id之后类似问题平均五分钟以内定位。这个收益不来自某个复杂组件就来自一个看似不起眼的字段但它对整个系统的可维护性提升是决定性的。如果让我再搭一遍这样的多人多AI协同系统我会先做三件不写代码的事把角色画清楚把流程画清楚把共享数据的读权限列清楚。不要小看这三步架构上的问题九成都能在这三张纸上暴露出来。另外一个小技巧是在协同中枢里多留一些“人工干预”的接口宁可前期用不到也不要在流程跑起来之后才发现AI们的决策需要人把关却找不到入口。多智能体协同确实复杂但它的复杂不是来自某一个模型的能力而是来自多个执行单元之间的秩序。把秩序设计好了AI们自然就能高效协作而你会省下大量“救火”的时间去做更有价值的事情。
返回列表