图集生成输入契约遗留 100 条描述与单条 200 字符限制,应统一完整提示词并提高上限 #660

Open
opened 2026-10-06 18:39:27 +08:00 by lhk229 · 0 comments
Member

问题

图集生成当前使用 iconDescriptions: string[],最多 100 条,每条最多 200 个 Unicode 字符,换行拼接后合计最多 2000 字符且不超过 6144 个 UTF-8 字节。所有描述最终共同组装为一次图集生成的提示词,数组项不再对应切片数量或用途。

网页画布已经使用一个完整提示词输入框,并将全文作为唯一数组元素提交,因此实际只能输入 200 字符。AGC 美术包也把整个 brief 放入第一条描述,再追加三条通用要求;工具 schema 允许 4000 字符,而图集阶段的单条 200 字符校验会拒绝更长的需求。

实测一次美术包调用提交了 286 字符的 brief:规范图、背景图已经生成,直到图集阶段才被客户端拒绝。当前 Agent 的美术包参数说明没有明示 200 字符限制,不能归因于 Agent 违反已公布的长度要求。这里只陈述生成事实,不据此推断具体账单金额。

历史原因

  • 7eeff10c676c1cda1056265977f1819cc5ee0537(2026-06-16):原设计是每个输入框描述一个素材,最多 100 个。描述条数用于选择图集尺寸,切片按顺序绑定描述名称。
  • 1ed8064d2fb81196b56ac18dae33648f654246ba(2026-07-29):取消从提示词推导切片数量和名称;网页改为完整提示词作为单个数组元素,数组形式为兼容现有请求契约而保留。
  • 55ff47c6c43c57a4ec55ae3f16fdbbcf3cac65d1(2026-08-06):在网页已使用单条完整提示词之后,新增每条 200 字符、合计 2000 字符 / 6144 字节限制。提交和同期文档没有说明 200 这一具体阈值的选取依据,也没有给出模型要求该上限的证据。

预计修复方向

  1. 删除“最多 100 条描述”的旧输入组织方式,统一表达一次图集生成的完整提示词。
  2. 根据完整图集需求适当提高字符限制;具体上限在实施时确定,本 issue 不预设数值。
  3. 同步服务端校验、公开 API / OpenAPI、网页输入、AGC 工具 schema 和说明,使各入口表达与实际消费一致;确定现役公开调用方及活动请求所需的最小兼容方案。
  4. 可预测的输入错误应在付费生成前明确校验;保持一次请求生成一张图集、切片数量和用途不由描述条数决定。

验收方向

  • 网页与 Agent 可以提交超过 200 字符、但不超过新上限的完整素材需求,无须人为分成若干 200 字符片段。
  • 各入口的说明和校验与服务端限制一致;边界错误在生成前返回。
  • 公开 API 契约、必要兼容和相关测试同步更新,不改变切片语义与付费幂等恢复边界。

本次临时处理范围

关联 PR #628 当前只在美术包工具 brief 说明中补充“去除首尾空白后 1~200 个 Unicode 字符”的要求,帮助 Agent 遵守现有图集阶段限制。此次不改变 schema、请求组装、前后端校验或生成行为;上述输入契约改造留在本 issue 后续处理,也不在这里处理整包完成身份误判等其他问题。

代码入口

  • server-rs/crates/api-server/src/editor_project_icon.rs:normalize_icon_descriptions
  • docs/openapi/genarrative-external-v1.openapi.json:iconDescriptions
  • src/components/image-editor/ImageCanvasGenerationSubmissionModel.ts:buildIconSpritesheetGenerationSubmissionPlan
  • apps/ai-game-creator-shell/src-tauri/src/agent/generation/canvas_generation.rs:platform_art_spritesheet_descriptions
  • apps/ai-game-creator-shell/src-tauri/prompts/runtime/texts/direct-tools.json:美术包 brief 说明
## 问题 图集生成当前使用 `iconDescriptions: string[]`,最多 100 条,每条最多 200 个 Unicode 字符,换行拼接后合计最多 2000 字符且不超过 6144 个 UTF-8 字节。所有描述最终共同组装为一次图集生成的提示词,数组项不再对应切片数量或用途。 网页画布已经使用一个完整提示词输入框,并将全文作为唯一数组元素提交,因此实际只能输入 200 字符。AGC 美术包也把整个 `brief` 放入第一条描述,再追加三条通用要求;工具 schema 允许 4000 字符,而图集阶段的单条 200 字符校验会拒绝更长的需求。 实测一次美术包调用提交了 286 字符的 brief:规范图、背景图已经生成,直到图集阶段才被客户端拒绝。当前 Agent 的美术包参数说明没有明示 200 字符限制,不能归因于 Agent 违反已公布的长度要求。这里只陈述生成事实,不据此推断具体账单金额。 ## 历史原因 - `7eeff10c676c1cda1056265977f1819cc5ee0537`(2026-06-16):原设计是每个输入框描述一个素材,最多 100 个。描述条数用于选择图集尺寸,切片按顺序绑定描述名称。 - `1ed8064d2fb81196b56ac18dae33648f654246ba`(2026-07-29):取消从提示词推导切片数量和名称;网页改为完整提示词作为单个数组元素,数组形式为兼容现有请求契约而保留。 - `55ff47c6c43c57a4ec55ae3f16fdbbcf3cac65d1`(2026-08-06):在网页已使用单条完整提示词之后,新增每条 200 字符、合计 2000 字符 / 6144 字节限制。提交和同期文档没有说明 200 这一具体阈值的选取依据,也没有给出模型要求该上限的证据。 ## 预计修复方向 1. 删除“最多 100 条描述”的旧输入组织方式,统一表达一次图集生成的完整提示词。 2. 根据完整图集需求适当提高字符限制;具体上限在实施时确定,本 issue 不预设数值。 3. 同步服务端校验、公开 API / OpenAPI、网页输入、AGC 工具 schema 和说明,使各入口表达与实际消费一致;确定现役公开调用方及活动请求所需的最小兼容方案。 4. 可预测的输入错误应在付费生成前明确校验;保持一次请求生成一张图集、切片数量和用途不由描述条数决定。 ## 验收方向 - 网页与 Agent 可以提交超过 200 字符、但不超过新上限的完整素材需求,无须人为分成若干 200 字符片段。 - 各入口的说明和校验与服务端限制一致;边界错误在生成前返回。 - 公开 API 契约、必要兼容和相关测试同步更新,不改变切片语义与付费幂等恢复边界。 ## 本次临时处理范围 关联 PR #628 当前只在美术包工具 `brief` 说明中补充“去除首尾空白后 1~200 个 Unicode 字符”的要求,帮助 Agent 遵守现有图集阶段限制。此次不改变 schema、请求组装、前后端校验或生成行为;上述输入契约改造留在本 issue 后续处理,也不在这里处理整包完成身份误判等其他问题。 ## 代码入口 - `server-rs/crates/api-server/src/editor_project_icon.rs`:`normalize_icon_descriptions` - `docs/openapi/genarrative-external-v1.openapi.json`:`iconDescriptions` - `src/components/image-editor/ImageCanvasGenerationSubmissionModel.ts`:`buildIconSpritesheetGenerationSubmissionPlan` - `apps/ai-game-creator-shell/src-tauri/src/agent/generation/canvas_generation.rs`:`platform_art_spritesheet_descriptions` - `apps/ai-game-creator-shell/src-tauri/prompts/runtime/texts/direct-tools.json`:美术包 `brief` 说明
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GenarrativeAI/Genarrative#660