Скажите OrbitPilot не запоминать что-то — честно, по сообщению (BL-422)
Уведомление под окном чата
Небольшая строка теперь находится под композером OrbitPilot, в доке чата и в полноэкранном чате:"Разговоры запоминаются, чтобы я мог помочь вам лучше", ссылаясь на вашу страницу статуса памяти. Если ваш план в данный момент не включает Историю Чата в качестве источника памяти, строка прямо об этом говорит — ровно ту же причину даст страница Статуса Памяти и собственная заметка честности OrbitPilot, без второго предположения о том же факте. Гостям вместо этого показывается приглашение создать бесплатный аккаунт, поскольку ничего из их переписки еще не запоминается.
«Не запоминать» по сообщению
Рядом с вашими сообщениями — такой же стиль иконок, как и в ответах OrbitPilot — находится маленькая иконка глаза. Нажмите на неё, и это сообщение будет отмечено как не запомненное. Следует три момента, и слова владельца являются причиной формы всех трех: "если пользователь исключает этот раздел для текущей и активной сессии... OrbitPilot для этой сессии и этого момента МОЖЕТ это увидеть, потому что должен быть в состоянии продолжить разговор с пользователем. Но позже, когда пользователь завершает сессию, оно будет исключено из памяти."
- OrbitPilot продолжает следить за разговором. Исключение сообщения никогда не убирает его из того, что OrbitPilot может видеть до конца ЭТОГО чата — ответ сразу после него, и все, что вы позже спросите в этой же сессии, по-прежнему имеют полный поток для работы.
- Оно никогда не попадает в долгосрочную память. При следующей сборке памяти (быстрое обновление или полное восстановление) это сообщение И ответ на него будут пропущены — они никогда не станут извлекаемым фрагментом памяти в任何 последующем разговоре. Если предыдущее строительство уже превратило этот обмен в фрагмент, следующее строительство удалит его.
- Ничего не скрыто и не удалено. Сообщение остается именно там, где оно было в вашей истории разговора, просто помеченное как "Не запомненное", так что вы можете увидеть его статус с одного взгляда. Нет кнопки очистки — решение также стереть сообщение из вашей видимой истории является отдельным, более серьезным решением, который владелец намеренно оставил за пределами этого.
Изменение вашего мнения
Переключатель работает в обе стороны и вступает в силу при следующей сборке памяти, никогда немедленно и никогда ретроактивно для уже выполненной сборки. Исключите сообщение, затем повторно включите его до следующей сборки, и оно будет запомнено так, как если бы вы никогда к нему не прикасались. Повторно включите его ПОСЛЕ сборки, которая уже удалились, и оно вернется, начиная с сборки после этого — нет способа вернуться и "отменить пропуск" сборки, которая уже произошла.
Как это работает — для администраторов
Ничего не нужно настраивать для переключателя по сообщениям — он доступен каждому вошедшему пользователю; у гостей нет постоянной истории чата, из которой можно исключить что-либо. Формулировка уведомления следует тому же настройке назначения источников/планов (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.