Приватность

Удаление аккаунта и данных: как убедиться что всё стёрто

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

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

Это значит, что кнопка «удалить» может отработать успешно и оставить данные. Не по злому умыслу, а потому что каскад базы данных затрагивает то, что к нему подключено, и не затрагивает то, что не подключено. Ниже — как проверить результат вместо того, чтобы ему верить.

#Что понадобится

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

#Шаг 1. Сначала выгрузка, потом удаление

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

На нашем экземпляре выгрузка делается со страницы «Мои данные» одним файлом: /settings/my-data/export.json или тот же JSON в архиве. В него входят аккаунт, чаты с ассистентом, факты памяти, заметки, настройки, друзья, заявки и ветки личных сообщений.

Что в выгрузку намеренно не входит, и это стоит знать заранее:

  • хеш пароля — верификатор, которому не место в файле в папке «Загрузки»;
  • значения ключей API и токенов ботов — вместо них отметка о наличии и длина. Причина: право на доступ — это право узнать, какие данные о вас обрабатываются, а действующий ключ провайдера данными о вас не является. Сам ключ вы всегда видите и меняете на странице подключения модели;
  • живые токены сессий и устройств — по той же логике;
  • чужие адреса электронной почты — маскируются, потому что право на доступ распространяется на ваши данные, а не на адресную книгу экземпляра.

Про форматы и подводные камни переноса в другой продукт — в статье про экспорт и перенос памяти ИИ.

#Шаг 2. Решите, что вы удаляете

Три разные операции, которые часто путают:

Один факт. Точечное удаление записи памяти — работа в интерфейсе, механика разобрана в статье про удаление факта из памяти ИИ.

Один чат. Удаляется отдельно, вместе со своими сообщениями.

Аккаунт целиком. Каскадная операция. Промежуточного варианта «удалить всю переписку, но оставить аккаунт» в продукте нет — это надо знать до того, как вы нажмёте кнопку в поисках такого режима.

#Шаг 3. Чек-лист из шести мест хранения

Это основной артефакт статьи. Проверять надо каждое место отдельно — успешное удаление в первом ничего не говорит про остальные.

Место Что там Как проверить
Основные таблицы Сообщения, факты памяти, заметки Попытка открыть чат по прямой ссылке
Полнотекстовый индекс Зеркало текста для поиска Поиск по характерной фразе из удалённого
Векторный индекс Числовые представления фрагментов Смысловой поиск по теме удалённого разговора
Производные структуры Граф связей, датасет обучения, кэши Поиск по имени сущности в графе
Глобальные ключи настроек Профиль, признаки онбординга, режимы чатов Проверяется владельцем экземпляра по базе
Резервные копии Всё вышеперечисленное на момент снимка Не проверяется; считается по глубине ротации

Две строки заслуживают отдельного пояснения.

Четвёртая. Датасет пар «вопрос — ответ», который некоторые продукты копят для будущего дообучения, обычно не связан с чатом каскадом: у него ссылка настроена так, что при удалении чата она обнуляется, а сама строка с полным текстом остаётся. В Persona это учтено — такие строки удаляются первыми, до чатов, — но проверять эту деталь стоит в любом продукте.

Пятая. Глобальная таблица «ключ — значение» не имеет внешних ключей вообще, и личные ключи живут в ней с суффиксом-идентификатором. Ни один каскад их не заберёт: нужен явный список ключей и явное удаление.

#Шаг 4. Удалите и проверьте

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

Сразу после удаления пройдите проверку в этом порядке:

  1. Попробуйте войти. Вход не должен проходить, активные сессии — прекратиться на всех устройствах.
  2. Откройте прямую ссылку на свой прежний чат. Должна быть ошибка, а не содержимое.
  3. Если у вас есть второй аккаунт — поищите себя в списке людей. Прежний профиль не должен находиться.
  4. Спросите у собеседника, видна ли ваша переписка. Ветки личных сообщений должны исчезнуть и у него тоже.
  5. Через сутки повторите поиск. Часть индексов перестраивается по расписанию, и сразу после удаления картина бывает неполной.

#Что переживает нажатие кнопки

Список, который честнее назвать самим.

Резервные копии, сделанные до удаления. Они не переписываются и вымываются по мере ротации у оператора. Это стандартная практика, но она означает, что «удалено» и «физически исчезло отовсюду» — разные моменты. Как устроена ротация и почему у неё должна быть известная глубина — в разборе резервных копий и приватности.

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

Логи провайдера языковой модели. Всё, что уходило в облако вместе с вашими запросами, находится в чужой системе. Удалить это кнопкой в нашем интерфейсе невозможно — только отдельным запросом провайдеру.

Данные, которые ваш собеседник скопировал себе. Очевидно, но регулярно упускается.

#Что может пойти не так

Удалили, не выгрузив. Самая частая и самая необратимая ошибка гайда.

Ждали уведомления собеседнику. Его не будет: уведомление о вашем удалении само стало бы рассылкой факта. Собеседник просто увидит, что ветки больше нет.

Пытались удалить аккаунт владельца экземпляра. Он не удаляется самостоятельно: на нём держится доступ ко всей установке. Закрытие экземпляра делается на сервере.

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

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

#Частые вопросы

#Что происходит с личной перепиской при удалении аккаунта?

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

#Можно ли удалить всю переписку, но сохранить аккаунт?

Отдельные чаты и отдельные факты памяти удаляются поштучно в интерфейсе. Кнопки «стереть всё, но оставить аккаунт» нет: самостоятельное удаление — это удаление аккаунта целиком. Нужен промежуточный вариант — запрос оператору экземпляра.

#Сколько ждать, пока данные исчезнут из резервных копий?

Ровно столько, какова глубина ротации у оператора. Это единственный честный ответ, и он должен быть у оператора в виде конкретного числа. Формулировка для запроса: «данные удалены из рабочей системы такого-то числа, из резервных копий исчезнут не позднее такого-то».

#Отличается ли процедура, если ассистент стоит у меня?

Существенно: там нет «аккаунта», который можно удалить, — есть файлы на диске. Удаление означает работу с файлом базы, хранилищем снимков и всеми копиями, которые вы делали. Зато и проверять проще: всё в вашей досягаемости. Правовая рамка обеих ситуаций разобрана в статье про GDPR и локальный ИИ.

#Видел ли администратор мои данные до удаления?

Технически — имел полный доступ к базе, включая переписку и факты памяти. Это устройство любого self-hosted сервиса, и удаление не отменяет того, что было доступно раньше. Если такая модель доверия не подходит — единственный выход разворачивать свой экземпляр; что это меняет, разобрано в статье про приватный ИИ и локальное хранение.

#Можно ли восстановить аккаунт после удаления?

Нет. Записи удалены, сессии прекращены, остаётся только обезличенная отметка о факте удаления. Именно поэтому выгрузка делается до, а не после.

#Вывод

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

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт