## 问题与影响 生成面板和运行入口的预检仅接收节点输入,没有完整纳入直接绑定素材的固定参考。加载已有配置或切换到参考数量限制更小的模型时,可能显示可以生成,但后端才拒绝超限请求,界面可用状态与正式校验不一致。 ## 复现步骤 1. 创建图片生成配置,保留非空提示词及 9 个不同图片素材的固定参考,不创建来源画布节点。 2. 为配置选择最多支持 8 张参考图的模型。可通过已有配置重开或从支持更多参考的模型切换来检查。 3. 查看生成按钮状态和运行前预检结果。 4. 在隔离环境调用后端共享校验核对数量限制,无需实际请求远端模型。 ## 预期与实际 - 预期:运行前预检统计全部实际参与生成的参考,并按模型限制及时提示;不能因参考没有节点或连线而遗漏。 - 实际:固定参考不进入 `incomingNodes`,按钮和运行入口按空节点输入进行预检,数量检查返回无错误。将相同固定素材纳入预检后,会返回“参考图片超过当前模型上限(8 个)。” - 后端仍有数量校验,本问题不是绕过服务端约束。新增参考时另有校验,也不能替代加载配置或切换模型后的运行前检查。 ## 定位与证据 基线:[`6c83d43f32b335c63a0a1bb314967d6da91ec7d3`](https://github.com/ThinkFlowLab/OpenDirector/commit/6c83d43f32b335c63a0a1bb314967d6da91ec7d3),Linux,Node.js v24.14.0。 通过合成引用元数据调用真实 `backendBlocker` 和后端 `validate_generation`,兼容图片模型上限为 8、固定图片数为 9,验证结果: ```text 仅传 composerIncoming=[]:null 传入同等的 9 个图片参考:参考图片超过当前模型上限(8 个)。 后端 validate_generation:图片参考素材数量超过上限。 ``` 本轮验证为预检函数与调用链核对;没有新增浏览器端到端触发、真实媒体提交或远端模型调用。该结果证明入口遗漏,不能作为一次真实模型请求的记录。 - [`incomingReferenceNodes`](https://github.com/ThinkFlowLab/OpenDirector/blob/6c83d43f32b335c63a0a1bb314967d6da91ec7d3/src/canvas/generationReferenceContent.ts#L55-L80) 仅收集节点来源,并排除固定参考连线。 - [面板按钮预检](https://github.com/ThinkFlowLab/OpenDirector/blob/6c83d43f32b335c63a0a1bb314967d6da91ec7d3/src/canvas/NodeComposer.tsx#L184-L189) 和[运行入口预检](https://github.com/ThinkFlowLab/OpenDirector/blob/6c83d43f32b335c63a0a1bb314967d6da91ec7d3/src/canvas/CanvasWorkspace.tsx#L3599-L3607) 都只传入节点输入。固定素材通过 `pinnedSubmissionInputs` 在后续路径才被单独收集。 - [预检数量计算](https://github.com/ThinkFlowLab/OpenDirector/blob/6c83d43f32b335c63a0a1bb314967d6da91ec7d3/src/backend/rules.ts#L533-L579) 依赖上述输入;[后端共享校验](https://github.com/ThinkFlowLab/OpenDirector/blob/6c83d43f32b335c63a0a1bb314967d6da91ec7d3/packages/core/src/opendirector/domain/creation/generation.py#L319-L359) 则检查已解析的实际参考。 相关问题:素材查询分类见 #120,固定素材首尾帧的展示与角色编辑见 #121;本 Issue 聚焦运行前预检。 ## 验收标准 - [ ] 运行前预检纳入固定素材、跟随节点和混合参考,按实际模式、角色及模型契约统计参与生成的输入。 - [ ] 加载、重开、切换模型或模式后重新计算;不只在新增参考时检查。 - [ ] 面板按钮、运行入口和后端校验对相同输入给出一致结果;同一参考不要因同时出现在标签和连线中被重复统计。 - [ ] 覆盖数量边界及已有字节预算规则,明确不参与生成的参考如何计入;保留服务端最终校验。 - [ ] 添加真实浏览器交互及隔离后端回归,不通过真实付费模型调用验证超限拒绝。
Activity