发布说明
本页汇总 AISIX 网关、控制面、控制台和部署包中面向用户的变更,按版本从新到旧排列。
发布产物包括 docker.io/api7/aisix 网关镜像、docker.io/api7/aisix-cp-* 下的控制面镜像、aisix-cp Helm Chart 和离线安装包。
0.9.0
发布日期: 2026 年 8 月 13 日
这个版本让网关明显更快,也让 Agent 流量变得可观测。代理层改为按核独立的 worker 模型,吞吐大约翻倍、p99 延迟减半。缓存学会了匹配“意思相同”的请求,而不再只能匹配“写法相同”的请求。A2A 调用现在会记录它推进了哪个任务、消耗了多少;经过验证的 JWT 也可以代替调用方 API Key,由身份提供方的 claim 决定请求以哪个调用方的身份运行。
这个版本同时完成了 0.4.0 中宣布的 Admin API 弃用:网关自带的 Admin API 现在是只读的,资源改为声明式管理或通过 AISIX Cloud 管理。
行为变化
- 网关的 Admin API 不再写入资源。 Admin 监听端口保留全部读取能力——各类资源的列表与详情、模型状态、健康检查、OpenAPI 参考和 Playground——但
/admin/v1/<kind>上的POST、PUT、DELETE现在返回405并带Allow: GET,API Key 轮转路由的两种拼写都返回404。这完成了 0.4.0 中宣布的弃用。请改用资源文件管理资源(用aisix validate --resources <file>校验,用SIGHUP重载),或直接写入 etcd;连接 AISIX Cloud 的网关从不暴露该监听端口,不受影响。声明式轮转调用方 Key 的方式是:用同一个资源 id 写入新的key_hash,写入传播后旧密钥立即失效。发布的 Admin API 参考中已不再包含写操作。参见资源文件。 - 缓存条目默认按调用方 API Key 隔离。 缓存策略新增
scope字段,默认值为api_key,因此一个调用方的应答绝不会被回放给另一个调用方。依赖环境内跨 Key 共享的部署需要显式设置scope: env。无论选择哪种,缓存键的形状都会发生变化,升级后会出现一次性的全量未命中。参见缓存。 - 首 Token 时间改为在第一个流式帧处停表,不再区分帧的类型。 此前它会一直等到出现携带生成内容的帧,因此对于“先静默思考再作答”的模型,记录到的是思考结束的时刻——这个数值可能超过该请求自身上报的延迟,也无法与前置网关的口径直接比较。思考所花的时间仍可从上游延迟中看到。按旧口径校准过的监控面板和告警阈值需要重新调整。参见指标与日志。
- 调用方传入的 request id 现在会被网关采用。 网关默认接受
x-aisix-request-id:该值会原样回传、记入访问日志与用量事件,并转发给上游。id 必须是 1–256 个可见 ASCII 字符;不满足的一律忽略并由网关自行生成,因此格式错误的请求头绝不会导致请求失败。若还想遵循x-request-id约定,将其加入proxy.request_id.accept_headers;把该列表置空则恢复此前行为。由于该 id 现在由调用方控制,它既不唯一也不可信,因此不会被用作任何指标的标签。参见指标与日志。 - 某个模型类型运行时根本不读取的配置,现在会被拒绝,而不再是存下来却被忽略。 模型组上的
retries、auto_prompt_caching、cost,Ensemble 上的通用调用参数,以及语义路由上的auto_prompt_caching和cost,在写入时都会被拒绝并返回400。携带这类字段的资源文件将加载失败,并指出出问题的条目。已经存下这类字段的模型不受影响:网关会剥离该字段并按“部分兼容”上报,而不会让这个模型停止服务。反方向上,语义路由和 Embedding 模型现在接受timeout、stream_timeout和retries,此前这些是被拒绝的。 - 若干此前被静默接受的配置现在会被拒绝。 创建模型时携带属于其他类型的配置块、把通配符别名用作 Ensemble 成员或裁判模型、用作语义路由的目标或默认模型、用作缓存策略的作用目标,把被引用的模型改名为通配符,以及让缓存策略指向不存在的模型,现在都返回
400。这些操作此前都会被接受,然后被悄悄忽略。 - 经过通配符模型的流量按通配符自身的名字上报。 指标、限流计数桶和健康状态现在以配置中的通配 符条目为准,而不再以各调用方随手写下的别名为准,因此一个模型就是一个身份,不会因写法不同而分裂成多条序列。按调用方别名过滤的监控面板,会看到对应序列在这个版本处中断。
- 升级注意事项。 控制面把用量表的
request_id列从uuid加宽为text,以便保存调用方自己的 id。在大表上这会触发整表重写——大约每 1000 万行 6 分钟——重写期间控制面不对外服务。Helm Chart 的启动探针预算已相应放宽到 30 分钟;如果你使用自己维护的编排清单,请在升级前同步调大。
新功能
- 代理层改为按核独立的 worker 模型。 每个 worker 拥有各自的运行时、监听套接字和上游连接池,因此一个请求的接收、派发和应答都在同一个线程上完成,不再需要在线程之间来回移交两次。在 4 核上,吞吐随并发度提升 54%–88%,p99 延迟大约减半,每请求的系统调用次数从 11.9 降到 5.0。Linux 上默认开启。两个启动期生效的配置项:
proxy.thread_per_core和proxy.workers,后者默认取进程可用的并行度并会跟随 cgroup 的 CPU 限制。当每个 worker 分到的客户端连接不足约 4 条时,内核的连接分配会不均,此模式反而慢于共享运行时;这种低并发场景请设置proxy.thread_per_core: false。 - 语义缓存。 缓存策略现在可以按语义匹配:未命中精确匹配的请求会被向量化,并从余弦相似度达到设定阈值的最近条目中返回结果。只有纯文本请求会走这条路径——包含图片、音频或工具调用的请求一律走精确匹配。条目可以存放在各网关自身的内存中,也可以设置
backend: redis,借助 Redis 向量检索在多个副本间共享。共享方式要求 Redis 8 及以上版本或加载 search 模块;网关在启动时探测,若不具备该能力,则继续提供精确匹配并在日志中说明,而不会让流量失败。策略也可以在不删除的前提下整体清空。参见语义缓存。 - JWT Claim 映射。 新增的资源可以把经过验证的 OIDC claim 解析到一个已存在的调用方 API Key,从而无需为每个用户单独发放 Key,就能由身份提供方决定请求以哪个调用方的身份运行。规则按优先级顺序求值,第一条 claim 条件全部成立的规则选定目标 Key,随后请求完整继承该 Key 的模型与工具访问权限、限流和预算。条件支持对嵌套 claim 路径做精确字符串匹配和数组包含匹配。未命中任何规则的 Token 一律拒绝。用量事件会记录 subject、身份提供方和命中的映射——请注意 subject 属于最终用户标识,会随用量事件流向已配置的可观测性导出目标。参见 Claim 映射。
- A2A 调用现在具备协议级可观测性。 每次调用都会记录操作类型、任务 id、上下文 id 和最终任务状态,并对两套线上词汇做归一,避免同一个指标被拆成两份。流式调用还会额外记录首个事件的到达时间、事件数量,以及流结束时调用方是否仍在接收,因此中途挂断的调用不再被计为成功。由于该协议本身不携带 usage 字段,网关会依据流经的消息文本估算 Token 并标记为估算值;成本保持为零,因为 Agent 的计费方式不是网关能够知晓的。指标按 Agent 和操作类型切分。参见 Agent 网关。
- 模型服务提供方返回的响应 id 现在会被记录。 它会出现在访问日志中,也会出现在每次上游尝试各输出一条的专门日志行里——后者覆盖了单条访问日志在结构上无法覆盖的两种情况:流式响应,以及重试或故障转移产生的后续尝试。控制台的日志详情面板也会展示该 id,因此排查上游侧问题时无需再手工跨系统关联记录。
- 限流策略支持
day窗口,按 UTC 自然日计数。参见限流策略。 - 控制台的请求日志按网关面拆分。 LLM、MCP 和 A2A 流量各有独立的标签页,且每个标签页只提供真正能用于筛选它的过滤条件,而不再是一个混合列表配一组只对部分流量有效的过滤器。
- 控制台的下拉选择框支持搜索。 模型、模型服务提供方 Key、调用方 API Key 等可能变长的选择框,现在都可以边输入边筛选,不必在完整列表中滚动查找。
- 控制台会提示网关的配置兼容性。 当你保存的某个配置并非环境内所有网关都能理解时,控制台会在保存时和数据面视图中给出提示,指明具体字段和引入该字段的版本,而不是让这个配置在旧版本网关上静默失效。
改进
- 除按核 worker 模型之外,每请求路径还做了一系列优化:改用 jemalloc 内存分配器并启用链接期优化、为零配置部署跳过不需要的处理环节、为每个 worker 缓存指标句柄、对下行连接设置
TCP_NODELAY、缓存上游端点 URL,以及每个请求只加载一次配置快照。 - 限流条件中的模型维度,现在会同时匹配调用方寻址的条目和实际派发到的目标,因此以模型组为条件的策略能够覆盖所有寻址到该组的请求。此前只比较派发目标,这类条件永远不会命中。
- 语义路由在选路时会遵守成员自身的访问规则,遇到调用方无权使用的成员会转向其他目标,而不是直接派发过去。
- 按模型的限流现在适用于所有模型类型,控制台也在每种类型上提供限流表单。
- 缓存策略的作用目标会在创建时校验;被策略引用的模型改名后,引用会同步更新。
修复
- 已过期的邀请不再继续占用邮箱地址,同一个人可以被重新邀请。仍在有效期内的邀请依然会阻止重复邀请。
- 创建资源时把布尔字段显式设为
false,现在会真正存为false。此前数据库列默认值会替换掉零值,导致创建时设为禁用的 OIDC 身份提供方被存成启用,API 也随之回显为启用。 - Realtime 端点上认证通过之后发生的拒绝,现在会归属到已解析出的调用方,而不再是没有身份信息的记录。
- 已停止上报心跳的网关不再计入控制台的配置兼容性提示,避免一个已下线的实例让健康的集群看起来处于部分不兼容状态。
- 从源码构建且未注入版本号的网关会上报一个占位版本号;该占位值现在被视为“版本未知”,而不再被当作某个真实的旧版本,因此这类集群不会再对其实际可能支持的特性长期告警。
0.8.2
发布日期: 2026 年 8 月 11 日
这是一个面向 A2A 网关的维护版本。网关现在会向上游声明每台 Agent 所固定的协议版本,能找到发布在路径前缀下的 Agent Card,把 Card 上公布的每一个地址都指向自身,并把 message/stream 按事件到达的节奏实时中继,而不再缓冲整个响应体。此外,Agent 与 MCP 服务器的命名规则和凭据约束现在适用于所有配置路径,而不再只有网关自带的 Admin API。
行为变化
- 通过资源文件提供的 A2A Agent 与 MCP 服务器定义,现在会按 Admin API 相同的规则校验:名称格式、各
auth_type所需的凭据,以及基于 OpenAPI 的 MCP 服务器所需的字段。违反其中任何一条的文件不再加载,网关会指出是哪一条目缺少哪个属性,而不是带着一份无法工作的定义启动——名称中含/的 Agent 会把自己的/a2a/<name>路由劈成两段,auth_type: bearer却未设置secret则等于用空凭据向上游认证。通过控制面配置的部署不受影响,因为这些规则在创建资源时就已生效;由控制面托管的网关只会拒绝出问题的那一条,其余配置继续服务。发布前可用aisix validate --resources <file>先行检查。参见 Agent 网关。