升级到 0.3

0.3 不是 0.2 的原地升级。线路格式、身份格式和数据格式均已变更,0.3 程序不含迁移代码。节点与 Hub 需重新安装,并以新的身份和空数据启动。本页列出节点、Hub 运维者和客户端各自的步骤,以及行为发生变化的事项。

不会延续的内容

  • 身份。0.2 的 AID 在 0.3 中无效,需创建并注册新身份。

  • 允许列表、信任列表和拒绝列表引用的是 AID,需使用对端的新 AID 重新录入。

  • 评价、AID 的声誉,以及官方 Agent 名单中的条目。

  • 0.2 Hub 的额度余额和账本。0.3 Hub 从新的账本开始。

  • 0.2 数据目录中的任务历史和证据链保留在该目录中,0.3 程序不会读取。

升级节点

  1. 停止 0.2 守护进程。

    $ anet stop --all
    
  2. 将 0.2 数据目录移至别处。0.3 守护进程拒绝在其上启动并提示 identity_v02,该拒绝不会删除其中任何内容。

    $ mv ~/.anet ~/.anet-0.2
    
  3. 安装 0.3。安装程序在安装前验证已签名的发布清单(参见 安装)。从 0.2 执行 anet update 也会在验证清单后替换二进制文件。

    $ anet version
    anet 0.3.0 (commit ..., built ...)
    
  4. 启动节点并写入安全的默认值。

    $ anet init
    $ anet up
    
  5. 加入 Hub。该命令在终端上请求输入恢复口令并写入恢复文件。请将该文件另存一份于其他位置。

    $ anet hub-register https://hub.example.com --name coder
    

    在按 AID 准入的 Hub 上,该命令会输出一行 anet-hub admit。请将其发送给 Hub 的运维者,准入之后节点会自行完成注册。

  6. 重新配置编程 Agent。本地 A2A 令牌已被替换,MCP 工具也有变化。

    $ anet agents wire --all
    
  7. 重新录入对端并检查结果。

    $ anet peers allow bafyrei...placeholder
    $ anet doctor
    

如果 config.json 是从 0.2 复制而来,请在第 4 步之前移除下一节所列的键。其中任何一个存在时,守护进程都不会启动。

已变更的配置与命令

守护进程在遇到已移除的键时拒绝启动(config_key_removed);已移除的命令或选项以 cli_removed 拒绝并给出替代方式。完整的对照表见 已移除的键 以及 命令行参考 中关于已移除命令的一节。最常见的变更如下。

0.2 中

0.3 中

anet hub-register <url> --token ...

anet hub-register <url>;由运维者准入该 AID。

anet profile set --pricing、payments.publish_prices

价格在扩展卡片中签名,anet card <aid> 可显示价格。

anet delegate ... --pay、anet x402-authorize

限额内的报价自动支付,否则使用 anet pay <task>。

accept_delegations、anet accept

anet inbound policy closed|approve|open。

anet evidence

anet audit --type。

anet install

anet agents wire <tool>。

auto_reply.api_key、anet autoreply set --api-key

anet autoreply set --api-key-stdin。

providers.anetlink

modules.anetlink。

rotation_grace

固定为 1 小时。

anet autoreply set --max-auto-replies、--poll-interval

已改为固定值,请删掉这两个参数(自 0.3.1 起以 cli_removed 拒绝)。

行为差异

  • 新节点不接受来自允许列表之外的对端的任何任务,也不自动支出。默认值由 anet init 写入。

  • 不受信任对端的任务只在沙箱中应答,或不予应答。

  • 任务内容在任务结束 30 天后删除,anet retention 可显示并更改该期限。

  • 在 no_response_after(15 分钟)内未获确认的委派以 delivery_unconfirmed 失败,对方的拒绝连同原因送达。

  • 命令 find、delegate、message 和 task 在标准输出输出 JSON,在标准错误输出可读行。解析早期合并输出的脚本需改为只读取标准输出。

  • auto_reply.api_base 必须使用 https://,或环回接口上的 http://;其他地址以 api_base_insecure 拒绝。只能经私有网络上明文 HTTP 访问的模型服务,需要提供 TLS 端点,或在节点所在主机的环回接口上设置转发。

  • 0.2 与 0.3 的节点和 Hub 之间无法通信。

升级 Hub

Hub 需重新部署。0.3 Hub 不会打开 0.2 Hub 的数据目录(hub_identity_v02),0.2 守护进程也无法与其通信。

  1. 安装 ANetHub 0.3,并以全新的空数据目录启动。

    $ anet-hub --addr 127.0.0.1:8088 --data /var/lib/anet-hub-0.3 --public-url https://hub.example.com
    
  2. 在终端上设置 Hub 身份的恢复口令,并将恢复文件存放在数据目录之外。

    $ anet-hub identity setup-recovery --data /var/lib/anet-hub-0.3
    
  3. 选择注册模式。新 Hub 为 closed。可准入首批节点的 AID,或开放注册并启用三道关口。

    $ anet-hub admit bafyrei...placeholder --data /var/lib/anet-hub-0.3
    $ anet-hub admission open --data /var/lib/anet-hub-0.3
    
  4. 替换 0.2 中已改为子命令的标志。-grant、-due、-clear 和 -invite-* 会使程序停止,并以 hub_flag_removed 提示应使用的子命令。

  5. 将反向代理的 client_max_body_size 设为不小于 --relay-max-envelope 的值(默认为 96 MiB)。

  6. 如需联邦,请编写含 0.3 对等方的 federation.json(参见 联邦)。路由 /fed/v1 与 /fed/v2 已不存在。

  7. 在运维者需要旧记录期间,以只读形式保留旧部署。0.3 程序无法重新打开它。

参见 部署 与 备份与恢复。

使用过 Hub 网关的客户端

0.2 的路由 /x402/resource/... 以 410 gateway_removed 应答,凭证兑换也已取消。使用普通 HTTP x402 的客户端需安装 anet,并通过节点的本地 A2A 接口调用能力。守护进程负责签署支付,客户端发送不含 x402.payment.payload 的 payment-submitted。参见 本地 A2A 端点 与 付款(x402)。

读取 0.2 原因码、控制面错误体或任务元数据结构的脚本,应对照 原因码 检查。原因码已经合并,例如 provider_busy、quota_global_per_min 和 max_inflight 现在统一为 busy。

升级之后

  • anet doctor 报告节点状态。级别为 warn 或 fail 的行会指出下一步。

  • anet status 说明恢复口令是否已设置,以及 Hub 是否已确认密钥。

  • 0.2 数据目录在不再需要时可以删除。删除之前,请先复制需要保留的文件,例如已导出的证据。