Совместимость Qwen3.5:32B и OpenCode - часть контракта

Симптом

Сессия OpenCode с моделью Qwen3.5:32B начинала выполнять задачу, модель загружалась и некоторое время работала, но затем агентский цикл внезапно обрывался посреди ответа.

Контекст

Qwen3.5:32B успевала начать inference и даже изменить файлы. После появления определённых блоков reasoning harness OpenCode переставал продолжать обработку ответа.

Корневая причина

Формат reasoning, который возвращала модель, не совпадал с форматом, который понимал используемый OpenCode. Неизвестные блоки ответа трактовались как ошибка протокола, хотя сама модель и локальный inference продолжали работать.

Ошибочное предположение

Я предполагал, что agent harness автоматически поддерживает форматы новых моделей. На практике совместимость включает не только API endpoint и JSON-схему, но и reasoning blocks, tool calls, streaming и обработку ошибок.

Обнаружение

Проблема воспроизводилась в связке конкретной версии OpenCode и локальной модели: модель загружалась, файлы менялись, а сессия обрывалась после появления неизвестного формата reasoning.

Исправление

Я восстановил совместимость обновлением OpenCode до версии, в которой этот формат обрабатывался, и обновлением модели до совместимой версии.

После инцидента я стал обновлять версии agent harness и модели как связанную пару, а не независимо друг от друга.

Проверка

Матрица совместимости должна запускать короткую задачу, которая проверяет:

Проверка должна падать на неизвестном блоке ответа до того, как новая версия попадёт в рабочий workflow.

Общий вывод

Модель и agent harness образуют протокол, а не две независимые зависимости. Пиньте совместимые версии, проверяйте реальные форматы ответов и не считайте успешную загрузку модели доказательством совместимости всего агентского цикла.