AMR 生产发布影响报告

生成时间:2026-08-31;分析对象:在 origin/main(HEAD e88cd4253)手动运行六个生产 GitHub workflow 的影响分析。注意:各 workflow 最近一次成功发布点不同,下方「变更范围」按各自发布点分别计算,只有发布点之后的 commit 才属于该 workflow 本次新增。

当前生产发布点(各 workflow 独立计算)

六个生产 workflow 最近一次成功运行停在的 commit 各不相同(2026-08-31 02:44–03:00 UTC 一轮发布)。越新的发布点意味着该服务已上线越多内容(Admin 最新发布点 b838fee4a 比其余五个 aabbacce1 更新),feature 表里只允许列出发布点之后的变更; 发布点之前的 commit 属于已生效,归入「已在生产生效」一节,不得重复出现在 feature 表。目标 commit 均为 e88cd4253 (fix(link): normalize upstream rate limit outcomes (#1815))。

deploy-web-eks-prod.yml
最近成功:2026-08-31 02:50:29Z
发布点 commit:aabbacce1
本次新增(aabbacce1...e88cd4253):5 commits(其中 0 个改动 apps/web 构建产物)
(发布点 aabbacce1 已上线:zero credit balance 展示 #1789、unused asset/mock 清理 #1792/#1793 等)
deploy-api-eks-prod.yml
最近成功:2026-08-31 02:47:45Z
发布点 commit:aabbacce1
本次新增(aabbacce1...e88cd4253):5 commits(其中 0 个改动 services/api 构建产物)
(发布点 aabbacce1 已上线:移除 coding plan model catalog endpoint #1788、billing portal provision #1777)
deploy-link-eks-prod.yml
最近成功:2026-08-31 02:49:52Z
发布点 commit:aabbacce1
本次新增(aabbacce1...e88cd4253):5 commits(其中 1 个改动 services/link:#1815)
(发布点 aabbacce1 已上线:GLM 5.3 Flash 经 AIPing 路由 #1787)
deploy-admin-eks-prod.yml
最近成功:2026-08-31 03:00:26Z
发布点 commit:b838fee4a
本次新增(b838fee4a...e88cd4253):4 commits(其中 1 个改动 apps/admin:#1810)
(发布点 b838fee4a 已上线:cancel-only subscription recovery #1779、patrol test 修复 #1805)
deploy-db-migrations-prod.yml
最近成功:2026-08-31 02:44:06Z
发布点 commit:aabbacce1
本次新增(aabbacce1...e88cd4253):5 commits(其中 0 个改动 db/migrations + db/schema)
(发布点 aabbacce1 已应用:20260828061808_admin_subscription_refund_operation_mode.sql — operation_mode 列 + CHECK)
deploy-model-routing-catalog-prod.yml
最近成功:2026-08-31 02:50:08Z
发布点 commit:aabbacce1
本次新增(aabbacce1...e88cd4253):5 commits(其中 0 个改动 data/json 与 db/seeds)
(发布点 aabbacce1 已应用:GLM 5.3 Flash AIPing 路由 seed、Z.AI 路由权重 1→4)

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

feature 表只包含「各 workflow 发布点之后」的变更;发布点之前已生效的内容见 「已在生产生效」 一节,不要重复列入。本次范围内共 5 个 commit,其中只有 #1815(Link) 与 #1810(Admin) 属于六个生产 workflow 的运行时变更;#1806(CLI)、#1812(docs) 走独立发布/无运行时影响,#1805 为 Admin 发布点本身(已生效)。

Feature / Author / Commits Web API Link Admin DB schema / migration DB catalog(seed)
LLink 上游限流错误结果归一化(effective error contract)

Link 在 provider/Bifrost 失败进入对外响应、usage 落账与指标之前做一次 effective error 归一化:上游/provider 429 一律对外为 HTTP 503 + 稳定错误码 upstream_rate_limited(provider queue 耗尽为 503 + upstream_queue_timeout),跨 Bifrost 模型调用(chat/responses/embeddings,含 pre-dispatch 流式限流)与媒体 provider adapter(OpenRouter/DataEyes/BytePlus)统一生效。workspace 调用方看到的限流错误形态从 429 变为 503,重试语义与告警、用量统计的 error code 随之变化;对用户流量与可观测性影响最大,是本次唯一影响线上模型流量的变更。

Link 自有 admission/额度/限流 400/429 契约(tier_limit_exceeded、model_limit_exceeded、余额/usage limit 429)保持不变。provider span 记录低基数属性 http.response.status_code + amr.link.error_code(raw error 保留为 exception event),failure log 增加 effective 字段,gateway_model_requests_total.status 语义改为 effective terminal status。配套补充契约文档 specs/change/20260831-link-effective-error-contract 与 provider/observability 文档。

Author:nettee

  • e88cd4253 fix(link): normalize upstream rate limit outcomes (#1815)
无(BASE_WEB=aabbacce1 之后无 apps/web 变更)。 无(BASE_API=aabbacce1 之后无 services/api 变更)。调用方错误契约受影响(详见 feature 列)。 BASE_LINK=aabbacce1 之后新增 e88cd4253(#1815):services/link/internal/handlers/openai.go(normalizeBifrostError / effectiveBifrostError)、handlers/internal_media_image.go、media/provider.go(normalizeUpstreamAdapterError)、media/openrouter.go|dataeyes.go|byteplus_video.go、usage/metrics.go。 无。 无 新 migration(BASE_DB=aabbacce1 之后无 db/migrations / db/schema 变更)。 无 catalog 变更(BASE_CATALOG=aabbacce1 之后无 data/json / db/seeds 变更)。
MAdmin 退款操作历史按用户分组

Admin 退款管理页从「每个操作一行」改为「按用户分组」:每行只展示该用户的最近一次退款操作(时间/状态/操作按钮),通过 icon 展开按钮查看该用户的全部历史操作;分页与总数改为以用户(app_user_id)为单位(后端 paged_users CTE 按用户取最新操作并去重计数),页面上同一用户的多笔历史不再淹没首屏。面向客服/运营的退款排查路径,属于 Admin 后台体验类变更,不影响 API/计费侧。

Author:nettee

  • e50eb8084 feat(admin): group refund operation history (#1810)
无。 无。 无。 BASE_ADMIN=b838fee4a 之后新增 e50eb8084(#1810):apps/admin/app/[locale]/(protected)/refund-management/page.tsx、新组件 apps/admin/features/refund-management/refund-operation-rows.tsx、lib/server/admin/core.ts(分页按用户分组)、i18n en/zh 文案。 无 新 migration。 无 catalog 变更。
SCLI:ACP 帧大小限制提升至 4 MiB

apps/cli 的 ACP(Agent Client Protocol)stdio 帧上限从 1 MiB 提升到 4 MiB,避免大载荷工具调用被截断。CLI 通过独立的 vela-cli-package/release workflow 发布,不经过本次分析的六个 EKS 生产 workflow,因此本次生产发布无运行时影响,仅作为范围内 commit 归档说明。

Author:nettee

  • 3f75aba0c fix(cli): raise ACP frame limit to 4 MiB (#1806)
无。 无 runtime 变更。 无 runtime 变更。 无。 无(不影响 deploy-db-migrations-prod.yml)。 无(不影响 seed workflow)。
S文档/agent skill 触发词收窄

仅调整 .agents/skills/vela-local-runtime/SKILL.md 的触发描述(docs only),无任何运行时产物变化,不进入六个维度列。范围还包含 #1805(admin patrol 测试修复,测试-only),它正是 Admin 最新发布点本身,已随 03:00:26Z 发布生效,不在 Admin 本次新增内。

Author:nettee

  • 55aad292c docs: narrow local runtime skill trigger (#1812)
  • b838fee4a fix(admin): avoid expiring patrol window test (#1805,Admin 发布点,已生效)
无。 无 runtime 变更。 无 runtime 变更。 无 runtime 变更(#1805 为测试-only 且已生效)。 无。 无。

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

以下内容均在对应 workflow 最近一次成功发布点(aabbacce1 = 2026-08-31 02:44–02:50Z;Admin b838fee4a = 03:00:26Z)之前/之上,已在生产运行。若在 main 上重新运行对应 workflow,只以各自发布点为基线,这些变更不会重新「上线」。

发布建议

  1. Migration 判断:BASE_DB=aabbacce1 之后无新增 migration 文件(范围内 5 个 commit 均不改 db/migrations / db/schema),不需要跑 deploy-db-migrations-prod.yml。
  2. 服务发布顺序:范围内无相互依赖,建议按 Link → Admin 顺序并行发布即可:
    • Link(aabbacce1...e88cd4253,实际 1 个有效 commit #1815)
    • Admin(b838fee4a...e88cd4253,实际 1 个有效 commit #1810)
    • Web / API / DB / Catalog:范围内无对应改动,无需重新发布(若按 main HEAD 全量重跑也只是重建相同代码/状态)。
  3. 数据 seed / catalog 判断:本次无 data/json / db/seeds 变更,deploy-model-routing-catalog-prod.yml 无需运行,无额外 runbook。
  4. 发布后观测:
    • Link:#1815 上线后关注 gateway_model_requests_total.status 中 503 出现率、upstream_rate_limited / upstream_queue_timeout 计数(原 429 故障开始以 503 落账)、SSE 流式终态归一化;上游 429 告警若按旧 code 过滤需同步调整。
    • Admin:退款管理页分组渲染、按用户分页总数、展开历史操作按钮可用性(refund-operation-rows.tsx 与后端 core.ts 分页 CTE 行为一致)。
    • 调用方契约:确认依赖方对「上游限流返回 503」的重试策略是否受影响(429 vs 503 语义变化)。

备注:所有 workflow、commit、PR 或 compare range 均为可点击的 GitHub 链接;每个 workflow 的 compare 链接基于各自的发布点 BASE(Web/API/Link/DB/Catalog = aabbacce1,Admin = b838fee4a),而不是统一使用最旧的基线。