Релиз 0.12.4¶
Дата выхода: 28 октября 2026.
Релиз 0.12.4 — про расширяемость и работу с данными. Появились пакеты расширений и плагины, память агентов, движок пайплайнов в статусе preview, фоновая работа и рабочие копии репозитория. Добавлены мультимодальный ввод, внешние доступы и слой полномочий, раздельное развёртывание с исполнителем и хранение состояния в SQL.
Что входит в релиз
В заметки включены все изменения после версии 0.11.3 — линия 0.12.0–0.12.4 выходит одним релизом. Полный список коммитов и исправлений — в релизах репозитория (зеркало GitVerse: gitverse.ru/itphx/synth/releases).
Расширяемость: пакеты и плагины¶
- Пакет расширения. Один пакет ставит в инстанс сразу всё, что нужно сценарию: агентов-роли, скиллы, MCP-серверы и пайплайны. Установка идёт одной операцией, по шагам — скиллы, MCP, агенты, пайплайны, правила маршрутизации.
- Подтверждение администратором. Новый пакет получает статус «ждёт подтверждения»: до нажатия «Подтвердить установку» в инстансе ничего не меняется, а в диалоге перечислено, что именно будет добавлено.
- Снятие пакета. Кнопка «Удалить» убирает пакет вместе с поставленными артефактами — агентами, скиллами, MCP-серверами, пайплайнами и порождёнными правилами маршрутизации.
- Плагины. Код расширения встраивается в три готовых места: блоки системного промпта, фильтры вызовов к LLM и инструменты агента. Инструмент плагина проходит через тот же слой прав, что и встроенный.
- Модель доверия и сканер. У плагина есть уровень доверия (встроенный, проверенный, доверенный, сообщества), вердикт статического сканера и карантин до подтверждения администратором. Действия плагинов пишутся в журнал.
- Разделы настроек. «Аддоны» показывают установленные пакеты и пайплайны инстанса, «Плагины» — установленные плагины, журнал и политику слоя.
Подробнее — Плагины. Исполнение кода плагинов по умолчанию выключено: включение требует настройки инстанса и перезапуска.
Память агентов¶
- Портал памяти в ядре. Факты с источником, индексы, статус готовности и
граф связей доступны в интерфейсе и по HTTP API; CLI
synth memoryдаётstatus,list,index,rebuildиdrop. - Вкладка «Память». Правая панель показывает, что попало в контекст последнего хода (блоки фактов и recall), сколько активных фактов и индексов видит сессия, и позволяет выключить память для проекта — данные при этом сохраняются.
- Индексы с областью. Индекс области «Проект» виден только своему проекту, индекс области «Инстанс» — всем сессиям инстанса. Общий индекс не отключается: это ресурс инстанса.
- Консолидация и граф. Дубли фактов сливаются, у факта остаются версия, уверенность и источник — видно, откуда утверждение пришло и чем заменено.
- Автоматизация. Три системных шаблона (извлечение фактов из сессии, слияние дублей, переиндексация проекта) готовятся в пайплайн проекта и запускаются вручную или по расписанию.
- Локальные эмбеддинги. Рекомендуемый режим — Ollama на своём хосте: корпус не уходит внешнему провайдеру.
При индексации нет обфускации
Текст, попавший в индекс, уходит провайдеру эмбеддингов как есть, а найденные фрагменты — в запрос к модели. Каталоги и файлы секретов исключаются по именам, но нестандартный файл с паролями исключение не поймает. Держите секреты вне рабочего каталога.
Подробнее — Память агентов.
Пайплайны (preview)¶
- Второй движок. Пайплайн — спецификация из шагов и переходов между ними. Прогон идёт по опубликованной версии, в фоне, с журналом выполнения.
- Редактор. Визуальный режим с палитрой шагов и инспектором плюс режим JSON; переходы задаются условиями (равно, не равно, в списке, существует, больше, меньше).
- Четыре вида шагов. Агентский шаг, скриптовый, шаг с инструментом и шаг с человеком — последний останавливает прогон до решения.
- Черновик и версия. «Сохранить черновик», «Проверить», «Опубликовать»: прогон возможен только по опубликованной версии, и у пайплайна не больше одного активного прогона.
- Прогоны и артефакты. Журнал по шагам, «Одобрить»/«Отклонить» с комментарием, отмена прогона и артефакты до 50 МиБ на файл.
- Шаблоны и расписания. Шаблоны инстанса (включая шаблоны памяти) копируются в проект как черновик, а в расписаниях появилась цель «Пайплайн» — запуск по cron без создания сессии.
Preview
Пайплайны находятся в статусе preview: функция работает и доступна в интерфейсе, но формат спецификации, набор шагов и экраны могут меняться между релизами. Для критичных процессов пока используйте расписания и обычные сессии.
Подробнее — Пайплайны и Расписания.
Фоновая работа¶
- Что можно увести в фон. Фоновый саб-агент работает в отдельной дочерней сессии, фоновая шелл-команда пишет вывод в лог. Агент запускает их сам, вы — из интерфейса.
- Вкладка «Процессы». Единый реестр фоновой работы: фильтр по виду, тумблер «Только текущая сессия», остановка, удаление, открытие дочерней сессии и просмотр лога процесса.
- Перевод идущего прогона в фон. У работающего саб-агента и у запущенной
команды есть кнопка «В фон», а
ctrl+bпереводит в фон все блокирующие прогоны активной сессии. Перевод односторонний — вернуть прогон в диалог нельзя. - Лимиты. На одну сессию — два фоновых саб-агента и пять процессов, до десяти записей в реестре; вложенность — один уровень; лог процесса — до 10 МиБ.
- Уведомления. Старт и завершение фонового прогона отмечаются тостом и плашкой в ленте; терминальные записи живут семь дней.
- Реестр для агента. Агент видит свои и дочерние прогоны и читает лог инструментами, не открывая интерфейс.
Подробнее — Фоновая работа.
Диалог: вопрос и вмешательство¶
- Вопрос с вариантами. Агент посреди хода задаёт от одного до пяти вопросов (до восьми вариантов и свой ответ) и ждёт: ход приостановлен, док висит над композером.
- Проверка перед отправкой. Ответы собираются по шагам, сворачиваются в компактную панель и проверяются перед отправкой — видно, на что ответа нет.
- Таймаут. По умолчанию вопрос ждёт, пока на него ответят; срок можно задать отдельно — от пяти минут, с обратным отсчётом в доке.
- «Вмешаться». Тумблер в композере отправляет сообщение в текущий ход на ближайшей границе шага, не дожидаясь конца генерации; в ленте такое сообщение помечено «Вмешательство в ход».
- Ограничения. До пяти вмешательств на ход; вмешательство не расширяет права — в режиме плана сообщение тоже идёт под план.
- «Стоп» — это другое. Кнопка остановки отменяет ход целиком, а не вбрасывает сообщение.
Подробнее — Сессии и проекты.
Рабочие копии репозитория¶
- Инвентарь в проекте. Вкладка «Проект» → раздел «Worktree'ы» показывает вторичные рабочие копии репозитория: ветку, привязку к сессии, наличие изменений и состояние каталога.
- Своя копия на сессию. Сессию можно привязать к worktree — тогда её рабочий каталог берётся из копии, а не из каталога проекта; выбор — в блоке «Рабочий каталог» вкладки «Сессия», привязка видна бейджем в шапке.
- Создание. В диалоге «Новый worktree» поля можно оставить пустыми — ветку и имя каталога подберёт сервер; занятую ветку вторым worktree не взять.
- Удаление с подтверждением. Удалить копию, занятую живой сессией, нельзя; грязная копия требует второго подтверждения.
- Общий репозиторий. У копий общий
.git: refs, hooks и stash одни на всех; ignored-файлы (например,.env) в новую копию не копируются — нужен скрипт подготовки проекта. - Не граница безопасности. Worktree разделяет рабочие каталоги, а не права:
общий
.gitостаётся общим.
Подробнее — Рабочие копии репозитория.
Мультимодальный ввод¶
- Что можно приложить. Изображения, PDF, аудио и видео: кнопка прикрепления, drag&drop и вставка из буфера, чипы с превью, именем и размером, повтор при ошибке загрузки.
- Три пути доставки. Модель принимает модальность — вложение уходит как есть;
не принимает — работает вспомогательная модель семейства, а в диалог идёт
текстовое описание; обработки нет — файл отбрасывается в
attachments/рабочего каталога и агент видит путь. - Лимиты по умолчанию. 25 МиБ на файл, 10 файлов в сообщении, 1 ГиБ на сессию; осиротевшие вложения хранятся 30 дней.
- Админ-раздел «Мультимодальный ввод». Мастер-выключатель, набор модальностей, модели по модальностям, лимиты, белый список типов и поведение при отбросе; изменения применяются сразу.
- Внешние зависимости. Аудио транскодируется в wav, а если модель не
принимает видео нативно — из ролика берётся до пяти кадров; для этого нужен
ffmpeg. Без него вложение просто отбрасывается. - Приватность. Метаданные (EXIF, IPTC, XMP и текстовые чанки PNG) срезаются только при отправке провайдеру; в API и в рабочем каталоге остаётся оригинал. Модель сессии при этом не меняется.
Подробнее — Мультимодальный ввод.
Внешние доступы и полномочия¶
- «Доступы». Сохранённая OAuth-авторизация к внешнему сервису: код авторизации с PKCE или код устройства. В интерфейсе видна только маска секрета — сам токен не отдаётся никому.
- Управление доступом. «Переавторизовать», «Привязать к коннектору», «Отозвать»; отзыв необратим, а истёкший refresh требует явной переавторизации.
- Без секретов в коннекторах. Заголовки авторизации открытым текстом в MCP-коннекторе запрещены — только через доступ; секрет клиента провайдера хранится в переменной окружения или файле секретов.
- Права на доступ. Своим доступом распоряжается владелец, доступом проекта — участник с правом изменения содержимого, инстансным — ADMIN и LEAD.
- Полномочия. Право выражается грантом «действие × цель» с эффектом «Разрешить», «Спросить» или «Запретить». Слой только сужает решения прав инструментов и не расширяет их.
- Режимы слоя. «Выключен», «Только журнал» (решение считается и пишется, но не применяется — удобно для миграции) и «Принуждение»; включается конфигом, политика читается при старте. «Спросить» не снимается режимом YOLO.
- Раздел «Полномочия». Только чтение: режим, политика инстанса, роли с грантами и источником, привязки агентов.
Подробнее — Внешние доступы и Полномочия.
Развёртывание: исполнитель и образы¶
- Две топологии одной конфигурации.
inline— команды исполняются в процессе сервера (all-in-one),remote— сервер остаётся тонким управляющим слоем, а shell, git и поиск идут в отдельных контейнерах-исполнителях. Переключатель — параметр запуска, смена только перезапуском. - Общий рабочий том. Исполнителю и серверу нужен один и тот же каталог workspace с доступом ReadWriteMany; если подходящего класса хранилища нет, подключается свой claim.
- Доверие и сеть. Токен между сервером и исполнителем берётся из Secret и не хранится в конфиге; сетевую политику можно сузить до «вход только от управляющего слоя, выход только DNS».
- Flavor-образы. От тонкого
slimбез инструментов доcore,dev,devops,browserс браузерной автоматизацией иfullсо всем набором. Сокет Docker не монтируется ни в одном варианте. - Совместимость протокола. Протокол исполнителя — версия 5, она добавляет вложения в результатах MCP-вызовов. Исполнитель старого протокола продолжает работать: результат приходит текстом, вызов не падает.
- Локальные сценарии. В
docker composeпоявились профилиall-in-oneиsplit— второй поднимает тонкий сервер, исполнитель, интерфейс и общий том; профильpostgresвключается отдельно и сочетается с любым из них.
Подробнее — Docker, Kubernetes / Helm и Конфигурация.
Хранение состояния в SQL¶
- Что переехало в PostgreSQL. Пакеты расширений, скиллы, проектный контекст и прежний контур пайплайнов теперь живут в базе — как сессии, проекты и настройки. Файловое хранилище остаётся рабочим по умолчанию.
- Что осталось на томе. Бинарные объекты — вложения, артефакты прогонов, содержимое скиллов, логи процессов — остаются файлами, в базе только ссылки. Учёт ссылок не даёт удалить объект, который ещё нужен.
- Сборка мусора. Осиротевшие вложения удаляются по сроку (по умолчанию 30 дней), общий уборщик работает и для staging-загрузок.
- Деградированный режим. Если база недоступна, инстанс поднимается на файловом фоллбеке строго на чтение: диагностика работает, изменения отвечают отказом, доступ — администратору. Возврат — только перезапуском.
- Чего не делать. Данные фоллбека нельзя копировать в базу вручную: после восстановления базы инстанс возвращается к ней, а ручная копия создаёт расхождение. Для режима базы рекомендуется остановка вместо фоллбека.
- Бэкап.
synth backupснимает каталог данных и предупреждает, что базы в архиве нет: полный бэкап — дамп базы плюс архив тома с бинарными объектами.
Подробнее — Конфигурация и CLI.
Исправления и мелочи¶
- Сообщения из мессенджеров. Голосовое, фото или файл без текста приходят в диалог понятным маркером, а не служебной структурой; аудио и медиа без подписи доходят до модели так же, как обычные вложения.
- Звук внутри видео. Если модель принимает видео, но не принимает аудио, дорожка извлекается из ролика и распознаётся вспомогательной моделью — расшифровка идёт в диалог текстом рядом с самим видео.
- Поддержка форматов — из каталога. Какие вложения принимает модель, определяется по каталогу провайдера, а не по префиксу имени модели: PDF у OpenAI-совместимых провайдеров и Anthropic больше не отбрасываются по ошибке.
- Живые события в интерфейсе. Миниатюра вложения в отправленном сообщении и статусы фоновых прогонов обновляются без перезагрузки страницы.
- Контекст. Отключение одной реплики в контексте убирает весь её ход целиком, а не половину; поток и финальное сообщение одинаково показывают «Размышления».
- Права на чтение. Проверка доступа к сессиям и проектам приведена к одной матрице: чтение не даёт права на изменение, участник проекта читает сессии проекта, администратор и ведущий видят всё.
- Фон и рабочие копии. Идентификатор фонового процесса теперь сохраняется и в базе, а у рабочих копий исправлены идентификатор в ответе инструмента, действие в событии и гонка при привязке сессии.
- Плагины и мелочи. Подтверждение установки пакета учитывается при активации, фингерпринт индекса памяти считается по фактической модели эмбеддингов; в интерфейсе настроек, текстах ошибок и локализации — мелкие правки.
Как обновиться¶
Перед обновлением
- PostgreSQL. Если инстанс работает на базе, сначала сделайте дамп базы
и резервную копию тома:
synth backupснимает каталог данных, но базы в архиве нет. Полный бэкап — дамп плюс архив тома. - Схема данных. После обновления выполните
synth migrate --yes, если инстанс сообщает о несоответствии схемы; повторный прогон безопасен. - Remote-режим. Обновляйте сервер и исполнителей согласованно: протокол исполнителя — версия 5. Старый исполнитель деградирует безопасно — отдаёт текстовый результат вместо вложений, но новые возможности вложений в MCP-результатах не появятся.
Порядок зависит от способа установки:
Тома с данными не затрагиваются — история и настройки сохраняются. Если используется PostgreSQL, обновите и её контейнер по вашему регламенту.
Данные backend хранятся на PVC и переживают обновление. В split-режиме образ исполнителя обновляется тем же релизом: не оставляйте сервер и исполнителей на разных версиях дольше, чем нужно.
Обновление — не synth update (команда обращается к npm-реестру), а
замена бандля: остановить сервис, распаковать новую версию, выполнить
synth migrate --yes, запустить и проверить.
Проверка после обновления
Убедитесь, что инстанс отвечает на /ready, интерфейс открывается без
ошибок, а разделы «Аддоны» и «Плагины» показывают ожидаемое состояние.
Если включён мультимодальный ввод, проверьте, что вспомогательные модели по
модальностям выбраны и доступны.
Подробнее — FAQ, Docker, Kubernetes / Helm и Эксплуатация (офлайн).
Что дальше¶
- Возможности — полный обзор платформы.
- Пайплайны — как собрать первый пайплайн и запустить прогон.
- Диагностика — что проверять, если что-то пошло не так.