AMR 生产发布影响报告
当前生产发布点(EKS 实态 + workflow 记录)
Web、API、Link、Admin 的发布点来自 Grafana / Prometheus 观察到的 Ready EKS Pod 镜像;DB migration 的发布点来自对应 workflow 最近一次成功运行。越新的发布点意味着该维度已上线越多内容,feature 表里只允许列出发布点之后的变更;
发布点之前的 commit 属于已生效,归入「已在生产生效」一节,不得重复出现在 feature 表。目标 commit 均为
8b0c9bb38
(fix(link): 实时下发 Responses reasoning 摘要增量(OPEND-4022) (#449))。
nexu/amr-web · container webb34670be2sha256:91282629a8bcdbe63a3d65250e73003ecb581f547f8bd0c0830bd290d3735d9eb34670be2...8b0c9bb38):12 commits,触及 apps/web 2 个(runtime 1 个)nexu/amr-api · container apib34670be2sha256:8a9db043d682972419297d32c1ee66b6f6b9e5fbc57d27416af587cc7a750544b34670be2...8b0c9bb38):12 commits,触及 services/api 5 个(runtime 3 个)nexu/amr-link · container linkb34670be2sha256:04457534c592786df448b732e0c0fa48451987eb0911327501a31d7b1bd1b057b34670be2...8b0c9bb38):12 commits,触及 services/link 6 个(全部 runtime)nexu/amr-admin · container adminb34670be2sha256:b8422aa93d8eb51ad7035611b6fafdd2d260709bdc2fe9ef8bf0b0f6dc1edd69b34670be2...8b0c9bb38):12 commits,触及 apps/admin 3 个(全部 runtime)b34670be2b34670be2...8b0c9bb38):1 commit,2 个 migration20261016174645_usage_event_token_summary_index.sql(含 credit usage scope totals/buckets、stripe webhook 索引、token summary 索引)此次发布真正新增的 feature 和影响面
| Feature / Author / Commits | Web | API | Link | Admin | DB schema / migration |
|---|---|---|---|---|---|
|
XL数据库故障切换隔离与依赖就绪(API / Link / Admin)
针对 2026-10-20 生产 RDS 故障切换事故:API 因未处理的空闲连接池错误(57P01)退出,请求堆积在指向旧主库的连接上,而健康检查无条件返回 200 继续放量,最终拖垮共享 Ingress。发布后:空闲连接错误不再杀进程;连接建立与排队等待有 2s 截止、队列上限为池容量 4 倍;区分存活 必要依赖:API / Link / Admin 的新镜像必须与其 readiness chart 变更同批发布;把 chart 先套到旧镜像会让探针访问不存在的 Author:mrcfps
|
无。 | services/api/src/database-availability.ts、observed-pool.ts、app.ts、index.ts 与故障注入 E2E fixtures;deploy/charts/api/values.yaml 改为 /ready 启动/就绪探针。13 个文件。 |
internal/server/readiness.go(PostgreSQL / Redis / draining)、server.go、repositories/postgres.go 空闲错误处理、charts/link/values.yaml。6 个文件。 |
app/api/admin/readyz/route.ts、lib/server/readiness.ts、lib/server/admin/core.ts(空闲错误与连接获取上限)、deploy/charts/admin/values.yaml。4 个文件。 |
无 schema / migration 变更。 |
|
LAPI 滚动发布期间 SSE 连接平滑迁移
此前滚动发布会同时关闭全部 SSE 连接,旧客户端集中重连并各自发起恢复读,形成读放大。发布后 SIGTERM 先摘除就绪、预留 10s 端点传播,再用 45s 把 workspace / resource / public-share 三类流均匀关闭,随后 HTTP、已准入 handler、后台 worker 与连接池收尾,总截止 85s;就绪改为一次性启动门(池预热 + 初次 LISTEN 健康),就绪后不因共享 DB 饱和被驱逐。chart 改为 必要依赖:镜像与 chart 必须成对发布;只在旧 chart 上换镜像或只回滚镜像都不安全(旧镜像没有 Author:mrcfps
|
无。 | event-stream-drain.ts、lifecycle.ts、request-pool.ts、shutdown.ts、index.ts、config.ts、metrics.ts、workspace-events / resources / collab 流处理与 7 个新测试;deploy/charts/api/templates/deployment.yaml 与 values.yaml。28 个文件。 |
无。 | 无。 | 无 schema / migration 变更。 |
|
LBilling 结算恢复:有界扫描、游标与重试持久化
结算兜底扫描此前反复对最老 usage history 做 anti-join 并超时。发布后按有序 keyset 分页发现(默认 72 小时回看、最近 10 页 × 2000 行、历史 1 页 × 2000 行,每阶段最多 100 个候选),在事务内物化分页后做反连接与作用域校验,持久化游标、历史边界与失败重试(按实际失败时间做指数退避),保留 request_id 幂等与跨副本 guard。影响计费补记准确性、billing worker 的 DB 负载与延迟。 必要依赖:必须先通过 deploy-db-migrations-prod.yml 应用两个 migration(含 post-migration ANALYZE),再发布 API;否则新代码会访问尚不存在的 Author:zhangchi(co-authored a1chzt、mrcfps)
|
无。 | billing/core.ts、billing/infra/postgres.ts、config.ts、index.ts、openapi.ts 与结算恢复 / 扫描成本 E2E。11 个文件。 |
无。 | 无。 | 20261017021500_usage_settlement_recovery.sql(新建 usage_settlement_retries、usage_settlement_scan_cursors 及索引)与 20261019035155_usage_settlement_history_fence.sql(新增 history_end 列);同步 atlas.sum、db/schema/public.hcl。 |
|
L模型路由协议与参数兼容修复(OPEND-3756)
统一 Chat / Responses / Messages 之间的历史与工具内容转换,并只在确认的模型与档位范围内归一化参数:工具结果 Author:Liu Yi
|
无。 | 无。 | bifrostengine(engine.go、deepseek_chat_tools.go、responses_chat_history.go、responses_reasoning.go、responses_facade.go、responses_chat_tools.go)、providercompat(adapter.go、default_reasoning.go、text.go)、third_party/bifrost-core/schemas/mux.go 与 e2e fixtures。21 个文件。 |
无。 | 无 schema / migration 变更。 |
|
LWeb 小语种文案按需加载(首屏 JS −13%)
8 种小语种(zh-TW、pt、es、ru、fr、ko、de、ja)文案从首屏公共包拆成带 hash 的静态资源,仅在用户使用该语言时 fetch 加载;zh-CN / en-US 保留在首屏。首屏 JS 由 570 KB 降至 494 KB(−13%)。切换语言先加载目标语言包,加载失败仍切换并回退基础文案,随后自动重试;语言检测、查词顺序与业务组件不变。影响所有 Web 首屏加载与语言切换路径。 Author:罗高
|
src/lib/i18n-locale-packs.ts、8 个 src/lib/i18n-locales/*.json、i18n.tsx、main.tsx 与新增单测 / 浏览器测试。18 个文件(新增静态资源随 Web 构建产物发布,无额外配置)。 |
无。 | 无。 | 无。 | 无 schema / migration 变更。 |
|
MAdmin 单模型目录测试与独立 CLI 发行
新增 必要依赖:catalog test 需 Admin 与 Link 同批上线;CLI 首次自动化发行需先准备 R2 bucket / 自定义域 CDN,并配置 Author:Liu Yi |
无 runtime 变更(仅 1 个浏览器测试文件)。 | 无 runtime 变更(仅 1 个测试文件)。 | 内部诊断链路调整:internal/backendtest/test.go、internal/server/internal_public_models.go、internal_backend_diagnostics.go 及目录配置测试。5 个文件。 |
模型列表测试对话框、模型配置 action 与审计动作、cli/(VERSION、amr-admin.mjs、release/ 打包发布安装脚本、cli-auth.ts)、i18n 文案与测试。累计 38 个文件。 |
无 schema / migration 变更。 |
|
MLink 模型可用性窗口聚合性能
auto-availability 控制器此前为每个 model/provider 直方图重复扫描同一 usage 窗口,且每 tick 对相同 10 分钟窗口聚合两次。发布后由一次 Author:mrcfps
|
无。 | 无。 | internal/autoavailability/controller.go、internal/repositories/postgres.go 及真实数据库回归 / e2e 测试。6 个文件。 |
无。 | 无 schema / migration 变更(复用既有索引)。 |
|
MDeepSeek 输出预算按上游协议下发
官方 DeepSeek Chat 出站边界改用 Author:nettee(Liu Yi)
|
无。 | 无。 | internal/providercompat/adapter.go 出站预算字段映射与单测 / 真实 handler E2E。5 个文件。 |
无。 | 无 schema / migration 变更。 |
|
SResponses reasoning 摘要增量实时下发(OPEND-4022)
Chat 后端经 Author:Liu Yi
|
无。 | 无。 | internal/bifrostengine/responses_reasoning.go 与流式回归测试。2 个 runtime 文件。 |
无。 | 无 schema / migration 变更。 |
|
S生产 Web 发布 workflow 复用接入独立分享站
在既有 Author:zhangchi
|
无 runtime 变更(仅发布 workflow 与 tools/prod-web-release.mjs)。 |
无 runtime 变更。 | 无 runtime 变更。 | 无。 | 不影响 migration workflow(无 db/ 变更)。 |
|
SPreview 环境 Vela 应用组泳道
把四个 Vela 服务作为一个 Orbit PR 泳道部署,支持 shared-Test 或独立 PostgreSQL;独立泳道复制一致快照、执行该 PR 的 Atlas migration 并 ANALYZE,再把命名空间内连接注入 API / Link / Admin。共享数据部署在 Author:mrcfps
|
无 runtime 变更。 | 无 runtime 变更(仅 1 个测试文件)。 | 无 runtime 变更。 | 无。 | 不新增 migration;但会校验共享数据部署的 schema baseline,migration 不一致时 preview 部署失败。 |
已在生产生效(发布点之前,本次不重复发布)
以下 feature 的 commit 均在对应生产发布点之前,已在生产运行。四个服务以 EKS Pod 实态为基线,DB migration 以 workflow 记录为基线。若从 main 重新发布,只分析各自基线之后的净新增;生成报告时必须把基线之前的内容从 feature 表挪到这里。
- DB migration(b34670be2 已生效):至
20261016174645_usage_event_token_summary_index.sql,含 credit usage scope totals / buckets、Stripe webhook 去重索引、ledger 可见 scope 使用索引、usage token summary 索引;生产 migration 已配置专用超时与 ANALYZE。 - Link(b34670be2 已生效):BytePlus 历史 / context edit / reasoning effort 兼容性统一修复、模型可用性生命周期与冷却行为。
- API(b34670be2 已生效):DB job / 连接池 acquisition / 通知 metrics(OPEND-4028)、计费 scoped summary CPU 优化(#439/#369)、webhook 去重索引使用(#368)、订阅 grant 批量对账(#365)。
- Web(b34670be2 已生效):评论模式切换移除阻塞式 HEAD 校验(OPEND-4053)、协作评论时间戳保留。
- Admin(b34670be2 已生效):Patrol 巡检监控下线并保留停用提示(OPEND-4005)、模型配置审计动作调整。
- 范围内已回退(净变更归零,本次不发布):无。12 个 commit 全部为向前变更,未发现 revert。
发布建议
- Migration 判断:DB migration 发布点(run #67356,
b34670be2)之后新增 2 个 migration:20261017021500_usage_settlement_recovery.sql、20261019035155_usage_settlement_history_fence.sql。两者均为增量(新建两张表 + 一个可空列),必须先运行 deploy-db-migrations-prod.yml(含 post-migration ANALYZE)再发布 API。范围内没有被回退的 migration,不存在跳过执行的特例。 - 服务发布顺序:
- DB migration(2 个文件,1 commit)→ 确认
atlas.sum一致、usage_settlement_*表与索引存在、ANALYZE 完成。 - Admin + Link 同批(catalog test 需要两端同时具备;Link 共 6 个 runtime commit,Admin 3 个)。
- API(3 个 runtime commit:故障切换就绪、SSE 滚动迁移、billing 有界扫描)。API / Link / Admin 的镜像与 readiness chart 必须成对发布,chart 先于旧镜像会导致
/ready404。 - Web(1 个 runtime commit,i18n 语言包,可独立发布)。
- 可选、需单独授权:分享站
target=share发布、Admin CLI 首次自动化发行(先备好 R2/CDN 与相关环境变量)。
- DB migration(2 个文件,1 commit)→ 确认
- 发布后观测:
- API:
/ready状态与 503 比例、请求池等待数与 2s 超时计数、SSE 重连率与恢复读 p95、发布窗口内 5xx;确认/health仍只反映进程存活。 - DB:migration 后
usage_settlement_scan_cursors游标推进、usage_settlement_retries重试分布、billing worker 扫描耗时与 DB CPU/AAS。 - Link:供应商 4xx/422 比例(协议兼容修复)、DeepSeek 输出长度与
finish_reason=length比例、Responses 流中 reasoning delta 是否先于output_item.done、可用性聚合 SQL 调用数与耗时。 - Admin:
/api/admin/readyz与页面可用性、单模型目录测试结果与耗时、CLI 发行流水线产物与 CDN 校验和。 - Web:首屏 JS 体积(预期 570 KB → 494 KB br)、语言包请求失败率与语言切换回退日志。
- API:
备注:所有 workflow、commit、PR 或 compare range 均使用可点击的 Forgejo 链接。四个服务的 compare range 基于 EKS Pod 观察到的 b34670be2,DB migration 的 compare range 基于 migration workflow 记录的 b34670be2;本次五个维度发布点恰好一致,但计算仍按各维度独立执行。四个服务最近成功的生产 deploy workflow 与 Pod 实态完全一致(web #67387、api #67371、link #67372、admin #67373,均部署 b34670be2)。