Допустим, вы хотите превратить короткий перечень вещей для вымышленного пикника в чек-лист из четырёх пунктов и сразу решить, нужна ли эта переписка в боковой панели. Временный режим не создаёт обычную запись в истории, пока вы явно не нажмёте доступную кнопку Save Chat; экспорт сохраняет отдельную копию беседы в файл на вашем устройстве; удаление убирает выбранную запись из истории, но не уничтожает данные во всех остальных хранилищах.
Мы опираемся на исходный код и документацию стабильного релиза Open WebUI v0.12.3 с английским интерфейсом: в вашей установке версия, перевод, права доступа и видимость кнопок могут отличаться. Пример с пикником здесь полностью учебный и вымышленный, а практика в конце урока приведена для добровольной самостоятельной проверки и заранее не выполнялась. Прежде чем вводить первое сообщение, выберем режим будущего разговора.
Как включить временный чат и распознать режим
Режим работы выбирают в новом чате ещё до отправки первой реплики. Пока у беседы не появился собственный идентификатор, в верхней панели отображается кнопка Temporary Chat (верхняя панель чата). Нажатие на неё включает временный режим: рядом со значком появляется галочка, а адрес страницы получает параметр ?temporary-chat=true. Когда вы начнёте такой диалог, в верхней части окна будет видна текстовая метка Temporary Chat (отображение метки режима). До создания чата при разрешённом необязательном режиме также можно использовать встроенную команду /temporary (команда /temporary и её ограничения).
Чтобы выйти из необязательного временного режима без сохранения переписки, начните новый чат, до отправки сообщений проверьте верхнюю панель и выключите доступный переключатель (сброс истории при новом чате). Проверять кнопку в новом чате важно потому, что временная сессия запускается не только вручную или через ?temporary-chat=true, но и автоматически, если включена пользовательская настройка по умолчанию (temporaryChatByDefault) либо администратор задал принудительный временный режим (условия включения временного чата). Когда вы открываете любой ранее сохранённый чат из боковой панели, флаг временного режима для открытой страницы выключается (загрузка существующего чата), однако это просто переход к старой записи, а не сохранение вашего предыдущего временного разговора.
Отсутствие кнопки Temporary Chat в верхней панели не означает поломку интерфейса. У обычного пользователя переключатель скрыт в двух противоположных случаях: когда отключено право temporary или когда одновременно включён принудительный режим temporary_enforced (условия видимости переключателя). Если в необязательном режиме вы свободно включаете и выключаете переключатель, то при принудительном режиме обычный пользователь отключить временный чат не может — не пытайтесь обойти это ограничение через адресную строку или команду /temporary. Администраторы от этих пользовательских ограничений освобождены.
Когда режим выбран и понятен по признакам на экране, от него напрямую зависит, появится ли беседа в списке чатов и как изменить это решение по ходу разговора.
Что сохраняется в истории и зачем нужна Save Chat
Для одноразового списка вещей на пикник — плед, две кружки, салфетки и мяч — постоянная запись в боковой панели обычно не нужна. В стандартном режиме Open WebUI при отправке сообщения создаёт запись в базе и дальше обновляет историю и ветки диалога на сервере (логика сохранения сообщений). Временный чат устроен иначе: он обходит штатную запись в историю, и пока вкладка открыта, реплики держатся только в текущем открытом разговоре.
Из кода v0.12.3 следует важное ограничение: после закрытия или перезагрузки страницы у такой беседы нет сохранённой серверной записи, из которой интерфейс мог бы штатно восстановить диалог, а переход к новому чату сбрасывает текущую несохранённую историю (сброс текущей истории). Это именно вывод из исходников о работе штатной истории (отдельный эксперимент с браузером мы не проводили), поэтому исчезновение текста с экрана нельзя приравнивать к полному физическому стиранию следов в памяти браузера или на внешних узлах.
Временный чат нельзя называть «никогда не сохраняемым». Если в вашей установке временный режим необязателен, после появления сообщений в верхней панели становится видна кнопка Save Chat (кнопка сохранения временного чата). Если вы передумали и решили оставить чек-лист пикника в истории, нажатие Save Chat явно меняет статус беседы: создаётся обычная сохранённая запись со всеми сообщениями, выбранными моделями и параметрами, временный режим выключается, а браузер открывает постоянный адрес /c/<saved id> (перевод временного чата в постоянный).
Когда у обычного пользователя одновременно действуют temporary и принудительный temporary_enforced, сервер блокирует создание любых новых сохранённых чатов, хотя ранее сохранённые беседы по-прежнему можно открывать, а администраторы от этого запрета освобождены (серверная проверка запрета сохранения). В такой конфигурации ни Save Chat, ни импорт не работают как обход. При этом даже без сохранения в историю ваш активный запрос всё равно проходит через сервер Open WebUI и отправляется на настроенный сервер модели, который обрабатывает диалог (описание временного режима в документации), поэтому временный режим уменьшает сохранённую историю, но не даёт анонимности.
Поскольку запись в списке бесед — лишь одно из мест хранения, перед экспортом или удалением важно отделить её от остальных контуров, где могут оставаться данные.
Какие данные находятся за пределами истории чатов
Отсутствие разговора в левой панели не означает, что никаких связанных данных больше нигде нет. В Open WebUI история диалогов, долговременная память, загруженные файлы, папки и внешние сервисы живут в разных контурах:
- Долговременная память (
Memory). Записи памяти хранятся в отдельной пользовательской таблице независимо от сообщений конкретного диалога (модель хранения Memory). Будет ли существующая память подставляться в запрос, зависит от возможностей модели, настроек и прав доступа (обработка Memory в запросе, условия работы с памятью). Фоновое пополнение памяти после ответа подчиняется дополнительным условиям: должна быть включена сама память и её фоновый обзор, должны подходить возможности модели, активная функция в запросе, права пользователя и наступление шага проверки (дополнительные условия фонового обновления Memory). Сам по себе временный чат не выключаетMemory, заметки (notes), веб-поиск или подключённые инструменты (Memory и инструменты во временном чате), а удаление чата не очищает записиMemory(удаление структур чата в базе). Подробнее этот контур разобран в уроке про память и персонализацию. - Файлы, папки и вложения. Оригиналы загруженных файлов и извлечённый из них текст управляются отдельно от истории бесед (удаление файлов в роутере). Когда вы удаляете беседу, файловое хранилище автоматически не очищается; а когда скачиваете чат в JSON, в файле сохраняется структура самой беседы и те ссылки, URL или текстовые фрагменты, которые уже попали внутрь сообщений, но не создаётся отдельный бинарный архив исходных документов. О том, как различать исходный документ и текст в диалоге, мы говорили в материале про файлы и прошлые разговоры как контекст.
- Провайдер модели, инструменты, логи и резервные копии. Организация, которой принадлежит сервер, управляет базой данных, журналами и резервными копиями (
backup), а при обращении к внешней модели переданные запросы и контекст могут обрабатываться на стороне провайдера (контуры хранения и внешней обработки, сохранение данных в логах и резервных копиях). Разрешённые инструменты также могут сохранять или отправлять собственные данные. По официальной документации журнал аудита (Audit logging) выключен по умолчанию; если администратор включает уровниREQUESTилиREQUEST_RESPONSE, в лог могут попадать тела запросов и ответов в зависимости от настроенных фильтров, хотя стандартные исключения по умолчанию пропускают сам маршрут чата (настройки аудита и безопасности). Документированное значение по умолчанию не показывает, как именно настроен ваш сервер: реальные сроки хранения, обучение моделей, логи и политика резервного копирования определяются правилами вашего оператора и провайдера.
Держа в уме эти границы, посмотрим, как сохранить собственную копию отдельного разговора на устройство и какой формат для этого выбрать.
Как скачать одну беседу и выбрать формат
Когда в беседе уже есть сообщения, а у вашей учётной записи есть право chat.export (или вы вошли как администратор), в меню открытого чата в верхней панели доступен пункт Download (пункты меню Download). Чтобы осознанно выбрать один из трёх форматов, важно различать полное дерево сообщений — все сохранённые варианты и боковые ветки ответов, которые возникали при перегенерации или сравнении моделей, — и выбранную цепочку, то есть один линейный путь сообщений, открытый сейчас на экране (устройство таких развилок мы разбирали в уроке про ветки ответов при сравнении моделей). Формат JSON сохраняет беседу как текстовую структурированную запись (сериализуемый объект), которую программа может снова прочитать и разобрать по полям, тогда как текстовый и PDF-форматы предназначены для чтения человеком:
Формат в меню Download | Что получаем в файле | Для какой задачи подходит | Главный предел формата |
|---|---|---|---|
Export chat (.json) | Массив из одной структурированной записи беседы, включая полное дерево всех веток сообщений и указатель на текущую выбранную ветку | Сохранить полную структуру диалога со всеми ветками для архива или последующего поддерживаемого импорта | Не упаковывает бинарные оригиналы вложений, не переносит автоматически Memory, папки и права доступа, не заменяет резервную копию сервера |
Plain text (.txt) | Последовательность ролей и текста только по одной выбранной цепочке сообщений (сборка текста и генерация PDF) | Быстро прочитать, процитировать или передать линейный текст текущего варианта диалога | Не сохраняет боковые ветки ответов, настройки чата и структуру для обратного импорта |
PDF document (.pdf) | Документ отображения текущей беседы для чтения или печати (сохранение страниц PDF и запасной текстовый вариант) | Показать или отправить оформленный диалог без редактирования структуры | Не является переносимым форматом истории и не восстанавливает дерево сообщений или параметры |
От режима чата зависит и то, откуда берётся запись в момент скачивания (получение объекта чата при экспорте). Для обычной сохранённой беседы интерфейс заново запрашивает объект с сервера по его идентификатору (getChatById). Для временного разговора берётся текущий объект открытого чата прямо из состояния страницы. Это значит, что пока временная беседа о пикнике открыта, содержит сообщения и вам доступен Download, вы можете скачать её в .json, не нажимая Save Chat. Такое скачивание создаёт локальный файл на вашем устройстве, но не добавляет запись в серверную историю; кроме того, временному объекту не стоит заранее приписывать весь набор служебных полей, который бывает у постоянно хранимой в базе записи.
В нашей учебной ситуации с чек-листом для пикника наметим именно Export chat (.json), чтобы сохранить проверяемую структуру разговора. Само нажатие на кнопку ещё не считается проверенным результатом: убедиться, что копия создана, можно только после того, как вы самостоятельно найдёте скачанный файл на устройстве и откроете его. После сохранения на диск этот файл живёт отдельно от Open WebUI и останется у вас, даже если позже вы удалите саму беседу из истории.
Помимо скачивания одного диалога, в настройках предусмотрена выгрузка всей вашей сохранённой истории разом — у неё другой охват и свои ограничения.
Как выгрузить свою историю через Data Controls
Если нужно сохранить не один черновик, а все свои накопленные диалоги и в вашей установке доступен этот раздел, откройте Settings, перейдите в группу Data и выберите вкладку Data Controls (вкладка Data Controls в окне настроек, названия строк и разделов Data Controls). При наличии соответствующих прав в разделе чатов располагается строка Export Chats, а справа от неё — кнопка действия Export (разметка строки и кнопки экспорта).
Нажатие на Export сохраняет на устройство файл с именем chat-export-<timestamp>.json (функция сохранения файла экспорта). Сервер передаёт записи последовательно, а браузерный клиент сам собирает их и записывает на диск обычный JSON-массив (формирование JSON-массива в клиенте). В эту выгрузку попадают собственные сохранённые чаты текущего пользователя — как активные из основного списка, так и убранные в архив, — а внутренние служебные записи автоматически исключаются (маршрут выгрузки чатов пользователя, фильтрация чатов в модели базы данных).
Каждая запись в таком массиве включает саму беседу с деревом сообщений, её метаданные и переменные, ссылку на папку, отметки архива и закрепления, а также временные метки создания и обновления (состав записи сохранённой беседы). Оценивая эту выгрузку, учитывайте её границы:
- это персональная выгрузка вашей истории, а не резервная копия всего экземпляра Open WebUI;
- в файл не входят чужие учётные записи, настройки сервера, записи
Memoryи оригиналы файлов из хранилища; - поведение на очень больших объёмах истории или при параллельных изменениях здесь не тестировалось, а наличие ссылок на папки или вложения внутри записи не гарантирует, что они автоматически восстановятся в другой среде.
Поэтому в добровольной практике в конце урока выгружать всю личную историю не потребуется. Чтобы не принимать скачанный JSON-файл за средство полного возврата прежних объектов, посмотрим, как именно работает импорт.
Что произойдёт при импорте JSON
Если импорт разрешён в вашей установке, в той же вкладке Data Controls над экспортом расположена строка Import Chats с кнопкой Import, открывающей выбор файла с расширением .json (выбор JSON и кнопка Import). Импорт рассчитан не на любой произвольный JSON, а на JSON-массив поддерживаемой структуры: стандартный и старый (legacy) формат выгрузки Open WebUI (распознавание и подготовка форм импорта, ожидаемые форматы импорта), а также распознаваемую по ключу mapping выгрузку из ChatGPT, которую интерфейс предварительно конвертирует (распознавание выгрузки ChatGPT).
Главное правило импорта состоит в том, что он добавляет новые копии бесед, а не возвращает на место прежний серверный объект. Каждая импортируемая беседа получает новый уникальный идентификатор, поэтому существующие чаты не перезаписываются, а повторная загрузка того же самого файла создаст в списке дубликаты (описание добавления чатов в документации).
У обычного пользователя для этой операции должно быть разрешение chat.import, и для его учётной записи не должен действовать запрет на создание сохранённых чатов, который возникает при одновременном включении temporary и temporary_enforced; администраторы от обоих этих ограничений освобождены (право импорта и исключение для администратора, условия запрета сохранения для пользователя). При проверке ссылки на папку сервер оставляет её только при наличии доступа на запись к существующей папке и сбрасывает недоступные ссылки (проверка доступа к папке при импорте). Следовательно, импорт нельзя считать кнопкой безусловного восстановления: после переноса расположение по папкам, права доступа и работоспособность ссылок на вложения нужно проверять отдельно.
Поскольку JSON-файл при импорте создаёт лишь новую копию с новым идентификатором, а не возвращает удалённый объект, мы можем точно сопоставить архивацию и удаление чата.
Как удалить одну беседу и чем удаление отличается от архива
Прежде чем нажимать кнопку удаления, решите, нужно ли вам стереть запись из базы или достаточно убрать её с глаз из левой панели. Обычную организацию списков мы разбирали в уроке про историю, поиск и папки: если разговор может понадобиться позже, используйте архив. Архивация сохраняет запись чата в базе данных, скрывает её из основного списка и позволяет вернуть беседу обратно через окно Archived Chats (работа с архивными чатами в документации).
Удаление устроено иначе. При наличии права chat.delete в меню конкретной беседы доступен пункт Delete (пункт Delete в меню чата). Нажатие открывает диалоговое окно Delete chat?, где выводится название выбранной беседы и две кнопки: Cancel и Confirm (вызов диалога Delete chat?, кнопки Cancel и Confirm). Перед подтверждением всегда сверяйте название диалога в окне; при малейшем сомнении нажимайте Cancel.
Когда вы нажимаете Confirm, интерфейс отправляет запрос на удаление (deleteChatById), а для обычного пользователя сервер проверяет право chat.delete и принадлежность беседы его учётной записи (проверка права и принадлежности для обычного пользователя). В исследованных маршрутах v0.12.3 эта операция удаляет записи сообщений и самой беседы в базе данных, а также очищает связанные записи общего доступа и ссылки автоматизаций (удаление чата и связанных записей в модели). Пользовательской «корзины» или кнопки Undo в исследованном интерфейсе v0.12.3 не предусмотрено, и документация прямо предупреждает о необратимости действия (предупреждение о необратимости удаления).
Держите в уме обе границы этого действия:
- Что не вернётся штатно. Если вы заранее скачали корректный
.jsonподдерживаемой структуры и в вашей установке разрешён импорт без запрета сохранения, из файла можно создать новую копию с новым идентификатором, но она не восстановит прежний серверный объект, старые ссылки общего доступа или гарантированную привязку к папкам и файлам. - Что не стирается этим нажатием. Отсутствие кнопки
Undoу пользователя не означает, что оператор сервера не сможет восстановить базу из системногоbackup, и не доказывает физическое уничтожение копий на вашем диске, вMemory, в файловом хранилище, в старых серверных логах или у провайдера модели.
Отдельно в Settings → Data → Data Controls существует строка Delete All Chats с кнопкой Delete All, которая открывает запрос Are you sure you want to delete all chats? This action cannot be undone. (подтверждение Delete All Chats, кнопка Delete All). При наличии права chat.delete она удаляет всю историю текущего пользователя, включая беседы, убранные в архив (маршрут удаления всех чатов пользователя). Для учебных целей эта кнопка категорически не нужна: не нажимайте Delete All ради проверки.
Что можно проверить на вымышленной беседе
Эта добровольная проба на несекретном вымышленном диалоге при подготовке урока не выполнялась. Приступайте к ней только в том случае, если у вас есть доступ к обычному аккаунту и разрешённой модели, вы согласны на возможный расход вычислительных ресурсов или токенов, в интерфейсе доступны нужные кнопки, а на устройстве можно найти и открыть скачанный текстовый файл.
Никакие рабочие переписки, реальные персональные сведения, файлы-вложения, Delete All, выгрузка всей личной истории, импорт или создание дополнительных веток здесь не используются. Откройте новый чат, по желанию выберите временный режим до ввода текста и отправьте ровно один вымышленный запрос с учебным маркером:
ПИКНИК-ПРОБА-0508. Преврати этот вымышленный перечень вещей для пикника в чек-лист из четырёх пунктов: плед, две кружки, салфетки, мяч. Не добавляй вещи, людей, даты или адреса.
Дальше выберите только те развилки, которые доступны в вашей установке и нужны вам для проверки:
- Экспорт из временного чата. Пока страница открыта и в меню доступен
Download→Export chat (.json), вы можете скачать.jsonбез сохранения беседы в историю. - Необязательный перевод в историю (
Save Chat). Если временный режим необязателен и вы хотите проверить сохранение в боковую панель (или подготовить отдельную тестовую запись для следующего шага), нажмите доступную кнопкуSave Chat. Если действует принудительный временный режим и сохранение запрещено, остановитесь на проверке режима и разрешённого экспорта — не пытайтесь обойти запрет сохранения. - Необязательное удаление (
Delete). Выполняйте этот шаг только по желанию и только при одновременном соблюдении трёх условий: эта специально созданная учебная беседа с маркеромПИКНИК-ПРОБА-0508сохранена как отдельная обычная запись в истории, вы уже нашли скачанный.jsonна своём устройстве и проверили маркер внутри файла, и вы действительно хотите удалить именно эту тестовую запись. В окнеDelete chat?сверьте точное название тестовой беседы; при малейшем сомнении или невыполнении любого из трёх условий нажмитеCancelи пропустите шаг.
Запишите результаты в раздельный лист наблюдений, отмечая только то, что вы видели своими глазами (если шаг не делался или кнопка скрыта, так и запишите — «не выполнено» или «недоступно»):
- Известные сведения об установке: версия Open WebUI, язык интерфейса и какие права доступа вам известны (что неизвестно — оставьте как неизвестное).
- Признак режима
Temporary Chat: включён / не включён / не проверен; какой именно признак наблюдался (галочка на кнопке,?temporary-chat=trueв адресе, меткаTemporary Chatпосле старта). - Запись в боковой панели истории до
Save Chat: появилась новая запись или не появилась / не проверено. - Явное сохранение
Save Chat: не выбрано / недоступно / выполнено; отдельно укажите проверенный признак сохранения (появление записи в списке и переход на постоянный адрес/c/<saved id>). - Файл
.jsonна устройстве: файл найден / не найден на диске; открыт ли он и проверены ли внутри учебный маркерПИКНИК-ПРОБА-0508и текст диалога (само всплывающее уведомление браузера без открытого файла проверкой не считается). - Удаление тестовой записи
Delete: пропущено / недоступно / отменено черезCancel/ выполнено; если выполнено, отдельно отметьте видимое исчезновение тестовой записи из списка истории. - Невыполненные шаги и открытые вопросы: какие действия вы пропустили и почему; состояние внешних логов, резервных копий и данных у провайдера модели в любом случае остаётся неизвестным из пользовательского интерфейса.
Ваши записи в этом листе относятся только к конкретной попытке в вашей установке. Появление ответа модели на экране или уведомление браузера не доказывают, что экспорт сработал, а исчезновение несохранённой вкладки или удалённой строки из списка не доказывает физического стирания данных во всех внешних хранилищах.
Работая с чатами в Open WebUI, разделяйте три независимых решения: попадёт ли разговор в серверную историю (временный режим или явный переход в постоянную запись), нужна ли вам собственная копия на устройстве (структурированный .json с возможностью последующего поддерживаемого импорта либо документ для чтения) и что делать с уже сохранённой записью в списке — скрыть её в возвращаемый архив или удалить без штатной кнопки Undo в исследованном интерфейсе. Когда в следующем несекретном разговоре вам понадобится одноразовый черновик или отдельная копия на диске, выберите подходящий режим до первой реплики, а вопросы о серверных логах, резервных копиях и сроках хранения у провайдера модели решайте по фактической политике оператора вашей установки.
Если беседу нужно показать другому пользователю, разберите создание ссылки на разговор и отзыв доступа.

