Skip to main content
OrbitPilot

Скажите OrbitPilot не запоминать что-то — честно, по сообщению (BL-422)

Уведомление под окном чата

Небольшая строка теперь находится под композером OrbitPilot, в доке чата и в полноэкранном чате:"Разговоры запоминаются, чтобы я мог помочь вам лучше", ссылаясь на вашу страницу статуса памяти. Если ваш план в данный момент не включает Историю Чата в качестве источника памяти, строка прямо об этом говорит — ровно ту же причину даст страница Статуса Памяти и собственная заметка честности OrbitPilot, без второго предположения о том же факте. Гостям вместо этого показывается приглашение создать бесплатный аккаунт, поскольку ничего из их переписки еще не запоминается.

«Не запоминать» по сообщению

Рядом с вашими сообщениями — такой же стиль иконок, как и в ответах OrbitPilot — находится маленькая иконка глаза. Нажмите на неё, и это сообщение будет отмечено как не запомненное. Следует три момента, и слова владельца являются причиной формы всех трех: "если пользователь исключает этот раздел для текущей и активной сессии... OrbitPilot для этой сессии и этого момента МОЖЕТ это увидеть, потому что должен быть в состоянии продолжить разговор с пользователем. Но позже, когда пользователь завершает сессию, оно будет исключено из памяти."

  1. OrbitPilot продолжает следить за разговором. Исключение сообщения никогда не убирает его из того, что OrbitPilot может видеть до конца ЭТОГО чата — ответ сразу после него, и все, что вы позже спросите в этой же сессии, по-прежнему имеют полный поток для работы.
  2. Оно никогда не попадает в долгосрочную память. При следующей сборке памяти (быстрое обновление или полное восстановление) это сообщение И ответ на него будут пропущены — они никогда не станут извлекаемым фрагментом памяти в任何 последующем разговоре. Если предыдущее строительство уже превратило этот обмен в фрагмент, следующее строительство удалит его.
  3. Ничего не скрыто и не удалено. Сообщение остается именно там, где оно было в вашей истории разговора, просто помеченное как "Не запомненное", так что вы можете увидеть его статус с одного взгляда. Нет кнопки очистки — решение также стереть сообщение из вашей видимой истории является отдельным, более серьезным решением, который владелец намеренно оставил за пределами этого.

Изменение вашего мнения

Переключатель работает в обе стороны и вступает в силу при следующей сборке памяти, никогда немедленно и никогда ретроактивно для уже выполненной сборки. Исключите сообщение, затем повторно включите его до следующей сборки, и оно будет запомнено так, как если бы вы никогда к нему не прикасались. Повторно включите его ПОСЛЕ сборки, которая уже удалились, и оно вернется, начиная с сборки после этого — нет способа вернуться и "отменить пропуск" сборки, которая уже произошла.

Как это работает — для администраторов

Ничего не нужно настраивать для переключателя по сообщениям — он доступен каждому вошедшему пользователю; у гостей нет постоянной истории чата, из которой можно исключить что-либо. Формулировка уведомления следует тому же настройке назначения источников/планов (orbitpilot.chat_history), который уже контролирует, подает ли История Чата данные для сборки памяти пользователя — отключите это для плана на странице назначения, и уведомление сообщит пользователям этого плана честно, теми же словами, которые уже использует страница Статуса Памяти.

Как это работает — для разработчиков

OrbitPilotMessage.not_remembered (BooleanField, по умолчанию False) живет только на стороне пользователя — ответ ассистента никогда не помечается отдельно, потому что pipeline/extract.py::_extract_chat_history уже связывает каждое сообщение пользователя с сообщением ассистента, который на него ответил, и просто пропускает запись одного пары, когда установлен флажок. pair_index все равно продвигается для пропущенной пары, поэтому каждая ДРУГАЯ пара в том же разговоре сохраняет свой точный source_id на протяжении всех сборок — исключение одного поворота никогда не заставляет переутвердить каждый последующий тоже.

Переключение флага ничего больше не записывает. Удаление уже построенного фрагмента происходит естественно при СЛЕДУЮЩЕЙ сборке, через существующую семантику замены services.run_memory_build: инкрементальный (быстрый) путь удаляет любой сохраненный OrbitPilotMemoryChunk, чей (source_key, source_id, chunk_index, content_hash) ключ больше не присутствует в новом извлечении, и полная сборка удаляет каждый фрагмент перед восстановлением из нового извлечения — оба это уже существовали для обычных изменений содержимого, и исключенная пара чата вызывает тот же путь без необходимости в новой логике удаления.

Просмотр: orbitpilot.views.orbitpilot_toggle_remember, URL имя orbitpilot_toggle_remember (POST /orbitpilot/message/remember/, message_id + необязательный format=json, тот же двойной AJAX/plain-form ответ как Catch). Иконки повторно используют существующие значения реестра "view"/"hide" (bi-eye / bi-eye-slash) — тот же пара templates/blink/_memory_status.html, который уже использует для" ИИ читает это" против "исключено из памяти ИИ" на Blink — вместо создания нового значения иконки для одной и той же идеи. Паритет прикреплен к orbitpilot/test_bl422_do_not_remember.py.

Текст уведомления намеренно ДЕШЕВЛЕ, чем он выглядит на первый взгляд, и это было реальное ухудшение, пойманное перед отправкой. Первая версия orbitpilot.services.get_chat_memory_notice(user) вызывала resolve_build_sources — ту же функцию, которую использовали страница Статуса Памяти BL-428 и заметка честности времени запроса BL-405 — для полного согласия с этими страницами. Это не удалось plans.test_capability_cache.CapabilityCacheSavesQueriesTests: resolve_build_sources вызывает plans.services.get_plan_for_user ДВАЖДЫ внутренне (один раз напрямую, второй раз внутри get_effective_limits), и ни один вызов не включен в кэш plans.capabilities на запрос — документированный, намеренный пробел (в один раз там пробовали взять меморандум на запрос и вернули его из-за риска устаревания охраны). Оплата этой стоимости один раз за ЗАПРОС уже была принята; оплата её один раз за ЗАГРУЗКУ СТРАНИЦЫ, для каждого вошедшего пользователя, на каждой странице, — это существенно более высокая стоимость, которую этот виджет не должен добавлять. Так что отправленная версия проверяет только ПЛАН НАЛИЧИЯ chat_history — переключатель администратора In-RAG и строку назначения источника/плана — прочитанная через plans.capabilities.get_user_plan (повторно использует все, что уже кэшировалось для проверки охранной страницы; деградирует до простого запроса вне запроса, например, тесты). Он не воспроизводит общий источник CAP плана (included_sources) — источник может быть "назначен" здесь и все равно быть вытесненным из фактической сборки капом (смотрите находку SU-101 Q1 ниже) — именно поэтому уведомление всегда находится рядом со ссылкой на более полную страницу Статуса Памяти с учетом капа, страницу, которую вы посещаете намеренно, где оплата настоящей стоимости один раз — это правильная сделка. Подключено в шаблон через новый тег шаблона chat_memory_notice в orbitpilot/templatetags/orbitpilot_extras.py (у этого виджета нет специального представления, чтобы передать контекст для каждого пользователя).

Примечание по пункту проверки SU-101 Q1

Строка спрашивала, покрывает ли orbitpilot.chat_history фактически намерение владельца "оставить это включенным". Проверено, две находки: собственное назначение плана chat_history уже читается доступным на каждом плане, когда вообще нет строки администратора (значение default_visible=True реестра является резервным) — ничего, чтобы предоставить там. Но отдельный механизм все еще может исключить его: included_sources каждого плана (общее ограничение на источник знаний) по умолчанию равно 3, и несколько других источников по умолчанию видимого расположены впереди chat_history в реестре — так что на любом плане, который владелец не поднял лично, resolve_build_sources заполняет кап, прежде чем доберется до chat_history. Это ЖИВЫЕ ДАННЫЕ ПЛАНА администратора, а не конкретный фикс для chat_history, и уже является объектом отдельного расследования (BL-419 / SU-106) — так что это сообщается, а не исправляется здесь. Прикреплено как защита от регрессий в orbitpilot/test_bl422_do_not_remember.py (SU101Q1SourceCoverageTests, SU101Q1SourceCapFindingTests).

Связанные страницы

Docshub: "Статус памяти — одна страница, одна правда" (BL-428), "Catch — превратите ответ OrbitPilot в Blink" (BL-421, паттерн кластеров иконок, который это использует). docs/orbitpilot/TASKS.md.

This guide was translated automatically. Read the English original.

🪐 OrbitPilot

Create a free account and I'll remember your conversations — sign up

🧠 Memory status