Files
ttstd-infinite-canvas/backend/internal/app/cloud_agent_pi_image_references.go
jiabx 10437bdf68 fix(agent): 看图 - 独立运行时的模型步骤带上获准图片清单 (#671)
复现:Agent 调用 canvas_inspect_image 看图后,下一步模型调用报「模型协议引用了未获准的图片」,整轮失败;只要 Agent 看过一次图就必然复现。

原因:看图之后服务端规范历史里会多一条带 resource: 图片占位的 user 消息;旧的 Go 执行循环在发请求前把这些占位对应的资源写进 input.referenceImages,独立 Agent 运行时(Pi)的模型步骤漏了这一步,预检发现占位不在获准清单里就拒绝了请求。

修法:Pi 路径的模型步在组装任务输入前复用同一个 cloudAgentImageReferences 校验与装配(资源归属、大小、图片数量上限),把获准图片清单随请求发出。
2026-10-05 13:28:24 +08:00

16 lines
1.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package app
// 独立 Agent 运行时(Pi)的模型步骤带上获准图片清单。
//
// canvas_inspect_image 看图后,服务端的规范历史里会多一条带 resource: 图片占位的 user 消息。
// 旧的 Go 执行循环在发请求前调用 cloudAgentImageReferences,把这些占位对应的资源写进
// input.referenceImages,供应商层据此读取真实图片;Pi 路径(runCloudAgentModelStep)漏了这一步,
// 预检发现占位不在获准清单里,整轮以「模型协议引用了未获准的图片」失败。
//
// 这里复用同一个函数:校验资源归属与大小、按模型的图片数量上限移出多余图片,并返回清单。
// 它会改写传入的 canonical(只影响本次请求的副本),所以必须在组装任务输入之前调用,
// 且在 state.Canonical 已经保存完整历史之后调用。
func (s *Service) cloudAgentPiStepImageReferences(userID string, req CloudAgentRequest, canonical *canonicalAgentRequest) ([]providerMedia, error) {
return s.cloudAgentImageReferences(userID, req, canonical)
}