mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 01:40:15 +08:00
* fix(core): 将空 list modalities 视为未配置,修复图片无法传递到模型的问题 migra_helper 将未配置的 modalities 迁移为空 list [],而新增的 _provider_supports_modality()、_assemble_request_context_for_provider()、 _should_fix_modalities_for_provider()、_func_tool_for_provider() 四个函数 对 [] 和 None 的处理不一致,导致所有未在 WebUI 手动配置 modalities 的 provider 无法传递图片、引用图片被跳过、工具被错误清除。 修改策略:将 [] 与 None 统一视为未配置状态,保持向后兼容。 仅在 modalities 为非空 list 时才启用过滤和修复逻辑。 - _provider_supports_modality: [] 返回 True,默认支持 - _assemble_request_context_for_provider: [] 不过滤图片 - _should_fix_modalities_for_provider: [] 不触发历史上下文修复 - _func_tool_for_provider: [] 不清除工具 复现脚本已确认 Bug 不再复现,82 个相关单元测试全部通过。 * fix(core): 补充修复 tool loop 中 cached images 的 modalities 判断 上一笔 commit 遗漏了 tool_loop_agent_runner.py 第 917 行对 cached images 的 modalities 检查,当 modalities=[] 时,tool call 返回的图片不会被追加到消息中,导致模型看不到 tool 结果中的图片。 修复方式与主修复一致:not modalities or image in modalities 复现脚本和 82 个单元测试全部通过。 * test: 补充 fake_save_image mock 缺少的 mime_type 字段 修复 modalities=[] 导致 cached images 分支变为可达后,暴露 了 test_tool_result_includes_all_calltoolresult_content 中 fake_save_image mock 不完整的问题:返回的 SimpleNamespace 缺少 mime_type 属性,而实际 tool_image_cache.save_image() 始终包含该字段。 --------- Co-authored-by: C₂₂H₂₅NO₆ <Sisyphbaous-DT-Project@users.noreply.github.com>
56 KiB
56 KiB