Vision 多模态支持
wesgine 的 Vision(视觉)能力声明与图片处理机制。
能力声明
Vision 是 Model 的能力,不是 Provider 的能力。
v1.0.1 破坏性变更
已删除的字段:
ProviderConfig.SupportsVisionProviderConfig.VisionModel
替代方案:在 Models[].SupportsVision 中声明:
providers:
- name: azure-gpt4o
models:
- id: gpt-4o
supports_vision: true
context_window: 128000
- id: gpt-4o-mini
supports_vision: true
行为
请求含图片时
Provider Adapter 通过 capsForModel(req.Model) 按请求的实际模型查询 vision 能力:
- Model 声明
SupportsVision=true→ 正常处理图片 - Model 未声明
SupportsVision=true→ 返回ErrVisionNotSupported硬错误 - 不再静默剥离图片
连通性测试
POST /cells/{id}/providers/test
新增 mode=vision 挑战码 probe,验证模型是否真正支持视觉输入。
图片处理流水线
写入时(INV-PERSIST-01)
三条写入路径统一调用 stripInlineImages():
- onRunStart:user 消息中的图片
- onTurnEnd:assistant 回复中的图片
- onToolResult:工具返回的图片
处理逻辑:
imageSaveDir存在 → 解码存盘,改写为file_ref路径imageSaveDir不存在 → 清空 Source- 文件名白名单化防止路径穿越
上下文组装时
图片 block 在 Context Assembly 中保持原始格式传递给模型。
与 Provider 的关系
Vision 能力声明随 Provider 配置传入,引擎不含模型知识库(INV-DS-01):
- 未配
SupportsVision→ 默认不支持 - 配置错误暴露不遮盖(INV-DS-05)
- 新模型需在
catalog.yaml或用户配置中声明能力