AGC 标准美术包硬编码四张切片并按顺序误判用途,导致生成失败与素材语义错配 #525
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
问题
AGC 标准美术包存在两个相互关联的严重缺陷:硬编码“有且只有四张切片”,导致已成功生成的多素材图集被判失败;又把切片返回顺序当成固定用途,可能在数量恰好为四时静默登记错误语义。
修复方向:放松不必要的数量与用途约束,按实际素材处理。不要通过增加复杂识别/重试机制或强化提示词,试图保证所有游戏必须产出四个连通域。
现场证据与复现
本地测试项目:
gameagent-287d5195;核查代码基线:5c648ab9c78e03f8ad7c29dc91c7a68c59a53602。本次仅只读调查,未修改项目或发起新的付费生成。taonier-art-assetsSkill 和references/platform-art-contract.md,其中要求标准包必须有四张 canonical 切片。taonier_prepare_game_art,mode=reuse-or-create,brief 是森林跑酷整体视觉需求:陶土小狐狸、树桩/石块/倒木、橡果/金叶、草地平台及森林背景,没有列出恰好四个主体。POST /api/editor/icon-spritesheets/generations;账本保存对应 external 路由/api/external/v1/editor/icon-spritesheets/generations。iconDescriptions,另外写死sliceMode=connected-components、sliceCount=4。sliceWarning.code=output-slice-limit-exceeded,原文:图标 spritesheet 识别出的素材数量超过输出上限:59,最多允许 4 个。独立切片为空。59 是算法识别的连通区域数,不等于已确认可用的游戏素材数。completed与空slicePaths、缺切片告警,并未按新提示词重新生成。问题一:固定四张与实际生成目标不匹配,且已深入处理流程
build_spritesheet_prompt不接收sliceCount。现场actualPrompt只要求“每个图标素材的所有内容区域完全连通”“不要遗漏、补充或重复图标”,没有限定总共四个主体;数量参数用于后处理校验。问题二:返回顺序不能证明素材用途,存在静默语义错配
严格提交直接把数组第 1~4 张依次映射成:
player.pngblocks-and-targets.pngobstacles-and-scene.pngfeedback-effects.png平台连通域按空间排列顺序整理,并不按玩家/目标/障碍/特效识别分类。客户端没有内容识别或可靠用途来源,却按下标命名。假如返回“小狐狸、树桩、石块、橡果”,树桩会被标为目标,橡果被标为反馈特效;数量、透明度、像素唯一性和来源身份校验均不能证明语义正确。
普通非严格切片保存也残留前四张的固定用途映射,多余切片才保留编号路径/空用途,需一并检查。私有回执还使用
usages[index]访问四项数组,不能只移除前置数量检查而留下越界风险。代码定位
以下均相对于仓库,基线为上述提交:
apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs:DIRECT_CODEX_SPRITESHEET_SLICE_PATHS、DIRECT_TAONIER_STRICT_CONTRACT_SNAPSHOT_PATHS、generate_direct_taonier_art_asset_at、validate_completed_workflow_result_at、direct_taonier_strict_art_package_is_valid。apps/ai-game-creator-shell/src-tauri/src/agent/generation/canvas_generation.rs:build_platform_art_asset_prompt、commit_strict_platform_art_slices_at、commit_prepared_platform_art_slices_at、strict_game_art_contract_receipt_bytes、STRICT_PLATFORM_ART_CONTRACT_PATHS。apps/ai-game-creator-shell/src-tauri/src/agent/runtime_driver/art_manifest_contract.rs:REQUIRED_SLICE_USAGES、validated_art_slices。apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/autonomous_completion.rs:game_index_missing_visible_art_slice。apps/ai-game-creator-shell/src-tauri/resources/agc-skills/taonier-art-assets/:四张固定切片的 Skill/合同描述。server-rs/crates/api-server/src/editor_project_icon.rs:生图 prompt builder、slice_count后处理及切片告警返回。server-rs/crates/api-server/src/prompt/icon_spec.rs:build_spritesheet_prompt。建议方向与范围
sliceCount=4、恰好四张和四个固定用途路径的假设;在现有合理资源上限内接受实际切片数量。验收标准
此问题与 PNG 自动转码修复无关;本 Issue 不要求通过任何新增机制维持“四张图必然具有四种固定语义”的假设。