AMR 生产发布影响报告

生成时间:2026-10-10 09:35Z(Pod 观察时刻 2026-10-10T09:32:37Z);分析对象:从 origin/main(HEAD f1b0d7643)发布 Web、API、Link、Admin、DB migration 与 Model Routing Catalog 的影响分析。注意:Web / API / Link / Admin 以 EKS Pod 实际运行镜像为生产发布点,DB migration 与 Model Routing Catalog 以对应 Forgejo workflow 最近成功运行的 commit_sha 为生产发布点;六个维度分别计算变更范围。

目标 commit:f1b0d76430da51869adf9919637c63c07ec6bbb4(fix(ci): 仅在缺少 main 数据库变更时要求 DB PR 同步 (#232),2026-10-10T09:29:56Z)。

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

Web、API、Link、Admin 的发布点来自 Grafana / Prometheus(datasource UID prometheus,namespace nexu)观察到的 Ready EKS Pod 镜像;DB migration 与 Model Routing Catalog 的发布点来自对应 Forgejo workflow 最近一次成功运行。越新的发布点意味着该维度已上线越多内容,feature 表里只列出发布点之后的变更; 发布点之前的 commit 属于已生效,归入 「已在生产生效」一节,不重复出现在 feature 表。

Web · EKS Pod 实态
Workload:nexu/amr-web · container web
观察时间:2026-10-10T09:32:37Z
Ready Pods:2 / 2(updated 2,available 2)
实际 commit:4c9101650
镜像 digest:sha256:177555286f23dee3b836c66a8ce0fe11950589d469eccf94c899ae31c46bf849
Workflow 审计:deploy-web-eks-prod.yml 最近成功 run #4071 4c9101650;与 Pod:一致
本次新增(4c9101650...f1b0d7643):范围 7 commits,其中 apps/web 1 个
发布点之前已上线:#219 Design Plan 移除 Sol 并加入 Haiku 5.5、#171 Plus 套餐加入 GPT-6 Sol、#169 GPT-6.1 Sol 限时额度提升、#165 MiMo V2.6 Pro、#150 Design Plan 额度/模型/估算同步等
API · EKS Pod 实态
Workload:nexu/amr-api · container api
观察时间:2026-10-10T09:32:37Z
Ready Pods:2 / 2(updated 2,available 2)
实际 commit:3b3ea92c1
镜像 digest:sha256:6599559c5f91bdad4c73298152779034a2938f27d32c74bc8808dee470f0a002
Workflow 审计:deploy-api-eks-prod.yml 最近成功 run #3477 3b3ea92c1;与 Pod:一致
本次新增(3b3ea92c1...f1b0d7643):范围 13 commits,其中 services/api 0 个
发布点之前已上线:#172、#160 workspace billing ledger 查询限界、#134、#132 降低计费预检/快照/鉴权数据库压力等
Link · EKS Pod 实态
Workload:nexu/amr-link · container link
观察时间:2026-10-10T09:32:37Z
Ready Pods:4 / 4(updated 4,available 4)
实际 commit:3b3ea92c1
镜像 digest:sha256:0b5379e4c4f0e360fd5534abda3c2d5ded5b63c52b798be13a50b9357d2b7adf
Workflow 审计:deploy-link-eks-prod.yml 最近成功 run #3476 3b3ea92c1;与 Pod:一致
本次新增(3b3ea92c1...f1b0d7643):范围 13 commits,其中 services/link 3 个
发布点之前已上线:#172 BytePlus 历史与 DeepSeek 兼容、#168 输入限额与上下文溢出错误归一化、#161 provider 请求归一化、#145 BytePlus 兼容集中化、#135/#136 stream_options 与 reasoning summary 处理等
Admin · EKS Pod 实态
Workload:nexu/amr-admin · container admin
观察时间:2026-10-10T09:32:37Z
Ready Pods:2 / 2(updated 2,available 2)
实际 commit:4d9eee278
镜像 digest:sha256:dc8f4af23e8f449a8b71b69a20e9ac67e9ad7bf03abbc456ba578c01dc8b5fd9
Workflow 审计:deploy-admin-eks-prod.yml 最近成功 run #2873 4d9eee278;与 Pod:一致
本次新增(4d9eee278...f1b0d7643):范围 41 commits,其中 apps/admin 7 个
发布点之前已上线:#125 GO 额度遵循 Admin 会员权益配置、#78、#63、#57 会员额度以美元展示、#56 Admin UI 回退、#50 表格筛选统一、#49 页面标题对齐导航等
DB migration · workflow 记录
最近成功:run #3104 · 2026-09-28T11:49:29Z
发布点 commit:a7aa125f3(fix(auth): index account user lookups concurrently (#137))
本次新增(a7aa125f3...f1b0d7643):范围 32 commits,其中触及 db/migrations 1 个
发布点之前已上线:20260928085420_account_user_id_index.sql(#137)、20260924080059/080100_coding_plan_online_*.sql(#54/#118)、20260918000000 系列 GDPR/CMS/Touchpoint 等 migration
Model Routing Catalog · workflow 记录
最近成功:run #3923 · 2026-10-07T22:04:14Z
发布点 commit:f3ab9fccd(feat(catalog): onboard Claude Haiku 5.5 (#209))
本次新增(f3ab9fccd...f1b0d7643):范围 8 commits,其中触及 db/seeds + data/json 1 个
发布点之前已上线:Claude Haiku 5.5(#209)、禁用 BytePlus DeepSeek v4.1 Flash 路由(#205)、GPT-6.1 Sol(#158)、Aiping 路由降级(#157)、恢复 BytePlus DeepSeek/GLM 文本路由(#153)、Claude Sonnet 5.5(#146)、BytePlus 文本路由权重调整(#141/#139)等

审计对照:四个服务的 Forgejo prod 部署 workflow 最近成功记录(4c9101650 / 3b3ea92c1 / 3b3ea92c1 / 4d9eee278)与 EKS Pod 实态 commit 完全一致,未发现 GitOps 手工回滚导致的差异。本次未拉取 GitOps values 仓库(github.com/powerformer/apps 在当前环境不可达),审计结论以 Forgejo workflow 记录 + Pod 实态为准。

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

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

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

Feature / Author / Commits Web API Link Admin DB schema / migration DB catalog(seed)
XLAdmin 模型目录管理(UI + CLI),PostgreSQL 成为目录唯一配置源

运维与 agent 可直接在 Admin 页面或 amr-admin catalog CLI 维护供应商、后端模型、公开模型与路由分层(T1/T2/T3 + 占比 + 联动重分配),不再依赖改 seed SQL 后再跑 workflow。目录配置的 source of truth 从仓库 seed 转为 PostgreSQL;仓库 seed 退化为「仅初始化空目录」,检测到目录已有数据就跳过,避免覆盖 Admin 在线配置。Link 提供候选配置校验、运行时重载与后端模型诊断端点,Admin 提交前用完整候选配置做一次 Link 运行时校验。

依赖:必须先发 Link 再发 Admin,否则 Admin 调用的 /internal/model-routing-catalog/* 端点不存在;目录 workflow 在已填充的库上变为 no-op。

Author:mrcfps、Liu Yi

  • cb6e014f4 feat(admin): manage model catalog via UI and CLI (#159)
  • 5dfcbc41a [codex] feat(admin): add read-only catalog CLI queries (#228)
  • 058335840 fix(admin): allow updates to legacy duplicate backend names (#226)
无。 无 runtime 变更(目录读取经由 Link 内部端点,不经 API)。 新增内部端点:POST /internal/model-routing-catalog/validate(用完整候选目录做运行时校验)、POST /internal/model-routing-catalog/test-backend(隔离运行时诊断后端模型)、POST /internal/model-routing-catalog/reload、POST /internal/model-routing-catalog/backend-model-availability-overrides/apply|clear;新增 repositories.ReadCatalogSnapshot 保证目录快照一致性读;internal_backend_diagnostics.go / internal_catalog_configuration.go / bifrostengine/validate_catalog.go。全部挂在既有 internalTokenAuth 之后,不对外暴露。 模型目录工作台(路由 + 定价 + 提供商合并视图、T1/T2/T3 分层与占比拖拽、锁定/等额分配、inactive 路由淡出划线);角色受限的创建/编辑/软删除 Server Action,含依赖检查、审计记录、revision 冲突保护与 Link 候选配置校验;后端模型诊断测试面板(Chat/Responses/Messages/Embeddings/图像/视频,含异步视频签名续轮询);CLI catalog configure --file 与只读查询(providers/models/backends/routes/snapshot/revision,JSON 输出、脱敏凭据引用)。#226 修复历史重名后端模型无法更新定价/元数据(仅创建时校验重名)。 无 schema / migration 变更。 cb6e014f4:db/seeds/seed-model-routing-catalog.sql 与 seed-model-routing-catalog-test-activation.sql 被包进 DO $catalog_bootstrap$ 块,先对 link.providers/backend_models/public_models/public_model_routes 加 SHARE ROW EXCLUSIVE 锁并检测是否已有数据,已有则 RAISE NOTICE 并跳过;db/seeds/model_routing_catalog.py 描述改为「初始化空目录」,语义为 bootstrap-only。目录内容本身(模型/路由/定价)本列无新增。
LAdmin CLI SSO 登录与 API Token 管理

为 amr-admin CLI 补齐身份体系:支持浏览器 SSO 登录(AMR_ADMIN_PROFILE 区分环境)与长期 API Token(read / write scope、过期时间、可撤销),并在 Admin 新增 /api-tokens 页面管理自己的凭据。凭据以 hash 存库,CLI 侧使用本地会话缓存。

发布含义:本次唯一需要先跑 DB migration 的 feature;表未建时 CLI 登录与 API Token 页面都会失败。

Author:Liu Yi

  • af748c660 feat(admin): CLI SSO 登录与 API Token 管理 (#229)
无。 无。 无。 新增 apps/admin/cli/auth.mjs、apps/admin/lib/server/admin/cli-auth.ts、cli-credentials.ts、app/[locale]/(protected)/api-tokens/ 页面与 features/api-tokens/api-tokens-panel.tsx、导航入口与 en/zh 文案;lib/server/admin/core.ts 与 router.ts 挂载新凭据路由。 新增 af748c660:db/migrations/20261010060924_admin_cli_credentials.sql — 新建 public.admin_cli_credentials(id / member_id FK → admin_members / name / kind∈{sso,api_token} / scope∈{read,write} / secret_hash 唯一索引 / created_at / expires_at / revoked_at),含 member_id 普通索引;db/schema/public.hcl 与 atlas.sum 同步。BASE_DB 之后唯一待执行 migration。 无 catalog 变更。
MLink 媒体与异步任务失败可观测性

修复媒体失败在后续供应商成功后被 failover 覆盖、以及失败的异步视频任务被记为「HTTP 轮询成功」的观测缺口。在 failover 替换 provider 或 error 之前发出有界、带 provider 归因的失败观测;视频 failed / expired / cancelled 即使 HTTP 200 也单独记录;图像重试最终成功时仍保留失败观测。

依赖:需配套 GitOps 侧 Grafana 告警规则(powerformer/apps#587)同时上线,媒体失败告警覆盖才完整;否则只有日志信号、无告警。不改 HTTP usage、计费结算、响应体、路由与重试策略。

Author:mrcfps

  • 23cfe2099 fix(link): observe media attempt and asynchronous task failures (#144)
无。 无。 新增 services/link/internal/handlers/media_observability.go(71 行)及 253 行回归测试;改动 internal_media_image.go、internal_media_video.go、openai.go,覆盖内部/公开图像生成与编辑、视频 create/retrieve、内容下载/transfer;provider 归因失败观测在任何 failover 替换之前发出。 无。 无 schema / migration 变更。 无 catalog 变更。
MWeb Design Plan:DeepSeek V4.1 Flash 额度翻倍

Design Plan 中 DeepSeek V4.1 Flash 的可用量等值翻倍(模型消耗系数 1 → 0.5),同步 Pricing 用量表、套餐卡片与额度说明文案;进度条改为固定非线性刻度(四套餐共用 728,000 次上限,切换套餐不移动刻度)。

仅前端展示:不改后端权益与计费配置,套餐价格、其他模型、7 天 / 5 小时窗口阈值保持不变。

Author:张辉华

  • e80d795a7 fix(pricing): DeepSeek V4.1 Flash Design Plan 额度翻倍 (#222)
apps/web/src/components/commerce/plans/:design-plan.ts(消耗系数与四套餐可用量/最高总额度)、landing-individual-cards.tsx、model-credits-copy.json(多语言)、pricing-design-plan-usage.tsx(固定刻度进度条)、pricing-model-credits.tsx;另更新 2 个 browser-agent 定价用例。 无 runtime 变更。 无。 无。 无 schema / migration 变更。 无 catalog 变更(模型目录与定价 seed 不在本 feature 内)。
MAdmin UI 恢复:右侧抽屉、标题对齐与统一筛选栏

恢复此前 #56 撤销的 Admin UI 优化:复杂表单改用右侧抽屉(#47)、页面标题与侧边导航一致并精简说明(#49)、用户 / 成员 / 订单 / 退款 / 风控使用统一带标签筛选栏(#50)。确认操作仍用弹窗;本次额外修复历史恢复抽屉 Escape 后焦点丢失的回归。

Author:Liu Yi

  • 724488f4b feat(admin): restore drawers, navigation titles and query filters (#188)
无。 无。 无。 展示层改动:components/ui/query-filter-bar.tsx 新增;订单 / 退款管理 / 风控 / 用户 / 工作区 / 巡检页面、会员等级与模型规则/折扣弹窗、Touchpoint 活动管理器、历史恢复表单改为抽屉与统一筛选;i18n 文案与测试同步。未改 Server Action、API handler、repository、权限规则与数据库 schema。 无 schema / migration 变更。 无 catalog 变更。
SLink:DeepSeek Chat 的 developer role 归一化

DeepSeek 的直接 Chat 请求携带 role=developer 时,Link 原样转发会被真实上游以 HTTP 422 拒绝。修复在供应商适配边界:provider_deepseek + Chat 上游把 developer 逐条转为 system,保留正文与顺序,不合并、不丢内容。影响公共模型 deepseek-v4.1-flash(backend deepseek-flash,供应商 api.deepseek.com)的直连 Chat(含流式)。

Author:Liu Yi

  • f80c686e0 fix(link): normalize developer roles for DeepSeek Chat (#230)
无。 无。 services/link/internal/ providercompat adapter 边界角色转换(3 个文件,含真实供应商 red→green 测试 TestDeepSeekDeveloperRoleLive 与作用域回归 TestChatDeveloperRoleProviderScope);仅作用于 DeepSeek Chat 上游,其他供应商与原 Responses 上游角色语义不变。 无。 无 schema / migration 变更。 无 catalog 变更。
SAdmin 公开模型状态 API 与发布相位幂等化(引入后已回滚,净变更为零)

#127 曾新增无会话可读的 GET /api/public/v1/models、查询实现、测试与文档,并让发布相位不变时不再更新 updated_at。#193 基于最新 main 完整 revert,移除该 API 并恢复原有发布相位 / release gate 更新行为。两者都在 Admin 发布点之后,但净 diff 为零。

发布含义:无需为它做任何发布动作;无数据库迁移被引入或回退,无需特殊处理。

Author:Liu Yi

  • 0dc3fc2fb feat(admin): expose public model status API (#127) → ed2fdcd97 revert(admin): rollback public model status API and release phase idempotency (#193)
无。 无。 无。 净零:app/api/public/v1/models/route.ts、lib/server/public-model-status.ts 及相关测试/README 已移除;lib/server/admin/core.ts、models.ts 恢复原行为。 无 schema / migration 变更(#193 明确无需迁移)。 无 catalog 变更。

范围外说明:f1b0d7643 fix(ci): 仅在缺少 main 数据库变更时要求 DB PR 同步(#232,Liu Yi)只改 DB PR 同步门禁逻辑,不进入任何维度列,也不影响任一运行时。

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

以下 commit 均在对应生产发布点之前,已在生产运行。四个服务以 EKS Pod 实态为基线,DB migration 与 Catalog 以 workflow 记录为基线;从 main 重新发布时只分析各自基线之后的净新增。

发布建议

  1. Migration 判断:BASE_DB(a7aa125f3)之后新增 1 个 migration —— db/migrations/20261010060924_admin_cli_credentials.sql(af748c660,#229),并同步了 atlas.sum 与 db/schema/public.hcl。需要先运行 deploy-db-migrations-prod.yml。范围内没有被回退的 migration。
  2. 服务发布顺序(按依赖):
    DB migrations(1 个 migration)→ Link(3 个 commit,含 #159 的内部目录端点与 #144/#230)→ Admin(7 个 commit,#159 依赖 Link 先上线)→ Web(1 个 commit,#222)→ Catalog(1 个 seed 相关 commit,#159 bootstrap-only 保护,在已填充的库上为 no-op)。
    API 本维度无新增 commit(BASE 之后 services/api 零改动),可不发布;若要与其他服务对齐版本,发布也不会带来行为变化。
  3. 数据 seed / catalog 判断:本次 catalog 变更只有 #159 的 bootstrap-only 保护,由 deploy-model-routing-catalog-prod.yml 的 apply 步骤覆盖即可;生产目录已初始化,执行结果会是「skipped / 保留 Admin 配置」,不需要额外 runbook,也不会覆盖线上目录。
  4. 发布后观测:
    • DB:确认 public.admin_cli_credentials 表与三个索引存在,atlas.sum 校验通过。
    • Admin:SSO 登录与 API Token 创建/撤销可用;模型目录工作台能读改供应商/后端模型/公开模型/路由;提交后 Link refresh 状态为成功(失败时 UI 会提示 pending refresh)。
    • Link:POST /internal/model-routing-catalog/validate、/test-backend、/reload 返回正常且受 internal token 保护;观察目录 reload 是否有错误。
    • 供应商链路:对公共模型 deepseek-v4.1-flash 的直连 Chat(流式与非流式)不再出现 422(developer role)。
    • 可观测性:媒体失败观测日志(provider 归因)出现且被 APE/Grafana 告警规则命中(需 powerformer/apps#587 已上线)。
    • Web:Design Plan 用量表与卡片显示 DeepSeek V4.1 Flash 翻倍额度,四套餐进度条刻度固定(切换套餐不移动),多语言文案与官网一致。

备注:本报告所有 workflow、commit、PR 与 compare range 均指向 Forgejo code.powerformer.net/core/amr,workflow 链接指向可触发的 workflow 页面。四个服务的 compare range 基于 EKS Pod 观察到的 BASE(4c9101650 / 3b3ea92c1 / 3b3ea92c1 / 4d9eee278),DB migration 与 Catalog 的 compare range 基于各自 workflow 的 BASE(a7aa125f3 / f3ab9fccd),未使用统一最旧基线。

数据来源:Grafana prometheus datasource(kube-state-metrics,namespace nexu),观察时刻 2026-10-10T09:32:37Z~09:32:42Z;Forgejo Actions runs API(/repos/core/amr/actions/runs)。