不改一行客户端代码:Agent Mesh 让标准 A2A SDK 跨网络对话的 Agent Card 再生原理
【免费下载链接】agentmeshAgent Mesh项目地址https://gitcode.com/gh_mirrors/sam31/agentmesh点击查看免费下载Agent Mesh 是一个面向 AI Agent 的私有 P2P 网络每个 Agent 旁边跑一个agentmesh-node负责把本地工具发布到网络、发现并调用远端服务。在 A2AAgent2Agent协议 场景下真正卡住跨网络对话的往往不是连接本身而是Agent Card——这张名片里写死了只有 Provider 本机可达的地址。Agent Mesh 通过Agent Card 再生regeneration机制在调用方节点上重新签发这张名片让未经任何修改的标准 A2A SDK 就能直接跨网络对话。本文拆解这套机制的完整原理。一、问题根源A2A 协议为什么跨不了网络1.1 Agent Card 是 A2A 的入口按照 A2A 协议规范客户端与远端 Agent 对话的第一步永远是访问约定路径GET /.well-known/agent-card.json返回的 Agent CardJSON里包含 Agent 的名称、能力capabilities、技能列表以及最关键的supportedInterfaces——一组带url字段的接口声明告诉客户端消息该发到哪里。1.2 卡点Card 里的地址是本机地址假设远端节点上的 chat Agent 监听在127.0.0.1:7777它签发的 Card 大致长这样{ name: chat, supportedInterfaces: [ { protocolBinding: JSONRPC, url: http://127.0.0.1:7777/ } ] }调用方节点虽然能通过代理路径/mesh/peer-id/a2a/chat/.well-known/agent-card.json把这张 Card 原样取回来但客户端解析后却会转头去连http://127.0.0.1:7777/——这个地址在调用方自己机器上根本不存在对话在第一步就断了。 矛盾就出在这里Card 必须被改写但客户端又不允许被改写。谁来做这个中间人二、Agent Card 再生调用方节点的三步操作Agent Mesh 的答案是由调用方节点扮演远端 Agent 的 Card 端点。当请求命中.well-known/agent-card.json或服务根路径时节点拦截请求执行抓取 → 改写 → 回签三步核心实现位于 a2a_service.go。2.1 第一步拦截请求经 mesh 抓取原始 Card调用方节点通过 libp2p 加密流向 Provider 节点发起内部 GET见 fetchRemoteAgentCard复用调用方已有的 Biscuit 凭据完成鉴权。注意两个细节主动删除If-None-Match/If-Modified-Since等缓存头——因为客户端的校验器对应的是再生后的 CardProvider 从未见过限制抓取体积为 1MB防止恶意大 Card 打爆节点内存。2.2 第二步改写接口 URL指向 mesh 代理路径regenerateAgentCardForMesh 是再生的心脏它对 Card 做四件事操作原因仅保留 JSONRPC / HTTPJSON 绑定的接口gRPC 需要端到端独占连接mesh 的 HTTP 通道承载不了直接丢弃把每个接口的url重写为http://本节点/mesh/peer-id/a2a/name/让客户端的所有后续请求都绕回 mesh 代理路径清空原签名signatures内容已被改写原签名必然失配保证 skills、inputModes 等字段是空数组而非 null严格解析器如 pydantic会拒绝 nullURL 重写还有一个安全防线meshInterfaceURL任何带 scheme、host、绝对路径或..段的引用一律回落到服务根路径——Provider 不能借 Card 把调用方引到本节点上的其他路径。2.3 第三步为再生内容重新签发缓存头Card 内容变了但 A2A 1.0 规范要求支持 ETag 协商缓存。节点对自己发出的字节计算 SHA-256 派生新的强校验器agentCardETag若请求携带的If-None-Match命中则直接回304 Not Modified既遵守 RFC 9110 的弱比较语义又避免重复抓取远端。2.4 Provider 侧的配合URL 相对化为了让改写更精确Provider 节点在向 mesh 转发 Card 响应时还会先把本机绝对 URL 转成相对路径relativizeAgentCardResponse。这样当 Agent 的 JSON-RPC 端点挂在/invoke子路径下时调用方解析相对引用后仍落在正确的代理子路径上而不是被一刀切到服务根。三、零改动接入标准 A2A 客户端实战再生机制落地后调用方看到的就是一个标准 A2A 服务。以下用官方a2aCLI 演示完整示例见 development/examples/chat-a2a/1️⃣ 把本地 A2A Agent 发布到 mesh——节点配置只需一行type: a2atarget_urlservices: - type: a2a name: chat target_url: http://127.0.0.1:77772️⃣ 发现服务discover_remote_services工具按{type:a2a}列出远端 Agent 及其 peer ID。3️⃣ 用标准客户端对话Card 地址直接指向本地节点代理路径CARDhttp://127.0.0.1:8080/mesh/peer-id/a2a/chat/.well-known/agent-card.json a2a card get $CARD # 拿到的已是再生后的 Card a2a send -a $CARD hello # message/send 自动发回 mesh 路径整个过程中a2a-sdk、a2aCLI 或任何其他 Agent 完全不知道 Agent Mesh 的存在消息与 SSE 流式响应由节点透传代理contextId原样往返多轮对话上下文完整保留。 想亲手跑通端到端演示参考 chat-a2a 用例文档它基于 kind 本地 mesh 一条命令拉起。四、这套设计的三个巧妙之处探针即健康检查节点把能取到合法 Agent Card作为服务就绪的定义A2AService.Probe。沙箱里 Agent 还没绑定端口时探测失败、服务就不会进入发现表——用协议自身的语义做准入零额外成本。能力声明不降级流式streaming等能力字段按 Agent 原样保留。因为代理是透传 SSE 流的若把流式关掉远端 Agent 反而会按 Card 拒绝SendStreamingMessage得不偿失。默认拒绝的兜底再生只发生在策略允许的/mesh/...路径上Card 请求同样先过凭据校验与 labels 门a2aEgressGate拿不到授权就是403。五、小结环节谁负责做了什么Card 抓取调用方节点经 libp2p 加密流取回原始 CardURL 再生调用方节点接口地址重写为 mesh 代理路径剥离 gRPC、清空旧签名缓存协商调用方节点对再生字节自签 ETag支持 304路径相对化Provider 节点把子路径接口改写为相对引用客户端标准 A2A SDK什么都不用改一句话总结Agent Mesh 把 Agent Card 从静态名片变成了可再生的动态路由。只要你的 Agent 会说话 HTTP 上的 A2A它就能原封不动地加入 mesh被任何标准客户端找到并对话——这正是 P2P Agent 网络最需要的零摩擦互操作。更多架构细节可阅读 架构文档 与 Node API 参考。赞分享【免费下载链接】agentmeshAgent Mesh项目地址https://gitcode.com/gh_mirrors/sam31/agentmesh点击查看免费下载相关推荐openJiuwen agent-protocol A2A C SDK 客户端开发指南Agent Card 发现、RPC 调用与流式消息openJiuwen agent protocol A2A C SDK 客户端开发指南Agent Card 发现、RPC 调用与流式消息 本篇技术指南以AI Agent人工智能认证鉴权服务注册发现工具调用为什么你控制不了AI绘图和AI视频ArtCraft把提示词变成了手艺为什么你控制不了AI绘图和AI视频ArtCraft把提示词变成了手艺 ArtCraft 是一款自称艺术家专属 IDE的桌面应用把 AI绘图 、 AI视频人工智能AI 应用媒体生成桌面应用30 行代码让你的 Python/JavaScript 程序加入 Agent Mesh原生 SDK 完全教程含浏览器端30 行代码让你的 Python/JavaScript 程序加入 Agent Mesh原生 SDK 完全教程含浏览器端 Agent Mesh 是一个把 A创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

鼎捷T100权限与流程配置深度解析:RBAC+ABAC混合模型实战指南

鼎捷T100权限与流程配置深度解析:RBAC+ABAC混合模型实战指南

简介:本资源是鼎捷T100整体管理系统的官方用户手册,面向中小企业IT实施人员、系统管理员及初次接触T100平台的业务用户,旨在帮助其快速掌握系统架构、核心模块操作与典型业务流程落地。手册内容覆盖产品设计理念、MENU功能导航、用户自定义界…

2026/10/16 21:20:40 阅读更多 →
Delphi DBGridEh v5.2.84:工业级表格引擎实战指南

Delphi DBGridEh v5.2.84:工业级表格引擎实战指南

简介:本资源为 Delphi 开发者专用的 EhLib 组件库 v5.2.84 完整安装包,专为使用 Borland/CodeGear/Embarcadero 系列 IDE(Delphi 5–2010、CBuilder 5–6、RAD Studio 2009–2010)的中高级桌面应用开发者设计,重点解决…

2026/10/16 21:19:40 阅读更多 →
MATLAB统计混响模型生成房间冲激响应与RT60验证指南

MATLAB统计混响模型生成房间冲激响应与RT60验证指南

简介:面向水下声学、海洋探测与声纳系统设计研究与工程人员,这份 Matlab 代码资源针对海底混响的统计特性展开建模,支持单频与线性调频(LFM)信号。压缩包内只有 1 个 M 脚本,约 1KB,结构紧凑&am…

2026/10/16 21:19:40 阅读更多 →

最新新闻

上海医保五期接口设计拆解:有状态账本、两阶段确认与身份令牌机制

上海医保五期接口设计拆解:有状态账本、两阶段确认与身份令牌机制

简介:上海五期医保接口说明文档,是一份指导 HIS 系统对接医保中心系统的技术参考,面向医院信息系统开发、实施与维护人员。文档从引言、业务分析到接口描述逐层展开,涵盖读卡、电子凭证解码、挂号收费请求与确认、登记与撤销、明细…

2026/10/16 21:56:13 阅读更多 →
权力的游戏86节点深度解析:三条线索交汇与叙事结构拆解

权力的游戏86节点深度解析:三条线索交汇与叙事结构拆解

1. 从“86”这个数字说起:为什么这个节点值得单独拎出来聊“A Game of Thrones(86)”这个标题,第一次看到的人大概率会愣一下——括号里的86是什么意思?是第86章?第86集?还是某个版本编号?如果你追过这套作…

2026/10/16 21:56:13 阅读更多 →
linear-cli 退出码全解析:0/2/3/4/5 各代表什么,脚本如何精准判断失败原因?

linear-cli 退出码全解析:0/2/3/4/5 各代表什么,脚本如何精准判断失败原因?

【免费下载链接】linear-cli linear without leaving the command line: list, start, and create PRs for linear issues. agent friendly. 项目地址: https://gitcode.com/gh_mirrors/lin/linear-cli 点击查看 免费下载 linear-cli 是一个让你不离开命令行就能管…

2026/10/16 21:56:13 阅读更多 →
STK 11自带案例从入门到改造:卫星仿真与覆盖分析实战

STK 11自带案例从入门到改造:卫星仿真与覆盖分析实战

简介:STK11(System Tool Kit 11)是由AGI推出的空间系统模拟分析软件,在航天、国防、通信等领域应用广泛。这份压缩包内含其自带的应用案例,适合刚接触STK11的工程师与在校学生通过实例快速上手。包内共396个文件&#…

2026/10/16 21:56:13 阅读更多 →
15 个真实数据案例、119 张规范图表:High-Stakes Analytics  Decision Lab 案例组合阅读指南

15 个真实数据案例、119 张规范图表:High-Stakes Analytics Decision Lab 案例组合阅读指南

【免费下载链接】high-stakes-analytics-decision-lab A platform-neutral analytical Skill that profiles messy data, selects case-adaptive methods, and produces source-backed visual reports for high-stakes decisions. 项目地址: https://gitcode.com/gh…

2026/10/16 21:56:13 阅读更多 →
cua是什么意思?从网络拟声词到IBM界面规范的跨界解读

cua是什么意思?从网络拟声词到IBM界面规范的跨界解读

上周朋友给我发来一张游戏截图,配了一行字:“cua cua cua,直接秒了。”我问她那是什么意思,她回了一个“这你都看不懂?”的表情包。坦白说,作为常年混在社媒和内容行业的人,对看不懂的网络黑话应…

2026/10/16 21:55:13 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式: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/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →