Nacos 3.3.0 是 Nacos 3.x 系列的功能迭代正式版。该版本将协议中立的 Agent(智能体)管理与发现、共享 AI 资源检索以及统一的 MCP(Model Context Protocol,模型上下文协议)生命周期管理正式引入稳定版本。
本次发布重点聚焦于:
- 涵盖 Agent、AgentSpec、Skill、Prompt 和 MCP 资源的 AI 注册中心(AI Registry)能力。
- DNS 服务发现与分布式锁。
- 动态插件管理及默认开启客户端鉴权。
- Spring Boot 4 与 Jackson 3 兼容性适配,并提升客户端与服务端的运行可靠性。
主要功能更新包括:
- Agent 注册、版本管理、运行时端点、RAD 发现、传输协议协商,以及通过 Java SDK 与控制台工作流实现的 Watch/Push 机制。
- 共享 AI 资源检索,支持关键词与向量混合检索、工件(artifact)获取以及可选的相关性过滤。
- MCP 草稿、评审、发布、上线/ 下线及可见性管理,并支持历史资源平滑迁移。
- 可选的 DNS 服务发现,支持基于 UDP 和 TCP 的 A、AAAA 和 SRV 记录解析。
- 支持看门狗自动续期(watchdog renewal)与 Raft 强一致性的分布式可重入锁与非重入锁。
该稳定版本还提升了版本跨度下的 Skill 元数据一致性,扩展了可见性插件能力,并增强了配置中心 SDK 的易用性、控制台兼容性,以及在注册中心重连与集群重启后的故障自愈恢复能力。
本次发布的详细变更列表:
新特性(Feature)
- 新增可选的 DNS 服务发现支持(基于 UDP 和 TCP),提供 A、AAAA 和 SRV 记录解析、监控指标统计以及可配置的外部 DNS 转发功能。
- 新增中立的 JSON 适配器,支持 Jackson 2 与 Jackson 3 运行时环境。
- 新增协议中立的 Agent 生命周期管理、控制台工作流、RAD(资源/ 智能体发现)、运行时端点、传输协议协商、Watch/Push 机制以及 Java SDK。
- 新增分布式可重入锁与非重入锁,提供看门狗自动续期、FIFO 先进先出排队等待、gRPC 变更通知、Raft 强一致性保障及 Java Lock SDK。
- 支持将 SkillSpector 作为 AI 资产发布流水线。
- 新增统一的动态插件配置、生命周期管理、运行时热更新、确定性发现机制及控制台配置工作流。
- 为 Skill 和 AgentSpec 资源新增由插件托管的可见性授权(Grant)与撤销(Revoke)API 及控制台管理功能。
- 新增智能体资源发现(ARD,Agentic Resource Discovery),支持搜索、探索、工件获取、可见性过滤、持久化索引,以及关键词与向量的混合检索。
- 新增对 Linux RISC-V64 架构下 RocksDB JNI 加载与启动的兼容性支持。
- 新增共享 MCP 生命周期管理,支持草稿、评审、发布、上线/ 下线操作、可见性控制、Java SDK,以及在保留既有配置与命名服务运行数据的同时进行历史数据对齐。
功能优化与重构(Enhancement/Refactor)
- 将客户端强制依赖的 Prometheus Client 替换为可插拔的客户端指标 SPI,默认采用空实现(no-op)。
- 支持通过独立的客户端配置项自定义 gRPC 端口偏移量。
- 为配置中心 SDK 新增基于请求/ 结果对象(Request/Result)的调用方法、支持加密配置的 CAS 发布,以及复用本地缓存的条件查询机制。
- 打印客户端解析后的日志配置,并在订阅日志中补充打印命名空间 ID(Namespace ID)。
- 优化 Agent 控制台工作流,对外暴露 SDK 发现能力与 A2A 转换工具类,并对发现请求来源进行链路追踪。
- 默认停用部分已弃用的 Pipeline 和 MCP 导入 API,并提供全局临时兼容性开关。
- 降低旧版 MCP 缓存读取链路的锁竞争,提升索引一致性。
- 支持在 Console v3 控制台中注销持久化服务实例。
- 优化 Skill 上传预检逻辑、冲突处理机制及服务端 ZIP 包校验。
- 移除过时的配置迁移兼容代码,仅保留当前的标准配置存储模型。
- 在列表查询与元数据详情响应中返回缓存的 Skill 元数据前置块(Frontmatter)。
- 由服务端统一管理 AI 资源保留的
latest标签。 - 默认开启客户端 API 鉴权,并对开启鉴权后的标准集成场景进行自动化验证。
- 在保持既有兼容约定的前提下,清理已评审的未被使用的 Java 代码。
- 优化 Console UI Next(新版控制台)中的英文翻译文本。
- 在 Skill 上传权限不足的错误信息中明确提示当前所有者(Owner)。
- 为 Skill 批量上传候选集中的每个条目返回确定的单项处理结果。
- 将分布式嵌入式数据库查询结果严格限制在受支持的标量类型与已注册的行映射器(Row Mapper)范围内。
- 将可见性插件 SPI 与服务端运行时模块进行解耦。
- 使鉴权方法的解析逻辑与 Spring MVC 路由对齐,并扩充 Controller 层鉴权的回归测试覆盖面。
- 增加原生 JRaft gRPC 请求的服务端身份认证,并引入滚动升级下的平滑强制过渡机制。
- 优化配置详情页、编辑页和历史记录页布局,提供更大的内容展示区域并支持全屏阅读。
- 首次上传 Skill 版本时默认自动发布。
- 针对 MCP 工具导入引入由运维管理员控制的出网访问控制策略(Outbound Access Policies)。
- 为多 Spring AOT 上下文新增按需初始化支持,并完善 GraalVM 运行时元数据。
- 在文档与提示中明确说明:回滚首条新增的配置历史记录将直接删除该配置。
- 移除对旧版无标签 Raft 请求的解析逻辑,并在遇到格式错误的日志条目时抛出明确异常。
- 支持通过启动参数
configSnapshotEnabled禁用本地配置快照。 - 将 Copilot 流式响应重构为强类型的 AgentScope 事件,同时完全保持既有的 SSE 响应契约不变。
- 通过
Nacos-Request-Id将 Java SDK 的 HTTP 请求与服务端请求上下文进行全链路关联追踪。 - 新增可独立运行的并行搜索(Parallel Search)MCP 示例,涵盖服务注册、端点发现、网络搜索和页面抓取功能。
- 为 ARD 搜索新增可选的 Jev 相关性过滤,支持稳定的结果排序并具备降级回退至基础检索的能力。
- 为 Console UI Next 新增俄语本地化语言包及语言切换器。
- 允许可见性插件声明额外的 AI 资源作用域,并通过可选 SPI 扩展 Agent 校验逻辑,同时保持默认的 PUBLIC/PRIVATE 权限行为不变。
缺陷修复(BugFix)
- 支持将
healthCheckEnabled作为健康检查开关参数,同时兼容保留旧有的check别名。 - 从详情页返回配置列表或服务列表时,保持原有的筛选条件与分页状态不变。
- 避免在实例重启后误删仍然存在的实例元数据。
- 为配置落盘(dump)写锁获取增加重试机制,防止出现过期的 MD5 缓存数据。
- 修复建立 gRPC 客户端连接所需的 Native-Image 镜像元数据配置。
- 在索引回填过程中保障 AI 检索服务的高可用,支持返回局部检索结果。
- 确保 Agent SDK Watch 在遭遇瞬时网络抖动时连接不丢失,并通过统一的 Listener 链路投递初始状态与后续变更数据。
- 通过数据源方言 SPI 修复配置并发发布时的主键冲突处理逻辑,包含对 PostgreSQL
unique_violation异常的兼容处理。 - 修复集合包含空(null)元素拼接时末尾多出多余分隔符的问题。
- 防止因个别配置插件属性名称格式错误而导致整体有效插件配置被丢弃。
- 修复上传包含无效或不可用版本候选集的 Skill ZIP 包时引发的错误。
- 防止批量处理索引越界引发
IndexOutOfBoundsException。 - 修复空结果集以及总数恰好能被每页大小整除时的总页数计算逻辑。
- 防止
NamingUtils.getServiceName因服务名末尾包含分隔符而处理失败。 - 修正 Skill 上传 API 的
@Since版本注解说明。 - 防止服务发现连接清理流程阻塞等待无关的分布式锁 Raft 写操作。
- 修复单机版控制台鉴权插件初始化问题,并将调用方真实身份正确透传至下游服务端请求。
- 在列表、详情、版本查询、下载及客户端读取 API 中强制校验 Prompt 的可见性权限。
- 确保在持久化服务元数据加载完成后才启动健康检查。
- 修复 Windows 环境下 Skill Scanner 流水线报告中出现的中文乱码问题。
- 在 Console UI Next 中恢复对 MCP 工具高级模板的完整配置支持。
- 当显式传入无效的 Bearer Token 时直接拒绝访问,不再静默降级为匿名访问。
- 为 AI 资源生成确定性且 ASCII 安全的底层物理配置键(Config Keys)。
- 为新初始化的 MySQL 配置数据库表结构恢复大小写敏感校验规则(Case-Sensitive Collation)。
- 修复在统一插件发现完成之前恢复插件状态快照引发的服务启动失败问题。
- 修复在编辑与发布运行时模板时丢失 MCP 工具透传身份鉴权信息的问题。
- 修复存在显式授权资源时的可见性查询条件转换错误。
- 在自动生成版本号之前,优先尝试使用低优先级的显式 Skill 上传指定版本。
- 允许 AI 资源版本在评审完成或评审结果失效后重新提交。
- 修复配置落盘服务及客户端长连接中针对灰度配置缓存的空指针异常与跨线程内存可见性问题。
- 修复 API 鉴权元数据解析优先级、自定义资源解析器优先级、AgentSpec 鉴权失效以及 Prometheus 监控安全路径匹配错误。
- 将 AI 资源删除逻辑重构为先清理后删除模式,并在全量存储版本间支持重试。
- 确保 AI 资源的读取、更新和删除严格绑定到已持久化的存储提供者上。
- 修复单机控制台在配置克隆源权限校验器不可用时的启动异常。
- 在 MySQL 搜索与任务表中保留 AI 资源标识的大小写敏感性。
- 在编辑、展示及 OpenAPI 导入过程中,完整保留 MCP 工具允许为 null 的输出 Schema(nullable output schemas)。
- 修复登录接口响应信息差异,防止攻击者枚举探测用户名是否存在。
- 在 Jackson 3 环境下保留配置存储 ID 的字符串序列化格式,防止长整型数值精度丢失。
- 修复 Derby 数据库下查询下一条配置历史记录的 SQL 语法,并保持灰度版本过滤有效。
- 迁移旧版
skills.sh导入器状态键,避免覆盖标准官方配置。 - 在存储失败后清理已失效的 Skill 与 AgentSpec 草稿文件,同时保留重试所需的元数据。
- 为 Derby、Oracle 等受影响的数据库方言显式声明必需的 SQL
LIKE转义子句。 - 在主动健康检查中严格校验并拒绝不安全的实例地址、HTTP 请求目标、请求头及 MySQL 连接参数。
- 修复旧版 Controller 方法解析器对带编码上下文路径(Context Path)处理不一致的问题。
- 在带用户名过滤检索内置角色时,对所有
LIKE谓词中的特殊字符进行安全转义。 - 在集群节点间按 IP 查询配置监听器时,将命名空间参数完整向前透传。
- 对齐 Bootstrap 启动配置与发行版包中的默认配置项。
- 拦截并拒绝包含过多显式地址块的非法 IPv6 混合格式地址。
- 允许 Java 客户端在排除 Jackson 2 核心及数据绑定依赖后,完全在 Jackson 3 环境下运行(含鉴权链路)。
- 拦截不安全的 AgentSpec 和 Skill ZIP 包目录布局,并强制执行压缩条目数量与解压体积上限保护。
- 在执行配置写入、归档及本地规则存储操作前,校验并拒绝不安全的文件系统路径输入。
- 增加内置 Derby 数据库的连接超时时间,防止在低性能磁盘上出现启动初始化超时失败。
- 修复插件可用性 RPC 序列化错误,确保远程集群节点的插件状态被正确感知上报。
- 修正默认使用的 gRPC 协议协商器类型。
- 为新创建的 Agent 和 MCP 资源恢复默认的 PUBLIC(公开)可见性,并严格保持既有资源的可见性范围不变。
- 根据数据源方言自动匹配默认的 JDBC 驱动,并完善非 MySQL 数据库的配置示例说明。
- 在当前配置、历史记录及上一版本配置的详情中补充返回 Schema 元数据。
- 防止集群重启后过期的 Distro 快照覆盖客户端的重做(Redo)注册流程,避免服务实例发生丢失。
- 在旧版 Controller 方法缓存中,支持将 HEAD 请求通过对应的 GET 映射规则进行解析。
- 客户端关闭时注销服务器列表事件订阅,防止关闭回调访问已关闭的 ServerListProvider。
- 在 Console UI Next 中正确展示订阅者地址、客户端版本号及应用名称。
- 忽略来自过时网络连接的注册响应,确保在遭遇网络重连风暴后临时实例能被正确重新注册。
- 修复控制台独立部署时,调用仅校验身份接口返回偶发 HTTP 403 异常的问题。
- 通过对不受支持的 JavaScript 语法进行降级转译,修复 Console UI Next 在 Chromium 90 低版本内核下的页面加载失败问题。
- 防止未捕获的运行时异常导致服务注册 redo 任务被永久中断,保障网络抖动后服务注册与订阅恢复的可靠性。
- 正确解析 YAML 中 Skill 的多行描述文本,并防止生成多余伪造的前置块(Frontmatter)字段。
- 在读取版本和下载安装包时,保留 Skill 资源包中包含的空文件及纯空格文件。
- 确保在草稿编辑与生命周期流转期间 Skill 描述与当前展示版本保持一致,并在最后一个在线版本下线后仍能保留正确的描述信息。
- 在 Console UI Next 的配置创建与编辑页中保持“发布”和“取消”按钮常驻可见,并消除配置及历史详情页中多余的嵌套滚动条。
依赖升级(Dependencies)
- 将 Spring Boot 从 3.5.14 升级至 4.0.6。
- 将 SOFA JRaft 升级至 1.4.1,同时保留回调缓存机制与 JRaft 鉴权能力。
- 将 Maven Compiler Plugin 从 3.5.1 升级至 3.15.0,以支持 JDK 25 的编译构建。
- 升级经典控制台与 Next 控制台的第三方前端依赖,刷新打包静态资源,并将内置的 DOMPurify HTML 净化器升级至 3.4.17。
- 将 Log4j API 从 2.25.4 升级至 2.25.5。
- 将 gRPC 升级至 1.81.0,以修复安全漏洞 CVE-2026-33871。
- 将 Apache Derby 从 10.14.2.0 升级至 10.16.1.1,对齐拆分的构建构件,并保持 Java 17 作为运行基线。
- 将 Copilot 中的 AgentScope Java 依赖从 1.0.7 升级至 2.0.3。
破坏性变更须知(Breaking Change Notice)
Nacos 3.3.0 调整了鉴权的默认行为,禁用了部分已弃用的 API,并引入了若干数据迁移要求。在 BETA 或 RC 阶段已使用新版 Agent SDK 的应用,也需要注意适配已定稿的订阅接口契约。
受影响用户
- 依赖无凭证免密调用 Client API 的应用,或依赖已被弃用的 Pipeline 及 MCP 导入接口的应用。
- 包含旧版配置中心数据、历史 AI 存储物理键、无标签历史 Raft 日志,或需要进行 A2A/MCP 资源迁移的生产集群。
- 依赖客户端内置 Prometheus 监控指标导出,或依赖隐式 AI 资源可见性默认设置的应用。
- 在 BETA/RC 早期版本中使用了 RAD 智能体订阅接口,或需远程访问可选内置 DNS 服务的用户。
推荐升级方案
- 配置 Client API 鉴权凭证:配置项
nacos.core.auth.enabled在缺省未配置时的默认值变更为true(即默认开启鉴权)。若您之前显式配置了false,则依然保持关闭。如有必要,您可在升级部署期间先显式配置为false,待为所有客户端完成凭证分发并验证通过后,再在集群中统一切换为开启。管理员鉴权及控制台鉴权的默认策略保持不变。 - 迁移已弃用的 AI API 调用:部分旧版 Pipeline 及控制台 MCP 导入接口默认会返回 HTTP
410(错误码API_DEPRECATED)。请切换至标准的 Pipeline/list与/detail端点,以及统一的/v3/console/ai/import/validate和/execute端点。如需临时兼容过渡,可配置nacos.core.api.compatibility.enabled=true临时放行旧接口;配置项nacos.ai.resource.import.legacy-mcp-api-enabled已被彻底废弃,不再生效。 - 完成旧版配置中心数据迁移:低于 3.0 的集群请先通过较早的 Nacos 3.x 版本作为中介进行跨版本过渡升级。将默认命名空间的数据由原先的空租户迁移至
public,并将历史 beta/tag 标签数据迁移至config_info_gray灰度表。对于使用nacos_config作为 AI 存储提供者的部署,必须显式将包含非 ASCII 字符或超长坐标的历史配置迁移为确定性的 ASCII 安全映射格式。 - 检查持久化 Raft 日志:Nacos 3.3 不再回放无标签的历史日志条目(包括最初由 Nacos 2.0.x 写入并通过多轮中间升级留存至今的日志)。在升级前,必须先使用兼容版本对这些日志或快照完成数据恢复与迁移转换;单纯更换服务端运行版本不会自动转换已持久化的历史日志。
- 规划历史 A2A 与 MCP 数据迁移:系统默认参数
nacos.ai.a2a.compatibility.mode=CANONICAL不会自动扫描历史 A2A 数据。请参考官方发布的 A2A 升级运行手册,通过AUTO迁移模式进行 3.3 升级预检。在永久切换至标准(Canonical)模式后,仅支持旧协议的节点切勿重新加入集群。在单向生命周期切换过程中,请妥善保留 MCP 数据对齐状态及其既有的配置和服务发现运行数据。 - 保持集群内部节点身份配置一致:在集群所有成员节点均声明支持后,原生 JRaft 鉴权将被强制启用,且该强制状态在集群重启后持续保留。因此,向不支持 JRaft 凭证的旧版本节点进行滚动降级将无法保障集群可用性。
- 更新 BETA/RC 阶段的 Agent SDK 调用方式:RAD 提供的全新
subscribeAgent方法返回值现已调整为void。客户端需统一通过注册的 Listener 来接收初始状态及后续变更通知。请在调用订阅前准备好 Listener 状态,并对依赖该 SDK 的应用程序进行重新编译。既有的旧版 A2A 接口方法签名以及底层 HTTP/gRPC 网络传输契约保持不变。 - 显式配置客户端监控指标:
nacos-client不再默认内置强制性的 Prometheus Client 依赖。若业务系统需要采集客户端指标,请显式提供并安装NacosClientMetricsProvider的具体实现;若未引入实现,即使开启了enableClientMetrics,指标记录也将保持空操作(no-op)。 - 审查 MCP 导入与可见性配置:针对私有网段或本地回环地址的 MCP 导入目标,服务端需要显式配置白名单
nacos.console.ai.mcp.import.allowed-private-addresses,且系统默认不再自动跟随 HTTP 重定向。内置的可见性插件现已将新建的 Agent 和 MCP 资源默认范围设为PUBLIC;如有隔离需求,请在创建时显式选择私有范围(PRIVATE)。已存的历史资源范围以及 Prompt/Skill 的默认行为保持不变。 - 审查 DNS 监听地址配置:DNS 发现功能依然作为可选组件提供,默认保持关闭状态。开启后,
nacos.naming.dns.bind-address默认绑定为127.0.0.1;若需为远程客户端提供解析服务,请务必将其配置为实际对外监听的 IP 地址。如需外部递归转发,需要单独显式配置转发规则。 - 刷新受影响的 Skill 元数据:缺少前置块(Frontmatter)的历史 Skill 资源包将继续沿用其已保存的元数据,本版本不会自动解压历史文件包重新反填。建议更新内容或重新上传相关 Skill,以重新生成 Frontmatter 并纠正先前存储的多行描述格式。
- 做好生产备份与升级演练:在正式升级前,请务必完整备份数据库与服务端持久化运行目录,并在预发/ 测试环境中充分验证身份鉴权、数据迁移、服务发现及客户端调用行为。由于内置 Derby 数据库已升级至 10.16.1.1,升级验证中应覆盖持久化数据的读取、后续写入操作以及节点重启恢复流程。
对于不包含上述受影响历史数据的全新或精简部署环境,无需执行对应的历史数据迁移;但鉴权默认开启、相关 API 废弃以及 SDK 契约调整仍需重点关注并完成自查。
Java 运行环境版本要求
| 组件模块 | 最低 Java 版本要求 |
|---|---|
| Nacos-Server / Nacos-Console(服务端 / 控制台) | Java 17 |
| Nacos-Client(Java 客户端) | Java 8 |
| Nacos-Maintainer-Client(运维管理客户端) | Java 8 |