有关T-SQL的个好习惯
檀倥临资A2A 即 Agent-to-Agent它定义了三个关键的角色它们各司其职互相配合支撑多个Agent的运行。那么都是哪几个角色呢下面告诉你image角色1用户User即终端用户可能是人类 或 服务需要使用Agent来完成某个任务。角色2客户端Client一个代表用户向 远程Agent 发送请求的实体它发送的请求是严格按照A2A协议的。它的表现形式可以是一个应用程序、服务 或 一个Agent。例如我们在上一篇的Demo中开发的一个控制台应用程序通过引用A2A包来向远端的Agent发送请求。角色3远程AgentRemote Agent一个执行实际任务的Agent部署在某个远端Server上对于客户端来说是“黑盒”一样的存在仅仅通过Agent Card声明自己提供的接口或技能但内部实现细节或工作机制是不透明的即一个“黑盒”。例如我们在上一篇的Demo中开发的一个WebAPI项目EchoAgent提供了一个ProcessMessage的技能 以及 声明了一个AgentCard公开了一些元数据。A2A的四大对象A2A中定义了一套完整的对象体系其中最核心的就是下面这四个核心对象第一个对象Agent Card又称Agent名片每个A2A的远程Agent都需要发布一个JSON格式的名片被称为“Agent Card”用于描述这个Agent具有哪些技能 及其 认证机制便于Client可以获得这些信息并选择合适的Agent来完成任务。image其实它就和我们在做后端服务开发中的服务注册和发现的机制差不多只不过这个注册的信息被标准化了下面我们可以看看一个典型的Agent Card的JSON格式复制代码{name: Google Maps Agent,description: Plan routes, remember places, and generate directions,url: https://maps-agent.google.com,provider: {organization: Google,url: https://google.com},version: 1.0.0,authentication: {schemes: OAuth2},defaultInputModes: [text/plain],defaultOutputModes: [text/plain, application/html],capabilities: {streaming: true,pushNotifications: false},skills: [{id: route-planner,name: Route planning,description: Helps plan routing between two locations,tags: [maps, routing, navigation],examples: [plan my route from Sunnyvale to Mountain View,whats the commute time from Sunnyvale to San Francisco at 9AM],outputModes: [application/html, video/mp4]}]}复制代码这个JSON数据简要描述了一个名为Google Maps Agent的Agent定义。这个Agent的主要功能是规划路线、记住地点和生成导航指示。这个应用由Google提供版本号是1.0.0采用OAuth2身份验证。它支持文本和HTML格式的输入和输出具有流媒体功能但不支持推送通知。它的一个核心技能是route-planner可以帮助用户规划两个地点之间的路线并输出HTML和视频格式的内容。在A2A .NET SDK中AgentCard的定义如下复制代码public class AgentCard{public string Name { get; set; } // 代理名称public string Description { get; set; } // 代理描述public string Url { get; set; } // 代理 URLpublic AgentProvider? Provider { get; set; } // 提供商信息public string Version { get; set; } // 版本信息public AgentCapabilities Capabilities { get; set; } // 代理能力public List Skills { get; set; } // 代理技能public List DefaultInputModes { get; set; } // 默认输入模式public List DefaultOutputModes { get; set; }// 默认输出模式}复制代码在上一篇的Demo中我们在定义EchoAgent时就实现了一个GetAgentCard方法并将其注册到服务发现中最终被Client探索发现时就会以JSON格式输出给到Client复制代码public class EchoAgent{public void Attach(ITaskManager taskManager){taskManager.OnMessageReceived ProcessMessageAsync;taskManager.OnAgentCardQuery GetAgentCardAsync;}private Task ProcessMessageAsync(MessageSendParams messageSendParams, CancellationToken cancellationToken){......}private Task GetAgentCardAsync(string agentUrl, CancellationToken cancellationToken){return Task.FromResult(new AgentCard{Name Echo Agent,Description Echoes messages back to the user,Url agentUrl,Version 1.0.0,DefaultInputModes [text],DefaultOutputModes [text],Capabilities new AgentCapabilities { Streaming true }});}}复制代码与此同时在Client中也可以主动进行服务发现例如上一篇Demo中的Client示例代码// Discover agent and create clientvar cardResolver new A2ACardResolver(new Uri(https://localhost:7243/));var agentCard await cardResolver.GetAgentCardAsync();var client new A2AClient(new Uri(agentCard.Url));第二个对象Task 任务Task 是 Client 和 远程Agent 之间协作的一个概念很好理解一个Task代表一个需要完成的任务每个Task都有一个唯一的ID号它通常包含了任务状态、历史记录 和 执行结果 等信息。Task的主要具体状态有submitted, working, completed, canceled, failed 等下图展示了Task的状态机转换流。image在A2A .NET SDK中AgentTask的定义如下复制代码public class AgentTask : A2AResponse{public string Id { get; set; } // 任务 IDpublic string? ContextId { get; set; } // 上下文 IDpublic AgentTaskStatus Status { get; set; } // 任务状态public List? Artifacts { get; set; } // 任务产出物public List? History { get; set; } // 消息历史public Dictionary? Metadata { get; set; } // 元数据}复制代码第三个对象Artifact工件 或 成果Artifact 和我们在DevOps CI/CD流水线中的Artifact即工件的概念类似它是 远程Agent执行完某个任务后生成输出的结果即远程Agent返回的结果通过一个Artifact对象输出给Client每个任务的结果可能都不一样。一个Artifact可以包含多个部分parts每个部分part可以是文本、文档、图像 等涉及纯文本、文件 和 结构化数据。image第四个对象Message消息Message 也很好理解它就是 Client 和 远程Agent 之间通信的 一个消息对象它通常包含了 指令 和 状态更新 等内容。同样的一个Message对象也可以包含多个parts用于传递如 文本、文件 或 结构化 等不同类型的内容。每个Message都有发送方设置的一个唯一的messageId且通过一些关键词如user代表Client发送的或“agent”代表服务端发送的来区分角色。在A2A .NET SDK中Message的定义如下复制代码public class Message : A2AResponse{public MessageRole Role { get; set; } // 消息角色 (User/Agent)public List Parts { get; set; } // 消息部分public string? MessageId { get; set; } // 消息 IDpublic string? TaskId { get; set; } // 关联任务 IDpublic string? ContextId { get; set; } // 上下文 IDpublic Dictionary? Metadata { get; set; } // 元数据}复制代码A2A协议的工作流程这里我们来通过一个简单的例子看看A2A协议的 请求-响应 工作流程是怎么样的。例如有这样一个场景“招聘XX岗位候选人搜寻”Step1用户在统一界面下向Client假设它也是一个Agent发送一个请求消息“请帮我寻找一个XX岗位的候选人”。Step2Client将用户的请求消息进行封装并根据岗位需求依次调用一些远程Agent如 简历检索Agent、技能筛选Agent 等等。例如下面的请求示例展示了Client在检索了5位候选人简历之后通过A2A协议向远端技能筛选Agent发送的任务请求复制代码{jsonrpc: 2.0,id: 1,method: tasks/send,params: {id: de38c76d-d54c-436c-8b9f-4c2703648d64,message: {role: user,parts: [{type: text,text: 请分析下面5位候选人是否符合岗位需求并推荐最佳面试人选。}]},metadata: {}}}复制代码Step3各个远端Agent执行各自的任务并返回给Client对应的Artifact对象结果如候选人名单等然后再由Client进行汇总和展示。复制代码{jsonrpc: 2.0,id: 1,result: {id: de38c76d-d54c-436c-8b9f-4c2703648d64,sessionId: c295ea44-7543-4f78-b524-7a38915ad6e4,status: {state: completed},artifacts: [{name: result,parts: [{type: text,text: 第三位候选人最符合你的需求!建议安排面试。}]}],metadata: {}}}复制代码Step4后续Client可以陆续调用其他远端Agent如 面试安排Agent、背景调查Agent等完成端到端的自动化招聘流程。那么该场景的整个工作流程便如下图所示image除此之外实际应用案例中通常是A2A与MCP两个协议一起使用形成更广的应用范围。例如下图展示了一个汽车维修店的场景店长智能体 和 机械师智能体 通过A2A协议完成任务移交hand-off店长可以处理常见问题但机械师可以解决技术难题。机械师智能体再通过MCP协议完成内部工具使用完成具体任务还可以通过A2A协议和零件供应商Agent完成外部协作。image由此可见其实在企业客服 或 售后中心 等场景中A2A协议可以被广泛应用于多Agent协作。小结本文介绍了A2A的三个主要角色User、Client 和 Remote Agent以及 四个核心对象Agent Card、Task、Artifact 和 Message并通过简单的例子介绍了A2A协议的典型工作流程相信对于你加深了解A2A协议会有帮助。下一篇我们将以一个旅行规划的应用场景结合LLM大模型来实现一个A2A协议的案例它会涉及一个Client 和 三个Remote Agent是一个拿来练手的好案例。参考资料

相关新闻

远程线程注入引出的问题

远程线程注入引出的问题

冀煽辆首? neo4j-community-5.26.0 服务配置结果 服务名称: neo4j 显示名称: Neo4j Graph Database - neo4j 状态: Running (运行中) 启动类型: Automatic (自动) 访问: http://localhost:7474 neo4j-community-5.26…

2026/7/7 0:29:16 阅读更多 →
铁道部新客票系统设计(一)

铁道部新客票系统设计(一)

掀蒲久读光照探针的作用 光照探针(Light Probes)是Unity中用于解决动态物体间接光照问题的核心技术,主要作用包括: ?为动态物体提供间接光照?:在静态场景中,动态物体无法直接使用烘焙光照贴图,光照探针通过存储空间中…

2026/7/4 9:33:21 阅读更多 →
铁道部新客票系统设计(二)

铁道部新客票系统设计(二)

喜车亢沤3.2 REINFORCE: 最早的策略梯度算法 在完成策略梯度定理的推导后,我们获得了梯度的理论形式: 然而,这个期望本身仍然无法直接计算。我们面临的根本问题是:轨迹空间是高维甚至连续无限的,无法枚举所有可能的 组合。策略优化的实践核心在于用有限采样近似期望:与环境交互…

2026/7/4 13:12:57 阅读更多 →

最新新闻

Linux文本数据流处理完整知识框架体系

Linux文本数据流处理完整知识框架体系

一、echo 输出显示命令1. 概念理解echo 是Linux最基础的标准输出命令,作用是向标准输出(终端屏幕)打印文本字符串、变量值。它是数据流的“产生器”,经常用来生成测试文本、脚本提示信息,同时可以配合重定向完成文件内…

2026/7/7 11:19:03 阅读更多 →
模型降级策略:服务可用,不等于回答质量可以随便降

模型降级策略:服务可用,不等于回答质量可以随便降

模型降级策略:服务可用,不等于回答质量可以随便降 一、模型降级不能只按价格从高到低切 大模型应用为了控成本和保障可用性,通常会准备多个模型。主模型超时或限额时,切到便宜模型或本地小模型。这个策略有用,但不能简…

2026/7/7 11:19:03 阅读更多 →
实战复现CitrixBleed 2漏洞:从内存越界读取到会话劫持

实战复现CitrixBleed 2漏洞:从内存越界读取到会话劫持

1. 项目概述:一次针对企业核心边界的实战化漏洞复现最近在梳理企业边界设备的安全风险时,我又一次把目光投向了Citrix NetScaler。作为全球范围内广泛应用的应用交付控制器(ADC)和网关设备,它承载着大量企业的关键业务…

2026/7/7 11:15:02 阅读更多 →
5分钟上手:Switch图形化注入工具TegraRcmGUI终极指南

5分钟上手:Switch图形化注入工具TegraRcmGUI终极指南

5分钟上手:Switch图形化注入工具TegraRcmGUI终极指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows平台设计的Ni…

2026/7/7 11:13:01 阅读更多 →
品牌全案策划服务如何选择?2026年企业需关注的5个维度

品牌全案策划服务如何选择?2026年企业需关注的5个维度

品牌全案策划服务是企业建立系统性品牌体系的核心环节,需要从服务范围、团队专业度、数据能力、执行经验和成本结构五个维度综合评估。品牌全案策划服务是指为企业提供从品牌战略规划到视觉设计、营销推广、运营维护的一站式综合性服务。据QYResearch调研数据显示&a…

2026/7/7 11:13:01 阅读更多 →
从RSA到ML-KEM:密钥封装机制演进与后量子密码迁移实战

从RSA到ML-KEM:密钥封装机制演进与后量子密码迁移实战

1. 密钥封装机制:从信任基石到量子威胁下的重塑如果你在2024年之前配置过TLS证书,或者调试过SSH连接,那么“RSA密钥交换”这个概念对你来说一定不陌生。它就像互联网世界的“信任邮差”,几十年来默默无闻地保障着我们每一次网页浏…

2026/7/7 11:11:00 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻