AMR 生产发布影响报告
当前生产发布点(EKS 实态 + Forgejo workflow 记录)
越新的发布点表示该维度已上线越多内容。feature 表只列发布点之后的变更;发布点之前的内容归入 「已在生产生效」。六个维度基线各不相同,compare range 逐个基线单独给出。
nexu/amr-web · container web4676d97e1sha256:379d86f96df5444ca256058b6cb702b67a6376e3fc97b485fc8f6033378020794676d97e1...9555efd13):12 commitsnexu/amr-api · container apifeb5eb7fasha256:ce9939f10b5da205dfc354e7d41fb63462eb46d097238edf40c590f10fca7740feb5eb7fa...9555efd13):21 commitsnexu/amr-link · container link4676d97e1sha256:d6d339a87fb3299004f80e96ab827e2b5af643a31dfa2210bdb3e5134a64af804676d97e1...9555efd13):11 commitsnexu/amr-admin · container admin0a1243060sha256:0139558eec90ff7b2aee7109d5d3cee83a6b317ea0e8ae0ffb8a9a714492dae80a1243060...9555efd13):5 commitsdeploy-db-migrations-prod.yml 记录
ff912897dff912897d...9555efd13):2 个 migration 文件20260914115313_account_erasure.sql 的 migration 集合。deploy-model-routing-catalog-prod.yml 记录
816d1de3e审计对照说明:四个服务的 Forgejo 生产发布 workflow 最近成功记录与 EKS Pod 实态逐项一致(四个服务的 commit 与 digest 均匹配),未发现 GitOps 手工回滚造成的偏差。
GitOps values(powerformer/apps)不在本环境可访问范围内(该仓库位于 GitHub,本流程不读取 GitHub Actions / GitHub 记录),因此未作为对照来源;如需该层证据请在本流程之外补充。
此次发布真正新增的 feature 和影响面
| Feature / Author / Commits | Web | API | Link | Admin | DB schema / migration | DB catalog(seed) |
|---|---|---|---|---|---|---|
|
XXLCoding Plan 计费与额度体系:Go 套餐恢复、按套餐配置限额窗口、订阅锚点与零扣费额度刷新
是什么:四个连续 PR 构成的一条完整计费链路改造。
(1) #54 恢复 Go 付费套餐:价格目录、订阅、Admin 模型包含规则、四档额度配置回归,并新增按工作空间 / 成员 / 模型限定的 billing preflight(API 面向谁 / 用户路径变化:所有 Coding Plan 订阅用户(Go / Plus / Pro / Max,Personal 与 Team)与 Open Design / Codex 类客户端;Go 套餐重新可购买,个人与团队使用一致的窗口规则,套餐用量可见性从“延迟”变为“近实时”。 Author:mrcfps(#54 含 Ray Xi 共同署名、lefarcen review;#82 由 Liu Yi review)、lefarcen(#99) |
有(BASE_WEB 4676d97e1 之后):apps/web — coding-plan 用量卡与倒计时、landing 定价卡与套餐目录(Go 回归)、public-pricing-offers.ts、nav-items.ts、billing-client.ts、runtime-keys-client.ts、workspace-selector.ts、lib/coding-plan-events.ts(#99 新增订阅事件流)。 |
有(BASE_API feb5eb7fa 之后):services/api — billing/core.ts、billing/coding-plan-usage.ts、billing/preflight.ts(新增路由,注册进 app.ts / http/routes.ts / openapi.json)、billing/infra/postgres.ts、persistence/users.ts、会员策略锚点下发、workspace-events/*(#99)。 |
有(BASE_LINK 4676d97e1 之后):services/link — 准入流水线 admission_pipeline.go、economics/classifier.go(额度耗尽回退钱包的计费分类)、membership/client.go、modellimit/model_limit.go(按套餐聚合限额窗口、跳过缺席档位)、repositories/postgres.go。 |
有(BASE_ADMIN 0a1243060 之后):apps/admin — coding-plan 控制台(limit-policies-panel / limit-policy-fields / tier-value-grid / product-control / models-panel / audience-context)、membership/model-groups-panel、lib/audit-action-catalog.ts、i18n(中英)。 |
有(BASE_DB ff912897d 之后,2 个 migration):
|
无(本 feature 的 catalog 面在 2026-09-23T06:15Z 的 catalog 发布中已先行生效,见「已在生产生效」)。 |
|
XLLink 三协议客户端接入:Anthropic Messages、Responses(Codex)与多轮 Agent 工具链路
是什么:让同一个 Vela runtime API key 能直接接入三类官方客户端,而不是只支持 OpenAI Chat Completions。
(1) #79 新增 影响面与边界:Link 对外协议面从 1 种扩到 3 种(Chat / Responses / Messages),新增公开端点 Author:mrcfps(#79,含 Ray Xi 共同署名;#88)、Liu Yi(#81、#93、#96)
|
有(BASE_WEB 4676d97e1 之后):apps/web/src/lib/gateway-url.ts 与 API Key 页的 Base URL 计算(为三种协议输出对应地址),见 28d81e0ca。 |
无。 | 有(BASE_LINK 4676d97e1 之后):services/link — 新增 internal/handlers/anthropic.go、internal/bifrostengine/anthropic_messages.go;改动 handlers/openai.go、middleware/auth.go、runtimeconfig/manager.go、bifrostengine/engine.go;third_party/bifrost-core vendor 补丁(schema / 结束原因 / 流状态 / EOF);specs/link/bifrost-patches.md 记录补丁移除条件。 |
无。 | 无 schema / migration。 | 无 catalog 变更。 |
|
LAPI Key 生命周期与免费用户边界:三协议入口、创建拦截与导航门控
是什么:围绕 runtime API key 的一组前后端收口。
(1) #92 API Key 页把接口选择从 2 项改为 3 种格式(OpenAI · Chat Completions / OpenAI · Responses / Anthropic · Messages),每种格式给出对应 Base URL 与推荐客户端(DeepSeek Harness、Codex、Claude Code),页面只展示一个可复制的地址、不再单列接口路径。
(2) #84 API 侧拦截:免费用户及付费权益已到期的用户调用 面向谁 / 用户路径变化:Free 用户不再进入无法使用的密钥管理页(三处一致:导航、直达链接、服务端);付费用户获得按客户端协议区分的接入说明。 Author:mrcfps(#70,含 Ray Xi 共同署名;#84、#95)、Liu Yi(#92) |
有(BASE_WEB 4676d97e1 之后):apps/web — routes/api-keys.tsx、components/layout/nav-items.ts、header.tsx、sidebar.tsx、disabled-navigation-tooltip.tsx、lib/i18n.tsx;packages/shared/src/workspace-context.ts 增加套餐上下文。 |
有(BASE_API feb5eb7fa 之后):services/api — runtime-keys.ts(付费权益校验 + 403)、app.ts、workspaces/core.ts 与 workspaces/postgres.ts(workspace 套餐字段)。 |
无。 | 无。 | 无 schema / migration。 | 无 catalog 变更。 |
|
LCMS Touchpoints 运行时决策生命周期(OPEND-3364 ~ OPEND-3375)与 Test gift entry 修复
是什么:API 侧 touchpoint / CMS 运行时决策链路的一轮协同重构:事件凭据校验绑定部署窗口;展示授权改为以 意图:把“不可达服务”降级为“随活动自然到期”,而不是“一次失败的内容消失”,同时降低每次轮询的读取与重写开销。 Author:a1chzt(10 个 commit)、lefarcen(
|
无。 | 有(BASE_API feb5eb7fa 之后):services/api/src/touchpoints/persistence.ts(主改动面)、touchpoints/routes.ts、touchpoints/shared-artifact-store.ts,配套单元测试与真实 PostgreSQL e2e(含新增 test/e2e/touchpoints-restore-lifecycle.test.ts)。 |
无。 | 无。 | 无。 | 无 catalog 变更。 |
|
LWeb 账务界面整合:套餐与余额设计、充值深链与帮助体系
是什么:#94 把订阅套餐与余额/钱包两套界面按统一设计语言整合:新增 面向谁:所有控制台付费用户(个人与团队)的订阅 / 余额 / 充值路径;影响面集中在视图与交互状态,不含计费规则改动。 Author:lefarcen |
有(BASE_WEB 4676d97e1 之后):apps/web — billing-botanical.css、components/subscription/coding-plan/coding-plan-usage-card.tsx、team/credit-surfaces.tsx、team/workspace-b-dashboard-panel.tsx、components/layout/sidebar*.tsx、ui/help-tooltip.tsx、ui/modal.tsx、lib/billing-dashboard-messages.ts、routes/team-dashboard.tsx、routes/api-keys.tsx、routes/team-billing-deep-link.ts。 |
无。 | 无。 | 无。 | 无 schema / migration。 | 无 catalog 变更。 |
|
MModel Routing Catalog:Claude Opus 5.5 / GPT-6 的 TeamRouter 路由基线
是什么:为 生产影响(重要):按 PR 说明,生产基线里 TeamRouter provider 与这三条后端路由保持 Author:Liu Yi |
无。 | 无。 | 无。 | 无。 | 无 schema / migration。 | 有(BASE_CATALOG 816d1de3e 之后,3 个 commit 触及 data/json / db/seeds):
|
|
M旧版客户端模型目录解析:按服务端 active workspace 计算权益
是什么:旧版 Open Design 的 影响面:仅影响模型目录展示的权益计算,不改变实际运行的收费归属;旧客户端下次刷新目录后生效,本地缓存不会被主动清除。 Author:mrcfps |
无。 | 有(BASE_API feb5eb7fa 之后):services/api/src/app.ts、openapi.ts、workspaces/core.ts + 对应测试。 |
有(BASE_LINK 4676d97e1 之后):services/link/internal/membership/client.go(内部兼容标记)+ 测试。 |
无。 | 无 schema / migration。 | 无 catalog 变更。 |
|
MWeb 生产 Campaign 浮层:租约续期与可恢复故障降级
是什么:控制台生产活动浮层(含 gift entry)此前每 30s 轮询成功却先因 用户可见变化:活动未撤销时 gift entry 不再间歇性消失(按作者实测:40s 授权窗口下每 60s 有 20s 缺失;注入 500 / 连接重置会损失约 60s;离线则直接丢失);套餐弹窗不再被促销卡遮挡。与 CMS Touchpoints feature 是同一契约的两端。 Author:lefarcen |
有(BASE_WEB 4676d97e1 之后):apps/web/src/components/production-campaign-float.tsx 及浏览器测试 tests/browser-agent/production-campaign-float.spec.ts。 |
无。 | 无。 | 无。 | 无 schema / migration。 | 无 catalog 变更。 |
|
SWeb 控制台加载态布局稳定
是什么:#100 让控制台在数据加载与切换 workspace 时保持外壳稳定: 影响面:纯前端展示层;含 Author:lefarcen |
有(BASE_WEB 4676d97e1 之后):apps/web/src/components/app-shell.tsx、layout/header.tsx、layout/sidebar.tsx、layout/workspace-shell-shared.tsx、shared/dashboard-loading-skeleton.tsx、ui/matrix-loader.tsx。 |
无。 | 无。 | 无。 | 无 schema / migration。 | 无 catalog 变更。 |
|
SAdmin:用户用量归因拆分与模型审计去重
是什么:#78 把 Admin 用户用量表的“Model / Provider”拆成请求模型、实际路由到的后端模型、实际路由到的供应商三列,并按 request ID 把每个分页 credit usage 行关联到 Link usage event 后解析真实后端模型与 provider(缺 Link 记录则留空,不再回退为可能误导的 provider kind),同步补充中英文标签;#63 让公共模型编辑抽屉逐字段与当前 override 比较后再提交,只对真正变更的字段写审计(此前仅改 Capability 也会连写 Context Budget 审计,仅改 Release Phase 会写 3 条)。 影响面:Admin 运营归因与审计流水准确性;无计费行为、schema 或运行时路由变化。 Author:mrcfps(#78)、Liu Yi(#63) |
无。 | 无。 | 无。 | 有(BASE_ADMIN 0a1243060 之后):apps/admin/app/[locale]/(protected)/users/[userId]/page.tsx、lib/server/admin/core.ts、lib/api/types.ts、i18n(中英)、models/list/edit-public-model-drawer.tsx + 测试。 |
无 schema / migration。 | 无 catalog 变更。 |
|
S发布与数据工具链:Public Pricing 校验、Forgejo 事件链接、热修分支授权、Xiaomi preflight
是什么:(1) #65 Public Pricing 部署校验从硬编码“8 plans / 4 personal”改为共享 Zod schema 校验并重算 catalog revision hash —— Go 套餐恢复后计划数变为 9 / 5,旧校验会让 DB 发布 workflow 与 API smoke 误失败;
(2) #64 全部 Forgejo 部署 / migration workflow 的 APE ops 事件链接从内部容器 URL + 实例级 影响面:仅发布流程、校验脚本与文档;不改变任何维度运行时行为。但 (1) 直接决定本次 DB / Catalog / Public Pricing 与 API smoke 能否通过校验,(2) 决定本次发布事件是否可追溯。 Author:Liu Yi
|
仅注释 / 引用清理:apps/web/src/lib/workspace-dashboard-client.ts 及浏览器测试,无运行时行为变化。 |
有(校验脚本):services/api/scripts/verify-public-pricing.ts、services/api/package.json、test/public-pricing.test.ts,同时覆盖 test API smoke、test DB 发布与 prod Public Pricing 发布。 |
无运行时变更。 | 无。 | 不改 db/migrations;但 deploy-db-migrations-prod.yml 的 workflow 文件本身在本范围内被更新(事件链接修正),从 main dispatch 时生效。 |
不改 data/json / db/seeds;data/scripts/provider_model_preflight.py 与 deploy-model-routing-catalog-prod.yml 的校验路径在本范围内更新,从 main dispatch 时生效。 |
已在生产生效(发布点之前,本次不重复发布)
以下内容均在对应维度生产发布点之前,已在生产运行,本次不重复发布。
- API(BASE_API
feb5eb7fa,2026-09-21 已生效):BASE_API 是服务维度中最旧的 API 变更点,范围内没有先于它的 API 增量。 - Web(BASE_WEB
4676d97e1,2026-09-22 已生效):Public / Cloud 年度定价文案对齐(057e94ed1#34)、跨语言年度节省去重(8e66ae506#40)、Public Pricing 意大利语 / 土耳其语本地化(2c9a01a76#42)及其部署修复(e36d61024#43)。 - Link(BASE_LINK
4676d97e1,2026-09-22 已生效):Grok 4.7 路由接入随 catalog 上线(9061e8872#53)、Xiaomi MiMo 2.6 供应商接入(79839a551#66,Link 侧仅.env.example/ README 与 vendor 测试)。 - Admin(BASE_ADMIN
0a1243060,2026-09-22 已生效):表单对话框改为抽屉(39874964d#47)、页面标题与侧边栏对齐(0c5d08c5e#49)、复杂表格筛选器统一(a801b6ea9#50)、Admin UI 模式回退(5149e3f66#56)、会员额度按美元展示(0a1243060#57)。 - DB migration(BASE_DB
ff912897d,2026-09-20 已生效):已执行的最新一条为20260914115313_account_erasure.sql;范围内没有先于它的 migration 增量。 - Model Routing Catalog(BASE_CATALOG
816d1de3e,2026-09-23T06:15:35Z 已生效,run #2324):Hy4 Aiping 与 Kimi K3 Aliyun 路由(8028e101d#39)、Grok 4.7 路由(9061e8872#53)、MiMo V2.6 Pro / Flash 路由(4676d97e1#55)、18 个归档 public model 退役(de82fb549#48)、AIHubMix 整体下线(5778f53d9#59)、DeepSeek V4.1 Flash 五供应商加权路由(55b1b6e7b#61)、Xiaomi 官方供应商主路由(79839a551#66)、Claude Opus 5.5 上架(5a5a09e86#72)、GPT-6 Sol / Luna 上架(f24fa33fa#73)。 - 范围内已回退(净变更归零,本次不发布):
MiMo-V2.6-Pro-UltraSpeed—472ad6943add(#71)→8fc023f7frevert(#74)。净效果:该 public model / backend model / provider route 及其release_gates、models.json、openrouter_metadata.json、provider_pricing/provider_openrouter.json、public_pricing.json、route_policies.json条目均已回到 #71 之前状态,且已在 2026-09-23 的 catalog 发布中按 revert 后状态 apply,无 migration 被回退。 - 无维度归属的流程 / 文档变更(不进入任何 feature 行,也不改变运行时):
4ab7c7d4a#35、8bab676fc#36、feb5eb7fa#37(三者均为生产发布授权 / CI 收敛)、4fbe5d85c+49955f78e(feature-test 共享评论绑定)、cab31e8e8#58、f7798f8ad#62、816d1de3e#85、61218d8c5#86(specs 文档)。
发布范围提醒:本次群内通知列出的范围是「Go 套餐、Coding Plan、API Key、CMS 修复」。但若按 origin/main HEAD 全量发布,实际会一并上线上表中的 Link 三协议接入、Web 账务界面、Catalog TeamRouter 路由等 11 个 feature —— 即实际发布面大于通知中列举的 4 项。
发布建议
- Migration 判断:需要先跑 migration。BASE_DB
ff912897d之后有 2 个新 migration(16448b777):db/migrations/20260921132204_restore_go_coding_plan.sql、db/migrations/20260922054546_coding_plan_product_isolation.sql。 两者都包含ALTER TABLE … ADD CONSTRAINT/ADD COLUMN NOT NULL DEFAULT与 CHECK 约束重建,属于对既有行有校验要求的变更: 第 2 条新增public.coding_plan_products并把coding_plan_model_entries唯一键从(public_model_id)扩为(public_model_id, coding_plan_audience), 执行前必须确认现网不存在同一public_model_id同时被 personal / team 重复占用的历史行。执行入口:deploy-db-migrations-prod.yml。范围内没有被回退的 migration。 - 服务发布顺序(按依赖,六个维度发布点不同):
- DB migration(
deploy-db-migrations-prod.yml,2 个文件)— 所有写入coding_plan_audience的路径都依赖新列与唯一键。 - Model Routing Catalog(
deploy-model-routing-catalog-prod.yml,3 commits)— 独立于服务发布;TeamRouter 路由在生产保持 inactive,不会改变现网选路,无需额外凭据(TeamRouter 凭据沿用既有 provider 配置)。 - API(
deploy-api-eks-prod.yml,21 commits)— 承载 membership 策略锚点、billing preflight、workspace events、runtime key 拦截与 touchpoints 决策契约。按 #54 / #67 / #69 的明确要求,API 必须先于 Link。 - Link(
deploy-link-eks-prod.yml,11 commits)— 需等会员策略缓存刷新后再发布(#67);新增/v1/messages与 Responses 适配需要在 Web 暴露三协议 Base URL 之前上线。 - Web(
deploy-web-eks-prod.yml,12 commits)| Admin(deploy-admin-eks-prod.yml,5 commits)— 建议在 API + Link 之后;Admin 只带 5 个 commit,其中 #82 需要随 API/Link 一起上线后才做配置动作。
- DB migration(
- 发布后必须人工执行的配置动作(不是代码能覆盖的):
- #82:在 Admin Coding Plan 页把个人 5h 的 Plus / Pro / Max 取消勾选并保存,7d 保持现状;否则 Plus / Pro / Max 仍会被历史 5h 窗口限制和展示。
- 其余「数据 / seed」变更全部由 catalog workflow 的 apply 步骤覆盖,无需额外 runbook;新增的 TeamRouter 路由如要放量必须另行改为 active(不在本次范围)。
- 发布后观测:
- 计费 / 套餐:Coding Plan 请求的
billing_mode(coding_planvspay_as_you_go)分布、额度耗尽后回退钱包的比率、zero_charge_evidence='coding_plan'的记录量;重点看usage_events/credit_usages的 billing-evidence CHECK 是否有写入被拒(约束在本次被重建)。 - 额度窗口:Go 是否返回 5h + 7d、Plus / Pro / Max 是否只返回 7d(验证
coding_plan_audience与 Admin 勾选是否一致);新订阅与升级后的reset_at是否等于订阅创建时间;续费 / 团队席位变化后锚点是否保留。潜在坑:历史订阅若缺少 Stripe 创建时间会暂用本地订阅记录创建时间,发布前应核对“曾替换过订阅”的历史记录。 - 额度事件流:Web
coding-plan-events连接成功率与重连行为、额度卡是否在套餐内用量计入后立即更新(而非等到下一次轮询)。 - 三协议端点:
/v1/messages的 4xx 分布(401authentication_error/ 400invalid_request_error)、anthropic-version校验命中率、Messages 走 Chat 路由转换后的 502 空响应比率、/v1/responses的 499 计数(应下降);注意 Messages 目前只覆盖同步与 SSE 文本 / 工具调用。 - API Key 边界:
403 paid_plan_required的次数(正常应来自优惠期结束用户)、免费用户直达/api-keys是否被正确 replace 到/dashboard、导航置灰 tooltip 是否中英正确。 - 模型目录权益:Team 付费用户用旧版
vela model list(不传 workspace)时是否不再出现 Free 锁;切换 Team 后是否立即生效(该兼容路径不缓存 workspace)。 - CMS / Campaign:
touchpoint_stopped事件频率(应下降)、Web 端 host 节点在无撤销时是否保持稳定挂载、desktop 与 web 同时打开时 Test gift entry 是否互相保持(本次修复点)、410 / 撤回后是否按时清理。 - Catalog:确认
claude-opus-5.5/gpt-6-sol/gpt-6-luna的 TeamRouter 路由在生产仍为inactive,实际流量仍走 OpenRouter / Bedrock / OpenAI 原路由;public_pricing的 plan 数量应为 9(5 personal + 4 team)且 revision hash 匹配。 - Release 流程:APE ops 事件中的 run 链接应指向公开 Forgejo run 页(
run_number),不再是内部容器 URL;从热修分支触发生产 workflow 应被允许。
- 计费 / 套餐:Coding Plan 请求的
备注:本报告所有 workflow、commit、PR 与 compare range 均使用 code.powerformer.net/core/amr 的可点击链接;四个服务的 compare range 基于 EKS Pod 观察到的 BASE,DB migration 与 Catalog 的 compare range 基于各自 Forgejo workflow 的 BASE,未统一使用最旧基线。
证据附录
EKS / Prometheus 观测(Grafana datasource prometheus,namespace nexu)
- Web — Pods:
amr-web-5ffd46c587-gv6kr、amr-web-5ffd46c587-fbks9;image…/amr-web:prod-4676d97e17fb…;digestsha256:379d86f96df5444ca256058b6cb702b67a6376e3fc97b485fc8f603337802079 - Api — Pods:
amr-api-6546769f97-wdlb5、amr-api-6546769f97-g4sv4;image…/amr-api:prod-feb5eb7fa7df…;digestsha256:ce9939f10b5da205dfc354e7d41fb63462eb46d097238edf40c590f10fca7740 - Link — Pods:
amr-link-657cfb7dcc-9qfbf、amr-link-657cfb7dcc-lt7v5;image…/amr-link:prod-4676d97e17fb…;digestsha256:d6d339a87fb3299004f80e96ab827e2b5af643a31dfa2210bdb3e5134a64af80 - Admin — Pods:
amr-admin-6dcff9c56b-k8s6s、amr-admin-6dcff9c56b-7qgpp;image…/amr-admin:prod-0a1243060817…;digestsha256:0139558eec90ff7b2aee7109d5d3cee83a6b317ea0e8ae0ffb8a9a714492dae8
Forgejo workflow 运行记录(基线来源)
deploy-db-migrations-prod.yml最近成功 run #352(id 47209)· 2026-09-20T08:13:07Z · commitff912897ddeploy-model-routing-catalog-prod.yml最近成功 run #2324(id 50292)· 2026-09-23T06:15:35Z · commit816d1de3e- 审计对照(不用于判定当前生产版本):
deploy-web-eks-prod.ymlrun #947 →4676d97e1;deploy-api-eks-prod.ymlrun #385 →feb5eb7fa;deploy-link-eks-prod.ymlrun #948 →4676d97e1;deploy-admin-eks-prod.ymlrun #1324 →0a1243060;deploy-public-pricing-prod.ymlrun #355 →057e94ed1
可见性范围说明:Forgejo Actions 运行列表在本环境可回溯至 2026-09-17T12:01:38Z,最新记录 2026-09-24T02:13:52Z;两个基线 workflow 的最近成功运行均晚于该下限,因此不存在“因为窗口截断而漏掉更新成功记录”的情况。