修复AGC大上下文请求体限制 #295

Merged
kdletters merged 2 commits from fix/llm-body-limit into master 2026-09-07 17:05:43 +08:00
Member

背景与问题

AGC(AI 游戏创作智能体 App)Direct Codex 模式在携带图片工具结果等大上下文调用 LLM 时,/api/llm/responses/api/llm/chat/completions 会命中 Axum 默认 2 MiB 请求体上限,直接被 413 拒绝,大上下文任务无法执行;同时 Codex app-server 的 failed turn 未把上游 413 映射为稳定错误分类,前端只能显示笼统的“其他错误”,无法引导用户处理。

改动内容

1. api-server(server-rs)

  • 新增常量 LLM_REQUEST_MAX_BODY_BYTES = 32 MiB,作为两个 LLM 代理路由的正式请求体上限;
  • 两个路由显式配置 DefaultBodyLimit::max(32 MiB),避免 Axum 默认 2 MiB 提前拒绝;handler 内保留超限检查,超过 32 MiB 仍返回 413 PAYLOAD_TOO_LARGE
  • 补充回归测试:>2 MiB 大上下文请求不再命中默认限制;超过 32 MiB 仍返回 413。

2. AGC 壳(apps/ai-game-creator-shell)

  • codex_app_server 错误映射:上游/连接层 HTTP 413、PAYLOAD_TOO_LARGEprovider request too large 等统一映射为稳定分类 codex-app-server-error:request-too-large,不再落入 other 或误判为权限/安全策略错误;
  • 前端新增用户可见文案“模型请求体过大,请减少参考图或上下文后重试”,并补充单测断言。

3. 文档

  • 【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md 补充“2026-09-06 AGC LLM 代理请求体合同”:明确 32 MiB 上限、必须显式配置 DefaultBodyLimit、413 映射规则与用户文案。

验证

  • cargo test -p api-server llm_routes_accept_large_context_bodies_beyond_axum_default 通过
  • cargo test -p api-server llm_responses_rejects_bodies_above_explicit_limit 通过
  • cargo test ... ai-game-creator-shell ... codex_app_server_failed_turn_maps_request_too_large_details 通过
  • npm run test -- apps/ai-game-creator-shell/tests/agentRuntimeModel.test.ts(27 通过)

全量 workspace 测试与 CI 门禁待推送后由 CI 覆盖。

## 背景与问题 AGC(AI 游戏创作智能体 App)Direct Codex 模式在携带图片工具结果等大上下文调用 LLM 时,`/api/llm/responses` 与 `/api/llm/chat/completions` 会命中 Axum 默认 **2 MiB** 请求体上限,直接被 413 拒绝,大上下文任务无法执行;同时 Codex app-server 的 failed turn 未把上游 413 映射为稳定错误分类,前端只能显示笼统的“其他错误”,无法引导用户处理。 ## 改动内容 **1. api-server(server-rs)** - 新增常量 `LLM_REQUEST_MAX_BODY_BYTES = 32 MiB`,作为两个 LLM 代理路由的正式请求体上限; - 两个路由显式配置 `DefaultBodyLimit::max(32 MiB)`,避免 Axum 默认 2 MiB 提前拒绝;handler 内保留超限检查,超过 32 MiB 仍返回 `413 PAYLOAD_TOO_LARGE`; - 补充回归测试:>2 MiB 大上下文请求不再命中默认限制;超过 32 MiB 仍返回 413。 **2. AGC 壳(apps/ai-game-creator-shell)** - `codex_app_server` 错误映射:上游/连接层 HTTP 413、`PAYLOAD_TOO_LARGE`、`provider request too large` 等统一映射为稳定分类 `codex-app-server-error:request-too-large`,不再落入 `other` 或误判为权限/安全策略错误; - 前端新增用户可见文案“模型请求体过大,请减少参考图或上下文后重试”,并补充单测断言。 **3. 文档** - 【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md 补充“2026-09-06 AGC LLM 代理请求体合同”:明确 32 MiB 上限、必须显式配置 `DefaultBodyLimit`、413 映射规则与用户文案。 ## 验证 - `cargo test -p api-server llm_routes_accept_large_context_bodies_beyond_axum_default` 通过 - `cargo test -p api-server llm_responses_rejects_bodies_above_explicit_limit` 通过 - `cargo test ... ai-game-creator-shell ... codex_app_server_failed_turn_maps_request_too_large_details` 通过 - `npm run test -- apps/ai-game-creator-shell/tests/agentRuntimeModel.test.ts`(27 通过) 全量 workspace 测试与 CI 门禁待推送后由 CI 覆盖。
suzmii added 1 commit 2026-09-07 11:14:47 +08:00
修复AGC大上下文请求体限制
Project CI / Frontend tests (pull_request) Successful in 3m55s
Project CI / Repository checks (pull_request) Successful in 4m2s
Project CI / Backend tests (pull_request) Successful in 14m59s
Project CI / Native shell tests (pull_request) Successful in 18m52s
1aac66d159
为LLM Responses与Chat路由显式启用32MiB请求体限制

将Codex上游413映射为request-too-large稳定分类

补充大请求体与错误文案回归测试和架构文档
suzmii self-assigned this 2026-09-07 15:13:02 +08:00
suzmii requested review from kdletters 2026-09-07 15:47:41 +08:00
suzmii added 1 commit 2026-09-07 15:47:50 +08:00
Merge branch 'master' into fix/llm-body-limit
Project CI / Frontend tests (pull_request) Successful in 2m47s
Project CI / Repository checks (pull_request) Successful in 2m15s
Project CI / Backend tests (pull_request) Successful in 6m16s
Project CI / Native shell tests (pull_request) Successful in 20m43s
7929e4d881
kdletters approved these changes 2026-09-07 17:00:40 +08:00
kdletters left a comment
Member

当前提交代码审查通过,未发现需要修改的问题。

已在该提交完成以下定向验证:

  • api-server:两个 LLM 路由接受超过 Axum 默认 2 MiB 的请求体,通过。
  • api-server:Responses 请求体超过显式 32 MiB 上限返回 413,通过。
  • 原生壳:codex_app_server_failed_turn 错误映射 5 项测试通过,覆盖 HTTP 413 与文本详情分类。
  • 前端:agentRuntimeModel 27 项测试通过。

远端 4 项 CI 仍为 Waiting to run,合并前请等待门禁通过。

当前提交代码审查通过,未发现需要修改的问题。 已在该提交完成以下定向验证: - api-server:两个 LLM 路由接受超过 Axum 默认 2 MiB 的请求体,通过。 - api-server:Responses 请求体超过显式 32 MiB 上限返回 413,通过。 - 原生壳:codex_app_server_failed_turn 错误映射 5 项测试通过,覆盖 HTTP 413 与文本详情分类。 - 前端:agentRuntimeModel 27 项测试通过。 远端 4 项 CI 仍为 Waiting to run,合并前请等待门禁通过。
kdletters merged commit e15e3b455f into master 2026-09-07 17:05:43 +08:00
kdletters deleted branch fix/llm-body-limit 2026-09-07 17:05:43 +08:00
Sign in to join this conversation.