发布说明

ANet 0.3.2

ANet 0.3.2 是补丁版本,不改变线路格式、身份格式和数据格式。它仅包含 anet 0.3.2;ANetCore v0.16.0、ANetHub 0.3.1 与 ANetLink v0.2.0 未变更。0.3.1 的节点与 0.3.2 的节点可协同工作,Hub 无需升级。

接入指南

  • 新增章节 接入 AI 工具,说明如何将 AI 工具接入 anet。其中包含 Claude Code、OpenAI Codex、Cursor、WorkBuddy、Hermes Agent 与 opencode 各一份指南,以及一份面向通过标准输入输出启动程序的其他模型上下文协议(MCP)客户端的指南。每份指南说明 anet agents wire 写入的文件、应执行的检查和已知限制,并将未实际运行的行为标注为未经测试。

  • 索引页给出支持矩阵。安装与教程页面、编程智能体页面、MCP 服务器页面以及仓库的 README 均链接到这些指南。

节点行为

  • anet agents wire workbuddy 与 anet agents unwire workbuddy 用于接入和断开 WorkBuddy。该命令将 anet 条目写入 ~/.workbuddy/mcp.json,保留文件中的其他服务器,先做备份,并拒绝处理不是纯 JSON 的文件。该工具同时纳入 --all 与安装器的 --agents 选项;~/.workbuddy 目录不存在时跳过。

  • Codex 主目录中存在 AGENTS.override.md 时,anet agents wire codex 输出提示,因为 Codex 会读取该文件而不是 AGENTS.md。该覆盖文件不会被修改。

  • anet agents wire hermes 在指引块中以前缀 mcp_anet_ 命名工具;使用 --a2a 时,输出使 a2a_call 在 Hermes Agent 中可见的命令。

  • anet doctor 对缺失 MCP 服务器的检查遵循 XDG_CONFIG_HOME,并识别 opencode 的 opencode.jsonc 文件。

  • 教程从 anet status --json 中提取标识符。

文档

  • 安装、命令行与常见问题页面列出 WorkBuddy,并说明不支持 Windows,WSL2 未经测试。

  • MCP 页面的超时表列出 Gemini CLI 与 Trae 的超时设置。

ANet 0.3.1

ANet 0.3.1 是补丁版本,不改变线路格式、身份格式和数据格式。它由 anet 0.3.1 与 ANetHub 0.3.1 组成;ANetCore v0.16.0 与 ANetLink v0.2.0 未变更。0.3.0 的节点可与 0.3.1 的 Hub 协同工作,反之亦然。

macOS 沙箱

  • macOS 上的 Seatbelt 沙箱已启用。在 0.3.0 中,其自检在 macOS 14 与 macOS 15 上中止:在该 profile 下启动的程序会读取根目录本身,而 profile 未允许这一次读取,动态加载器因此结束了进程。现在 profile 允许该读取,且仅限目录本身,不包括其下的目录树。profile 仍然默认拒绝,只开放最小限度的读、写和网络访问。

  • 不受信任对端的任务,以及 trusted 为 sandbox 时的所有任务,现在在 macOS 上于沙箱中运行。文件隔离、带密钥的出口端点以及对钥匙串的拒绝,已在持续集成中于 macOS 14 与 macOS 15 上验证,被跳过的测试视为失败。

  • claude Agent 将其临时文件保存在本次运行的临时目录中。

联邦与目录

  • 对不久前加入另一个 Hub 的接收方进行首次查找时,不再以 recipient_unknown 失败。Hub 缓存给出空答复后,随即进行一次绕过缓存的查询;不识别该请求头的 Hub 会忽略它。

  • 另一个 Hub 为其自身账本签发的支付回执,按该 Hub 的密钥历史验证。签发方未知或不匹配的回执将被拒绝。

节点行为

  • 加入 Hub 的两次尝试之间的等待时间最长增长到一分钟。节点等待准入期间,anet status 的 Hub 行会标明下一次尝试的时间。

  • anet status 不再将已停用的身份报告为已注册。

  • 当其记录的端口仅被某个出站连接占用时,本地 A2A 接口最多等待五分钟,随后在该端口上启动。

  • --max-auto-replies 与 --poll-interval 现以 cli_removed 及替代说明被拒绝,而不再提示 unknown flag。

  • anet agents wire 的帮助文本只列出该命令支持的工具。

  • 原因表中的语句改为以节点或 Hub 为主语,不再称呼读者。中文模块语句在拉丁文模块名与名词之间加入空格。

ANetHub

  • anet-hub admission 可在首次启动之前设置准入模式(--init)。

  • Hub 应用上文所述的跨 Hub 查找变更。

文档与验证

  • 升级指南说明 auto_reply.api_base 必须使用 https 或回环地址上的 http,并列出已移除的自动回复参数。

  • 场景、集群和联合 shell 测试按 0.3 流程运行,并作为持续集成的阻塞项。0.3.0 中暂缓的模块测试现默认运行。

ANet 0.3.0

ANet 0.3.0 变更了线路格式、身份格式和数据格式,由 ANetCore v0.16.0、anet 0.3.0、ANetHub 0.3.0 和 ANetLink 0.2.0 组成。Hub 线路版本 3 取代版本 2,密钥事件日志与封缄信封为新格式,0.2 的所有身份均由新身份取代。0.3 节点只能与 0.3 的 Hub 协同工作。升级方式为全新部署,详见 升级到 0.3。

概要

  • Hub 获知的信息更少。使用送达凭据的消息不携带发送方身份,目录查询不指明被查找的 Agent,账本和评价向运维者暴露的内容也更少。

  • 发送方获知的信息更多。消息由接收方节点确认,拒绝会在数秒内连同原因送达发送方。

  • 密钥按日更换。已处理的密文在一天之后通常无法再借助被盗磁盘的副本打开。

  • 身份可以恢复。密钥轮换需要恢复口令,被盗的密钥无法轮换或停用身份。

  • 本地执行相互隔离。应答不受信任对端任务的 Agent 在无网络访问的沙箱中运行。

  • 价格不公开。价格签名后置于扩展卡片中,交给调用方。

  • 所有面向用户的语句均来自同一张带原因码的表,命令行、MCP 和本地 A2A 接口对同一事件给出相同的语句。

兼容性

  • Hub 线路版本 3。0.2 守护进程与 0.3 Hub 之间,以及 0.3 守护进程与 0.2 Hub 之间,会分别以 wire_too_old 和 wire_too_new 相互拒绝。

  • 封缄信封版本 2,密钥事件日志 anet.kel/2,身份文件 anet.identity/2,直连帧 v: 3,anet 与 ANetLink 之间为 C1 版本 1。早期格式没有解码路径。

  • 数据目录不会被迁移。0.2 的数据目录以 identity_v02 拒绝,Hub 的 0.2 数据目录以 hub_identity_v02 拒绝,由更新版本写入的数据目录以 datadir_too_new 或 hub_data_too_new 拒绝。

  • config.json 中已移除的键会使守护进程停止(config_key_removed)。

  • 身份需重新创建。0.2 Hub 上的允许列表、评价和额度余额不会延续。

消息与隐私

送达凭据

首次联系在发送方于 Hub 开立的会话下进行。此后的消息在接收方签发并签名的能力凭据下发送,凭据不携带发送方身份。接收方可按凭据限制发送方,也可撤销凭据。参见 消息传递。

目录查询

目录按 AID 哈希的桶查询,桶最多 10 位。请求中携带 AID 的路由已被移除。

送达确认

接收方的节点确认每一项最终决定。Hub 将确认保留 7 天,发送方以匿名方式请求确认。消息显示为等待、重发,或以 delivery_unconfirmed 失败;拒绝连同原因和等待时间送达,任务在数秒内变为 rejected。针对尚未知晓的任务的取消请求以墓碑形式保留。

前向保密与保留期

加密密钥在一个 UTC 日内有效,提前 14 天发布,当日过后删除。交互密钥之下的第二层加密保护任务的消息。任务内容加密存储,其密钥在保留期后删除(默认 30 天,对公开能力的调用为 7 天,由 anet retention 设置)。节点能够检测其本地状态的回滚。

预览

提供方可每隔 5 至 10 秒发送其正在撰写的回复的快照(anet preview)。启用该扩展的流式客户端以及 anet task watch 会显示预览,MCP 不显示预览。

携带文件的能力调用

对公开能力的调用可以携带文件,能力声明其接受的文件数量、大小和类型。

身份

  • 密钥事件日志版本 2,包含事件 icp、rot 和 dip。每次轮换都承诺下一个密钥。Agent 所在的 Hub 是其见证,负责确认当前密钥,每次确认最长 6 小时。

  • 恢复口令保护恢复文件。轮换、紧急轮换、更换 Hub、在另一台机器上恢复以及停用,均为 anet identity 的命令,在终端上执行。

  • Agent 无需终端即可完成首次加入。此时状态会指出恢复口令尚未设置,直到运行 anet identity protect。

  • Hub 拥有身份,使用相同的命令(anet-hub identity),并可轮换自身的密钥。

Hub 与支付

  • 按 AID 准入。anet-hub admit <AID> 取代邀请密钥,注册窗口和额度赠送为可选项。公共 Hub 开放注册,设有三道关口:22 位的工作量证明、按地址段计的每日配额(IPv6 按 /32 计)以及 72 小时的试用期。新账号在注册时不获得额度,试用期结束后获得 20 额度,受每日预算限制。等待准入的加入操作在后台完成。

  • 账本显示 14 天的明细。发放链公布每个纪元的总量,每个账号都可以核查其余额已计入其中。守护进程每 6 小时检查一次。

  • 评价以化名对和计数的形式给出,日期不含具体时刻,/graph 中不再有边。

  • 跨 Hub 结算以经认证的签名转发。

  • 用于普通 HTTP x402 的 Hub 网关、凭证兑换和 publish_prices 已被移除。价格位于提供方签名的扩展卡片中,anet card <aid> 和 MCP 工具 get_agent_card 可显示价格。高于签名价格的报价不会被自动支付。

  • 支出可见。支付语句会说明报价、限额和结果。

本地执行

  • 不受信任对端的任务在无网络的沙箱中运行(Linux 使用 bubblewrap 和 seccomp)。唯一的通路是守护进程注入凭据的端点,该端点固定模型、限制输出令牌,并拒绝服务端工具、MCP 连接器和已存储的会话。沙箱中的 Agent 不会获得 API 密钥。在 macOS 上,Seatbelt 沙箱不属于 0.3.0:此类任务会以 sandbox_unavailable 拒绝,且绝不会在沙箱之外运行。

  • 可选的主机列表(sandbox.egress_allow)允许使用精确主机名的 CONNECT 连接。列出的每个主机都是一条出站通道。

  • 预算按日和按对端限制针对不受信任对端的运行次数。

  • 密钥、对话和票据不经命令行传递。对 Unix 套接字后端,会检查监听进程的用户。

模块

守护进程的可选部分是模块,各有独立的构建标签和设置。模块可以通过 config.json 中的 without 或 anet init --without 关闭。缺失或被关闭的模块以一句话按失败闭合。除控制台外,每个模块也可以在构建时从二进制中去掉。发布的构建是 default 与 shell。参见 模块。

命令行、MCP 与本地接口

  • 统一的输出约定:面向人的命令默认输出可读文本,并以 --json 输出 JSON;任务命令在标准输出输出 JSON,在标准错误输出可读行。退出状态 3 表示任务在等待调用方。

  • 新增命令:anet card、anet task list、anet task watch、anet identity ...、anet preview、anet retention。

  • 命令 find、delegate 和 message 与 MCP 及本地 A2A 接口使用相同的路径,并显示任务的同一投影。

  • 已移除的命令以 cli_removed 应答并给出替代命令。参见 命令行参考。

  • MCP 提供 14 个工具。这些工具不提供对身份、保留期、预览、Hub、收款方或自动应答的操作。

  • 状态:anet status 输出摘要,其中分别列出身份、Hub、送达、入站、沙箱、支付、隐私和预览各一行。

  • 原因码:一张包含中英文原因码与语句的表。参见 原因码。

已移除

  • Hub 网关 /x402/resource、凭证及凭证兑换。

  • 邀请密钥以及选项 --token 和 --token-file。

  • 公开价格、扩展 anet-pricing/v1 以及 profile set --pricing。

  • Hub 的共享任务板。

  • 按 AID 查找密钥、密钥历史和卡片的路由,以及对直连地址的查找。

  • 已移除的键 中列出的配置键。

文档

文档使用 Sphinx 构建,以英文和中文发布。命令行、原因码和线路表的参考部分由程序源码生成。

已知限制

Hub 可见的内容、前向保密的边界以及身份密钥未覆盖的情形,见 安全模型。以下几项计划在后续版本中提供,不属于 0.3.0:匿名首次联系令牌、经 Tor 或不经意 HTTP 发送、Hub 之间的直接投递,以及每个身份多个见证。