图集切片上限对齐平台契约:客户端结果门 64 → 256 #442
Reference in New Issue
Block a user
Delete Branch "fix/spritesheet-slice-limit-256"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景(现场)
项目
gameagent-6e53c9e8,2026-09-21 07:54「AI 生成图标素材」失败:排查(本机日志与项目运行时账本):
.agent/runtime/asset-generation-tasks/tasks.json:taskId=c70a4198-…、kind=icon-spritesheet,created 07:54:04 → failed 07:55:43(跑了 99 秒,平台确实生成并切完了图),assetId: null—— 结果没落 manifest,这次付费产物被丢弃。.agent/runtime/canvas-generation-requests/manual-canvas-asset-generate/slot-560175669f….json:sliceMode: "connected-components"、sliceCount: null(自动切分),即切几片由平台决定;客户端并没有要求一个 >64 的数量。根因:同一条链路两个上限
server-rs/crates/api-server/src/editor_project_icon.rsEDITOR_ICON_SPRITESHEET_MAX_SLICES)sliceCount(agent_native_tools.rs)direct_tool_bridge.rs)spacetime-module/src/editor_project_storage.rs)docs/【编辑器】画板图标素材生成入口设计-2026-06-15.md)两处门由
602723ea0(2026-08-03)引入,之后平台与工具 schema 统一到 256,这两个门没跟着改。自动切分落进 65~256 这个窗口时,客户端比平台更严 → 平台合法产出被整条判失败,用户只看到一句定位不到原因的「无法绑定到 operationId」。改动
PLATFORM_ART_SPRITESHEET_MAX_SLICES = 256(放在canvas_generation.rs现有PLATFORM_ART_SPRITESHEET_*预算常量旁),注释点名三处同值权威:平台切分常量、工具 schemasliceCount、公开契约。platform_art_spritesheet_slice_count_exceeds_limit/platform_art_spritesheet_slice_limit_error(数字由常量插值,不再手写「64」)。external_generation_state.rs的旧同步结果转换、canvas_generation.rs的切片准备;文案从 64 更新为 256。验证(本机)
canvas_generation_tests::spritesheet_slice_limit_matches_platform_and_tool_contract:上限值 = 256、边界判据(0/64/256 通过、257 拒绝)、拒绝文案的数字来自常量。okexternal_generation_state_tests::legacy_result_accepts_slice_counts_up_to_platform_limit_and_rejects_beyond:64 / 65 / 256 片的旧同步结果必须能持久化且切片一条不少,257 片必须按同一句文案拒绝。okcargo test -- spritesheet(22 passed)、cargo test -- external_generation_state_tests::(10 passed);cargo fmt --check干净;npm run check:encoding、git diff --check干净。未覆盖 / 说明
connected-components自动切分)确认 65~256 片的产出能正常落盘。sliceCount=4而平台识别出 94 个素材,按契约「自动拆分超限以sliceWarning非阻断降级且不产生切片」返回 0 切片(属既有设计,但前端是否展示了该 warning 值得复看);② 应用日志反复报rawKind=art-spritesheet不是 canonical 值(canonical 是icon-spritesheet),manifest 里已有 7 个unknown资产,来源需另查。