版本策略

本页说明 ANet 的版本号作出何种承诺、存在哪些兼容性面,以及变更如何到达用户。

组件与版本号

一个发布版本由四个组件构成,各有自己的版本号。

组件

0.3 版本

内容

ANetCore

v0.16.0

协议与密码学内核(Go 模块)。ANet 与 ANetHub 在各自的 go.mod 中要求相同的版本。

anet

0.3.2

节点程序:守护进程、命令行、MCP 服务器和本地接口。

ANetHub

0.3.1

Hub 与运维控制台。

ANetLink

0.2.0

通往本地设备和服务的桥接程序,使用 C1 接口版本 1。

anet version 输出版本、提交、构建时间以及编译进二进制文件的模块。anet-hub --version 输出发布版本、Hub 线路版本以及首个支持该线路版本的 anet 发布版本。

兼容性面

兼容性按面定义,每个面各有一个在运行时检查的版本。

面

0.3 中的版本

检查

Hub 线路

X-ANet-Wire: 3

随每个请求和响应发送。取值不同时以 wire_too_old(426)或 wire_too_new(400)拒绝。

封缄信封

v = 2

其他取值均被 Hub(bad_envelope)和接收方拒绝。

密钥事件日志

anet.kel/2

不带该标签的日志无法重放。

直连帧

v: 3

其他版本的帧不予投递。

C1(anet 与 ANetLink)

版本 1,路径 /v1

/v0 以 426 c1_version 应答。

数据目录

user_version = 3、enc_keys.cbor v = 2、anet.identity/2

较旧的数据目录以 identity_v02 拒绝,较新的以 datadir_too_new 拒绝。

配置

配置 中的配置键

已移除的键会使守护进程停止(config_key_removed)。

A2A

A2A 1.0

本地接口和卡片遵循 A2A 1.0。ANet 在命名空间 agentnetwork.org.cn 中添加扩展。

已被移除的密钥编号、标签、代码或路由,不会再用于其他含义。

发布系列

  • 破坏某个面(线路、身份、数据或配置)的变更,仅在提高次版本号的发布中进行,例如 0.3.0。同一系列的此类变更全部在其首个发布中完成。

  • 同一系列的补丁发布(0.3.x)不会破坏上表中的任何面。同一系列的节点与 Hub 在任意补丁版本组合下均可互操作,并可按任意顺序升级。补丁发布修复缺陷,并添加不改变任何面的功能,例如在首个发布之后补全的模块。

  • 对已移除命令和选项的提示在整个系列中保留。此后,已移除的命令按未知命令处理。

  • 每个发布的说明会列出对面的全部变更,升级到 0.3 则说明需要执行的操作。

发布与更新

发布版本由 release.json 描述,其中包含版本、提交、签名时间、有效期、每个归档和二进制文件的 SHA-256、各变体的模块集合,以及下一发布密钥的指纹。该文件以 SSH 签名格式,由项目发布密钥签名。install.sh 与 anet update 在安装之前验证签名、有效期,以及版本不低于已安装版本。下载归档所用的主机不被信任。密钥及其预先承诺的后继密钥公布于仓库的 SECURITY.md 中。

节点不支持 Hub 的某项功能,或 Hub 需要更新的 anet 时,会以一句话说明并给出应安装的发布版本(Hub 应答中的 required_anet)。

弃用

功能在提高次版本号的发布中移除。发布说明会列出该功能,移除后的调用以一句说明替代方式的语句应答,且替代方式在移除该功能的发布中已经存在。

文档版本

文档针对当前发布版本发布,描述该版本的行为。英文为源文本,中文为其译文。