1.5.4
Fixed (#396)
- Встроенный реестр capabilities: запись
glm-5сmodalities ["text","image"]через longest-prefix-матчинг ошибочно давала image-модальность всей семье glm-5.x (#396, инцидент на проде 2026-08-30: запрос агентом №1 с инлайн-изображением падал 400messages.content.type is invalid, allowed values: ['text']на итерации 0 — ход умирал с сырой ошибкой до первого ответа модели). По официальным докам z.ai вся mainline-линейка GLM text-only (glm-4.5/4.6/4.7/5/5-turbo/5.1/5.2/5.3), мультимодальны только VLM-модели:glm-5.3-flash(единственный мультимодальный GLM-5),glm-4.5v,glm-4.6v,glm-5v-turbo. Реестр приведён к официальным данным: точные записи всех версий с окнами/max-output (glm-5.3 и 5.3-flash — 1M/128K; glm-4.6+ — 200K; glm-4.5 — 128K/96K), добавленыglm-4.7,glm-4.7-flash,glm-5-turbo, VLM-ветка.glm-4.8не существует (доки 404, линейка 4.7→5) — запись не добавлялась: неизвестные модели и так консервативно text-only. - Сверка реестра по официальным докам вендоров (полная таблица с источниками — в комментарии #396): добавлены семьи с прода —
qwen3.5/qwen3.5-plus,qwen3.6/qwen3.6-plus,qwen3-vl(нативно мультимодальны, 256K/1M),deepseek-v4(1M/384K, text-only),deepseek-v3.1/v3.2(128K),minimax-m2.7(204 800, text),minimax-m3(1M, text+image). Исправлены устаревшие значения:deepseek-r1/v3128000 → 65536 (официальные 64K эпохи V3/R1),glm-4.5→ 131072 + max out 98304,glm-4.6200000 → 204800 + max out 131072,gpt-4/gpt-4-32kmodalities →["text"](базовый GPT-4 не имел vision через API — ошибочный «умеет» даёт тот же 400 на картинках),gpt-3.5-turboknown_since → 2023-03,gemini-2.5-flashmax out 65535 → 65536. Mistral сознательно не менялся (алиасы дрейфуют между поколениями — для актуальных алиасов инструмент per-model DB override), gpt-5 оставлен 400000 (поле семантически total context: 272K input + 128K output). - Эффект без правок кода: гейт
supportsImageInput(#388) больше не встраивает картинки в запросы text-only GLM (ход деградирует в текстовый ответ вместо 400), бейджи каталога моделей (#392) иsupports_vision_effectiveв API показывают корректный вердикт. На проде донастройка не нужна (supports_vision= NULL → авто по реестру).
Review (#396)
- ocr review — находки и решения см. в комментарии. Проверки:
go test ./... -count=1,golangci-lint run ./internal/providers/... ./internal/agent/...(0),go vet— зелёные; фронт не менялся. Golden-тест реестра (TestCapabilitiesRegistry_GoldenNoLoss) пополнен 19 новыми ключами;TestEffectiveSupportsImage— GLM-регрессия (mainline → false, VLM → true);TestSupportsImageInput— авто-кейс glm-5.3 → text-only (инцидент), glm-5.3-flash → vision через собственную запись.