Commit Graph

3119 Commits

Author SHA1 Message Date
k88936 bfd6bb76cb Merge branch 'master' into feat/agc-codex-native-tool-call-info
Project CI / Repository checks (pull_request) Failing after 1m56s
Project CI / Frontend tests (pull_request) Failing after 1m40s
Project CI / Native shell tests (pull_request) Failing after 5m5s
Project CI / Backend tests (pull_request) Successful in 7m4s
2026-09-07 17:26:49 +08:00
suzmii e15e3b455f 修复AGC大上下文请求体限制 (#295)
Project CI / Repository checks (push) Successful in 3m12s
Project CI / Frontend tests (push) Successful in 3m21s
Project CI / Backend tests (push) Successful in 7m42s
Project CI / Native shell tests (push) Successful in 20m14s
Project CI / Frontend tests (pull_request) Successful in 50m43s
Project CI / Repository checks (pull_request) Successful in 20m21s
Project CI / Backend tests (pull_request) Successful in 6m18s
Project CI / Native shell tests (pull_request) Successful in 18m19s
## 背景与问题

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 覆盖。

Reviewed-on: #295
Reviewed-by: 段舒康 <kdletters@qq.com>
Co-authored-by: 董羽秦 <suzmii@qq.com>
Co-committed-by: 董羽秦 <suzmii@qq.com>
2026-09-07 17:05:42 +08:00
k88936 dee508c9c1 合并模型目录与DirectProject运行时变更
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
合并 AGC 模型目录、LLM 计费与平台会话链路。

保留 DirectProject 原始事件历史持久化、用户消息预写和增量 itemId 语义。

保留安全活动状态、中间进度文本和受控工具边界。
2026-09-07 16:33:40 +08:00
k88936 928fc6ffbc 实现 DirectProject 用户消息预写与回显过滤
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
在 turn/start 前幂等写入 AGC 规范化 user item

过滤 Codex userMessage 与 raw role=user 回显,保留 assistant/tool/partial 落盘

补充用户消息来源隔离回归测试
2026-09-07 15:41:04 +08:00
k88936 ef64d2fa52 明确 DirectProject 用户消息持久化来源
规定 AGC 在 turn/start 前幂等预写规范化 user item

规定 Codex user echo 只做观察与关联,不再追加历史

记录本地 user 写入入口与 Codex echo 过滤入口必须分离
2026-09-07 15:40:21 +08:00
k88936 964290c641 优化错误报告 (#286)
Project CI / Native shell tests (push) Successful in 21m3s
Project CI / Repository checks (push) Successful in 2m37s
Project CI / Frontend tests (push) Successful in 2m41s
Project CI / Backend tests (push) Successful in 7m2s
样式

before:
![shotmd-1788605870.jpg](/attachments/0470de00-944f-466e-a339-cf9e6cc0b780)
![shotmd-1788605755.jpg](/attachments/3e7be68e-31c5-41ba-9f8b-6dc98ec08868)

after:
![shotmd-1788607435.jpg](/attachments/165c878e-5c1c-4517-b7d5-74ce97a1a99b)
![shotmd-1788608364.jpg](/attachments/4dd20baf-879c-4aa8-ab51-bcc588d48dbc)

逻辑:
每次打开报告modal会再次查询队列中的错误
<video src="attachments/6d9d9bd7-5b7b-4a05-a7c3-ca64b6fb77f3" title="2026-09-05 19-46-02.mp4" controls></video>

---------

Co-authored-by: 段舒康 <kdletters@qq.com>
Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/286
Reviewed-by: 段舒康 <kdletters@qq.com>
Co-authored-by: 王德宇 <kvtodev@outlook.com>
Co-committed-by: 王德宇 <kvtodev@outlook.com>
2026-09-07 15:17:21 +08:00
k88936 908541f639 完善 DirectProject 上下文标签过滤
覆盖 Codex 内部与外部上下文包裹格式

保持普通用户文本的完整标签引用可见
2026-09-07 11:35:19 +08:00
k88936 3ef3e40383 传递 DirectProject 回合用户标识
向 turn/start 发送稳定 clientUserMessageId

补充项目模式协议参数回归断言
2026-09-07 11:28:21 +08:00
k88936 330605e682 补充 DirectProject 尾行修复测试
覆盖幂等扫描遇到未完成 JSONL 尾行的追加路径
2026-09-07 11:25:12 +08:00
k88936 06911e6f27 同步 DirectProject 历史恢复约定
记录上下文用户消息过滤与坏线程淘汰规则

明确 clientUserMessageId 不提供回合级 exactly-once
2026-09-07 11:11:48 +08:00
k88936 b6d6476459 修复 DirectProject 历史与线程初始化
尾行损坏时先允许底层 JSONL 追加逻辑修复

历史注入失败时淘汰未完成初始化的 Codex thread

turn/start 传递稳定 clientUserMessageId
2026-09-07 11:05:33 +08:00
k88936 0b0d48d9b4 过滤 DirectProject 上下文用户消息
识别 Codex 环境与上下文标签形式的 user item

补充无 passthrough 元数据的回归测试
2026-09-07 10:51:34 +08:00
lhk229 60fbee2353 修复设置页重新出现连接与工具 (#287)
Project CI / Repository checks (pull_request) Failing after 10s
Project CI / Frontend tests (pull_request) Successful in 3m3s
Project CI / Backend tests (pull_request) Failing after 26s
Project CI / Native shell tests (pull_request) Successful in 20m54s
Project CI / Repository checks (push) Successful in 4m37s
Project CI / Frontend tests (push) Successful in 5m31s
Project CI / Backend tests (push) Successful in 8m38s
Project CI / Native shell tests (push) Successful in 20m0s
移除运行时配置中的连接与工具入口及 External Editor 字段

更新 AppSurface 回归断言,确保普通客户端不展示该入口

Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/287
Reviewed-by: 段舒康 <kdletters@qq.com>
Co-authored-by: Linghong <ink29535@proton.me>
Co-committed-by: Linghong <ink29535@proton.me>
2026-09-06 19:47:33 +08:00
kdletters 2975062c69 Merge pull request 'AGC 官方 LLM Router 账号链路与流式联网输出' (#242) from feat/agc-llm-router-official-chain into master
Project CI / Repository checks (push) Successful in 3m22s
Project CI / Frontend tests (push) Successful in 3m16s
Project CI / Backend tests (push) Successful in 6m29s
Project CI / Native shell tests (push) Successful in 18m25s
Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/242
2026-09-06 16:49:13 +08:00
suzmii 6166094a3c 修复AGC配置测试字段
Project CI / Repository checks (pull_request) Successful in 2m46s
Project CI / Frontend tests (pull_request) Successful in 2m55s
Project CI / Backend tests (pull_request) Successful in 7m6s
Project CI / Native shell tests (pull_request) Successful in 18m3s
同步配置测试夹具使用 selected_model_id

移除已删除的 model_profiles 与 selected_model_profile_id 字段
2026-09-06 01:16:48 +08:00
suzmii 736a1b6ac6 接入 LLM Router 累计额度结算
Project CI / Repository checks (pull_request) Successful in 2m36s
Project CI / Frontend tests (pull_request) Successful in 3m15s
Project CI / Backend tests (pull_request) Successful in 7m35s
Project CI / Native shell tests (pull_request) Failing after 7m43s
按 Router used_quota 累计值与首次基线结算泥点
新增原子 checkpoint 事务及 llm_router_consume 钱包流水
同步额度查询校验、前端展示、生成绑定和技术文档
2026-09-06 00:36:31 +08:00
suzmii 78f547d26d Merge remote-tracking branch 'origin/master' into feat/agc-llm-router-official-chain
Project CI / Repository checks (pull_request) Successful in 2m38s
Project CI / Frontend tests (pull_request) Successful in 3m46s
Project CI / Backend tests (pull_request) Successful in 6m35s
Project CI / Native shell tests (pull_request) Failing after 8m14s
# Conflicts:
#	apps/ai-game-creator-shell/tests/appSurface/runtime-settings.suite.ts
2026-09-05 20:08:43 +08:00
suzmii 0b9fb40108 Merge remote-tracking branch 'origin/master' into feat/agc-llm-router-official-chain
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
# Conflicts:
#	apps/ai-game-creator-shell/scripts/check-config.mjs
#	apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx
#	apps/ai-game-creator-shell/tests/appSurface/runtime-settings.suite.ts
2026-09-05 20:03:25 +08:00
kdletters c4f344678f 收窄设置页删除改动
Project CI / Repository checks (push) Successful in 2m36s
Project CI / Frontend tests (push) Successful in 3m4s
Project CI / Backend tests (push) Successful in 8m42s
Project CI / Native shell tests (push) Successful in 20m38s
移除多余的页面回归门禁
清理已删除入口的冗余测试断言
2026-09-05 20:01:02 +08:00
suzmii 34e3f70409 补充服务启动配置校验并优化模型菜单
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
启动时校验 LLM Router 地址、模型和相关密钥配置

将刷新操作移入模型展开菜单并修复菜单样式覆盖

更新启动运维文档与定向测试
2026-09-05 19:48:27 +08:00
k88936 86d74033c0 Merge branch 'master' into feat/agc-codex-native-tool-call-info
Project CI / Repository checks (pull_request) Successful in 3m4s
Project CI / Frontend tests (pull_request) Successful in 4m11s
Project CI / Backend tests (pull_request) Successful in 7m18s
Project CI / Native shell tests (pull_request) Successful in 21m23s
2026-09-05 19:45:18 +08:00
k88936 d1f080478e 修复 DirectProject 对话权限与原生命令门禁
Project CI / Backend tests (pull_request) Failing after 15s
Project CI / Repository checks (pull_request) Failing after 15s
Project CI / Frontend tests (pull_request) Successful in 2m46s
Project CI / Native shell tests (pull_request) Successful in 18m19s
补充 DirectProject 原生对话读写命令的 native-only 白名单

复用项目级 DirectProject 写权限检查,避免连续回合重复读取策略

更新 AppSurface 测试以覆盖 Rust 负责历史持久化的直连语义
2026-09-05 19:25:20 +08:00
suzmii 4f3f0f24ff 接入AGC后台模型目录与对话模型选择
新增后台 AGC 模型目录、别名、启停和默认项管理

客户端设置页恢复原状,对话框右下角按别名选择模型

服务端按稳定模型标识映射并校验实际模型白名单

修复 AGC 配套后端端口漂移、启动等待和 SpacetimeDB 版本检查

补充迁移、文档、启动与模型选择测试
2026-09-05 19:10:49 +08:00
kdletters 524e2f0f4f 删除连接与工具设置页
Project CI / Repository checks (push) Successful in 2m34s
Project CI / Frontend tests (push) Successful in 3m3s
Project CI / Backend tests (push) Successful in 6m53s
Project CI / Native shell tests (push) Successful in 17m53s
移除运行设置中的连接与工具导航及页面内容
更新运行设置测试以校验该入口已删除
同步配置门禁,防止已删除页面重新出现
2026-09-05 17:39:05 +08:00
k88936 29ab89768c Merge branch 'master' into feat/agc-codex-native-tool-call-info
Project CI / Native shell tests (pull_request) Failing after 31m38s
Project CI / Repository checks (pull_request) Failing after 34m24s
Project CI / Frontend tests (pull_request) Failing after 34m25s
Project CI / Backend tests (pull_request) Successful in 54m13s
2026-09-05 13:42:50 +08:00
k88936 1a08df517f 让 Direct 对话遵守项目写入确认
Project CI / Backend tests (pull_request) Failing after 15s
Project CI / Repository checks (pull_request) Failing after 15s
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Direct 回合启动前检查 conversation.write 策略

确认后复用同一 clientTurnId 重试,拒绝则不启动回合
2026-09-05 13:30:57 +08:00
k88936 38d3789f29 说明 Direct 对话消息持久化边界
标注 messages 仅是乐观界面投影

说明 Direct 历史由 Rust 原始响应负责写入
2026-09-05 13:06:59 +08:00
k88936 1f2e9ed87a 同步 DirectProject 原始历史约定
记录当前不预写用户消息的实现边界

补充缺失 itemId 的回退累积规则
2026-09-05 12:04:03 +08:00
k88936 15a906931b 保留缺少 itemId 的 DirectProject 增量
为协议异常的增量生成稳定回退 item 标识

避免丢失用户可见流文本和异常收尾历史
2026-09-05 11:56:30 +08:00
k88936 9a48503e15 避免 DirectProject 落盘阻塞 Tokio
将原始响应历史写入移到 spawn_blocking

保持事件顺序并避免阻塞异步收集循环
2026-09-05 11:54:53 +08:00
k88936 baba45323a 优化 DirectProject 增量历史累积
仅在 DirectProject 模式记录增量文本

避免其他工作区为每个事件创建无用副本
2026-09-05 11:52:56 +08:00
k88936 462db8f3bf 修复 DirectProject 异常历史收尾
异常收尾时尝试写入全部未完成消息

保留首个落盘错误并避免后续部分历史被丢弃
2026-09-05 11:51:36 +08:00
k88936 61c33cd3c7 修复 DirectProject 首次历史写入
Project CI / Native shell tests (pull_request) Failing after 3m25s
Project CI / Repository checks (pull_request) Failing after 15s
Project CI / Backend tests (pull_request) Failing after 15s
Project CI / Frontend tests (pull_request) Failing after 1m47s
历史文件不存在时跳过幂等反向扫描

保留首条带 id item 的正常追加
2026-09-05 10:56:04 +08:00
k88936 1fdfe4624c 更新 DirectProject 历史过滤约定
记录用户消息只由 Codex 原始 item 产生

记录内部启动上下文不进入项目历史
2026-09-05 10:51:24 +08:00
k88936 ad3d04f51a 清理 DirectProject 原始历史写入
取消 Rust 预写用户消息,改为只保存 Codex 原始回传

过滤技能、权限和环境上下文内部 item

增加内部上下文过滤回归测试
2026-09-05 10:51:06 +08:00
k88936 b0a1ee0de2 优化 DirectProject 历史幂等检查
按文件尾部反向分块查找带 id 的历史 item

避免每次追加都完整读取并扫描历史文件
2026-09-05 10:42:13 +08:00
k88936 7791bd7de0 分离 DirectProject 对话命令
新增 DirectProject 专用读写命令

恢复 legacy 对话命令的单一职责

更新工作台 DirectProject 读取调用
2026-09-05 10:40:28 +08:00
k88936 4731113d43 记录 DirectProject 缺失 itemId 协议告警
保留缺失 itemId 事件的现有丢弃行为并输出诊断日志
2026-09-04 22:03:36 +08:00
k88936 a401b9504a 修正 DirectProject 历史写入错误分类
将本地历史持久化失败映射为 InvalidRequest
2026-09-04 21:54:53 +08:00
suzmii 76f0c8e58e Merge branch 'master' into feat/agc-llm-router-official-chain
Project CI / Repository checks (pull_request) Successful in 3m39s
Project CI / Frontend tests (pull_request) Successful in 4m0s
Project CI / Backend tests (pull_request) Successful in 8m3s
Project CI / Native shell tests (pull_request) Successful in 19m58s
2026-09-04 19:07:08 +08:00
k88936 6940cad2d3 登记 DirectProject 原始历史方案文档
在文档入口增加原始 item 持久化与异常恢复方案

同步 DirectProject 专题文档地图
2026-09-04 17:57:52 +08:00
k88936 c52c3aa106 补充 DirectProject 原始历史实现约定
记录线程注入与用户消息写入顺序

明确空 rawResponseItem 错误及浏览器只读边界

补充历史模块职责位置
2026-09-04 17:56:28 +08:00
k88936 2a0a15639c 拆分 DirectProject 历史收尾并停用浏览器写入
DirectProject 历史累计逻辑拆到独立回合模块

浏览器仅显示项目对话,Rust 负责原始 item 持久化

拒绝空 rawResponseItem 并更新测试适配
2026-09-04 17:56:02 +08:00
k88936 b116a5d75c 移除 DirectProject 文本窗口回放
删除旧的文本拼接、预算裁剪和遗漏标记逻辑

DirectProject 仅通过原始 item 注入恢复上下文

保留非 DirectProject 路径的既有会话实现
2026-09-04 17:31:48 +08:00
k88936 ee6c1b7f99 保留 DirectProject 历史测试适配入口
将测试用用户与助手消息写入原始 Responses item

不恢复生产环境旧聊天持久化逻辑
2026-09-04 17:27:29 +08:00
k88936 60f17af905 让项目聊天读取原始 item 历史
DirectProject 聊天命令写入 Responses message item

聊天读取从原始 item 投影 user/assistant 内容

保留 Agent session 旧会话读写路径
2026-09-04 17:20:33 +08:00
k88936 3d44af0a7d 接入 DirectProject 原始历史回放
新增 Codex Responses item JSONL 读写模块并启用 raw 事件

DirectProject 新线程使用 thread/inject_items 恢复历史

异常终态收尾累计 assistant 文本并移除旧文本 replay 写入
2026-09-04 17:17:35 +08:00
k88936 9ce0e89e43 补充 DirectProject Codex 原始历史恢复方案
Project CI / Repository checks (pull_request) Failing after 13s
Project CI / Backend tests (pull_request) Failing after 13s
Project CI / Frontend tests (pull_request) Successful in 3m47s
Project CI / Native shell tests (pull_request) Successful in 17m30s
新增 DirectProject 原始 Responses item 历史格式与异常收尾规则

明确 thread/inject_items 恢复流程及半成品处理边界

不涉及旧格式迁移、DirectHome 或审计账本
2026-09-04 17:02:26 +08:00
k88936 f9e1e5d2a7 Fix/修复ui editor选择逻辑 (#270)
Project CI / Backend tests (push) Successful in 7m35s
Project CI / Repository checks (push) Successful in 3m2s
Project CI / Frontend tests (push) Successful in 3m24s
Project CI / Native shell tests (push) Successful in 18m52s
close #266
当前实现: 按下就重新选择

实际上应该: 松开而且没有发生拖动才重新选择

before:
![shotmd-1788407266-compressed.webp](/attachments/251eccf6-ae02-4ae6-b9d2-4eb1fbf67df3)

after:
![shotmd-1788418953-compressed.webp](/attachments/5c05b506-ae08-4cb1-83c8-8da8e1590a7f)

Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/270
Co-authored-by: 王德宇 <kvtodev@outlook.com>
Co-committed-by: 王德宇 <kvtodev@outlook.com>
2026-09-04 16:30:43 +08:00
suzmii 87c0cbd06d 修复 Provider 代理错误外发 AGC 主站客户端标记
Project CI / Repository checks (pull_request) Successful in 3m13s
Project CI / Frontend tests (pull_request) Successful in 3m34s
Project CI / Backend tests (pull_request) Successful in 7m43s
Project CI / Native shell tests (pull_request) Successful in 19m55s
仅 PlatformSession 的 /api/llm 主站路由携带 x-genarrative-client 标记

通用 Provider 与第三方凭据桥接不再自动附加该标记

补充主站路由代理的标记回归测试
2026-09-04 15:52:47 +08:00