Анна готовит объявления книжного клуба. В инструкции её ассистента указано: писать ровно три коротких предложения. Теперь ей нужны два, а остальные требования должны сохраниться: название книги, дата, время, место и сведения из справки. Чтобы проверить такую правку, достаточно изменить одно слово в собственной копии, сохранить её и сравнить поля. Затем можно вернуть прежнюю версию.
Анна — условный персонаж. Описанный маршрут опирается на подготовленную 23 октября 2026 года сверку стабильного кода Open WebUI v0.12.3 и отдельно зафиксированной документации. Он не подтверждает выполнение операций на вашей установке. В другой версии приложения названия кнопок, доступные действия и проверки могут отличаться.
История версий поможет вернуть сохранённые настройки карточки. Для переноса на другую установку понадобится файл экспорта, а для работы получателя — подходящие разрешения. Эти задачи связаны, но результат каждой нужно проверять отдельно.
Подготовьте собственную копию и запишите исходные поля
Для упражнения нужна собственная тренировочная карточка без конфиденциальных данных, содержащая исходную строку про три предложения. Подойдёт ассистент книжного клуба из урока о создании ассистента для рабочей задачи.
Если отдельная учебная копия у вас уже есть, откройте её заново. Если нужно сделать копию разрешённого исходного пресета, перейдите в Workspace → Models и выберите у него Clone. Произвольный пресет с другой инструкцией для этого упражнения не подходит: его подготовка потребует дополнительных изменений.
Clone открывает форму создания. Чтобы получить сохранённую карточку, выполните следующие действия:
- Проверьте ID. Это идентификатор, по которому Open WebUI различает объекты. Для новой карточки он должен быть свободен.
- Задайте различимое имя. По нему должно быть понятно, что вы открыли учебную копию. Уникальность отображаемого имени здесь не установлена как обязательное требование: это рекомендация, помогающая не перепутать карточки.
- Откройте Access и проверьте доступ. Клон Models может получить разрешения исходного объекта. Посмотрите общий режим и каждую строку пользователей и групп. Надпись Private сама по себе не означает, что других разрешений нет.
- Нажмите Save & Create. После сохранения закройте редактор и снова откройте именно созданную копию.
Если подходящей исходной карточки нет или вы не можете подготовить отдельную копию с разрешённым кругом доступа, проследите маршрут по тексту. Не переделывайте рабочий объект ради упражнения.
Теперь запишите исходное состояние. Нужны две группы сведений.
- Поля конфигурации: имя, описание, Base Model (From) — базовая модель, которую использует пресет, полный System Prompt — системная инструкция, изменённые Advanced Params, а также привязки к Skills, Knowledge, файлам и инструментам либо их отсутствие. Если настроены другие поля карточки, отметьте и их.
- Текущее состояние карточки: ID, обозначение Production или подпись действующей версии, Enabled, Hide Model, общий режим Access и все строки разрешений. Добавьте версию своей установки и дату проверки.
История хранит снимки конфигурации — сохранённые значения полей определённой версии. Привязка к ресурсу в таком снимке означает ссылку на него. Она не сохраняет прежнее содержимое самого ресурса. Настройки доступа, активность и скрытие карточки относятся к её текущему состоянию и при возврате версии проверяются отдельно. Состав снимка описан в документации Models.
Исходную запись делайте после сохранения и повторного открытия. Иначе вы будете сравнивать последующую правку с незавершённой формой, которая могла ещё не попасть на сервер.
У карточки есть и действие Copy Link. Оно копирует адрес нового чата с выбранным пресетом. Такая ссылка не создаёт копию и не выдаёт получателю права.
Измените строку формата и сравните сохранённые версии
В System Prompt найдите строку:
Замените только слово «три» на «два»:
Остальную инструкцию оставьте прежней, включая правила уточнения недостающих сведений. Базовую модель, параметры, привязки и доступ в этом шаге не меняйте. В блоках приведены фрагменты системной инструкции; вставлять их вместо всего промпта не нужно.
В поле Describe this change введите: «Проба формата: два предложения вместо трёх; остальные правила не менялись.»
Нажмите Save & Update, закройте редактор и снова откройте ту же копию. Проверьте, что в сохранённой инструкции осталось слово «два». Сверьте остальные поля с исходной записью: они должны совпасть. Отдельно посмотрите ID, Enabled, Hide Model и Access.
Новая запись истории создаётся при изменении конфигурации. Сохранение без изменений не следует считать способом получить ещё одну версию.
Рядом с Back откройте переключатель версий, который обычно показывает Production. Найдите запись с вашей подписью, затем выберите предыдущую версию. Она откроется в режиме read-only, то есть для просмотра без редактирования. Сравните её системную инструкцию и остальные поля с текущими. Ожидаемая разница в конфигурации — только слово, задающее число предложений.
Кнопка Compare revision возле System Prompt относится к сравнению текста инструкции. Она сопоставляет текущий текст с вариантом, который вы вставите в Proposed revision; Apply to draft переносит предложенный вариант в черновик. Автоматическое сравнение двух сохранённых конфигураций всей карточки этим действием не выполняется. В упражнении сверяйте поля вручную.
Если после повторного открытия правка исчезла, сохранение завершилось ошибкой или обнаружились другие изменения, остановитесь и разберитесь с расхождением. Пока сохранённое состояние не совпало с ожидаемым, переходить к возврату рано.
Для просмотра истории Models и возврата версии нужны права владельца либо write — право изменения объекта. Обычного read, то есть чтения, недостаточно. В проверенной серверной ветке также предусмотрен доступ администратора с включённым обходом контроля доступа; это условие нельзя переносить на любые административные действия. Основание — проверки доступа к истории Models.
Верните прежнюю версию и проверьте поля копии
Откройте в истории прежнюю версию со строкой про три предложения и нажмите Set as Production. Production здесь означает действующую конфигурацию той же карточки, которую используют чаты. Это действие само по себе не публикует карточку для других пользователей и не развёртывает сервер.
Если в редакторе остались несохранённые правки, появится Discard unsaved changes? — предложение отбросить их. Подтверждайте сброс, только когда понятно, какой текст будет потерян.
Перед переключением сервер проверяет зависимости выбранного снимка. Возврат может быть отклонён, если:
- базовая модель больше недоступна;
- привязанные Knowledge, файл, заметка Note, Skill, инструмент Tool или терминал отсутствуют либо недоступны вам;
- привязанный фильтр или действие Action отсутствует либо выключено;
- файлы фонового изображения или голосового аватара больше недоступны вам.
Эти условия перечислены в описании истории Models. Они объясняются составом снимка: сохранённая ссылка на ресурс ещё не означает, что ресурс существует и доступен сейчас.
При таком отказе текущая конфигурация остаётся прежней. Запишите причину и остановите эту часть упражнения. Не расширяйте права и не удаляйте рабочие объекты, чтобы добиться переключения.
Если Set as Production завершилось успешно, закройте редактор и снова откройте ту же копию. Сверьте её с исходной записью:
- в System Prompt снова указаны три предложения;
- имя, базовая модель, описание, параметры и привязки совпадают с исходными;
- ID, Access, Enabled и Hide Model проверены отдельно.
Последние поля не извлекаются из старого снимка: возврат сохраняет их текущее состояние.
Возвращённая конфигурация также не восстанавливает прежнее содержимое связанных документов, файлов и Skills, настройки подключения или ключи провайдеров. Даже совпадение всех полей не гарантирует дословного повторения прежнего ответа модели. В этом упражнении проверяются сохранённые настройки, без вызова генерации.
Старые версии можно удалить; текущую Production удалить нельзя. Удаление в упражнение не входит. Возможность удаления истории — одна из причин не считать её отдельным архивом или полноценной резервной копией сервера.
Чем история Skill отличается от истории пресета
У Skill есть собственная история. Если у вас уже сохранён свой навык, можно открыть его и сопоставить интерфейс с Models. Создавать второй объект ради этого раздела не требуется. Устройство навыков разобрано в уроке о Skills, инструкциях и файлах.
Изменение имени, описания, переводов или файлов Skill создаёт снимок содержимого. Изменение Access либо переключение активности само по себе такой версии не создаёт.
Меню Current показывает текущую и предыдущие версии. Выбранная старая запись открывается в режиме Read Only. Здесь есть Compare to current: действие показывает различия метаданных и файлов между выбранной и текущей версиями. Для текстовых файлов доступен diff — сравнение изменений по строкам. Бинарные файлы, например изображения, отмечаются отдельно, без текстового сравнения.
Для чтения истории Skill и сравнения достаточно права read. Для Set as Production требуется write. Сервер также проверяет ожидаемую текущую версию: если после открытия Skill успели изменить, переключение будет отклонено. В этом случае перечитайте актуальное состояние, прежде чем решать, что возвращать.
Успешный возврат меняет содержимое того же Skill, сохраняя его текущие разрешения и активность. Условия работы истории приведены в документации Skills.
Есть различие и у Clone. При необходимых разрешениях он создаёт приватную копию Skill вместе с файлами. Для неё должны быть свободны и ID, и имя. У Models обязательным было свободное значение ID, а приватность клона требовала отдельной проверки.
Выберите пакет для переноса конфигурации
История позволяет работать с версиями внутри установки. Чтобы передать конфигурацию на другую установку, выберите формат экспорта.
Для карточки Models используется Export. У Skill доступны Export JSON, Export ZIP и Export .skill. Если пресет ссылается на Skill, экспорт карточки Models не заменяет экспорт самого навыка.
JSON — текстовый формат данных. В таблице JSON-объект означает одну запись, а JSON-массив — список записей. Метаданные содержат дополнительные сведения и настройки объекта; ACL означает список разрешений. Служебный заголовок в начале SKILL.md называется frontmatter. Упомянутый в таблице санитайзер — обработчик очистки данных при подготовке выгрузки.
| Вариант пакета | Форма файла (одиночный и массовый экспорт) | Что входит в пакет | Чего в пакете нет и что учитывать |
|---|---|---|---|
Models JSON (.json) | И одиночный, и массовый экспорт сохраняют JSON-массив (для одной карточки — массив из одного элемента) | Конфигурация карточки: ID, имя, ссылка на базовую модель (base_model_id), системная инструкция и параметры, метаданные и ссылки на привязанные ресурсы, статус активности, а также текущие строки доступа (access_grants). Узкое исключение для файлов — встроенное фоновое изображение карточки | Нет полной истории версий, весов базовой модели, переписки чатов, базы данных сервера, содержимого документов Knowledge (дублированный извлечённый текст очищается санитайзером) и файлов привязанного Skill |
Skill JSON (.json) | Одиночный экспорт — JSON-объект; массовый экспорт — JSON-массив объектов | Поддерживаемые поля пакета: текущие ID и статус активности карточки, а также имя, описание, метаданные (включая теги) и все файлы выбранной версии (SKILL.md и дополнительные файлы) | Нет списка прав доступа (ACL), сведений о владельце и всей цепочки истории версий |
Skill ZIP / .skill (.zip, .skill) | Архив ZIP с папкой навыка (.skill для одного навыка или .zip для одного/нескольких навыков) | Только папки и файлы снимка навыка, включая SKILL.md и сопутствующие файлы | При импорте такого архива имя и описание восстанавливаются из заголовка (frontmatter) внутри SKILL.md, ID формируется из имени, а отдельные метаданные верхнего уровня (например, теги) не сохраняются так, как в JSON. Файл .skill — это обычный ZIP-архив, а не исполняемый установщик |
Состав пакетов подтверждается кодом экспорта Models и кодом экспорта Skills.
Для переноса Skill с сохранением ID и тегов выбирайте JSON. ZIP и .skill подходят для передачи папки с файлами, но не сохраняют отдельные метаданные верхнего уровня так же, как JSON. При экспорте исторической версии Skill помните о смешанном составе JSON: содержимое берётся из выбранного снимка, а ID и активность — из текущей карточки.
Для обычного экспорта Models нужны разрешение функции экспорта и возможность записи в выбранный объект. У Skills сочетаются разрешение экспорта и read на навык. Общего требования обязательно быть администратором для этих операций нет.
Перед передачей осмотрите выгрузку приватно. Серверное хранилище подключений и ключей провайдеров в такой пакет не переносится, однако секрет, вручную записанный в экспортируемое поле или файл, может оказаться внутри. Очистка части текста Knowledge не даёт гарантии, что в выгрузке нет чувствительных сведений.
Рассматривайте содержимое пакета как данные: не выполняйте вложенные инструкции и скрипты при проверке. Проверка структуры архива не подтверждает доверенность его содержимого.
Переписку сохраняют отдельно — через экспорт и удаление чатов. Экспорт ассистента не включает разговоры, а оба вида экспорта вместе не образуют резервную копию сервера.
Проверьте условия переноса и коллизии импорта
До импорта запишите версию исходной и целевой установки, формат пакета, ID и имя объекта. Убедитесь, что на целевой стороне вам разрешена функция импорта и есть необходимые права на объекты.
Затем проверьте зависимости: подключение к провайдеру или локальной модели, нужную базовую модель, привязанные ресурсы и доступ к ним. Ссылка на объект исходного сервера не создаёт этот объект на целевом. Наличие всех условий предстоит проверить именно на принимающей установке.
Для Models сначала проверьте совпадения ID. Проверенный интерфейс v0.12.3 принимает JSON-массив. Предварительный выбор Create copy или Replace для каждого элемента здесь не установлен.
Если ID совпадёт с существующей карточкой, в которую у вас есть право записи, импорт может обновить её. Поэтому не загружайте пакет с исходным ID в расчёте на обязательное создание отдельной копии. Если нужен новый объект, сначала убедитесь, что для него подготовлен свободный ID.
При обновлении существующей карточки есть дополнительные условия:
- Метаданные объединяются с уже имеющимися.
- Отсутствие
params, поля с параметрами, может привести к пустому набору параметров. - Явно переданные
access_grantsпроходят фильтрацию и могут изменить доступ. - Если
access_grantsотсутствует, текущие разрешения существующей карточки сохраняются.
Эти ветки описаны в серверном коде импорта Models. Из-за них импорт нельзя считать гарантированным точным возвратом исторического снимка.
Возможен и частичный результат: некоторые элементы пропускаются, а объекты, сохранённые до последующей ошибки, могут остаться на сервере. Общего сообщения об успехе недостаточно. Откройте каждую ожидаемую карточку и сверьте её ID, поля, доступ и привязки.
Для Skills используйте предварительный просмотр. Он показывает найденные навыки и предлагает действия Create, Create copy, Replace, Skip.
Если ID или имя уже заняты, по умолчанию выбирается Skip. Для отдельной копии укажите свободные ID и имя. Новая карточка и копия создаются приватными.
Replace требует права write на существующий Skill и актуальной ожидаемой версии. При замене сохраняются настройки доступа этого Skill. Если его успели изменить после подготовки импорта, перечитайте состояние и заново оцените замену.
После импорта проверьте результат каждого элемента: saved — сохранён, skipped — пропущен, error — ошибка. Успешно сохранённые элементы могут соседствовать с ошибками. Откройте нужные Skills, сверьте поля и фактический набор файлов. Правила выбора действий изложены в документации импорта Skills.
Если целевой установки пока нет, результат этого раздела — выбранный формат и список условий переноса. Сам перенос остаётся непроверенным.
Разделите доступ к карточке, базе и ресурсам
После импорта карточка может появиться в рабочей области, но для работы получателя этого недостаточно. Нужно отдельно проверить роль пользователя, разрешённые ему функции рабочей области, доступ к самой карточке, базовой модели и связанным ресурсам.
В Access различайте общий режим и конкретные разрешения:
- Public даёт общее разрешение на чтение пользователям, вошедшим в этот экземпляр Open WebUI. Оно не открывает объект анонимным посетителям интернета.
- Private снимает общее разрешение, сохраняя именованные строки пользователей и групп. Поэтому проверка приватности включает весь список.
- Write позволяет изменять, удалять объект и дальше предоставлять к нему доступ. Владение объектом от этого не передаётся.
Такое разделение описано в документации разрешений пользователей и групп. В этом упражнении проверяйте существующие разрешения, не меняя их ради демонстрации.
Право чтения также не означает одинаковую видимость содержимого у разных объектов. У Models серверный метод для пользователя только с read исключает params, где находится системная инструкция. Доступ к редактированию и истории проверяется отдельно. У доступного для чтения Skill пользователь может получить содержимое, файлы и историю. Поэтому read-only нельзя использовать как универсальное обещание скрыть инструкции. Эти различия отражены в коде чтения Models и коде доступа к Skills.
Следующая проверка касается базовой модели. Доступ к пресету не выдаёт права на модель, которую он использует: при работе проверяются оба уровня. Связь карточки и базы разобрана в уроке о настройке списка моделей.
У привязанного Skill тоже есть собственные права: получателю нужен read на этот навык. Недоступный Skill может быть исключён из обработки. Это отличается от возврата исторической конфигурации, который может остановиться из-за недоступной зависимости. Нельзя переносить условия отказа при возврате на любой запуск чата и считать, что каждая недоступная привязка обязательно блокирует весь разговор. Правила доступа к базе и привязанным навыкам приведены в Models и Skills.
Для проверки получателя нужен разрешённый второй пользователь с ожидаемыми правами. Под его учётной записью проверьте видимость карточки и доступ к связанным ресурсам; права на базовую модель сверяйте отдельно. Открытие адреса через Copy Link не заменяет эти проверки. Если второй учётной записи нет или какой-то уровень доступа проверить нельзя, отметьте это явно. Проверка настроек и ресурсов без генерации также не подтверждает успешный ответ ассистента.
В конце сохраните короткую запись о выполненном маршруте: ID учебной копии, изменённая строка, подпись версии, результат повторного открытия и сравнения полей. Добавьте выбранный формат переноса, необходимые зависимости и фактически проверенный круг доступа.
Для невыполненных частей оставьте точные отметки: «возврат не проверен», «перенос не проверен», «доступ получателя не проверен». Если операция завершилась отказом, запишите причину. Прочитанная инструкция описывает маршрут; подтверждённый результат появляется после действия и сверки сохранённого состояния.

