From c4f124c958518c2c6892b0548c31d0df60020132 Mon Sep 17 00:00:00 2001 From: RerankerGuo <121015044+RerankerGuo@users.noreply.github.com> Date: Tue, 28 Jul 2026 16:56:14 +0800 Subject: [PATCH] fix: add supports_multimodal to openclaw.json agents.defaults Closes #931 - Add supports_multimodal and supports_image to agents.defaults when the selected model supports image input (e.g. qwen3.6-plus, claude-opus-4-6, gpt-5.4, etc.) - Detect model multimodal capability from ModelSpec.Input field - Prevents QwenPaw/CoPaw from proactively stripping media blocks before they reach the LLM Test: gofmt -e (syntax check passed) --- .../internal/agentconfig/generator.go | 18 ++++++++++++++++++ changelog/current.md | 2 ++ 2 files changed, 20 insertions(+) diff --git a/agentteams-controller/internal/agentconfig/generator.go b/agentteams-controller/internal/agentconfig/generator.go index 5447b24bf..b8a7a1c92 100644 --- a/agentteams-controller/internal/agentconfig/generator.go +++ b/agentteams-controller/internal/agentconfig/generator.go @@ -182,6 +182,24 @@ func (g *Generator) GenerateOpenClawConfig(req WorkerConfigRequest) ([]byte, err defaults["heartbeat"] = hb } + // Add supports_multimodal based on the selected model's capabilities + modelSpec := g.resolveModelSpec(modelName) + if len(modelSpec.Input) > 0 { + supportsImage := false + for _, inp := range modelSpec.Input { + if inp == "image" { + supportsImage = true + break + } + } + if supportsImage { + agents := config["agents"].(map[string]interface{}) + defaults := agents["defaults"].(map[string]interface{}) + defaults["supports_multimodal"] = true + defaults["supports_image"] = true + } + } + // Add embedding model for memory search if configured if g.config.EmbeddingModel != "" { agents := config["agents"].(map[string]interface{}) diff --git a/changelog/current.md b/changelog/current.md index 6436a6d7d..b24757d8f 100644 --- a/changelog/current.md +++ b/changelog/current.md @@ -6,6 +6,8 @@ Record image-affecting changes to `manager/`, `worker/`, `copaw/`, `hermes/`, `o **Bug Fixes** +- **Multimodal model image support**: Add `supports_multimodal` and `supports_image` to `agents.defaults` in generated openclaw.json when the selected model supports image input. Fixes #931. +- **openai-compat IP:port support**: Fix openai-compat provider to use static service source for IP addresses (instead of DNS), strip port from openaiCustomUrl, and use GET→PUT idempotent updates for service sources and AI providers. Fixes #1057. - **Team Worker room boundary convergence**: Remove Manager again after standalone Worker infrastructure reconciliation restores regular Team Worker personal-room membership. ([b5b0add](https://github.com/agentscope-ai/AgentTeams/commit/b5b0add)) - **Team Worker reference enforcement**: Keep referenced Worker CRs protected during direct deletion and reject Team API members whose required role is empty. ([d96f1ed](https://github.com/agentscope-ai/AgentTeams/commit/d96f1ed)) - **Team Worker room membership**: Force Manager out of regular Team Worker personal rooms when equal Matrix power levels prevent a normal kick. ([43545c2](https://github.com/agentscope-ai/AgentTeams/commit/43545c2))