Skip to main content
OrbitPilot

Dile a OrbitPilot que no recuerde algo — honestamente, por mensaje (BL-422)

El aviso bajo el cuadro de chat

Una pequeña línea ahora se encuentra bajo el compositor de OrbitPilot, en la ventana de chat anclada y el chat de página completa también: "Las conversaciones se recuerdan para que pueda ayudarte mejor", que enlaza a tu Página de estado de memoria Si tu plan actualmente no incluye Historial de Chat como fuente de memoria, la línea lo dice claramente en su lugar — la misma razón exacta que la página de Estado de Memoria y la propia nota de honestidad al preguntar de OrbitPilot darían, nunca una segunda suposición sobre el mismo hecho. Los invitados ven una invitación para crear una cuenta gratuita en su lugar, ya que nada de también se recuerda todavía.

"No recordar" por mensaje

Al lado de tus propios mensajes — el mismo estilo de íconos de grupo que Capture en las respuestas de OrbitPilot — hay un pequeño ícono de ojo. Tócalo y ese mensaje se marca como no recordado. Tres cosas siguen, y las palabras del propietario son la razón por toda la forma de las tres: "si el usuario está excluyendo esa sección para esa sesión actual y activa... OrbitPilot para esa sesión y ese momento PUEDE verlo porque debería ser capaz de continuar la conversación con el usuario. Pero luego, cuando el usuario esté cerrando la sesión, entonces se excluirá de la memoria."

  1. OrbitPilot sigue la conversación. Excluir un mensaje nunca lo elimina de lo que OrbitPilot puede ver durante el RESTO de ESTA conversación — la respuesta justo después de esto, y cualquier cosa que preguntes más tarde en la misma sesión, todavía tiene el hilo completo con el que trabajar.
  2. Nunca entra en la memoria a largo plazo. En la siguiente construcción de memoria (actualización rápida o reconstrucción completa), ese mensaje Y la respuesta que lo contestó se omiten — nunca se convierten en un fragmento de memoria recuperable en ninguna conversación posterior. Si una construcción anterior ya había convertido ese intercambio en un fragmento, la siguiente construcción lo elimina.
  3. Nada está oculto o eliminado. El mensaje permanece exactamente donde estaba en tu historial de conversación, solo etiquetado como "No recordado" para que puedas ver su estado de un vistazo. No hay un botón de purga — decidir también borrar un mensaje de tu propio historial visible es una decisión separada y más grande que el propietario deliberadamente dejó fuera de esta.

Cambiando de opinión

El interruptor funciona en ambas direcciones y tiene efecto en la siguiente construcción de memoria, jamás de inmediato y nunca retroactivamente para una construcción que ya se ejecutó. Excluye tun mensaje, luego vuelve a habilitarlo antes de que se ejecute la siguiente construcción, y se recuerda exactamente como si nunca lo hubieras tocado. Vuelve a habilitarlo DESPUÉS de que una construcción ya lo haya descartado, y regresa comenzando con la construcción después de eso— no hay manera de volver y "no omitir" una construcción que ya ha ocurrido.

Cómo funciona esto — para administradores

Nada que configurar para el interruptor por mensaje — está disponible para cada usuario conectado; los invitados no tienen historial de chat persistente del que excluir nada. La redacción del aviso sigue la MISMA configuración de Asignación de Fuente/Plan (orbitpilot.chat_history) que ya controla si el Historial de Chat alimenta la construcción de memoria de un usuario en absoluto — desactívalo para un plan en la página de asignación y el aviso se lo dice a los usuarios de ese plan, honestamente, en las mismas palabras que ya usa la página de Estado de Memoria.

Cómo funciona esto — para desarrolladores

OrbitPilotMessage.not_remembered (BooleanField, valor predeterminado Falso) reside en turno de USUARIO únicamente — la respuesta del asistente nunca se etiqueta por separado, porque pipeline/extract.py::_extract_chat_history ya empareja cada mensaje de usuario con el mensaje del asistente que lo respondió, y simplemente omite emitir el registro de ese par cuando el indicador está activado. pair_index aún avanza para un par omitido, por lo que cada OTRO par en la misma conversación mantiene su exacto source_id a través de construcciones — excluir un turno nunca obliga a re-integrar cada turno posterior también.

Alternar el indicador no escribe nada más. La eliminación de un fragmento ya creado ocurre de forma natural en la SIGUIENTE construcción, a través de la semántica de reemplazo existente de services.run_memory_build: el camino incremental (actualización rápida) elimina cualquier OrbitPilotMemoryChunk almacenado cuyo (source_key, source_id, chunk_index, content_hash) clave ya no aparezca en la nueva extracción, y la reconstrucción completa elimina cada fragmento antes de restaurar de la nueva extracción — ambas ya existían para cambios de contenido ordinarios, y un par de chat excluido activa el mismo camino sin nueva lógica de eliminación requerida.

Vista: orbitpilot.views.orbitpilot_toggle_remember, nombre de URL orbitpilot_toggle_remember (POST /orbitpilot/message/remember/, message_id + format=json opcional, misma respuesta dual AJAX/formulario plano) como Captura). Los íconos reutilizan los significados del registro EXISTENTE "ver"/"ocultar" (bi-eye / bi-eye-slash) — el mismo par que templates/blink/_memory_status.html ya usa para "la IA lee esto" vs. "excluido de la memoria de IA" en un Blink — en lugar de acuñar un nuevo significado de ícono para the mismo idea. La paridad está asegurada por orbitpilot/test_bl422_do_not_remember.py.

El texto del aviso es deliberadamente MÁS BARATO de lo que parece a primera vista, y eso fue una regresión real detectada antes de que se enviara. La primera versión de orbitpilot.services.get_chat_memory_notice(user) llamó a resolve_build_sources — la misma función que utilizan la página de Estado de Memoria de BL-428 y la nota de honestidad al preguntar de BL-405 — para pleno acuerdo con esas páginas. Eso falló plans.test_capability_cache.CapabilityCacheSavesQueriesTests: resolve_build_sources llama a plans.services.get_plan_for_user DOS veces internamente (una directamente, otra vez dentro de get_effective_limits), y ninguna de las llamadas se conecta al caché por solicitud de plans.capabilities — un vacío documentado y deliberado (una memoria por solicitud se intentó allí una vez y se revirtió por riesgo de estancamiento en la compuerta). Pagar ese costo una vez por PREGUNTA ya se aceptó; pagar una vez por CARGA DE PÁGINA, para cada usuario conectado, en cada página, es un costo materialmente más grande que este widget no debe agregar. Así que la versión enviada verifica solo la ASIGNACIÓN DE plan PROPIA de chat_history — el interruptor de In-RAG del administrador y su fila de Asignación de Fuente/Plan — leída a través de plans.capabilities.get_user_plan (reusa cualquier validación de la página ya almacenada en caché; se degrada a una consulta simple fuera de una solicitud, por ejemplo, pruebas). No reproduce el CAP general de la fuente del plan (included_sources) — una fuente puede estar "asignada" aquí y aún estar excluida de una construcción real por el cap (ver el hallazgo de SU-101 Q1 a continuación) — que es exactamente por qué el aviso siempre se encuentra junto a un enlace a la página de Estado de Memoria más completa y consciente del cap, una página que visitas deliberadamente, donde pagar el costo real una vez es el comercio correcto. Integrado en la plantilla a través de una nueva etiqueta de plantilla chat_memory_notice en orbitpilot/templatetags/orbitpilot_extras.py (el widget no tiene una vista dedicada a través de la cual pasar el contexto por usuario).

Una nota sobre el elemento de verificación de SU-101 Q1

La fila preguntó si orbitpilot.chat_history está realmente cubierto por la intención del propietario de "mantenerlo activado". Verificado, dos hallazgos: la asignación de plan de chat_history ya lee disponible en cada plan siempre que no exista fila de administración alguna (la default_visible=True del registro es la opción por defecto) — nada que conceder aquí. Pero un mecanismo SEPARADO aún puede excluirlo: los included_sources de cada plan (el cap de fuente de conocimiento general) se establece por defecto en 3, y varias otras fuentes visibles por defecto se ordenan por delante de chat_history en el registro — así que en cualquier plan que el propietario no haya planteado personalmente, resolve_build_sources llena el cap antes de llegar a chat_history. Esto son DATOS DE PLAN DE ADMINISTRADOR en vivo, no una solución específica de chat_history, y ya es objeto de una investigación separada (BL-419 / SU-106) — así que se informa, no se corrige, aquí. Se destacó como un guardia de regresión en orbitpilot/test_bl422_do_not_remember.py (SU101Q1SourceCoverageTests, SU101Q1SourceCapFindingTests).

Páginas relacionadas

Docshub: "Estado de Memoria — una página, una verdad" (BL-428), "Captura — convierte una respuesta de OrbitPilot en un Blink" (BL-421, el patrón de íconos de grupo que reutiliza). 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