Оригинал: https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/pamyat-i-personalizaciya/

# Память Open WebUI: как сохранять и менять предпочтения

Как работает память Open WebUI: сохраняем предпочтение, проверяем запись и ответ в новом чате, меняем или удаляем данные с учётом ограничений.

[![Тимофей Ермолаев](https://timofei-ermolaev.ru/_astro/timofei-ermolaev-portrait.s0mCFw-J_Z1x8STQ.webp)](<https://timofei-ermolaev.ru/ob-avtore/>)

[Тимофей Ермолаев](<https://timofei-ermolaev.ru/ob-avtore/>) Директор по информационным технологиям (CIO)

**Опубликовано**

22 октября 2026 г.

**Обновлено**

22 октября 2026 г.

**На урок**

18 мин

**Тема**

[Повседневная работа и контекст](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/>)

## После урока вы сможете

- Различать историю, текущий вход модели, Compaction, Memory и системную инструкцию
- Сохранять несекретное предпочтение и проверять точную запись
- Отделять наличие записи от фактической формы нового ответа
- Менять или удалять свою запись и понимать пределы выключения памяти

**Проверяемый результат:** Сверяем свою запись, отдельно фиксируем фактический ответ нового чата и проверяем изменение или удаление записи.

Допустим, человек регулярно спрашивает о незнакомых терминах и замечает, что проще воспринимает ответ, когда сначала идёт один бытовой пример, а уже после него даётся краткое определение. Повторять это пожелание в начале каждого диалога неудобно, поэтому возникает задача сохранить его один раз для будущих разговоров.

Для таких устойчивых сведений в Open WebUI предусмотрена встроенная пользовательская память (`Memory`): она хранит отдельные записи вашего профиля ([модель памяти](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/models/memories.py>) ) и управляется через настройки персонализации ([раздел `Personalization`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Settings/Personalization.svelte>) , [окно записи](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Settings/Personalization/MemoryModal.svelte>) ). Но сам факт сохранения строки в списке ещё не означает, что она автоматически попадёт в следующий запрос ([обработка памяти](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/memory.py>) ) и тем более что модель построит ответ по этому правилу.

Ниже мы разберём на этой ситуации, чем запись в памяти отличается от истории чата и системной инструкции, как вручную сохранить одно предпочтение, при каких условиях сервер передаёт его во вход нового ответа и как затем изменить или удалить свою строку. Реальных действий в аккаунте и запусков модели для этого материала не проводилось: мы опираемся на документацию и код, а предложенную практику вы сможете пройти самостоятельно или разобрать без выполнения.

## Чем память отличается от истории чата и System Prompt

Когда прошлый разговор с удачным объяснением термина уже лежит в боковой панели, легко решить, что модель помнит ваши привычки благодаря сохранённой истории. На деле в Open WebUI рядом работают пять разных механизмов, и у каждого своя область ответственности. В справочных материалах слово «память» иногда используют для оперативной памяти сервера (`RAM`) или подключения внешних документов через `RAG`, но здесь речь идёт именно о встроенном хранилище пользовательских записей `Memory`.

Посмотрим, какую роль играет каждый из пяти механизмов в задаче с объяснением терминов:

1. **Сохранённая история чатов.** В ней лежит переписка прошлых диалогов, которую можно открыть, перечитать или перенести в архив ([документация по истории чатов](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/history-search.mdx>) ). То, что старый чат сохранён на сервере, не означает, что вся история аккаунта автоматически подставляется в новую беседу. В системе существуют отдельные инструменты поиска по прошлым чатам, но они работают по своим правилам и выходят за рамки этого урока.
2. **Текущий контекст запроса.** Это фактический набор данных, который сервер собирает прямо сейчас для одного конкретного ответа: сообщения текущей активной ветки, системные инструкции и подключённые к запросу дополнения ([сборка контекста](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py>) ).
3. **`Compaction` (сжатие чата).** Когда один диалог становится слишком длинным, этот механизм формирует краткую сводку старой части переписки и оставляет в активной ветке свежие реплики ([логика сжатия контекста](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/context_compaction.py>) ). Сжатие обслуживает только одну длинную беседу и не превращает пожелание о бытовом примере в отдельную запись для других новых чатов. Подробно мы разбирали [контекст и сжатие длинного чата](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/kontekst-i-szhatie-chata/>) в предыдущем уроке.
4. **Пользовательская память (`Memory`).** Это отдельный банк записей, привязанный к вашему профилю, а не к конкретному диалогу ([хранение записей памяти](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/models/memories.py>) ). Записанное сюда предпочтение может учитываться в разных новых чатах того же аккаунта при соблюдении серверных условий.
5. **Постоянная системная инструкция (`System Prompt`).** Правило ответа для аккаунта можно задать и в `Settings` → `General` → `System Prompt`, а также на уровне отдельного чата или карточки модели ([документация по параметрам чата](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/chat-params.md>) , [общие настройки](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Settings/General.svelte>) ). По смыслу туда тоже можно вписать просьбу начинать объяснение с примера, но хранится это поле отдельно, включается другими настройками и не заменяет банк `Memory` автоматически. При этом ни для `System Prompt`, ни для записей памяти нельзя обещать универсального приоритета над собственными инструкциями модели или её поведением. Ранее мы уже рассматривали, как работают [системная инструкция и параметры ответа](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/parametry-i-rassuzhdayushchie-modeli/>) .

У самого хранилища `Memory` тоже есть чёткие границы ([маршруты памяти](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/routers/memories.py>) , [обработка памяти](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/memory.py>) ). Все записи лежат в базе конкретного экземпляра Open WebUI и его векторном хранилище, закреплённом за вашим аккаунтом. Добавление строки не дообучает и не меняет веса языковой модели: система лишь сохраняет текст с векторным представлением и при подходящих условиях подставляет выбранные сведения в запрос. Этот встроенный банк привязан к пользователю текущего сервера и сам по себе не переносит записи в другой аккаунт, на другой экземпляр Open WebUI или во внешние сервисы вроде ChatGPT.

Разделив эти пять ролей, перейдём к списку предпочтений: посмотрим, где он находится в интерфейсе и как сохранить одну проверочную запись.

## Как сохранить одно предпочтение и проверить Saved Memories

Встроенная память не требует установки сторонних плагинов ([конфигурация сервера](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/config.py>) , [документация Memory](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/memory.mdx>) ). Все названия разделов и кнопок ниже приведены по коду стабильного на момент проверки релиза Open WebUI `v0.12.3` ([страница релиза `v0.12.3`](<https://github.com/open-webui/open-webui/releases/tag/v0.12.3>) , [коммит тега `v0.12.3`](<https://api.github.com/repos/open-webui/open-webui/commits/v0.12.3>) ). Это описание по документации и статическому исходному коду, а не отчёт о выполненных автором кликах; в более старых сборках или при русской локализации подписи элементов могут отличаться.

В исходном коде `v0.12.3` глобальная функция памяти, пользовательское разрешение на неё и автоматическая системная подстановка включены по умолчанию, тогда как фоновый обзор переписки по умолчанию выключен. Однако базовые значения в коде не показывают, какие именно настройки действуют на вашем сервере. Обычный пользователь видит вкладку **`Settings` → `Personalization`** только тогда, когда на экземпляре включена глобальная память и группе пользователя выдано соответствующее разрешение, причём учётная запись администратора от этой групповой проверки освобождена ([условие показа вкладки](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/SettingsModal.svelte>) , [проверка доступа в роутере](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/routers/memories.py>) ).

До сохранения любой строки учтите, куда направляются данные. Когда вы добавляете запись, меняете её текст или путь либо когда сервер выполняет векторный запрос к памяти, текст передаётся механизму построения векторных представлений (`embedding`). При автоматической подстановке отобранные записи включаются в системный контекст языковой модели, а если на сервере отдельно включён фоновый обзор, модели в дополнительном запросе отправляются недавняя переписка и доступные сведения памяти; сокращённый фрагмент текста также может попадать во внутренние события и серверные журналы ([подстановка и обзор](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/memory.py>) ). Как распределяются [путь сообщения и хранение данных](<https://timofei-ermolaev.ru/courses/open-webui/start/arhitektura/>) между компонентами, мы разбирали в начале курса: и `embedding`-механизм, и сама модель могут работать как локально на сервере, так и через внешнего провайдера. Конкретная конфигурация вашего экземпляра, его тарификация и правила хранения данных у провайдера в рамках этого урока не установлены, поэтому хранение банка в локальной базе Open WebUI не гарантирует отсутствия внешней обработки. Для практики используйте только нейтральное несекретное предпочтение.

Если вы решили пройти практику на своём аккаунте, выполните сохранение по шагам ([интерфейс персонализации](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Settings/Personalization.svelte>) , [форма добавления и правки](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Settings/Personalization/MemoryModal.svelte>) , [передача флага памяти из чата](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte>) ):

1. Откройте **`Settings` → `Personalization`** и проверьте, доступна ли вкладка и в каком положении находится личный переключатель **`Memory`**. Запишите его исходное состояние. Этот переключатель сохраняет личную настройку аккаунта, по которой обычный веб-интерфейс решает, включать ли память в запросах чата; он не удаляет записи и не служит отдельным серверным списком контроля доступа (`ACL`) для произвольных API-клиентов.
2. Если переключатель `Memory` выключен, а вы хотите выполнить упражнение, включите его — после этого в разделе станет доступен список **`Saved Memories`**. Если вкладка `Personalization` отсутствует, доступ ограничен правами или вы не хотите менять свои настройки, не пытайтесь обходить ограничения и не запрашивайте административные права ради урока: просто разберите дальнейшие шаги с отметкой «не выполнялось».
3. Откройте окно **`Saved Memories`** и проверьте, нет ли у вас уже такой же собственной записи. Если аналогичное правило уже сохранено для вашей работы, не создавайте дубль и не меняйте существующую рабочую строку — в этом случае дальнейшее учебное сохранение и откат пропустите, оставив отметку «не выполнялось».
4. Нажмите **`Actions` → `Add Memory`**. В открывшемся окне проверьте тип записи **`User`**: в веб-интерфейсе он выбран по умолчанию и подходит именно для устойчивых предпочтений пользователя, тогда как соседний тип `Context` предназначен для контекстных заметок в том же личном банке пользователя, а не для общей памяти всех аккаунтов. Необязательное поле **`Path`** оставьте пустым.
5. Вставьте в текстовое поле ровно одну учебную строку и нажмите **`Add`**:

> Когда объясняешь новый для меня термин, сначала приводи один бытовой пример, затем краткое определение.

6. После сохранения не ограничивайтесь всплывающим уведомлением: найдите новую запись в списке **`Saved Memories`** и сверьте её полный точный текст. Если при сохранении возникла ошибка или строка в списке не появилась, зафиксируйте это и не считайте запись сохранённой.

Запишите для себя результат этого этапа: точный текст вашей собственной учебной строки и итог её сверки в `Saved Memories` (совпала полностью, не найдена, возникла ошибка или «не выполнялось»; другие записи из вашего списка переписывать не нужно).

После проверки списка (или её разбора без сохранения) посмотрим, каким образом сервер Open WebUI отбирает записи из банка и добавляет их к новому сообщению.

## Как запись памяти попадает во вход нового ответа

Языковая модель сама по себе не подключается к базе данных Open WebUI и не листает окно `Saved Memories`. Между сохранённой строкой и ответом модели стоит серверная сборка запроса ([проверка условий в `middleware.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py>) , [отбор и формирование контекста в `memory.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/memory.py>) ).

Роли здесь распределяются так: человек отправляет в чате новый вопрос о незнакомом термине; сервер Open WebUI проверяет разрешения и настройки, при их соблюдении собирает подходящие сведения из банка пользователя и дописывает сформированный блок памяти к системному сообщению (`system message`); только после этого модель получает собранный вход и генерирует ответ. Для этого автоматического пути включать режим `Native` (нативный вызов инструментов) не требуется.

Автоматическая подстановка срабатывает, когда одновременно выполняются пять условий:

- на сервере включена глобальная функция памяти;
- включена настройка автоматической подстановки в системный контекст (`Memory System Context`);
- сам запрос пришёл с включённым признаком памяти, который в обычном чате следует за вашим личным переключателем `Memory`;
- у пользователя есть разрешение на работу с памятью (или роль администратора);
- у выбранной в чате модели включена поддержка возможности памяти (`memory capability`).

Даже когда все эти условия соблюдены, сервер не обещает безусловную доставку каждой записи в каждый ответ. Общая документация говорит о подстановке памяти на каждом шаге диалога, но в коде `v0.12.3` разные типы записей собираются и ограничиваются по отдельным правилам ([бюджеты символов в `config.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/config.py>) ):

- Сначала сервер проверяет, есть ли в текущем разговоре непустые сообщения пользователя: по последним таким репликам в пределах установленного лимита строится запрос для векторного поиска.
- Записи типа `User` загружаются из банка пользователя отдельным списком, независимо от результатов векторного поиска. Векторный запрос и связанные пути (`Path`) используются для отбора контекстных записей; при этом если векторный запрос завершится ошибкой, сервер перехватит её и всё равно сможет сформировать блок из пользовательских записей `User`.
- Для блока пользовательских записей (`User`) и блока остальных контекстных сведений действуют отдельные символьные бюджеты: внутри каждого блока строки сортируются, а текст сверх лимита обрезается перед добавлением в `system message`. Эти ограничения измеряются в символах, а не в токенах модели, и не устанавливают фиксированного предела на количество строк в вашем списке `Saved Memories`.

Поэтому состав фактического входа зависит от конкретной ситуации: если у пользователя нет записей, текст запроса пуст, отключён один из флагов, у выбранной модели выключена поддержка `memory` или сработали символьные бюджеты, блок памяти не попадёт в запрос или попадёт в усечённом виде. И даже когда строка про бытовой пример перед определением вошла в `system message`, это остаётся текстовой инструкцией во входе, а не изменением весов модели, поэтому стопроцентного соблюдения правила моделью гарантировать нельзя.

Мы увидели, как сервер читает уже сохранённую строку. Но в Open WebUI есть и встроенные механизмы, которые могут сами создавать или менять записи во время переписки — кратко отделим их от нашей ручной практики.

## Что происходит после просьбы «запомни» и при фоновом обзоре

Пользователи часто пишут прямо в диалоге: «Запомни, что мне нужен сначала бытовой пример, а потом определение». В Open WebUI такая реплика не сохраняет запись сама по себе. Ниже мы рассмотрим два встроенных в систему механизма, которые позволяют менять банк памяти из разговора; ни один из них не нужен для нашего упражнения.

Первый механизм — **встроенные инструменты памяти**, которые модель может вызвать во время ответа ([условия подключения в `middleware.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py>) , [проверка категорий в `tools.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/tools.py>) , [реализация инструментов в `builtin.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/tools/builtin.py>) ). Чтобы сервер выдал эти инструменты в обычном чате веб-интерфейса, должны сойтись условия на трёх уровнях: на сервере включена память, она активна в текущем запросе и у пользователя есть право работы с ней; у самой выбранной модели разрешены встроенные инструменты в целом, а также включены поддержка памяти (`memory capability`) и категория встроенных инструментов `memory`; наконец, чат работает в нелегаси-режиме вызова функций (`Native`), а модель и её точка подключения реально поддерживают нативный `tool calling`.

Эти инструменты позволяют модели добавлять, обновлять, заменять и удалять записи текущего пользователя, просматривать полный список и пути, а также искать записи по вхождению подстроки в текст или путь и по полям ([маршруты поиска в `memories.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/routers/memories.py>) , [фильтрация строк в `memory.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/memory.py>) ). Такой текстовый поиск инструмента работает по уже загруженным строкам пользователя и не использует `embedding`-механизм, в отличие от векторного отбора при автоматической подстановке. При этом решение, вызывать ли инструмент и с какими аргументами, принимает сама модель, а её размер или известность бренда не гарантируют безошибочного вызова. Если модель просто ответила в чате «Хорошо, я запомнил», но не выполнила операцию сохранения, в `Saved Memories` ничего не появится.

Второй механизм — **фоновый обзор переписки (`background review`)**, который по умолчанию в коде выключен ([настройка в `config.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/config.py>) , [описание в документации Memory](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/memory.mdx>) ). Если он включён на сервере и соблюдены условия глобальной памяти, флага запроса, права пользователя и поддержки `memory` у модели, то после непустого ответа ассистента на заданном интервале пользовательских ходов сервер отправляет той же модели дополнительный фоновый запрос. Режим `Native` и категория встроенных инструментов для этого обзора не требуются: модель получает недавнюю переписку вместе с доступными сведениями памяти и может сама добавить, заменить, переместить или удалить записи обоих типов (`User` и `Context`). Текстовое указание внутри системного промпта обзора не сохранять секреты не является жёстким техническим фильтром, поэтому включать фоновый обзор или переключать режим инструментов ради нашей практики не нужно.

Теперь вернёмся к ручному маршруту и посмотрим, что именно можно проверить в новом разговоре.

## Что проверить в ответе нового чата

После того как вы сверили свою новую учебную строку в `Saved Memories` (или разобрали этот шаг без выполнения), следующим действием мы отдельно наблюдаем поведение модели в новом диалоге ([передача флага памяти в `Chat.svelte`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte>) , [хранение чатов и истории](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/history-search.mdx>) , [параметры и системные инструкции](<https://github.com/open-webui/docs/blob/535caeacd5e72fac142e042dcf4928906fd80312/docs/features/chat-conversations/chat-features/chat-params.md>) ). Менять текущую модель, числовые параметры генерации или уже настроенный рабочий `System Prompt` ради этого шага не нужно.

Если вы действительно создали свою новую учебную запись, увидели её в списке на предыдущем шаге и правила вашего подключения позволяют отправить один тестовый запрос, выполните проверку:

1. Откройте **новый обычный чат** под тем же пользователем и на том же экземпляре Open WebUI.
2. Не прикрепляйте к нему старый разговор, не добавляйте правило про бытовой пример в `System Prompt` чата или аккаунта и не повторяйте само предпочтение в тексте вопроса (если похожее правило уже было прописано в ваших постоянных инструкциях до урока, не стирайте его, но учитывайте, что оно тоже влияет на ответ).
3. Отправьте только один вопрос:

> Что такое резервная копия?

Если на предыдущем шаге запись не создавалась, сохранить её не удалось, она не появилась в `Saved Memories` или вы проходите урок без выполнения запросов, не отправляйте проверочный вопрос и оставьте здесь отметку «не выполнялось». Мы также не приводим готовый пример ответа модели о резервной копии, поскольку реальный запрос в рамках урока не запускался.

Когда ответ получен, оцените его по наблюдаемой форме: привела ли модель сначала один бытовой пример, а затем краткое определение, либо построила объяснение иначе. Содержательную точность самого определения резервной копии при необходимости сверяют отдельно — удобная подача не доказывает правильности фактов.

На этом шаге важно разделить три разных явления: сохранённую запись в `Saved Memories`, её возможную передачу во вход модели и наблюдаемую форму ответа. Даже если модель в новом чате начала ответ с бытового примера и продолжила кратким определением, само по себе это совпадение не доказывает, что сервер извлёк именно вашу строку из памяти и что именно она определила структуру текста: модель могла построить объяснение популярного термина в таком порядке по своему обычному стилю или под влиянием других действующих инструкций. Верно и обратное: если ответ начался сразу с определения без примера, это не доказывает, что ваш банк `Saved Memories` пуст — запись может лежать в списке, но не попасть во вход из-за настроек и лимитов либо быть проигнорированной самой моделью.

Зафиксируйте для себя результат этого наблюдения: фактически увиденный вами ответ в новом чате и его форму (пример перед определением либо иное построение) или честную отметку «не выполнялось».

После наблюдения ответа остаётся завершить жизненный цикл вашей учебной записи: изменить её под свои задачи или убрать из списка, понимая, какие данные при этом затрагиваются, а какие остаются на месте.

## Как изменить или удалить запись и что даёт выключение Memory

Управлять сохранённым предпочтением нужно в том же окне **`Settings` → `Personalization` → `Saved Memories`**, где вы его создавали ([действия со списком](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Settings/Personalization.svelte>) , [окно редактирования](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Settings/Personalization/MemoryModal.svelte>) ). Работать следует строго со своей новой учебной строкой, которую вы добавили на шаге практики: не затрагивайте прежние рабочие записи и не нажимайте общую очистку **`Clear Memory` / `Clear All`** ради отката одного правила. Если на первом шаге вы не создавали новую запись, пропустите эти действия и оставьте для третьего шага отметку «не выполнялось».

Для созданной учебной строки выберите один из двух вариантов:

- **Если правило оказалось полезным и вы хотите уточнить формулировку**, откройте меню своей учебной записи, выберите **`Edit`**, внесите изменение, нажмите **`Update`** и заново сверьте обновлённый полный текст в списке `Saved Memories`. Обновлённая запись остаётся в вашем банке с новым текстом; если при обновлении возникла ошибка или текст в списке не изменился, не считайте обновление подтверждённым.
- **Если строка создавалась только на время упражнения**, выберите у этой конкретной записи действие **`Remove`**, подтвердите удаление и повторно проверьте список `Saved Memories`. Перед сверкой убедитесь, что в поле поиска по списку не остался фильтр, который мог просто скрыть строку с экрана. Если при удалении возникла ошибка или запись осталась в списке, откат не считается подтверждённым. Когда в начале практики вы включали личный переключатель `Memory` специально ради упражнения, после проверки удаления верните его в исходное положение.

Чтобы не путать редактирование и удаление записи с переключением тумблеров или чисткой диалогов, сопоставим, к чему приводит каждое действие в коде `v0.12.3` ([операции в роутере памяти](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/routers/memories.py>) , [методы модели памяти](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/models/memories.py>) , [передача флага в `Chat.svelte`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/src/lib/components/chat/Chat.svelte>) , [модель чатов](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/models/chats.py>) , [роутер чатов](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/routers/chats.py>) и [сжатие контекста](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/context_compaction.py>) ):

| Действие пользователя или администратора | Что меняется для ваших записей и запросов | Чего это действие не делает |
| --- | --- | --- |
| **`Edit` → `Update`** одной записи | Проверяет владельца, сохраняет новый текст или путь в вашей записи и при их изменении пересчитывает векторное представление (`embedding`) | Не удаляет запись из банка и не переписывает ответы в прошлых чатах или ранее отправленные запросы |
| **`Remove`** одной записи | Удаляет выбранную строку из базы пользователя, а затем удаляет её запись из векторного хранилища | Не затрагивает остальные записи банка и не отзывает уже переданные внешним сервисам сведения |
| **`Clear Memory`** | Удаляет все записи памяти текущего пользователя в базе и пытается удалить его векторную коллекцию целиком | Не подходит для отката одной учебной строки; если при удалении векторной коллекции возникнет сбой, ошибка записывается в журнал сервера без отмены успешного ответа API |
| Личный переключатель **`Memory`** | Меняет личную настройку аккаунта и передачу признака памяти в обычных запросах веб-интерфейса | Не удаляет сохранённые строки из базы и не закрывает доступ к серверным маршрутам для прямых вызовов API |
| Архивация, удаление чата или **`Compaction`** | Переносит диалог в архив, удаляет выбранную переписку или сохраняет сводку внутри конкретного чата | Не очищает банк `Memory`: сохранённые предпочтения пользователя остаются на месте |

Раздельно работают и серверные переключатели, которыми управляет администратор ([проверки в `middleware.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/middleware.py>) , [выдача инструментов в `tools.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/tools.py>) , [условия в `memory.py`](<https://github.com/open-webui/open-webui/blob/91ea4e3421d1d8069f13d4a463fcb5986d94ea60/backend/open_webui/utils/memory.py>) ): глобальное отключение памяти или снятие права работы с ней закрывает текущие серверные пути памяти, но само по себе не стирает ранее созданные строки в базе; выключение `Memory System Context` останавливает только автоматическую подстановку в системное сообщение, оставляя доступными встроенные инструменты при соблюдении их условий; отключение категории встроенных инструментов `Memory` у модели прекращает выдачу этих инструментов в чат, но само по себе не выключает автоматическую подстановку или фоновый обзор.

Наконец, учитывайте реальные границы любого изменения и удаления. Успешное обновление через `Edit` оставляет запись в банке с новым содержимым, а успешное удаление через `Remove` убирает выбранную строку из базы и векторного хранилища, при этом сверка в `Saved Memories` подтверждает лишь то состояние списка, которое вы видите в интерфейсе. Ни исправление, ни удаление записи не переписывают уже сохранённые сообщения в истории чатов, сводки `Compaction`, ранее отправленные в модель или `embedding`-сервис запросы, серверные журналы, возможные копии на стороне провайдера и резервные копии базы данных. Полное физическое уничтожение всех копий и сроки их хранения у внешних провайдеров этим действием не подтверждаются, как не гарантируется и то, что модель в будущих диалогах никогда сама не выберет похожую форму ответа. Если вам интересно сравнить этот прикладной механизм с общими подходами в индустрии, посмотрите дополнительный материал о том, [как устроена память LLM и ИИ-агентов](<https://timofei-ermolaev.ru/llm/context-engineering/pamyat-llm-i-ii-agentov/>) .

В результате разобранной практики у вас остаются три отдельные отметки, которые не подменяют друг друга:

1. **Собственная запись и сверка списка:** сохранённая учебная строка типа `User` и проверенный результат в `Saved Memories` — текст совпал, запись не появилась, возникла ошибка или «не выполнялось».
2. **Наблюдение ответа в новом чате:** фактически полученное объяснение термина и его форма (бытовой пример перед кратким определением или другое построение) либо отметка «не выполнялось», без вывода о доказанной причинной связи со списком памяти.
3. **Изменение или удаление своей учебной строки:** итог `Edit` / `Update` (с обновлённым текстом в банке) или `Remove` (с подтверждённым отсутствием строки в `Saved Memories` без поискового фильтра), зафиксированная ошибка операции либо «не выполнялось».

Опираясь на это разделение между списком хранения, условиями передачи во вход и фактическим ответом модели, вы можете осознанно добавлять следующие собственные несекретные предпочтения и проверять их по тем же трём шагам.

Чтобы использовать в конкретном запросе документ или выбранный прошлый разговор, переходите к уроку [о файлах и прошлых чатах как контексте](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/fayly-i-proshlye-razgovory/>) .

## Материалы урока

- [Контекст и сжатие длинного чата timofei-ermolaev.ru](<https://timofei-ermolaev.ru/courses/open-webui/povsednevnaya-rabota/kontekst-i-szhatie-chata/>)
- [Как устроена память LLM и ИИ-агентов timofei-ermolaev.ru](<https://timofei-ermolaev.ru/llm/context-engineering/pamyat-llm-i-ii-agentov/>)

## Отметить прохождение

Отметьте урок после того, как получили проверяемый результат из практической части.

Урок пройден

![Тимофей Ермолаев](https://timofei-ermolaev.ru/_astro/timofei-ermolaev-portrait.s0mCFw-J_2r7Nkv.webp)

## Об авторе

### Тимофей Ермолаев

Директор по информационным технологиям (CIO)

Пишу о больших языковых моделях, автоматизации и применении ИИ в бизнесе. В статьях разделяю личный опыт, выводы исследований и практические рекомендации.

[Подробнее об авторе](<https://timofei-ermolaev.ru/ob-avtore/>)
