Consult, rectification turns, and report generation stop before a credit reservation when the product caps are hit. A full heavy-compute gate waits up to 8 seconds, and one consultation retries that 429 inside the same request. Co-Authored-By: Grok (agent loop)
4.1 KiB
4.1 KiB
进度 · 内测容量(2026-10-15)
- 分支:
codex/beta-capacity-20261014 - 基线:开工时
origin/stagingef49257b734678ff944a840076347baa02d0323c - 任务书:
docs/tasks/TASK-beta-capacity-20261014.md - 前置:
origin/codex/node-runtime-resources-20261013与origin/codex/rect-scoring-perf-20261013都是该 staging 的祖先(merge-base --is-ancestor退出码 0)。限流文件里已有过期清理。
做了什么
- T1:对话 10 次/分钟 + 120 次/小时,校正回合 5 次/分钟 + 40 次/小时,报告 3 次/小时(每天 5 份不变)。拒绝发生在预留点数之前,429 +
rate_limited+Retry-After。开案路由不计数。 - T2:重计算并发仍是 2。满了最多等 8 秒,同时等待最多 4 个;等不到或等待已满仍是 429,
Retry-After不变。对话对这种 429 最多再试 2 次,等待合计不超过 15 秒。进度行「人有点多,排一下队」,失败句「人有点多,这一轮没排上,点数已经退回。」退点仍走原来的取消预留,代理路径用已有的一次结算。 - T3:后台已能批量生成(1–100 个、每码点数自填、初始 10)、按兑换账户查看、撤销未使用的码。说明在
docs/operations/beta-invite-codes.md。没有扩功能。 - T4:脚本
frontend/scripts/research/beta-load-smoke.mts。不从frontend/tests导入。本机没有跑。 - T5:BUG-1355、BUG-1356,CHANGELOG、VOICE、DESIGN、真机两条。
断言
旧测试仍要求「名额被占着就拒绝」,没有改拒绝码和 Retry-After 的期望值。
| 位置 | 原值 | 新值 | 原因 |
|---|---|---|---|
tests/test_api_heavy_compute_gate.py 立刻拒绝的夹具和单测 |
reset() / reset(limit=1, retry_after_seconds=3) |
增加 wait_seconds=0 |
默认改为最多等 8 秒。这些测试继续锁 429 和 Retry-After,排队另有新测试 |
tests/test_api_chart_subprocess_gate.py 两处占着名额再请求 |
reset(limit=1) |
reset(limit=1, wait_seconds=0) |
同上。仍锁同步排盘被拒绝、日志不出现请求正文 |
偏离与环境缺口
- T0:仓库文档里的目标规格,staging 与生产都是 2 vCPU / 4 GB,代码默认并发 2。这台 Windows 没有 staging 的登录壳,没有采到机器上的实际核数、内存和
JYOTISH_HEAVY_COMPUTE_CONCURRENCY。不能把文档规格当成已经登主机核对过。 - T4:没有
STAGING_TEST_OTP,没有对 staging 或生产发压测。改前、改后的并发数字都没有。服务器 CPU / 内存同样没有采样。脚本留给验收方在有测试验证码的环境重跑。20 并发档没有跑。 - 旧版对话(不走代理运行时)会重试,但进度行要等回答流开始才有,所以那条路径等待时看不到「排一下队」。现在的对话走代理运行时,进度行会换字。任务书允许把排队文案收成只多等。
- 没有改数据库,没跑
test:db。没有跑前端全量npm test,没有跑 Python 快速门。 deploy/README.md有一句仍写「满了不排队」。改成了最多等 8 秒、等待不超过 4 个,避免操作说明和代码相反。没有改部署配置。
自测
| 检查 | 命令 | 结果数字 |
|---|---|---|
| Python 闸门 | .venv\Scripts\python.exe -m pytest tests/test_api_heavy_compute_gate.py tests/test_api_chart_subprocess_gate.py -q |
17 通过(8 + 9),0 失败 |
| 前端相关测试 | node node_modules/tsx/dist/cli.mjs --test tests/request-rate-limit.test.ts tests/consultation-workflow-retry.test.ts tests/personal-report-api.test.ts tests/runtime-sources-no-test-imports.test.ts |
76 通过,0 失败 |
| 类型 | frontend\node_modules\.bin\tsc --noEmit -p . |
退出码 0 |
| 前端 lint | npm run lint |
0 错误,123 条原有警告 |
| 压测 | 未执行 frontend/scripts/research/beta-load-smoke.mts |
本机没有 STAGING_TEST_OTP。没有改前/改后并发数字,没有服务器 CPU/内存 |
没有改数据库,没跑 test:db。没有跑前端全量 npm test,没有跑 Python 快速门。