1. 从一次多 Agent 协作的翻车说起你可能已经用单个 Agent 跑通了问答、写代码、查资料但当你想让「调研 Agent」把结果交给「写作 Agent」再让「审校 Agent」接手时问题就来了两个 Agent 之间怎么说话谁先开口长任务跑到一半断了怎么办这就是 A2A 协议要解决的事。A2A 全称 Agent2Agent核心目标是标准化不同 AI Agent 之间的通信方式让多个平等的智能体能够互相协作。它和 MCP 不是竞争关系MCP 管的是 Agent 怎么调用外部工具和资源类似给一个人配工具箱A2A 管的是 Agent 和 Agent 之间怎么对话协作类似不同部门的同事直接沟通。两者互补一个向内增强能力一个向外扩展协作。A2A 的通信底座其实很朴素传输层用 HTTP/HTTPS消息体用 JSON-RPC 2.0 封装异步和流式场景用 SSEServer-Sent Events做服务端到客户端的单向推送。这三个东西都是成熟技术任何语言都能快速实现轻量客户端或服务端这也是它可移植、可扩展的关键。这篇就围绕 JSON-RPC、HTTP、SSE 三种交互方式把 Agent 通信链路的配置要点梳理清楚并给出 TaoToken 统一 Key/API 通道下的 settings.json 与 config.toml 骨架最后演示一次 Agent 请求的验证动作。适合正在做 A2A 协议调研、想快速跑通多 Agent 协作场景的开发者。2. TaoToken 前置统一 Key 与 API 通道在配 A2A 链路之前先把模型调用这一层收口。多 Agent 协作时最烦的是每个 Agent 各配一套 Key、各写一份 base_url改起来到处漏。TaoToken 提供统一 Key 和 API 通道把模型访问收敛到一个入口Agent 侧只认一个地址和一个 Key。官网入口在这里https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基址是 https://taotoken.net/api 这个不加 UTM直接填进配置。你需要先拿到 Key。进控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 然后在 API Keys 页面生成https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。生成后复制保存后面 settings.json 和 config.toml 都要用。注意Key 只显示一次建议生成后立刻写进本地配置或密钥管理工具别留在聊天记录里。如果你后面要跑长期编码或 Agent 任务可以看下 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 它更适合持续性的编码和 Agent 工作流。接入细节和字段说明在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。3. 可复制配置settings.json 与 config.toml 骨架A2A 链路里Agent 本身要调模型所以配置分两层一层是模型访问配置指向 TaoToken一层是 Agent 间通信配置JSON-RPC/HTTP/SSE。下面给两份骨架你可以直接抄。3.1 settings.json模型访问与 Agent 通信这份配置适合 Node/TypeScript 系的 Agent 框架把模型通道和 A2A 服务端地址放一起。{ model: { provider: taotoken, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, defaultModel: claude-sonnet-4-20250514 }, a2a: { agentCardUrl: https://your-agent.example.com/.well-known/agent.json, transport: http, rpcVersion: 2.0, streaming: { enabled: true, mode: sse, reconnect: true, resubscribeMethod: tasks/resubscribe }, timeoutMs: 60000, pushNotification: { enabled: false, callbackUrl: } } }几个字段说明baseUrl固定填 TaoToken 的 API 地址transport是 A2A 的传输层默认 httpstreaming.mode设成 sse 表示长任务走流式resubscribeMethod对应断线重连后恢复订阅的方法名。3.2 config.tomlPython 系 Agent 配置如果你用 Python 写 Agentconfig.toml 更顺手。[model] provider taotoken base_url https://taotoken.net/api api_key sk-你的TaoTokenKey default_model claude-sonnet-4-20250514 [a2a] agent_card_url https://your-agent.example.com/.well-known/agent.json transport http rpc_version 2.0 timeout_ms 60000 [a2a.streaming] enabled true mode sse reconnect true resubscribe_method tasks/resubscribe [a2a.push_notification] enabled false callback_url 3.3 JSON-RPC 请求结构对照A2A 的消息体是 JSON-RPC 2.0请求和响应字段固定配错了服务端直接报错。对照表如下类别字段/方法类型必选说明请求jsonrpcstring是固定值 2.0请求methodstring是方法名如 tasks/send请求idnumber/string是请求唯一标识请求paramsobject否方法参数响应resultobject条件必选成功时返回结果响应errorobject条件必选失败时返回错误含 code 和 message响应idnumber/string是必须与请求 id 一致常用方法也要记牢tasks/send提交新任务tasks/sendSubscribe提交任务并订阅 SSE 流式更新tasks/get查任务状态可用 historyLength 指定历史条数tasks/cancel终止运行中任务tasks/pushNotification/set配置推送回调地址tasks/pushNotification/get查当前推送配置tasks/resubscribe断线重连后恢复事件订阅。4. 验证请求跑通一次 Agent 调用配置写完别急着上多 Agent先用一次单请求验证链路通不通。下面用 curl 发一个tasks/send模拟客户端 Agent 向服务端 Agent 提交任务。4.1 先拉 Agent CardA2A 的服务发现靠 Agent Card通常托管在/.well-known/agent.json。先确认能拿到curl -s https://your-agent.example.com/.well-known/agent.json | jq .返回里应该有 name、description、skills、url、authentication 等字段。如果这里 404说明服务端没托管 Card后面所有调用都无从谈起。4.2 发一个 tasks/send 请求curl -s -X POST https://your-agent.example.com/a2a \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoTokenKey \ -d { jsonrpc: 2.0, method: tasks/send, id: req-001, params: { sessionId: sess-abc, message: { role: user, parts: [ { type: text, text: 帮我调研 A2A 协议的通信方式 } ] } } } | jq .成功时返回结构里会有result包含 task 的 id、status、artifacts 等。id必须和请求的req-001一致这是 JSON-RPC 的硬要求。4.3 流式场景改用 sendSubscribe长任务用tasks/sendSubscribe服务端会通过 SSE 持续推事件curl -N -X POST https://your-agent.example.com/a2a \ -H Content-Type: application/json \ -H Accept: text/event-stream \ -d { jsonrpc: 2.0, method: tasks/sendSubscribe, id: req-002, params: { sessionId: sess-abc, message: { role: user, parts: [{ type: text, text: 分三步输出调研结果 }] } } }-N关掉 curl 缓冲你就能看到事件一条条打出来。每个事件里通常带 task 状态更新或 artifact 片段。如果中途断了用tasks/resubscribe带上原 task id 恢复订阅。4.4 验证模型通道是否走通Agent 内部调模型这一步单独验一下更稳。用模型对话页面快速确认 Key 有效https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果那边能正常出结果说明 Key 和 base_url 没问题问题就缩小到 A2A 通信层了。5. 本篇常见错排查配 A2A 链路时报错往往集中在几个固定位置。下面按现象给排查路径。JSON-RPC 报 -32600 Invalid Request八成是jsonrpc字段没写 2.0或者id缺失。JSON-RPC 2.0 对这两个字段是强校验少一个直接拒。检查请求体里jsonrpc、method、id三件套是否齐全。-32601 Method not found方法名拼错了。A2A 的方法名是tasks/send这种带斜杠的格式不是sendTask。对照第 3.3 节的方法表逐个核对注意大小写。SSE 连上但收不到事件先确认请求头带了Accept: text/event-stream再确认用的是tasks/sendSubscribe而不是tasks/send。普通 send 是同步返回不会推流。另外检查中间层有没有缓冲 SSE某些网关会攒够一批才发导致你看着像卡住。断线后事件丢失SSE 断线不会自动补发需要客户端主动调tasks/resubscribe带上原 task id。配置里reconnect和resubscribeMethod就是干这个的别关掉。Agent Card 拉不到确认路径是/.well-known/agent.json不是/agent.json。有些框架默认路径不同以服务端实际托管为准。Card 里的url字段要和实际请求地址一致否则客户端会往错的地方发。模型调用 401Key 错了或没带。检查Authorization: Bearer sk-xxx头以及 base_url 是不是https://taotoken.net/api。如果 Key 刚生成确认没有多余空格。任务一直 pending看服务端 Agent 有没有真正执行。tasks/get带上 task id 和historyLength查状态历史能看出卡在哪一步。如果是 push notification 模式确认 callback 地址可达。6. 把链路收口到统一通道A2A 的通信链路拆开看就是三件事HTTP 做传输、JSON-RPC 2.0 做消息封装、SSE 做流式推送。配的时候把模型访问层用 TaoToken 统一收口Agent 侧只认一个 base_url 和一个 Key改配置时不用满项目找散落的地址。实际跑的时候建议先用tasks/send验证同步链路再用tasks/sendSubscribe验证流式最后才上多 Agent 协作。断线重连和 push notification 属于进阶项等基础链路稳了再加。Agent Card 的托管路径和方法名拼写是两个高频坑配之前先对着文档核一遍。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。长期跑编码和 Agent 任务的话Coding Plan 那条通道更省心https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。
企业数字化 ERP 产品动态
相关推荐
异常驾驶检测实战:用传感器数据和机器学习搭建驾驶预警系统 简介:这是一份面向机器学习与深度学习初学者的异常驾驶检测项目包,适合希望通过实际案例掌握异常检测完整流程的学生或开发者,可应用于智能交通、驾驶行为分析等场景。压缩包共六个文件,包含三个 Jupyter Notebook 源码文件&#… · 2026/9/26 15:03:45
机器学习落地异常驾驶检测:从IMU数据到树模型工程实现 简介:面向机器学习、深度学习与智能驾驶安全方向的异常驾驶检测资源,适合需要将异常识别落地到实际数据上的开发者、研究生及竞赛团队;压缩包共6个文件,内含3个Jupyter Notebook源码、2个HTML可视化报告与1份Markdown说明书&#… · 2026/9/26 15:03:45
Java SpringBoot 实战B2b笔记_dto list-CSDN博客 首屏导读 本教程配套付费专栏: 大模型工程师修炼手记 19.9 元(AI 编程 / Agent 实战 | 本文同主题系统课程) AI时代程序员的自我提升 49.9 元(AI 时代成长方法论)。 单篇不过瘾?订阅解锁全量源… · 2026/9/26 15:36:25
Hotel-ID打击人口贩卖 据报道,每年约有20,000名妇女遭到拐卖,许多犯罪分子在酒店房间内给人口贩运的受害者拍照。这些照片在警方调查中至关重要,然而,由于图像质量通常受到像素不足和摄像机角度问题的影响,识别这些酒店房间对于破案工作来说颇具挑战。
在CVPR 2022的FGVC9(细粒度视觉分类)研… · 2026/9/26 15:36:25
AI写小说哪个软件好用?亲测10款工具后,我把TaoToken接进了创作工作流 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 15:36:10
基于 hermes agent 与 llm-wiki 的知识管理:TaoToken 统一 Key 接入配置实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 15:36:10
Python机器学习零基础理解K近邻算法 在当今数据驱动的世界里,机器学习无疑是最具变革性的科技之一。它不仅正在改变生活方式,还正在重塑各个行业的运营模式。尽管机器学习听起来很高大上,但实际上许多基础算法并不复杂,完全可以由没有专业背景的人来理解。本文将以K近邻(K-Nearest Neighbors,简称KNN)算法为… · 2026/9/26 15:36:02
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46