Fix Issue 549 #573

Merged
lhk229 merged 5 commits from fix/issue-549 into master 2026-10-01 20:55:28 +08:00
Member

账户素材超过 500 项时,AGC 曾在筛选和分页前直接拒绝整个素材库,导致查询、预览和指定 ID 导入不可用。本 PR 移除账户素材总量及账户分页 offset=500 的客户端限制,允许大库继续使用现有客户端筛选分页。

Closes #549

实现范围

  • 移除账户素材库原始条数超过 500 的拒绝,以及 MCP schema、桥接、Runtime 执行层和原生函数 strict schema 的账户分页 offset 上限。
  • 保留单页最多 100 项、导入批次数量与下载体积、媒体类型、账号归属、权限及会话校验。项目文件查询的 offset 上限和绑定项目画布资源的数量上限保持原有契约。
  • 账户素材 UI 列表、预览及指定 ID 导入同步恢复可用。
  • 修复真实账户导入时,在持有身份租约期间重复读取会话互斥锁造成的自锁;写入前校验和覆盖写入过程的身份租约继续保留。
  • 同步工具说明、技术方案与排障记录。服务端仍返回全库,传输和解析开销另由 #574 跟进,不作为本 PR 的验收前置条件。

验收

以下已完成项表示本地自动化与代码核查通过,不代表线上真实账号验收。

  • 覆盖 500/501 项素材库解析;503 张静态图片及 1 项不支持媒体的模拟素材库可正常工作。
  • MCP 查询支持 limit=1、folderId、query 和 offset>500;nextOffset、末页、越界空页及默认每页 100 项符合现有契约。
  • 直接调用 Runtime 执行层时 offset=501 可查询;MCP schema 与参数校验一致,仍拒绝负数、非整数 offset 和 limit>100。这项不覆盖 Runtime 下发给模型的原生函数 schema。
  • Runtime 原生函数 asset.library.list 的 strict schema 允许 offset>500;实际下发的完整函数参数已验证 offset=501/600/10000、null 可用,负数/非整数偏移及超界页长拒绝。补丁已提交并推送:41e2cc0b5。
  • 共用读取链路的 UI 素材列表和预览在大库场景可用。
  • 指定有效 assetId 完成实际下载、本地文件写入及 manifest/revision 更新;重复导入保持幂等。
  • 模拟素材库中的不存在 ID 和不支持媒体被拒绝,且不改变 manifest;返回 Agent 的当前页元数据不泄露媒体地址、对象键或凭据。
  • 会话退出、账号切换、凭据刷新、身份租约和取消写入相关定向测试通过。
  • 工具说明、技术方案和共享排障文档已同步;项目文件与画布资源原有独立边界已核对保留。
  • 真实平台账号联调:超过 500 项素材时查询、预览和导入,以及实际删除、跨账号、无权限素材的拒绝行为。

验证证据

  • 账户素材、导入、参数校验、项目文件、取消写入与平台会话定向 Rust 测试:33 项通过。
  • runtime_prompt_bundle_build:17 项通过;prompt_source_boundaries:6 项通过。合计 56 项通过。
  • Rust 格式检查、npm run check:encoding、npm run check:doc-index、git diff --check 通过。
  • 以上 Rust 测试在快进 master 前运行;快进至 44f415d05 后已核对本次代码及工具文本与已测试版本一致,并再次通过编码、文档索引、差异检查和提交时 Rust 格式检查。
  • 未运行全量测试,未做真实线上账号或付费操作验证。

初次修复提交:697f421e570606d0519f952a0a5689b5f639f902;原生函数 schema 审查补丁:41e2cc0b57b7f9f5faf06546c1f6108e88380ac3(已推送)。

  • 审查补丁验证:24 项定向 Rust 测试通过,覆盖全部 agent_native_tools 测试、大库查询/导入和修正后的旧流式结果测试;格式、编码、文档索引、差异检查、提交及推送检查通过。本轮未重复全量测试,未做真实模型或线上账号调用。
账户素材超过 500 项时,AGC 曾在筛选和分页前直接拒绝整个素材库,导致查询、预览和指定 ID 导入不可用。本 PR 移除账户素材总量及账户分页 offset=500 的客户端限制,允许大库继续使用现有客户端筛选分页。 Closes #549 ## 实现范围 - 移除账户素材库原始条数超过 500 的拒绝,以及 MCP schema、桥接、Runtime 执行层和原生函数 strict schema 的账户分页 offset 上限。 - 保留单页最多 100 项、导入批次数量与下载体积、媒体类型、账号归属、权限及会话校验。项目文件查询的 offset 上限和绑定项目画布资源的数量上限保持原有契约。 - 账户素材 UI 列表、预览及指定 ID 导入同步恢复可用。 - 修复真实账户导入时,在持有身份租约期间重复读取会话互斥锁造成的自锁;写入前校验和覆盖写入过程的身份租约继续保留。 - 同步工具说明、技术方案与排障记录。服务端仍返回全库,传输和解析开销另由 #574 跟进,不作为本 PR 的验收前置条件。 ## 验收 以下已完成项表示本地自动化与代码核查通过,不代表线上真实账号验收。 - [x] 覆盖 500/501 项素材库解析;503 张静态图片及 1 项不支持媒体的模拟素材库可正常工作。 - [x] MCP 查询支持 limit=1、folderId、query 和 offset>500;nextOffset、末页、越界空页及默认每页 100 项符合现有契约。 - [x] 直接调用 Runtime 执行层时 offset=501 可查询;MCP schema 与参数校验一致,仍拒绝负数、非整数 offset 和 limit>100。这项不覆盖 Runtime 下发给模型的原生函数 schema。 - [x] Runtime 原生函数 asset.library.list 的 strict schema 允许 offset>500;实际下发的完整函数参数已验证 offset=501/600/10000、null 可用,负数/非整数偏移及超界页长拒绝。补丁已提交并推送:41e2cc0b5。 - [x] 共用读取链路的 UI 素材列表和预览在大库场景可用。 - [x] 指定有效 assetId 完成实际下载、本地文件写入及 manifest/revision 更新;重复导入保持幂等。 - [x] 模拟素材库中的不存在 ID 和不支持媒体被拒绝,且不改变 manifest;返回 Agent 的当前页元数据不泄露媒体地址、对象键或凭据。 - [x] 会话退出、账号切换、凭据刷新、身份租约和取消写入相关定向测试通过。 - [x] 工具说明、技术方案和共享排障文档已同步;项目文件与画布资源原有独立边界已核对保留。 - [ ] 真实平台账号联调:超过 500 项素材时查询、预览和导入,以及实际删除、跨账号、无权限素材的拒绝行为。 ## 验证证据 - 账户素材、导入、参数校验、项目文件、取消写入与平台会话定向 Rust 测试:33 项通过。 - runtime_prompt_bundle_build:17 项通过;prompt_source_boundaries:6 项通过。合计 56 项通过。 - Rust 格式检查、npm run check:encoding、npm run check:doc-index、git diff --check 通过。 - 以上 Rust 测试在快进 master 前运行;快进至 44f415d05 后已核对本次代码及工具文本与已测试版本一致,并再次通过编码、文档索引、差异检查和提交时 Rust 格式检查。 - 未运行全量测试,未做真实线上账号或付费操作验证。 初次修复提交:697f421e570606d0519f952a0a5689b5f639f902;原生函数 schema 审查补丁:41e2cc0b57b7f9f5faf06546c1f6108e88380ac3(已推送)。 - 审查补丁验证:24 项定向 Rust 测试通过,覆盖全部 agent_native_tools 测试、大库查询/导入和修正后的旧流式结果测试;格式、编码、文档索引、差异检查、提交及推送检查通过。本轮未重复全量测试,未做真实模型或线上账号调用。
Author
Member

Close #549

Close #549
lhk229 added 1 commit 2026-10-01 19:13:12 +08:00
修复账户素材超过五百项时的客户端查询与导入
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
697f421e57
移除账户素材全库数量与分页偏移的五百项限制,保留单页与导入安全边界
修复账户素材导入在身份租约内重复校验会话导致的自锁
补充大库分页、预览、实际导入与幂等验证,更新工具说明和项目文档
Author
Member

修复及本地验收结果已补充到本 PR 描述,当前远端提交为 697f421e570606d0519f952a0a5689b5f639f902。

已移除账户素材总量超过 500 和账户分页 offset>500 的客户端拒绝;大库查询、UI 预览、指定 ID 实际导入与重复导入幂等已有本地模拟平台链路验证。验证过程中发现并修复了账户导入持有身份租约时重复加锁导致的自锁,原有会话校验和写入期间身份保护保留。

56 项相关 Rust 测试通过,格式、编码、文档索引和差异检查通过。Rust 测试在快进 master 前执行;快进后核对本次代码与已测版本一致,并通过提交检查。

验收清单已区分本地验证与真实账号联调:线上大库操作,以及实际删除、跨账号和无权限场景仍待实测,未将这些项目标记完成。后端全库读取和服务端分页优化继续由低优先级 #574 跟进,不阻塞本次客户端修复。

修复及本地验收结果已补充到本 PR 描述,当前远端提交为 697f421e570606d0519f952a0a5689b5f639f902。 已移除账户素材总量超过 500 和账户分页 offset>500 的客户端拒绝;大库查询、UI 预览、指定 ID 实际导入与重复导入幂等已有本地模拟平台链路验证。验证过程中发现并修复了账户导入持有身份租约时重复加锁导致的自锁,原有会话校验和写入期间身份保护保留。 56 项相关 Rust 测试通过,格式、编码、文档索引和差异检查通过。Rust 测试在快进 master 前执行;快进后核对本次代码与已测版本一致,并通过提交检查。 验收清单已区分本地验证与真实账号联调:线上大库操作,以及实际删除、跨账号和无权限场景仍待实测,未将这些项目标记完成。后端全库读取和服务端分页优化继续由低优先级 #574 跟进,不阻塞本次客户端修复。
lhk229 added 1 commit 2026-10-01 19:20:31 +08:00
Merge branch 'master' into fix/issue-549
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 3m2s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 2m8s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m26s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m51s
Project CI / Frontend tests (pull_request) Successful in 2m45s
Project CI / Repository checks (pull_request) Successful in 3m1s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m0s
Project CI / Backend tests (pull_request) Successful in 6m26s
Project CI / Native shell tests (pull_request) Successful in 7m12s
da1c9ff672
lhk229 marked the pull request as ready for review 2026-10-01 19:20:46 +08:00
Author
Member

审查意见成立:agent_native_tools.rs 中 asset.library.list 的 offset 仍带 maximum=500,且生成的原生函数使用 strict=true。此前直接调用 Runtime observation 的 offset=501 用例绕过了模型可见 schema,不能证明 Runtime 模型可以翻到 offset>500。已更正 PR 验收描述,区分执行层验证与原生函数 schema 验证。

本地已移除该 maximum,并增加 account_asset_native_function_schema_accepts_later_pages:从 build_agent_runtime_native_function_tools 取得实际下发的完整参数 schema,校验 null、offset=501/600/10000 与 limit=1/100 可用,负数/非整数 offset 和 limit=0/101 拒绝。

24 项定向 Rust 测试通过,包含全部 agent_native_tools 测试及大库查询/导入链路;格式、编码、文档索引及差异检查通过。测试编译时另发现 master 原有 preserves_direct_stream_terminal_error_detail 仍向两参数函数传三个参数,已仅删除该测试的多余参数,并验证该测试通过。技术方案和排障记录已同步。

以上审查补丁目前仅在本地,尚未提交或推送,因此 PR 对应验收项保持未勾选。未做真实模型/线上账号调用验证。

审查意见成立:agent_native_tools.rs 中 asset.library.list 的 offset 仍带 maximum=500,且生成的原生函数使用 strict=true。此前直接调用 Runtime observation 的 offset=501 用例绕过了模型可见 schema,不能证明 Runtime 模型可以翻到 offset>500。已更正 PR 验收描述,区分执行层验证与原生函数 schema 验证。 本地已移除该 maximum,并增加 account_asset_native_function_schema_accepts_later_pages:从 build_agent_runtime_native_function_tools 取得实际下发的完整参数 schema,校验 null、offset=501/600/10000 与 limit=1/100 可用,负数/非整数 offset 和 limit=0/101 拒绝。 24 项定向 Rust 测试通过,包含全部 agent_native_tools 测试及大库查询/导入链路;格式、编码、文档索引及差异检查通过。测试编译时另发现 master 原有 preserves_direct_stream_terminal_error_detail 仍向两参数函数传三个参数,已仅删除该测试的多余参数,并验证该测试通过。技术方案和排障记录已同步。 以上审查补丁目前仅在本地,尚未提交或推送,因此 PR 对应验收项保持未勾选。未做真实模型/线上账号调用验证。
lhk229 added 1 commit 2026-10-01 19:38:31 +08:00
修复账户素材原生工具分页参数上限
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
41e2cc0b57
移除 Runtime 原生函数 schema 中账户素材偏移五百项上限
补充实际下发 strict 函数参数的后续页与边界验证
修正阻挡测试编译的旧流式结果测试调用参数
同步技术方案与原生工具 schema 验收排障记录
Author
Member

审查补丁已提交并推送:41e2cc0b5「修复账户素材原生工具分页参数上限」。

24 项定向 Rust 测试通过,提交及推送检查通过,工作树干净。原生函数 strict schema 的验收项已勾选;真实模型/线上账号验证仍未执行,真实账号联调项继续保留待验收。

审查补丁已提交并推送:[41e2cc0b5](https://git.genarrative.world/git/GenarrativeAI/Genarrative/commit/41e2cc0b57b7f9f5faf06546c1f6108e88380ac3)「修复账户素材原生工具分页参数上限」。 24 项定向 Rust 测试通过,提交及推送检查通过,工作树干净。原生函数 strict schema 的验收项已勾选;真实模型/线上账号验证仍未执行,真实账号联调项继续保留待验收。
lhk229 added 1 commit 2026-10-01 19:44:28 +08:00
Merge branch 'master' into fix/issue-549
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m40s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m19s
Project CI / Backend tests (pull_request) Successful in 4m40s
Project CI / Native shell tests (pull_request) Successful in 5m42s
Project CI / Frontend tests (pull_request) Successful in 2m25s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 11m30s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 10m8s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m2s
Project CI / Repository checks (pull_request) Successful in 2m47s
6922456e15
lhk229 added 1 commit 2026-10-01 20:55:16 +08:00
Merge branch 'master' into fix/issue-549
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
bb9397258e
lhk229 merged commit ded9f13f02 into master 2026-10-01 20:55:28 +08:00
lhk229 deleted branch fix/issue-549 2026-10-01 20:55:29 +08:00
Sign in to join this conversation.