# 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,没有 failover,trace 正确标记 `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。