Files
pikasTech-unidesk/docs/MDTODO/details/sub2api-upstream-reliability/R2.1_Task_Report.md
T

4.5 KiB
Raw Blame History

R2.1 任务报告

目标

增强 UniDesk Sub2API CLI,优先使用 Sub2API 原生 admin/ops 运维能力诊断全池错误、账号状态、并发和单请求链路,运行日志只补原生索引未提供的策略事件。

官方能力依据

对照 Wei-Shaw/sub2api 官方仓库提交 5d1c577cb2c735ca1f1d57533dff1302f6998d91,确认可复用接口:

  • /api/v1/admin/ops/dashboard/overview:请求总数、客户可见错误、错误率、上游错误率、健康分。
  • /api/v1/admin/ops/upstream-errors:账号级上游错误、状态码、request id 和详情。
  • /api/v1/admin/ops/account-availability:账号可用、限流、过载和错误状态。
  • /api/v1/admin/ops/concurrency:平台、组和账号并发占用、容量与排队。
  • /api/v1/admin/ops/requests:成功与错误请求的统一 request-id 视图。
  • /api/v1/admin/ops/system-logs/health:索引日志和 sink 健康状态。

CLI 改进

  • runtime errors 增加 nativeOps,使用 overview 的完整请求分母计算客户可见错误率,避免把错误记录数当错误率。
  • 增加原生账号可用性、组并发、排队和 system-log sink 丢弃/写入失败状态。
  • Ops 上游错误改为所有选中账号主动查询,不再要求容器日志先出现对应事件。
  • policyEffectiveness 关联临时不可调度、failover、选号失败、forward_failed 和最终结果;仅按 request id 关联并披露缺失覆盖率。
  • 原生 system-log 索引没有策略事件而 overview 存在上游错误时,自动回退 target runtime 日志补事件,并披露 fallback 原因、数量和原生索引计数。
  • 全池默认只输出主因排名,账号详情通过 --account 下钻;全池和单账号默认输出均保持在 CLI 预算内,--full 保留完整分布。
  • trace 改为 /ops/requests/ops/system-logs 优先,target runtime 日志只补邻近上下文。
  • 修复 PK01 trace 固定读取 k3s Deployment、Docker stderr 业务日志遗漏和原生事件倒序问题。
  • forward_failed 与 HTTP 200 并存且没有 failover 时,trace 标记为 degraded,不再误报普通成功。
  • 修正 No available channel for model 根因分类和所有 Ops 错误被描述为 HTTP 500 的误导文案。

现场验证

  • 10 分钟原生 overview 样本曾观测 165 个请求、2 个客户可见错误,错误率 1.21%,上游错误率 3.03%;后续窗口为 189 个请求、1 个客户可见错误,错误率 0.53%,上游错误率 2.65%。这些是滚动窗口快照,不代表长期趋势。
  • 原生 concurrency 显示组容量 218,现场占用约 9 至 10,无排队;全池错误不能归因于 Sub2API 组并发耗尽。
  • 原生 availability 显示账号 29、30 因 403 Insufficient account balance 处于 error;账号 27 在短时冷却窗口可能暂不可用。
  • 策略事件样本显示临时不可调度和 failover 均实际发生;部分切号成功,仍存在切号后失败、结果缺失和 forward_failed + HTTP 200
  • request 03a94444-ff26-4038-b1b9-67e249ce7f59:账号 33 返回 524 后切到账号 31,账号 31 返回 502,随后 account-select-failed/context canceled,最终客户状态 502。
  • request 55d32c6a-09ae-46ac-9a34-3f63934e7f62:账号 31 出现并发错误但 HTTP 200,没有 failovertrace 正确标记 degraded
  • 账号 31 的 10 分钟 Ops 记录同时包含 429 rate-limit 和明确 concurrency 文案;当前并发快照不能替代错误发生时并发,后续只能通过受控对比判断是否需要调整账号并发。
  • 原生 system-log sink 健康,无 dropped/write failed;但策略事件查询为零,当前需要 runtime 事件 fallback。

验证命令

  • bun --check scripts/src/platform-infra-sub2api-codex/runtime.ts
  • bun --check scripts/src/platform-infra-sub2api-codex/remote-python-sync.ts
  • bun --check scripts/src/platform-infra-sub2api-codex/render.ts
  • bun scripts/cli.ts platform-infra sub2api codex-pool runtime errors --target PK01 --since 10m
  • bun scripts/cli.ts platform-infra sub2api codex-pool runtime errors --target PK01 --since 10m --account 31
  • bun scripts/cli.ts platform-infra sub2api codex-pool trace --target PK01 --request-id 03a94444-ff26-4038-b1b9-67e249ce7f59
  • git diff --check

后续

  • R2.2 持续观察新窗口,区分客户可见错误率、上游错误率、成功 failover 和流式 degraded。
  • R2.3 调查原生 system-log 索引为何未保留策略事件,并优先推动 Sub2API 原生能力覆盖,减少 runtime 日志 fallback。