AMR 生产发布影响报告

生成时间:2026-09-29 02:06 UTC(北京 10:06); 分析对象:从 origin/main(HEAD 2134cdb88,feat(catalog): onboard Claude Sonnet 5.5 (#146),2026-09-28 20:05,Liu Yi)发布 Web、API、Link、Admin、DB migration 与 Model Routing Catalog 的影响分析。
生产发布点口径:Web / API / Link / Admin 四个服务以 EKS Ready Pod 实际运行镜像 tag 中的 commit 为发布点(Prometheus kube_pod_container_info + kube_pod_status_ready,namespace nexu); DB migration 与 Model Routing Catalog 以 对应 Forgejo workflow 最近一次成功运行的 commit_sha 为发布点。六个维度分别计算变更范围,不使用统一的旧基线。

本次核对结论

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

越新的发布点意味着该维度已上线越多内容;下表与 feature 表里只列出发布点之后的变更,发布点之前的 commit 归入 「已在生产生效」。

Web · EKS Pod 实态
Workload:nexu/amr-web · container web
观察时间:2026-09-29T02:13:28Z
Ready Pods:2 / 2(updated 2,available 2)· 最大样本年龄 1.9s
实际 commit:4d9eee278
镜像 digest:sha256:f182b80920802b11c1c18433ae66ee048642b9d9b14b25bbd075698e8134b422
Workflow 审计:deploy-web-eks-prod.yml 最近成功 4d9eee278;与 Pod:一致
本次新增(4d9eee278...2134cdb88):13 commits,其中触及 apps/web:0 个
API · EKS Pod 实态
Workload:nexu/amr-api · container api
观察时间:2026-09-29T02:13:28Z
Ready Pods:2 / 2(updated 2,available 2)· 最大样本年龄 8.5s
实际 commit:e43cbd2b6
镜像 digest:sha256:52147a9b188396d4d258ebd0d4da13bd89cf267f01295178b249c77f16de9a2f
Workflow 审计:deploy-api-eks-prod.yml 最近成功 e43cbd2b6;与 Pod:一致
本次新增(e43cbd2b6...2134cdb88):8 commits,其中触及 services/api:1 个
Link · EKS Pod 实态
Workload:nexu/amr-link · container link
观察时间:2026-09-29T02:13:28Z
Ready Pods:2 / 2(updated 2,available 2)· 最大样本年龄 14.4s
实际 commit:26370c56e
镜像 digest:sha256:5f429440e73080dc99c0cb3b068134e4042a6940c889ae83be124bef01be515d
Workflow 审计:deploy-link-eks-prod.yml 最近成功 26370c56e;与 Pod:一致
本次新增(26370c56e...2134cdb88):5 commits,其中触及 services/link:1 个
Admin · EKS Pod 实态
Workload:nexu/amr-admin · container admin
观察时间:2026-09-29T02:13:28Z
Ready Pods:2 / 2(updated 2,available 2)· 最大样本年龄 19.5s
实际 commit:4d9eee278
镜像 digest:sha256:dc8f4af23e8f449a8b71b69a20e9ac67e9ad7bf03abbc456ba578c01dc8b5fd9
Workflow 审计:deploy-admin-eks-prod.yml 最近成功 4d9eee278;与 Pod:一致
本次新增(4d9eee278...2134cdb88):13 commits,其中触及 apps/admin:1 个
DB migration · workflow 记录
最近成功:run #3104
发布点 commit:a7aa125f3(fix(auth): index account user lookups concurrently #137)
本次新增(a7aa125f3...2134cdb88):4 commits,其中触及 db/migrations/ + db/schema/:0 个
结论:无新增 migration,无需跑 deploy-db-migrations-prod.yml
Model Routing Catalog · workflow 记录
最近成功:run #3147
发布点 commit:06cf3e250(fix(catalog): 回退路由权重并临时禁用 BytePlus 文本路由 #141)
本次新增(06cf3e250...2134cdb88):2 commits,其中触及 data/json/ + db/seeds/:1 个
结论:1 个 catalog 变更待发布(Claude Sonnet 5.5)
公开定价发布(辅助,非六维)
最近成功:run #2813
发布点 commit:0ab43a985
该 workflow 负责把 data/json/public_pricing.json 投影为官网公开定价版本。
当前版本不含 claude-sonnet-5.5;若要让公开定价页同步,需单独 dispatch。

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

feature 表只包含「各维度生产发布点之后」的变更:四个服务以 EKS Pod 实态为基线,DB migration 与 Catalog 以 workflow 记录为基线。发布点之前已生效的内容见 「已在生产生效」,不重复列入。 Feature 聚合规则:以业务行为、用户路径、数据契约和部署依赖为准;PR、commit、path 仅作为可追溯证据。

Feature / Author / Commits Web API Link Admin DB schema / migration DB catalog(seed)
LCatalog 上线 Claude Sonnet 5.5(双 provider 路由)

是什么:Model Routing Catalog 新增公开模型 claude-sonnet-5.5(Anthropic Claude Sonnet 5.5)。 面向所有可调用该模型名的终端用户 / API 客户。catalog 记录为:llm、active、public、 context_limit=1,000,000、context_budget=232,000、native reasoning_effort=medium、 capability=advanced / cost=high。

路由与定价:两条 active / chat_completions 路由 —— Bedrock global.anthropic.claude-sonnet-5-5(priority 8,优先)与 OpenRouter anthropic/claude-sonnet-5.5(priority 20);两 provider 使用同一份单价 1M tokens $2 in / $10 out / $0.2 cache read / $2.5 cache write(与 Sonnet 5 持平)。

⚠️ 发布后行为不会立即变化:该模型被写入 model_routing_catalog_release_gates.json,而 catalog seed 对新模型插入的是 release_phase='pre_release'(ON CONFLICT DO NOTHING,不会覆盖已 release 的行)。 Link 只加载 released 的 public model(services/link/internal/catalog/catalog.go), 因此 apply catalog 之后模型仍不对用户开放,需要运维在 Admin 显式把 release gate 置为 released。

⚠️ 公开定价页是独立发布:data/json/public_pricing.json 与 provider_pricing/*.json 已含 Sonnet 5.5, 但官网公开定价由 deploy-public-pricing-prod.yml 单独投影发布(当前发布点 0ab43a985 不含该模型)。若要让定价页同步,需额外 dispatch 该 workflow。

Author:Liu Yi

无。apps/web 在 BASE_WEB 4d9eee278 之后无任何文件变更。 无。本 feature 不改 services/api;BASE_API 之后仅 95c2819d4(指标标签)触及该目录,与本 feature 无关。 仅测试文件(BASE_LINK 26370c56e 之后,1 个 commit 触及 services/link):
  • services/link/third_party/bifrost-core/providers/anthropic/utils_test.go:claude-sonnet-5-5 / global.anthropic.claude-sonnet-5-5 断言支持 adaptive thinking 与 effort 参数
  • services/link/third_party/bifrost-core/providers/bedrock/bedrock_test.go:新增 Sonnet 5.5 adaptive thinking 用例
无 runtime 代码变更,Link 生产行为不变;Sonnet 5.5 复用已上线的 adapter 路径。
无。本 feature 不改 apps/admin。 无。BASE_DB a7aa125f3 之后 db/migrations/ 与 db/schema/ 无变更。 有(BASE_CATALOG 06cf3e250 之后,1 个 commit 触及 data/json + db/seeds):
  • data/json/models.json:新增 claude-sonnet-5.5
  • data/json/provider_routes.json / route_policies.json:Bedrock(8) + OpenRouter(20)
  • data/json/provider_pricing/provider_bedrock.json / provider_openrouter.json
  • data/json/public_pricing.json、openrouter_metadata.json、model_routing_catalog_release_gates.json
  • 生成物:db/seeds/seed-model-routing-catalog.sql、seed-model-routing-catalog-test-activation.sql、generate_model_routing_catalog_real_data_test.py(real-data 契约测试)
seed 后 release gate = pre_release,需 Admin 显式 release。
MAdmin 公共模型状态 API + 发布相位变更幂等化

是什么:Admin 新增免登录只读接口 GET /api/public/v1/models,暴露模型身份/类型、技术状态、可见性、 release phase、可用路由状态、blockers、首次部署时间与当前 release 迁移时间,输出固定 schemaVersion: 1 JSON; 支持 name / status / visibility / releasePhase 精确过滤,非法或重复过滤返回 400, 响应 Cache-Control: private, no-store。不暴露 provider 配置、凭据、定价、后端名或 route ID。 该接口刻意放在 /api/admin/* 之外,现有需鉴权的 Admin 路由不变。

行为变化(重点):updateReleasePhase / updateReleaseGate 现在在相位未变化时直接返回 changed=false,不再刷新 updated_at,也不再写重复审计事件。因此新接口的 releasedAt(= public_model_release_gates.updated_at)才是真正的相位迁移时间。

Author:Liu Yi

无。BASE_WEB 之后 apps/web 无变更。 无。 无。本次 Admin 改动不涉及 Link。 有(BASE_ADMIN 4d9eee278 之后,13 个 commit 中 1 个触及 apps/admin):
  • 新增 apps/admin/app/api/public/v1/models/route.ts、apps/admin/lib/server/public-model-status.ts
  • 改 apps/admin/lib/server/admin/core.ts、models.ts(幂等 + 审计条件化)
  • 测试 test/public-model-status.test.ts、test/admin-console.test.ts;文档 apps/admin/README.md
基准版本较旧(2026-09-24 起未发布过 Admin),本次同时会带上该基线之后的全部 Admin 变更;净新增仅此 1 个 commit。
无。BASE_DB 之后无 schema/migration。 无。本 feature 不改 db/seeds 与 data/json。
SAPI HTTP 指标路由归类补齐(16 条模板标签)

是什么:正常的 billing preflight 请求及另外 15 条已注册路由此前缺少指标映射,请求计数与耗时都落入 route="unknown"。本次补齐 16 条固定模板标签,使这些请求可按接口聚合观察。覆盖范围: Billing(preflight / coding-plan-usage / cancel-only)、Open Design 终态上报(2)、Account erasure(6)、 Public pricing(2)、Monitoring(daily-run / risk-run)、Resend support-email webhook。 动态值(workspace / user / run / revision)不会进入标签,未匹配路径仍归 unknown。

仅标签变更:不改鉴权、不改路由行为、不改响应体;历史 unknown 数据不会被重新分类。

Author:Liu Yi

无。 有(BASE_API e43cbd2b6 之后,8 个 commit 中 1 个触及 services/api):
  • services/api/src/metrics.ts:新增 16 条模板 + billing suffix 扩展
  • services/api/test/metrics.test.ts、test/billing-preflight.test.ts(复用真实中间件断言标签聚合)
无 migration、无数据契约变化。
无。 无。 无。 无。
S非 runtime 变更:CI workflow 兼容性、代码质量工具链、文档校准

这类变更不进入任何维度列,也不构成服务/DB 的发布内容,但相对各自基线仍在 origin/main 上。

  • 8a48165f6 fix(ci): 移除 Forgejo 不支持的 workflow permissions(PR #140):只改 .forgejo/workflows/*(11 个文件,含 deploy-*-prod.yml);不改发布逻辑,六个维度均已生效
  • 37639613f feat(tools): Erosion / Verbosity 分项目分析(PR #129):仅 tools/code_quality/
  • 8b22b0b11 docs: reconcile documentation with code evolution(PR #130):仅文档

Author:mrcfps、Liu Yi

无 runtime 变更。 无 runtime 变更。 无 runtime 变更。 无 runtime 变更。 不影响 migration workflow。 不影响 seed workflow。

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

以下 commit 均在对应维度生产发布点之前,已在生产运行。四个服务以 EKS Pod 实态为基线, DB migration 与 Catalog 以 Forgejo workflow 记录为基线。

发布建议

  1. Migration 判断:不需要跑 migration。BASE_DB a7aa125f3 之后 db/migrations/ 与 db/schema/ 无任何新增文件(compare 为 4 个 commit,触及 0 个)。 deploy-db-migrations-prod.yml 可跳过。
  2. 建议顺序:Catalog → (Admin 执行 release)→ Admin → API。Web / Link 无 runtime 待发布内容,可不发(如需版本对齐可随发)。
    • Catalog:dispatch deploy-model-routing-catalog-prod.yml,实际发布 1 个 commit(2134cdb88)。
    • Admin 执行 release:apply 后 claude-sonnet-5.5 为 pre_release,必须由运维在 Admin 把 release gate 置为 released,该模型才进入 Link 的可路由集合。这一步是业务开关,不是代码发布。
    • Admin:dispatch deploy-admin-eks-prod.yml,实际发布 1 个 commit(0dc3fc2fb,新的公共模型状态接口可用于核对上面的 release 状态)。
    • API:dispatch deploy-api-eks-prod.yml,实际发布 1 个 commit(95c2819d4)。
    • 公开定价(可选):若需官网定价页同步 Sonnet 5.5,额外 dispatch deploy-public-pricing-prod.yml;它不在 Catalog workflow 的 apply 步骤内。
  3. 数据 seed / catalog 判断:catalog 变更由 deploy-model-routing-catalog-prod.yml 的 apply 步骤执行 db/seeds/model_routing_catalog.py apply --yes,使用基线 seed db/seeds/seed-model-routing-catalog.sql (不带 --test,test-activation overlay 只用于测试环境)。因此 prod 的 Sonnet 5.5 release gate 一定是 pre_release, 不要期望 seed 完成后模型自动可用。需要额外 runbook 步骤:在 Admin 将 public_model_claude_sonnet_5_5 release phase 改为 released。
  4. 发布后观测:
    • Catalog:核对 plan 输出 diff 只包含 Sonnet 5.5 相关行;确认 link.public_model_release_gates 中该模型为 pre_release 直到人工 release。
    • Link:模型 release 后观察 claude-sonnet-5.5 的请求量 / 成功率 / P95 延迟 / 上游错误,以及 Bedrock(priority 8) 与 OpenRouter(priority 20) 的流量分布与 429/5xx。
    • Admin:GET /api/public/v1/models 免 Cookie 返回 200,非法 releasePhase 返回 400,POST 返回 405,GET /api/admin/models/tables 无鉴权仍返回 401;重复提交相同 release phase 不再产生新的审计事件与 updated_at 抖动。
    • API:http_requests_total 中 route="unknown" 的 preflight 及本次覆盖的 16 条路由占比应下降,对应固定模板标签出现计数与耗时。

备注:本报告所有 workflow、commit、PR 与 compare range 均为 Forgejo(code.powerformer.net/core/amr)链接, workflow 链接指向可触发页面而非 workflow 文件。四个服务的 compare range 基于 EKS Pod 观察到的 BASE (web/admin 4d9eee278、api e43cbd2b6、link 26370c56e), DB migration 与 Catalog 的 compare range 基于各自 workflow 的 BASE(a7aa125f3、06cf3e250),未使用统一旧基线。