尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Agent之间怎么对话?A2A协议+多智能体协作+NL2SQL+对话状态跟踪+Vibe Coding+Spec Coding全讲透(附代码)

Agent之间怎么对话?A2A协议+多智能体协作+NL2SQL+对话状态跟踪+Vibe Coding+Spec Coding全讲透(附代码) 本文是「108张AI知识卡片·大模型通关手册」系列第 9 篇。上一篇把 Agent 的 6 个核心概念Agent/ReAct/Memory/Skills/插件/MCP讲透了——一个 Agent 能自己干活了。但现实中的任务往往太复杂一个 Agent 搞不定规划、执行、校验需要不同专长跨系统数据需要不同接口。这篇讲的是从单打独斗到团队协作——Agent 之间怎么对话、怎么分工、怎么跟数据打交道以及 AI 怎么帮你写代码。目录TL;DR 太长不看一、A2A协议给Agent装上对讲机二、多智能体从单打独斗到团队协作三、NL2SQL自然语言直接查数据库四、对话状态跟踪多轮对话的记忆管理员五、Vibe Coding告诉AI你想要什么感觉六、Spec Coding把需求写清楚AI照着蓝图造房子七、一张图串起Agent进阶链路八、代码多Agent协作 NL2SQL 实战写到最后系列导航 持续更新TL;DR 太长不看⚡30 秒版先记这 7 条细节往下翻。A2AAgent-to-Agent ProtocolAgent 之间的通用语言——不同框架的 Agent 能互相对话就像给 AI 装上了对讲机。多智能体多个 Agent 分工协作——规划者调度、执行者干活、校验者把关112 的组织智慧。NL2SQL自然语言直接查数据库——上个月销量最高的产品是什么→自动生成 SQL→返回结果。对话状态跟踪多轮对话的记忆管理员——谁说了啥、聊到哪了、当前意图是什么全靠它记着。Vibe Coding用意图驱动代码生成——跟 AI 说我想要这种感觉它就帮你写探索阶段最快。Spec Coding用规格说明驱动编码——把需求写清楚AI 照着蓝图造房子交付阶段最稳。进阶口诀A2A 通语言 → 多智能体分角色 → NL2SQL 接数据 → 对话状态跟踪管记忆 → Vibe Coding 快探索 → Spec Coding 稳交付。一、A2A协议给Agent装上对讲机LangChain 的 Agent 和 AutoGen 的 Agent 想协作——但一个说JSON-RPC一个说REST API互相听不懂。A2A 就是给它们装上对讲机统一通信语言。A2AAgent-to-Agent Protocol解决的核心问题不同框架的 Agent 之间无法直接通信。每个 Agent 框架有自己的消息格式、调用方式、状态管理——跨框架协作就像两个说不同语言的人合作中间需要翻译。A2A 定义了一套标准通信协议让任何框架的 Agent 都能互相对话。它到底在干嘛机制层A2A 协议定义了 Agent 间通信的三个核心标准。Agent Card名片每个 Agent 发布一张名片声明自己的能力“我能做数据分析”、接口格式“接受 JSON 输入”、安全要求“需要 OAuth 鉴权”。其他 Agent 通过读名片知道这个 Agent 能做什么、怎么调用。Task任务Agent 之间的交互以任务为单位——发起方创建一个 Task“帮我分析这份数据”接收方接受并执行双方通过 Task 状态pending/running/completed/failed同步进度。Message消息Task 执行过程中Agent 之间通过标准格式的 Message 交换信息——请求、结果、中间状态、错误信息。关键点A2A 不规定 Agent 内部怎么实现只规定 Agent 之间怎么说话——就像 HTTP 不规定服务器用什么语言写只规定请求和响应的格式。你能感受到什么体感层没有 A2A你想让 LangChain Agent 调用 AutoGen Agent 的能力要写一个适配器——理解 AutoGen 的消息格式、转换成 LangChain 能理解的格式、处理错误和超时。每加一个新框架就多一套适配。有 A2A两个 Agent 都说 A2A 协议直接通过标准 Task/Message 通信——零适配代码即插即用。无A2A有A2A跨框架通信需写适配器标准协议直连新Agent接入写新适配读Agent Card即可生态框架孤岛互通网络复杂度O(N²)适配O(N)接入️ 动手感受手动适配 vs A2A 通信操作让两个不同框架的 Agent 协作一个任务分别用手动适配和 A2A 协议。你会看到手动适配写适配代码→调试格式→处理超时→终于能通信耗时数小时。A2A两个 Agent 交换 Agent Card→创建 Task→标准 Message 通信几分钟搞定。变化说明了什么A2A 把Agent 间通信从写代码变成配协议——就像 HTTP 让任何浏览器能访问任何网站一样。 想一想A2A 目前还是 Google 提出的草案不是行业标准——就像早期的 HTTP 也有竞争对手Gopher。如果 A2A 没有成为唯一标准而是出现了多个竞争协议呢Agent 生态可能再次碎片化。协议的标准化需要时间和生态支撑不是技术好就能赢。 顺着他想A2A 解决了Agent 之间怎么说话但多个 Agent 组成团队后谁指挥谁怎么分工这就是多智能体协作要解决的问题。二、多智能体从单打独斗到团队协作一个 Agent 又规划又执行又校验——什么都干什么都不精。多智能体就是让每个 Agent 专精一件事规划者只管调度执行者只管干活校验者只管把关——专业分工112。多智能体解决的核心问题单 Agent 能力有限复杂任务需要不同专长的 Agent 协作。多智能体把任务拆分给多个专精 Agent通过协调机制让它们高效配合。它到底在干嘛机制层多智能体系统的核心是角色分工协调机制。常见架构有三种。主从式Orchestrator-Worker一个主 Agent负责任务拆分和调度多个从 Agent各干各的活——主 Agent 把规划旅行拆成查航班“订酒店”查天气三个子任务分给三个从 Agent 并行执行。对等式Peer-to-Peer没有主从Agent 之间平等协作——A2A 协议就是为这种架构设计的Agent 通过协商决定谁做什么。流水线式Pipeline任务按顺序流过多个 Agent——Agent1 做需求分析→Agent2 写代码→Agent3 做测试→Agent4 做部署每个 Agent 只负责一个阶段。协调的关键挑战任务分配谁干什么、信息共享Agent 之间怎么传递中间结果、冲突解决两个 Agent 的输出矛盾怎么办、错误恢复某个 Agent 失败了怎么补救。你能感受到什么体感层单 Agent你让它写一个网页它自己写 HTMLCSSJS写完自己检查——代码质量一般因为它不专精。多 Agent规划 Agent 拆任务→前端 Agent 写 HTML/CSS→后端 Agent 写 JS→测试 Agent 跑测试→每个 Agent 只做自己最擅长的事代码质量明显更高。代价是协调成本——Agent 之间的通信延迟、任务分配的决策开销、冲突解决的时间。️ 动手感受单 Agent vs 多 Agent操作同一个复杂任务如写一个待办清单App分别用单 Agent 和多 Agent规划编码测试执行。你会看到单 Agent一次性生成全部代码但测试逻辑薄弱Bug 多。多 Agent规划 Agent 拆出模块→编码 Agent 逐模块实现→测试 Agent 逐模块测试→Bug 少代码更规范。变化说明了什么多 Agent 的优势不在更快在更专——每个 Agent 只做自己最擅长的事整体质量更高。 想一想多 Agent 的协调成本不可忽视——3 个 Agent 之间的通信延迟、任务分配的决策时间、冲突解决的开销可能比单 Agent 直接干还慢。什么时候该用多 Agent任务足够复杂、子任务之间足够独立、每个子任务需要不同专长——三个条件都满足时多 Agent 才值得。 顺着他想多 Agent 协作时经常需要查数据库——“查一下上个月的销量数据”。但 Agent 不会写 SQL怎么跟数据库打交道这就是 NL2SQL 要解决的问题。三、NL2SQL自然语言直接查数据库你问 Agent上个月销量最高的产品是什么Agent 不会 SQL——它要么编一个答案要么让你自己去查。NL2SQL 就是让 Agent 能听懂自然语言、自动生成 SQL、直接查数据库。NL2SQL 解决的核心问题Agent 和数据库之间有语言障碍——用户说自然语言数据库只认 SQL。NL2SQL 把上个月销量最高的产品翻译成SELECT product FROM sales WHERE monthlast ORDER BY amount DESC LIMIT 1Agent 就能直接查数据了。它到底在干嘛机制层NL2SQL 的流程分四步。① Schema 理解大模型先理解数据库结构——有哪些表、每个表有哪些字段、字段之间的关联关系。② 问题解析把自然语言问题映射到数据库结构——销量最高对应ORDER BY amount DESC上个月对应WHERE monthlast。③ SQL 生成根据映射结果生成 SQL 语句——SELECT product FROM sales WHERE monthlast ORDER BY amount DESC LIMIT 1。④ 执行结果解读执行 SQL拿到结果用自然语言回答用户——“上个月销量最高的产品是 iPhone 15 Pro销量 12,345 台”。难点在 Schema 理解——如果数据库有 100 张表、每张表 50 个字段大模型需要在海量 Schema 中精准定位相关表和字段这和 RAG 的检索问题本质相同。你能感受到什么体感层没有 NL2SQL你问上个月销量最高的产品Agent 说我无法访问数据库你只能自己打开数据库写 SQL。有 NL2SQLAgent 自动生成 SQL→执行→告诉你iPhone 15 Pro12,345 台——从问人到问数据零门槛。简单查询单表单条件准确率 90%复杂查询多表 JOIN嵌套子查询准确率降到 60-70%——复杂 SQL 的生成还是个开放问题。️ 动手感受简单查询 vs 复杂查询的 NL2SQL操作分别输入简单查询“查所有北京的用户”和复杂查询“查每个城市上个月销量前3的产品及其同比增幅”看 NL2SQL 的生成质量。你会看到简单查询生成的 SQL 准确SELECT * FROM users WHERE city北京执行结果正确。复杂查询生成的 SQL 可能漏了 JOIN 条件、或同比增幅的计算逻辑写错——需要人工校验。变化说明了什么NL2SQL 对简单查询已经相当可靠但复杂查询仍需人在回路——AI 生成 SQL人审核后执行。 想一想NL2SQL 生成的 SQL 如果有错直接执行可能改错数据如DELETE误生成——安全性怎么保证只读权限只允许 SELECT、SQL 审核机制生成的 SQL 需人工确认后执行、沙箱执行在测试环境先跑一遍是三条基本防线。NL2SQL 的安全执行比准确生成更关键。 顺着他想Agent 查完数据库用户追问那前个月呢——这是一个多轮对话Agent 需要知道上个月的上下文才能理解前个月指的是什么时候。多轮对话的状态管理是对话状态跟踪的事。四、对话状态跟踪多轮对话的记忆管理员你跟 Agent 聊了 5 轮订机票→改时间→加行李→问餐食→改座位。到第 5 轮Agent 还记得你订的是哪趟航班吗对话状态跟踪就是干这个的——记住聊到哪了、当前状态是什么。对话状态跟踪Dialogue State Tracking, DST解决的核心问题多轮对话中Agent 需要持续追踪对话状态——用户意图、已收集的槽位信息、当前任务进度。没有 DSTAgent 在第 5 轮就忘了第 1 轮说了什么。它到底在干嘛机制层DST 维护一个对话状态Dialogue State每轮对话更新一次。对话状态通常包含三部分。意图Intent用户当前想做什么——“订机票”“改时间”“加行李”。槽位Slots完成任务需要收集的信息——订机票需要出发城市、目的城市、日期、舱位。每轮对话可能填充一个或多个槽位。状态Status任务进度——哪些槽位已填充、哪些还缺、当前处于哪个阶段。DST 的核心挑战是槽位更新——用户说改成后天DST 需要把日期槽位从明天更新为后天而不是新开一个日期槽位。这需要理解改成是修改而非新增。你能感受到什么体感层没有 DST你说订去上海的机票→Agent 问哪天“→你说明天→Agent 问几点的“→你说下午→你说改成后天→Agent 不知道改成是修改日期又问哪天出发”——用户体验崩溃。有 DST每轮对话后 DST 更新状态{目的:上海, 日期:明天→后天, 时间:下午}Agent 直接确认好的已改为后天下午去上海的机票”——流畅自然。️ 动手感受开/关 DST 的多轮对话操作同一个多轮订票对话分别用无 DST 和有 DST 的 Agent看第 5 轮时 Agent 还记得什么。你会看到无 DST第 5 轮时 Agent 忘了之前收集的信息反复问同样的问题。有 DST每轮对话状态自动更新Agent 始终知道当前已收集的信息和待完成的步骤。变化说明了什么DST 不是记忆是结构化记忆——它不只是记住说了什么还记住这些信息意味着什么、当前任务到哪一步了。 想一想DST 的槽位是预定义的——订机票有出发/目的/日期/舱位但如果用户说了预定义之外的信息呢“我要带宠物”——宠物不是标准槽位DST 怎么处理开放域对话的 DST 是个开放问题——要么扩展槽位定义穷举所有可能要么用大模型做非结构化状态跟踪灵活但不可控。 顺着他想Agent 能对话、能协作、能查数据——那 Agent 能帮你写代码吗当然能而且有两种风格一种是跟 AI 说感觉Vibe Coding另一种是把需求写清楚Spec Coding。五、Vibe Coding告诉AI你想要什么感觉“帮我做一个那种……很科技感的仪表盘深色背景数据要会动。”——你没写一行代码没给一个具体需求但 AI 就能帮你做出来。这就是 Vibe Coding用意图和感觉驱动代码生成。Vibe Coding 解决的核心问题不是所有开发者都能写出精确的需求文档——有时候你只有一个模糊的想法、一种感觉、一个方向。Vibe Coding 让你用自然语言描述我想要什么感觉AI 帮你生成代码快速探索可能性。它到底在干嘛机制层Vibe Coding 的核心是意图驱动的迭代生成。你用自然语言描述意图“做一个科技感仪表盘”→AI 生成第一版代码→你看了觉得不够科技感→补充加一些发光效果和动态数据→AI 修改代码→反复迭代直到满意。和传统编程的区别传统编程是先想清楚再写代码Vibe Coding 是先写出来再调整——探索阶段速度比精确更重要。AI 在这里的角色不是代码生成器是快速原型工具——你负责方向AI 负责实现两者配合快速迭代。你能感受到什么体感层传统编程写需求文档→设计 UI→写 HTML/CSS/JS→调试→2 天后看到第一版。Vibe Coding跟 AI 说科技感仪表盘→30 秒看到第一版→加发光效果→10 秒更新→数据要动态→10 秒更新→5 分钟内迭代到满意。代价生成的代码可能不规范、难维护、有隐藏 Bug——Vibe Coding 适合探索不适合交付。传统编程Vibe Coding驱动方式需求文档意图感觉迭代速度慢天级快秒级代码质量高人工把控中AI 生成适合阶段交付探索/原型️ 动手感受用 Vibe Coding 迭代一个页面操作跟 AI 说做一个个人博客首页看第一版→补充加暗色主题→补充加动画效果→观察迭代过程。你会看到第 1 版基础博客布局白底黑字能用但丑。加暗色主题后深色背景浅色文字科技感初现。加动画后标题淡入、卡片悬浮效果体验提升明显。变化说明了什么Vibe Coding 的核心是快速迭代——你不需要一次想清楚所有需求边看边调每轮 10 秒。 想一想Vibe Coding 生成的代码你真的理解每一行吗如果出了 Bug你能定位吗如果需求变了你能改吗Vibe Coding 的快建立在你不需要理解代码的假设上——但交付阶段你必须理解代码。所以 Vibe Coding 适合探索不适合生产。 顺着他想Vibe Coding 用感觉驱动快但不可控——如果换成规格说明驱动呢把需求写清楚AI 照着蓝图造房子代码更规范、更可维护。这就是 Spec Coding。六、Spec Coding把需求写清楚AI照着蓝图造房子Vibe Coding 快但糙生成的代码像毛坯房——能用但没法交付。Spec Coding 是精装修先把需求写清楚规格说明AI 照着蓝图造房子每一面墙、每一根管子都有据可查。Spec Coding 解决的核心问题Vibe Coding 生成的代码不可控、不可维护。Spec Coding 用精确的规格说明Spec驱动代码生成——先写清楚要什么再让 AI 生成代码质量、可维护性、可测试性都远高于 Vibe Coding。它到底在干嘛机制层Spec Coding 的核心是规格驱动开发SDD, Spec-Driven Development。流程是① 写 Spec用结构化的自然语言或伪代码描述需求——功能、接口、数据结构、边界条件、错误处理。② AI 生成代码根据 Spec 生成代码——因为 Spec 精确生成的代码也更精确。③ 验证对照 Spec 验证生成的代码——功能是否实现、接口是否匹配、边界是否处理。④ 迭代Spec 不对就改 Spec代码不对就重新生成——改 Spec 而非改代码。和 Vibe Coding 的本质区别Vibe Coding 改感觉Spec Coding 改规格——改规格是可控的你知道改了什么改感觉是不可控的更科技感到底是多科技。你能感受到什么体感层Vibe Coding“做一个用户登录页→AI 生成了但没做密码强度校验、没做错误提示、没做防暴力破解——因为登录页这个描述太模糊。Spec CodingSpec 写了密码至少8位含大小写数字”“错误提示显示在输入框下方”5次失败锁定15分钟→AI 照着生成每个细节都有。Spec Coding 的代价写 Spec 的时间可能比 Vibe Coding 迭代 10 轮还长——但交付阶段这个时间是值得的。Vibe CodingSpec Coding输入感觉/意图精确规格说明代码质量中高可维护性低高适合阶段探索/原型交付/生产写需求时间短长️ 动手感受Vibe Coding vs Spec Coding 生成同一个功能操作同一个功能用户注册分别用 Vibe Coding“做一个注册页”和 Spec Coding写详细 Spec让 AI 生成。你会看到Vibe Coding生成了基本注册表单但缺少邮箱格式校验、密码强度提示、重复密码校验、服务端校验。Spec CodingSpec 里写了所有校验规则→AI 生成的代码每个校验都有错误提示完整边界条件处理到位。变化说明了什么Spec Coding 的代码质量不取决于 AI取决于 Spec 写得多清楚——垃圾进垃圾出同样适用。 想一想写 Spec 本身就是一项技能——写得好AI 生成得好写得差AI 生成的代码比 Vibe Coding 还烂。而且 Spec 也有维护成本需求变了Spec 也要同步更新否则 Spec 和代码就会脱节。Spec Coding 的核心不是AI 更强是人更严谨。 顺着他想Vibe Coding 和 Spec Coding 不是非此即彼——探索阶段用 Vibe Coding 快速验证想法交付阶段用 Spec Coding 确保质量。两种风格结合才是 AI 辅助编程的完整工作流。七、一张图串起Agent进阶链路6 个概念串成一条从通信到编程的 Agent 进阶链路Agent团队 │ ① A2A协议 ← 统一通信语言跨框架Agent互相对话 │ ② 多智能体协作 ← 规划者/执行者/校验者分工112 │ ③ NL2SQL ← 自然语言查数据库Agent和数据打交道 │ ④ 对话状态跟踪 ← 多轮对话状态管理记住聊到哪了 │ ⑤ Vibe Coding ← 意图驱动快速探索30秒出原型 │ ⑥ Spec Coding ← 规格驱动精确交付代码有据可查进阶口诀A2A通语言——不同框架 Agent 零适配对话。多智能体分角色——专业分工整体质量更高。NL2SQL接数据——自然语言直接查数据库。对话状态跟踪管记忆——多轮对话不迷路。Vibe Coding快探索——意图驱动秒级迭代。Spec Coding稳交付——规格驱动代码有据可查。八、代码多Agent协作 NL2SQL 实战fromopenaiimportOpenAI clientOpenAI(api_key你的KEY,base_urlhttps://api.openai.com/v1)# ① 模拟数据库db{sales:[{product:iPhone 15,month:2024-01,amount:8900},{product:MacBook Pro,month:2024-01,amount:5600},{product:iPhone 15,month:2024-02,amount:12345},{product:MacBook Pro,month:2024-02,amount:6100},]}# ② NL2SQL Agent自然语言→SQL→执行defnl2sql_agent(question:str)-str:schema表sales: product(str), month(str), amount(int)respclient.chat.completions.create(modelgpt-4o-mini,messages[{role:system,content:f根据数据库Schema生成Python过滤代码。{schema}\n只输出一行Python列表推导式用db[sales]作为数据源。},{role:user,content:question}])coderesp.choices[0].message.content.strip()try:resulteval(code)returnstr(result[:5])except:returnf生成代码执行失败:{code}# ③ 规划Agent拆任务defplanner_agent(task:str)-list:respclient.chat.completions.create(modelgpt-4o-mini,messages[{role:system,content:把任务拆成子任务列表每个子任务一句话描述。输出JSON数组。},{role:user,content:task}])returnresp.choices[0].message.content# ④ 多Agent协作task分析上个月销量最高的产品并给出推广建议planplanner_agent(task)print(f[规划]{plan})# 执行数据查询子任务query_resultnl2sql_agent(上个月销量最高的产品是什么)print(f[数据查询]{query_result})# 生成建议respclient.chat.completions.create(modelgpt-4o-mini,messages[{role:user,content:f根据数据{query_result}给出推广建议}])print(f[建议]{resp.choices[0].message.content})这段代码实现了多 Agent 协作的核心逻辑规划 Agent 拆任务→NL2SQL Agent 查数据→生成 Agent 给建议。生产环境要做的升级加 A2A 协议做 Agent 间通信、加 DST 做多轮对话状态管理、加 Spec 做代码生成质量控制。写到最后从单 Agent 到多 Agent 协作从能干活到能协作从 Vibe Coding 的快探索到 Spec Coding 的稳交付——Agent 的进阶不是更聪明是更专业、更可控、更可协作。A2A 让 Agent 能对话多智能体让 Agent 能分工NL2SQL 让 Agent 能查数据DST 让 Agent 能记住对话状态Vibe/Spec Coding 让 Agent 能帮你写代码——6 个概念串起来就是 Agent 从工具到团队的进化路径。下一篇我们换个视角从用大模型跳到懂大模型——打开 GPT 的胸腔看看 Transformer、Attention、MoE 这些架构组件到底长什么样。如果你读下来觉得真有用点个赞让我知道 Agent 进阶篇这种通信→协作→编程一条线的写法值得继续⭐收藏起来A2A/NL2SQL/DST 这些概念在 Agent 实战中回来翻的概率很高关注一下下一篇大模型架构篇会讲 Transformer/Attention/MoE关注了就不会错过。有问题评论区直接说我会逐条回。系列导航 持续更新系列第 9 篇上一篇6张图搞懂AI Agent——从ChatBot到数字员工 下一篇预告TransformerAttention大模型的心脏解剖图如果这篇对你有帮助点个收藏Agent 进阶概念在实战中回来翻的概率很高。有问题欢迎在评论区交流我会逐条回复。
返回列表