AMR 生产发布影响报告

生成时间:2026-09-30(UTC);发布前复核:2026-09-30T02:25Z(六个维度发布点与生成时完全一致);分析对象:从 origin/main(HEAD 392374aba)发布 Web、API、Link、Admin、DB migration 与 Model Routing Catalog 的影响分析。 注意:四个服务以 EKS Pod 实际运行镜像为生产发布点,DB migration 与 Catalog 以对应 Forgejo workflow 最近成功运行的 commit_sha 为生产发布点;六个维度分别计算变更范围。

结论概述:Web / API / Link Pod 已经运行在 d8907669(09-29 12:46–13:08 UTC 发布),Admin Pod 停留在 4d9eee27(09-24), DB migration 发布点 a7aa125f(09-28),Catalog 发布点 9cb11dff(09-29 14:21 UTC)。 因此本次从 main 发布的净新增只有 2 个 feature:GPT-6.1 Sol 模型接入(Catalog + Link)与 Admin 公开模型状态 API(Admin);Web 与 API 无代码净新增,DB 无新增 migration。

当前生产发布点(EKS 实态 + workflow 记录)

Web、API、Link、Admin 的发布点来自 Grafana / Prometheus 观察到的 Ready EKS Pod 镜像(kube_pod_container_info × kube_pod_status_ready,namespace nexu); DB migration 与 Catalog 的发布点来自对应 Forgejo workflow 最近一次成功运行。越新的发布点意味着该维度已上线越多内容,feature 表里只允许列出发布点之后的变更; 发布点之前的 commit 属于已生效,归入「已在生产生效」一节,不得重复出现在 feature 表。目标 commit 均为 392374aba (feat(catalog): onboard GPT-6.1 Sol (#158),2026-09-29T19:04:55Z)。

Web · EKS Pod 实态
Workload:nexu/amr-web · container web
观察时间:2026-09-30T02:24:42Z(样本年龄 ≤ 2s)
Ready Pods:2 / 2(spec 2,updated 2,available 2)
实际 commit:d8907669
镜像 digest:sha256:04ab55d3297aab6c250e7979e4d41f7b8a92cc8c564e9f4ac918f718fef2af37
Workflow 审计:deploy-web-eks-prod.yml 最近成功 run #3273(d8907669,09-29 13:08 UTC);与 Pod:一致
本次新增(d8907669...392374aba):2 commits,其中 0 个触及 apps/web
(发布点之前已上线:Design Plan 用量/权益同步、隐藏额度金额、team-dashboard 等,见「已在生产生效」)
API · EKS Pod 实态
Workload:nexu/amr-api · container api
观察时间:2026-09-30T02:24:47Z(样本年龄 ≤ 8s)
Ready Pods:2 / 2(spec 2,updated 2,available 2)
实际 commit:d8907669
镜像 digest:sha256:71213c014867f6f707c1fe95cbabea47b9f6c2f6a5008c53791f341497155e9f
Workflow 审计:deploy-api-eks-prod.yml 最近成功 run #3272(d8907669,09-29 12:47 UTC);与 Pod:一致
本次新增(d8907669...392374aba):2 commits,其中 0 个触及 services/api
(发布点之前已上线:billing 数据库负载收敛、HTTP 指标路由归类、Go intro 重发等,见「已在生产生效」)
Link · EKS Pod 实态
Workload:nexu/amr-link · container link
观察时间:2026-09-30T02:24:53Z(样本年龄 ≤ 14s)
Ready Pods:2 / 2(spec 2,updated 2,available 2)
实际 commit:d8907669
镜像 digest:sha256:717b3c542c51a14ffc0106407202e01d88068f44dffc5f8df6676e57ffb2d89e
Workflow 审计:deploy-link-eks-prod.yml 最近成功 run #3271(d8907669,09-29 12:46 UTC);与 Pod:一致
本次新增(d8907669...392374aba):2 commits,其中 1 个触及 services/link(392374aba)
(发布点之前已上线:BytePlus 兼容层统一、stream_options / reasoning summary 剥离等,见「已在生产生效」)
Admin · EKS Pod 实态
Workload:nexu/amr-admin · container admin
观察时间:2026-09-30T02:25:00Z(样本年龄 ≤ 20s)
Ready Pods:2 / 2(spec 2,updated 2,available 2)
实际 commit:4d9eee27
镜像 digest:sha256:dc8f4af23e8f449a8b71b69a20e9ac67e9ad7bf03abbc456ba578c01dc8b5fd9
Workflow 审计:deploy-admin-eks-prod.yml 最近成功 run #2873(4d9eee27,09-24 10:53 UTC);与 Pod:一致
本次新增(4d9eee27...392374aba):20 commits,其中 1 个触及 apps/admin(0dc3fc2fb,#127)
(发布点之前已上线:GO 额度遵循 Admin 会员权益配置,见「已在生产生效」)
DB migration · workflow 记录
最近成功:run #3104(2026-09-28T11:54:22Z → 11:57:48Z,success)
发布点 commit:a7aa125f
本次新增(a7aa125f...392374aba):11 commits,其中 0 个触及 db/migrations 或 db/schema
(发布点之前已上线:20260928085420_account_user_id_index.sql 并发建索引,见「已在生产生效」)
Model Routing Catalog · workflow 记录
最近成功:run #3294(2026-09-29T14:21:38Z → 14:25:20Z,success)
发布点 commit:9cb11dff
本次新增(9cb11dff...392374aba):1 commit,其中 1 个涉及 data/json 与 db/seeds(392374aba)
(发布点之前已上线:BytePlus / DeepSeek / Aiping 路由权重调整、Claude Sonnet 5.5,见「已在生产生效」)

辅助观察(非六维):官网公开定价的发布点是 0ab43a985( deploy-public-pricing-prod.yml run #2813,2026-09-24T09:03:06Z),落后于 main,未包含 #146(Claude Sonnet 5.5)与 #158(GPT-6.1 Sol)的 public_pricing.json 条目。

此次发布真正新增的 feature 和影响面

feature 表只包含「各维度生产发布点之后」的变更:四个服务以 EKS Pod 实态为基线,DB migration 与 Catalog 以 Forgejo workflow 记录为基线。发布点之前已生效的内容见 「已在生产生效」 一节,不要重复列入。

Feature 聚合规则:以业务行为、用户路径、数据契约和部署依赖为准;不得机械按 PR、分支、作者或目录划分。PR、commit 和 path 仅作为可点击的追溯证据。

Feature / Author / Commits Web API Link Admin DB schema / migration DB catalog(seed)
LGPT-6.1 Sol 模型接入(OpenAI 首发 + OpenRouter 备份,含 reasoning.effort 兼容补丁)

新增长文本模型 gpt-6.1-sol:context 1,050,000 / 预算 304,000,原生 reasoning_effort=medium(并支持 xhigh / max),capability advanced; 路由为 provider_openai(priority 10,upstream_request_kind=responses)首发、provider_openrouter(priority 20 → openai/gpt-6.1-sol)备份,计价 $2/$10(>272K input 长上下文 $4/$15)。 同时修复 Link 的 Bifrost OpenAI adapter:Chat Completions→Responses 转换必须保留 reasoning.effort,否则新模型请求会丢掉 effort 参数。 生产仍 fail-closed:baseline seed 中该模型的 release phase 是 pre_release,Catalog apply 后模型不会对外可用,需要运维在 Admin 显式改成 released。

Author:Liu Yi(nettee)

无(apps/web 无变更;模型/定价数据不在 Web 代码内)。 无(services/api 无变更;模型能力由 DB catalog 数据 + Link 提供,无需 API 发版)。 services/link/third_party/bifrost-core/providers/openai/utils.go:把 gpt-6.1-sol 纳入 OpenAI reasoning 模型判定(effort 保留、xhigh / max 支持),随带 chat_test.go、responses_test.go、internal/bifrostengine/engine_retry_e2e_test.go 回归测试。风险点:补丁文档记录了修复前的回归——未登记该能力时转换会清空 reasoning.effort(上游 payload 为空);因此若先放开 release phase 而未发布本次 Link 版本,gpt-6.1-sol 的请求会丢失 effort 参数。 无(本次 Admin 代码变更只有 #127;release phase 切换由 Admin 运行时操作,不在本次部署内容内)。 无(db/migrations、db/schema 无新增文件)。 catalog 数据:data/json/models.json(新增 public model)、data/json/provider_routes.json、data/json/route_policies.json、 data/json/provider_pricing/provider_openai.json、data/json/provider_pricing/provider_openrouter.json、data/json/public_pricing.json、 data/json/openrouter_metadata.json、data/json/model_routing_catalog_release_gates.json、db/seeds/seed-model-routing-catalog.sql (+2 backend model、+1 public model、+2 route、+1 release gate 行,均为 pre_release);生成脚本 data/scripts/build_model_json.py 同步。
MAdmin 公开模型状态 API(无会话可读)+ 发布相位变更幂等化

Admin 新增匿名只读接口 GET /api/public/v1/models,供脚本在无 Admin 会话的情况下读取模型目录状态:精确匹配过滤 name / status / visibility / releasePhase, 未知/空/重复/非法过滤返回 400;响应带稳定 schemaVersion,含 status、visibility、releasePhase、可用 route 数、派生 routing/public 可见性与 blockers、deployedAt 与 releasedAt, 且不暴露 provider 配置、凭据、价格、backend 名与 route id,响应头为 Cache-Control: private, no-store。 同一次改动修正发布相位变更时钟语义:相位未变化时不再刷新 updated_at、不再写审计事件,使 releasedAt 等于最后一次真实进入 released 的时间。

Author:Liu Yi(nettee)

无。 无(接口挂在 Admin 服务,不走 API 服务)。 无。 apps/admin/app/api/public/v1/models/route.ts(新增匿名 GET 路由)、apps/admin/lib/server/public-model-status.ts(过滤/投影/可用 route 与 blocker 计算)、 apps/admin/lib/server/admin/core.ts、apps/admin/lib/server/admin/models.ts(发布相位变更幂等化);测试 test/public-model-status.test.ts、test/admin-console.test.ts,文档 apps/admin/README.md。 影响面:Admin 对外多了一个无鉴权读端点(部署在网络内部,不新增浏览器 CORS),以及运营侧 release phase 操作的行为变化(releasedAt 语义更严格)。 无。 无 catalog 变更。
S非 runtime:CI workflow 兼容性、代码质量工具链、文档校准

非 runtime 变更,不进入任何服务维度列。其中 8a48165f6 移除 Forgejo 不支持的 workflow permissions 键,改动覆盖全部 .forgejo/workflows/* (含 deploy-db-migrations-prod.yml 与 deploy-model-routing-catalog-prod.yml)。由于 workflow 文件在 dispatch 时从 main 读取,本次发布立即使用新版本; 37639613f(代码质量工具 Erosion/Verbosity 分项目报告)与 8b22b0b11(文档与代码对齐)不参与镜像构建与部署。

Author:mrcfps(#140)、Liu Yi(nettee,#129 / #130)

  • 8a48165f6 fix(ci): 移除 Forgejo 不支持的 workflow permissions(PR #140)
  • 37639613f feat(tools): 新增 Erosion / Verbosity 分项目分析与独立报告(PR #129)
  • 8b22b0b11 docs: reconcile documentation with code evolution(PR #130)
无 runtime 变更。 无 runtime 变更。 无 runtime 变更。 无 runtime 变更。 不影响 migration 内容;仅影响 workflow 定义本身(production dispatch 走新版本,已在本报告发布点之后先行生效)。 不影响 seed 内容。

已在生产生效(发布点之前,本次不重复发布)

以下 feature / commit 均在对应生产发布点之前,已在生产运行。四个服务以 EKS Pod 实态为基线,DB migration 与 Catalog 以 Forgejo workflow 记录为基线。若从 main 重新发布,只分析各自基线之后的净新增;基线之前的内容不得出现在 feature 表中。

发布建议

  1. Migration 判断:BASE_DB(a7aa125f)之后 db/migrations 与 db/schema 无任何新增或修改文件,因此不需要跑 deploy-db-migrations-prod.yml;如需 drift 校验,可只跑该 workflow 的 precheck(不 apply)。
  2. 服务发布顺序(各维度净新增不同,按依赖与风险排列):
    1. Link(d8907669...392374aba,1 个 link commit):先让 gpt-6.1-sol 的 reasoning effort 透传就位。
    2. Catalog(9cb11dff...392374aba,1 个 commit):apply 后模型进入 catalog,但 release phase 仍为 pre_release,不对外。
    3. Admin(4d9eee27...392374aba,仅 0dc3fc2fb 生效):上线公开模型状态 API 与 release phase 操作语义。
    4. Web / API:本次无代码净新增(2 commits 均未触及 apps/web 与 services/api),可按需对齐到 392374aba,不构成必须步骤。
    5. 可选:如需官网定价与 gpt-6.1-sol / Claude Sonnet 5.5 同步,单独 dispatch deploy-public-pricing-prod.yml。
    放开 gpt-6.1-sol 对外可用(把 release phase 改成 released)建议放在 Link 与 Catalog 都发布完成之后,避免 effort 参数丢失导致上游报错。
  3. 数据 seed / catalog 判断:catalog 变更由 deploy-model-routing-catalog-prod.yml 的 apply 步骤覆盖,该步骤只应用 baseline db/seeds/seed-model-routing-catalog.sql(不会应用 test activation overlay,因此不设置任何 released)。precheck 的 plan 摘要预期为:+1 public model(gpt-6.1-sol)、+2 backend model(openai / openrouter)、+2 route(priority 10 / 20)、+1 release gate 行(pre_release)。data/json/public_pricing.json 不由该 workflow 发布,需 deploy-public-pricing-prod.yml。
  4. 发布后观测:
    • Link:针对 gpt-6.1-sol 的 Chat Completions→Responses 请求是否携带 reasoning.effort(关注上游 400 / 空 payload 与 provider 转换错误日志);Link 5xx / 延迟与 BytePlus、OpenAI 路由权重是否按 priority 生效。
    • Catalog:apply plan 摘要与实际写入行数一致;link.public_model_release_gates 中 public_model_gpt_6_1_sol 仍为 pre_release;两条 route(priority 10 / 20)为 active。
    • Admin:无 Cookie 请求 GET /api/public/v1/models?name=gpt-6.1-sol 返回 200 且 Cache-Control: private, no-store;非法 releasePhase 返回 400;POST 返回 405;/api/admin/models/tables 无会话仍为 401;提交未变化的 release phase 时 updated_at 与审计事件不增长。
    • EKS:4 个 Deployment 的 spec / updated / available 副本数一致且 Pod 镜像 digest 与本次构建一致;Prometheus 样本新鲜度 < 5 分钟。

备注:本报告所有 workflow、commit、PR 与 compare range 均使用 Forgejo(code.powerformer.net/core/amr)链接;workflow 链接指向可触发页面,run 链接指向 index_in_repo 运行号。四个服务的 compare range 基于 EKS Pod 观察到的 BASE(Web / API / Link d8907669,Admin 4d9eee27),DB migration 与 Catalog 的 compare range 基于各自 workflow 的 BASE(a7aa125f / 9cb11dff),未统一使用最旧基线,也未用 workflow SHA 替代 Pod 实态。