将 Nexent 智能体发布为 A2A 1.0 Agent:发布步骤与 REST / JSON-RPC 调用实战
AI AgentAI 应用后端前端大模型RAG【免费下载链接】nexentNexent is a zero-code platform for auto-generating production-grade AI agents using Harness Engineering principles — unified tools, skills, memory, and orchestration with built-in constraints, feedback loops, and control planes.项目地址https://gitcode.com/gh_mirrors/ne/nexent点击查看免费下载A2AAgent-to-Agent协议正成为跨平台智能体协作的事实标准。Nexent 支持把平台上已发布的智能体一键暴露为符合 A2A 1.0 规范的 Agent供外部系统通过标准 REST 或 JSON-RPC 协议发现、认证并调用。本文以官方用户指南 a2a-publish.md 为核心骨架结合仓库中northbound_base_app.py、a2a_server_service.py等源码实现完整讲解发布流程、五个核心端点、认证方式与版本管理让读者能够独立完成一次「发布 → 发现 → 调用」的全链路实战。A2A 协议与 Nexent 的对接定位A2A 是 Google 主导推动的智能体互操作协议通过标准的 Agent Card 描述文件与 REST/JSON-RPC 调用端点让来自不同平台的 Agent 可以互相发现和协作。Nexent 将这一能力落地为A2A Server模式平台内部智能体可被发布为对外可调用的 A2A Agent外部系统通过Agent Card发现 Agent 的能力描述名称、描述、技能、端点地址通过 REST 风格 API 或 JSON-RPC 2.0 发起同步、流式调用并查询任务状态。从源码结构看这一能力由三层组成北向入口层路由统一注册在/nb/a2a前缀之下见 northbound_base_app.py服务编排层A2AServerService负责端点注册、Agent Card 生成、任务生命周期管理见 a2a_server_service.py协议适配层A2AAgentAdapter负责 A2A 消息格式与 Nexent 内部 Agent 请求格式的双向转换见 a2a_agent_adapter.py。发布为 A2A Agent操作步骤在智能体开发页面按照以下步骤完成发布在智能体开发中创建或编辑 Agent完成 Agent 配置并保存配置项可参考 agent-configuration.md点击「发布」按钮在发布选项中勾选「发布为 A2A Agent」确认发布。发布成功后系统会展示该 A2A Agent 的完整调用信息信息项说明Endpoint IDA2A Agent 的唯一标识符后续所有调用 URL 的核心路径参数Agent Card URLAgent 发现端点外部系统通过此地址获取 Agent 描述协议版本A2A 协议版本当前为 1.0REST 端点基于 REST 风格的 API 端点JSON-RPC 端点基于 JSON-RPC 2.0 协议的调用端点在 Agent 列表中点击最左侧的图标可以随时查看该 A2A Agent 的调用详情从实现角度看勾选「发布为 A2A Agent」本质上是为智能体创建一条 A2A Server 注册记录is_enabled True并为该智能体生成唯一 Endpoint ID形如a2a_{agent_id}_{8位随机hex}见 a2a_agent_db.py。平台内部还提供了管理用的启停接口需用户登录态、仅内部使用见 a2a_server_app.py。调用方式一REST API发布后的 A2A Agent 同时支持 REST 与 JSON-RPC 两种协议可按需选择。先看 REST 风格的四个核心操作对应实现位于 northbound_base_app.py# 1. 获取 Agent Card用于 Agent 发现 GET /nb/a2a/{endpoint_id}/.well-known/agent-card.json # 2. 发送同步消息 POST /nb/a2a/{endpoint_id}/message:send Content-Type: application/json { message: { role: user, content: 请帮我完成某个任务 } } # 3. 发送流式消息SSE POST /nb/a2a/{endpoint_id}/message:stream Content-Type: application/json { message: { role: user, content: 请帮我完成某个任务 } } # 4. 获取任务状态 GET /nb/a2a/{endpoint_id}/tasks/{task_id}其中message:send为同步调用服务端会等待任务完成后一次性返回结果内部经由handle_message_send转发到运行时见 a2a_server_service.pymessage:stream则以text/event-stream形式返回 SSE 事件流事件包含taskStatusUpdateTASK_STATE_WORKING→TASK_STATE_COMPLETED/TASK_STATE_FAILED与taskArtifact等类型GET tasks/{task_id}用于轮询异步任务的状态与结果。REST 错误码映射从 test_northbound_base_app.py 与路由实现可以看到REST 端点的异常映射为端点不存在HTTP 404EndpointNotFoundError端点存在但 A2A Server 未启用HTTP 503AgentNotEnabledError任务不存在HTTP 404TaskNotFoundError其他异常HTTP 500。Agent Card 的 HTTP 缓存GET .well-known/agent-card.json返回时携带Cache-Control: public, max-age3600与ETag响应头客户端可据此做条件请求If-None-Match命中则返回 304这就是官方文档「Agent Card 信息会被缓存刷新间隔为 1 小时」的底层实现见 northbound_base_app.py。调用方式二JSON-RPC 2.0JSON-RPC 调用统一走/nb/a2a/{endpoint_id}/v1端点支持SendMessage、SendStreamingMessage、GetTask三个方法见 northbound_base_app.pyPOST /nb/a2a/{endpoint_id}/v1 Content-Type: application/json # 发送同步消息 { jsonrpc: 2.0, method: SendMessage, params: { message: { role: user, content: 请帮我完成某个任务 } }, id: 1 } # 发送流式消息 { jsonrpc: 2.0, method: SendStreamingMessage, params: { message: { role: user, content: 请帮我完成某个任务 } }, id: 2 } # 获取任务状态 { jsonrpc: 2.0, method: GetTask, params: { taskId: task_abc123 }, id: 3 }JSON-RPC 的响应同样采用标准信封格式成功返回{jsonrpc:2.0,result:...,id:...}失败返回{jsonrpc:2.0,error:{code:...},id:...}。从源码可知其错误码约定错误码含义对应异常-32601Method not found / Endpoint not foundEndpointNotFoundError-32001Task not foundTaskNotFoundError-32004Unsupported operation如任务已终止UnsupportedOperationError-32603Internal error其他异常其中SendStreamingMessage会将内部事件逐条包装为 JSON-RPC 信封后以 SSE 输出data: {...}\n\n见 northbound_base_app.py。GetTask的params中使用taskId字段且要求该任务确实存在且属于当前调用者否则返回任务不存在或鉴权失败相关实现见 a2a_server_service.py。关于消息中的 taskId从协议适配层可以看出Nexent 对任务有三种处理策略见 a2a_server_service.py携带客户端taskId要求该任务存在且未处于终态COMPLETED/FAILED/CANCELED否则返回任务不存在或操作不支持携带contextId/history/ 客户端taskId之一的复杂请求服务端自动生成新的task_xxx任务并持久化均未携带的简单请求直接执行不创建任务记录。本地开发与部署路径前缀不同部署形态下北向 A2A 入口的完整地址前缀不同部署方式路径前缀Dockerhttp://localhost:5013/nb/a2aKuberneteshttp://localhost:30013/nb/a2a生产环境替换为服务器域名或公网 IP即完整调用地址形如http://localhost:5013/nb/a2a/{endpoint_id}/message:send。Kubernetes 部署下使用 NodePort30013暴露北向服务生产环境则使用域名或公网 IP并将请求经网关转发至北向服务。以上端口为仓库部署脚本约定的默认值实际以部署配置为准。认证方式调用 A2A Agent 与调用 Nexent 北向 API 使用同一套认证体系即在请求头中携带 API KeyAuthorization: Bearer {access_key}API Key 的生成入口为个人信息 → 生成 API 密钥。从源码看北向上下文NorthboundContext在进入各 A2A 路由前会先解析Authorization头并解析出token_id、user_id、tenant_id这些身份信息随后贯穿任务创建、执行与查询的鉴权链路。若任务查询者与任务创建者不一致get_task会直接拒绝访问见 a2a_server_service.py。版本管理与 Agent Card 缓存已发布的 A2A Agent 不可修改如需变更只能发布新版本重新发布后外部系统通过刷新后的 Agent Card 获取最新信息名称、描述、技能、端点Agent Card 存在 HTTP 层缓存Cache-Control: max-age36001 小时同时提供 ETag 做条件校验缓存期内重复请求会命中 304数据库侧对已发现的外部 Agent Card 也有缓存机制默认 TTL 为 24 小时DEFAULT_CACHE_TTL_HOURS 24见 a2a_agent_db.py。因此在发布新版本后调用方如需立即感知变化应等待 Agent Card 缓存过期刷新或通过带If-None-Match的条件请求获取新卡片。常见问题FAQQ1普通发布和 A2A 发布可以同时开启吗可以。发布时既保留默认开放的北向 RESTful API又勾选「发布为 A2A Agent」即可同时支持普通北向调用与 A2A 协议两种调用方式。Q2A2A 调用返回 401 错误确认请求头中包含有效的Authorization字段且access_key正确。注意access_key需在「个人信息 → 生成 API 密钥」中创建并复制且请求头格式必须为Authorization: Bearer {access_key}。Q3如何更新已发布的 A2A Agent重新发布 Agent 版本即可。新版本会通过刷新后的 Agent Card 暴露给调用方由于 Agent Card 存在约 1 小时缓存外部系统刷新后即可获取最新信息。深入阅读对接外部第三方 A2A AgentURL 发现 / Nacos 发现 / 协议与鉴权配置a2a-external.md北向发布整体说明agents-publish.mdAgent 配置与开发总览agent-development.md核心实现路由层 northbound_base_app.py、服务层 a2a_server_service.py、协议模型 a2a_models.py测试参考test_northbound_base_app.py、test_a2a_server_service_registration.py赞分享AI AgentAI 应用后端前端大模型RAG【免费下载链接】nexentNexent is a zero-code platform for auto-generating production-grade AI agents using Harness Engineering principles — unified tools, skills, memory, and orchestration with built-in constraints, feedback loops, and control planes.项目地址https://gitcode.com/gh_mirrors/ne/nexent点击查看免费下载相关推荐Nexent Agent 发布实战Northbound RESTful API 与 A2A 1.0 双通道对外集成指南Nexent Agent 发布实战Northbound RESTful API 与 A2A 1.0 双通道对外集成指南 Agent 开发完成之后如何让外部业AI AgentAI 应用后端前端大模型RAGNexent 外部 A2A Agent 接入实战从 Agent Card 发现到协作智能体调用Nexent 外部 A2A Agent 接入实战从 Agent Card 发现到协作智能体调用 A2AAgent to Agent是连接不同技术栈、不同平AI AgentAI 应用后端前端大模型RAGNexent Agent 智能体接入指南通过 A2A 协议发现与协作调用外部 AgentNexent Agent 智能体接入指南通过 A2A 协议发现与协作调用外部 Agent Nexent 通过 A2AAgent to Agent协议 支持AI AgentAI 应用后端前端大模型RAG上一篇Cloudflare Skills Turnstile Spin一键完成从验证码组件到服务端校验的反爬自动化全流程下一篇davinci-resolve-mcp源码结构导览Operation Envelope、执行追踪与内核架构设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Webpack4.x配置核心原理与工程化实践指南

Webpack4.x配置核心原理与工程化实践指南

1. 为什么“webpack4.x最新入门配置”至今仍有实操价值?很多人看到“webpack4.x”四个字,第一反应是:都2024年了,还在讲4.x?是不是过时了?我试过直接跳到webpack5甚至6的文档,结果在本地跑第一个…

2026/10/13 6:52:53 阅读更多 →
Python脚本封装成独立exe:PyInstaller 3.6实战与避坑指南

Python脚本封装成独立exe:PyInstaller 3.6实战与避坑指南

1. 从一个真实场景说起:为什么我要把Python脚本封装成独立程序手里攒了一堆Python小工具,自己用着挺顺手,可一旦要交给同事、客户或者非技术岗的朋友使用,问题就来了。对方电脑上没装Python,更别提pip install一堆依赖…

2026/10/13 6:52:53 阅读更多 →
边做饭边口述交付功能:AI编程下的开发与审查实战

边做饭边口述交付功能:AI编程下的开发与审查实战

某个工作日下午,我在厨房一边切土豆,一边对着电脑口述需求:“给订单模块加一个批量导出的按钮,支持按时间筛选,导出的CSV要加一列支付渠道。”几分钟后,汤锅里咕嘟咕嘟冒着泡,我放下锅铲&#x…

2026/10/13 6:51:53 阅读更多 →

最新新闻

游戏出海新路径:经销商合作计划如何破解本地支付与销售难题

游戏出海新路径:经销商合作计划如何破解本地支付与销售难题

1. 项目概述:游戏出海,为什么靠经销商打开本地市场反而更靠谱?做游戏出海的这两年,我越来越意识到一个容易被忽略的真相:渠道的本地化,往往比内容的本地化更难,也更重要。很多开发者以为把游戏文…

2026/10/13 8:17:34 阅读更多 →
长尾关键词挖掘与内容布局:网站SEO流量稳步提升的核心策略

长尾关键词挖掘与内容布局:网站SEO流量稳步提升的核心策略

做SEO时间长了,你对“词”的态度会慢慢变化。刚入行时总盯着行业大词,整天想的是哪天真把一个高搜索量词做到首页就好。后来做过几个不同行业的站点,反而越来越踏实地在做一件事:把长尾关键词的挖掘和内容布局当日常。真正让一个网…

2026/10/13 8:17:34 阅读更多 →
WebGL Fundamentals:二维图形缩放(2D Scale)实战详解

WebGL Fundamentals:二维图形缩放(2D Scale)实战详解

图形学 【免费下载链接】webgl-fundamentals WebGL lessons that start with the basics 项目地址: https://gitcode.com/gh_mirrors/we/webgl-fundamentals 点击查看 免费下载 本教程出自 webgl-fundamentals 开源仓库的 WebGL 基础系列(日语版见 webg…

2026/10/13 8:17:34 阅读更多 →
COMSOL多物理场耦合实现三维材料损伤模拟

COMSOL多物理场耦合实现三维材料损伤模拟

1. 项目背景与核心价值在工程仿真领域,材料损伤模拟一直是极具挑战性的课题。传统有限元软件往往只能实现简单的线性损伤模型,而COMSOL Multiphysics凭借其强大的多物理场耦合能力和用户自定义功能,为复杂损伤行为的精确模拟提供了可能。这个…

2026/10/13 8:17:34 阅读更多 →
城市通勤轮胎选择指南:性能平衡与安全考量

城市通勤轮胎选择指南:性能平衡与安全考量

1. 城市通勤轮胎选择的核心考量城市道路环境对轮胎的考验远比我们想象中复杂。柏油路面、水泥接缝、减速带、井盖、施工路段碎石......这些日常通勤中频繁遇到的路况,都在无声地考验着轮胎的性能边界。作为每天与地面直接接触的部件,轮胎的选择直接关系到…

2026/10/13 8:17:34 阅读更多 →
Schema标记实战:用结构化数据占据整个SERP

Schema标记实战:用结构化数据占据整个SERP

1. "占据整个SERP"到底是怎么回事:从一次搜索结果截图说起先别急着上代码,我们得先搞清楚一个问题:所谓"占据整个SERP",到底长什么样?去年我接手了一个垂直电商的小项目,卖的是某种小众…

2026/10/13 8:16:34 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →