Skip to content

zh providers image formats

github-actions[bot] edited this page Sep 17, 2026 · 3 revisions

图片处理

build_main_agent 在图片描述和 Agent 初始化前处理初始图片,包括普通附件、引用图片及插件 ProviderRequest 中的图片,直接调用构建函数也适用。请求 Hook 执行后,流水线只检查新增的图片引用;已有引用复用处理结果,不再次检查文件。

大小限制与格式

  • 原始图片文件超过 64 MiB 时,在读取内容和解码像素前跳过;原因与保留的原图路径会保存到历史。另向模型提供临时建议:使用可用的文件读取工具,或请用户重发较小的图片,这段建议不保存到历史。小于等于 64 MiB 的图片正常处理。
  • 模型使用的单张图片文件严格小于 512 KiB(524,288 字节)。限制针对 Base64 编码前的图片文件,不是整个请求体。
  • 在管理面板的配置文件页面搜索输入图片最大边长,对应 provider_settings.image_compress_options.max_size,默认 1280 像素。初始图片保持宽高比,小图不会放大;为满足文件体积限制,必要时会进一步缩小。Hook 新增图片同样按配置限制最长边、处理格式和动图,并应用 64 MiB 输入上限和严格小于 512 KiB 的输出限制。
  • 方向正常、像素尺寸及文件体积均合规的 JPEG/PNG 保留原始字节。其余静图修正方向后编码为 JPEG;含透明度的图片输出 PNG,即使需要进一步缩小也保留透明通道。
  • GIF、动画 WebP、APNG 等动图均匀选取最多 9 帧,包含首尾动画帧,生成白底 3×3 拼图。不足 9 帧的格子留白,APNG 的独立封面不参与采样。
  • 重新编码时移除不必要的元数据;与输出色彩空间兼容、且不影响体积达标的色彩配置保留。

CUA 会话中的用户输入图片也遵守这些限制;截图及其他工具返回的图片继续使用各自的处理逻辑。

配置项变化

原配置项 现在的行为
启用图片压缩(image_compress_enabled) 已移除,当前输入图片始终处理。
压缩质量(image_compress_options.quality) 已移除,自动控制输出体积。
最大边长(image_compress_options.max_size) 更名为“输入图片最大边长”,同时遵守严格小于 512 KiB 的文件体积限制。

旧配置文件中遗留的启用开关和 JPEG 质量值不再影响图片处理。

原图路径与文件清理

图片处理阶段统一生成普通的 Image N 文本说明,包含原图路径,并标明是否来自引用消息。序号按 Hook 和过滤之后的图片顺序生成:额外图片内容块在前,image_urls 在后。请求实体和消息模型不新增附件元数据。引用来源和成功生成描述的图片由对应处理步骤直接传递,不解析提示文本推断状态;Hook 后只更新本次流程自己生成的提示对象,保留插件传入的文本。跳过的图片只保留原因和原图路径,不占图片序号;动图会标明已转换为九宫格。交给图片描述模型处理的图片标为已转文字描述,不占主请求的图片序号。

image_urls 及图片内容块直接复用合规的本地 JPEG/PNG 文件,不创建工作副本;需要转换的图片才使用处理后的预览文件。提供给模型、供工具读取文件的附件说明仍然指向原始图片路径,不会替换为预览路径。原始文件和事件中的图片组件均不被覆盖。

模型预览文件归当前事件所有,事件完成、失败或取消后清理,不再保留跨请求图片转换缓存。同一请求中重复出现的图片引用复用同一份预览,请求 Hook 前后的准备过程也会去重。

成功本地化的附件原图,包括引用图片,不随事件结束删除。临时目录中的原图仍受 temp_dir_max_size 容量清理约束,不属于永久存储。请求收集失败时,尚未成功接管的源文件仍按事件临时文件清理。

对话历史会在预览文件删除前保存模型使用的图片内容,采用 Base64 data URI;旧历史不会重新处理。无法读取的图片会跳过,不影响其他文字和正常图片;取消、资源耗尽及程序错误不会被当作坏图忽略。

第三方 Agent 后端、绕过主 Agent 构建函数直接调用 provider,以及工具返回的图片,不属于本次输入图片处理范围。

Chinese

English

Clone this wiki locally