El grafo de agentes, las sesiones mantenidas en el servidor, el planificador, el registro de datos, la memoria, la observabilidad, los seis idiomas y el despliegue en una Raspberry Pi: el armazón sobre el que descansa todo lo demás.
Orquestación · 14
Plataforma y entrega · 10
Modelos y costes · 6
Fiabilidad y rendimiento · 5
octubre de 2025
2 decisiones
ADR-001Orquestación
LangGraph orquesta los agentes
LIA necesita un motor capaz de llevar una conversación en varios pasos, de detenerse para pedir una aprobación y después retomarla. LangGraph aporta ese grafo de ejecución: el estado de cada conversación se guarda en la base de datos y las respuestas llegan palabra a palabra.
Los tokens guardados en el navegador estaban expuestos al robo y no se podían revocar. Ahora un servidor intermedio (BFF) mantiene la sesión en el servidor y solo confía al navegador una cookie inaccesible para JavaScript — una sesión se revoca al instante.
Enviar todo el catálogo de herramientas al modelo en cada pregunta multiplicaba por diez el tamaño del prompt y el coste. El router detecta los dominios implicados y solo se carga su subconjunto de herramientas; en caso de duda, se recurre al catálogo completo.
En lugar de interrumpir la ejecución herramienta por herramienta, LIA presentaba su plan para su aprobación antes de empezar. Hoy la aprobación del plan es automática: la validación se hace en cada acción sensible.
Los primeros planes eran demasiado simplistas y fallaban a menudo. Ahora el planificador analiza la intención, descompone la petición y después escribe un plan de ejecución justificado paso a paso.
El ejecutor paralelo lanzaba a la vez el plan principal y su alternativa de respaldo: doble llamada, doble coste. Ahora los pasos descartados se retiran antes de lanzar cada oleada.
Pedir «todos los contactos» podía devolver cientos de fichas y disparar el coste. Ahora tres barreras — aviso del planificador, tope estricto en la herramienta, registro en los logs — impiden una lista sin límite.
Algunos nodos del grafo tenían cientos de líneas y se habían vuelto ilegibles. La lógica de negocio pasa a servicios dedicados; un nodo se limita a coordinar.
Un archivo de configuración de casi 1800 líneas reunía todos los ajustes. Se divide en módulos por dominio, reunidos en un único objeto de ajustes validado al arrancar, sin cambiar la forma de importarlo.
El dominio se llamaba Gmail, como si solo existiera un proveedor. Recibe un nombre genérico para acoger Outlook, Apple Mail y otros sin tener que renombrarlo todo con cada incorporación.
¿Hace falta un falso «conector» para las herramientas internas (contexto, memoria)? No: las herramientas que hablan con un servicio externo y las herramientas utilitarias siguen siendo dos categorías distintas, cada una con su patrón sencillo.
Las herramientas devolvían texto plano que nada conservaba. Ahora un registro de datos guarda cada elemento devuelto, con sus metadatos, para que una pregunta posterior pueda hacer referencia a él y un borrador pueda confirmarse.
La asistente lo olvidaba todo de una sesión a otra. Una memoria a largo plazo, aislada por persona y consultada por significado, conserva preferencias y hechos importantes — incluidos los temas sensibles, que hay que tratar con tacto.
Ejecutar las herramientas una tras otra sumaba los tiempos de espera. Un plan de ejecución expresa dependencias, condiciones y alternativas de respaldo, y lanza a la vez todo lo que puede lanzarse.
Cada herramienta de conector repetía 150 líneas idénticas (autenticación, errores, caché). Una clase base concentra ese núcleo común; una herramienta nueva ya solo escribe lo que le es propio.
Cada dominio identifica y muestra sus elementos de forma distinta. Un registro de tipos de contexto describe cada dominio una sola vez, y la resolución de «este» o «el tercero» funciona igual en todas partes.
Había que proteger tanto a los usuarios frente a los abusos como las cuotas de las API externas, incluso con varias instancias. Una limitación distribuida en Redis, por persona y por categoría, pasa a funcionar en local si Redis cae.
Esperar diez segundos a una respuesta completa es un fastidio. El servidor emite cada palabra, los pasos del plan y las solicitudes de aprobación sobre la marcha, mediante Server-Sent Events.
El planificador debe saber qué herramientas existen, qué cuestan y qué exigen. Unos manifiestos tipados sirven a la vez de documentación y de configuración, filtrados por dominio para ahorrar tokens.
Ninguna herramienta cubre por sí sola métricas, trazas y seguimiento de las llamadas a los modelos. Prometheus, Tempo y Langfuse trabajan cada uno por su lado, y la aplicación sigue funcionando si uno de ellos cae.
Los accesos a Google debían seguir siendo ilegibles en la base de datos, renovarse antes de caducar y no refrescarse nunca dos veces a la vez. Cifrado en reposo, refresco anticipado bajo un bloqueo distribuido y PKCE cubren su ciclo de vida.
Para reanudar tras una interrupción o un reinicio, el estado del grafo se guarda en PostgreSQL por hilo de conversación, con reglas de fusión que recortan el historial para ajustarlo al presupuesto de tokens.
Cada parte gestionaba sus errores a su manera. Un formato común para las herramientas, una jerarquía de excepciones registradas en los logs y mensajes traducidos a seis idiomas hacen que los errores sean coherentes y medibles.
La interfaz, los mensajes del servidor y las URL deben hablar el idioma de la persona. i18next en el navegador, gettext en el servidor, seis idiomas y direcciones localizadas para el posicionamiento en buscadores.
Las instrucciones que se dan a los modelos deben poder evolucionar y volver atrás. Viven en archivos versionados, cargados según una versión configurable y rellenados con variables.
El enrutamiento, la planificación y la respuesta no tienen las mismas necesidades. Cada componente recibe su modelo, tras una abstracción que permite cambiar de proveedor sin tocar el código.
Para poder aprovecharlos, los logs deben ser legibles por una máquina. structlog produce JSON contextualizado (petición, persona, conversación) y filtra los datos personales antes de escribir.
Identificadores UUID, fechas siempre en UTC, borrado lógico y metadatos JSONB: las convenciones del esquema PostgreSQL se fijan una vez para toda la aplicación.
Sesiones, estados OAuth, limitación de peticiones, bloqueos y cachés pasan por Redis. Cada uso tiene su base, sus caducidades y sus operaciones atómicas, y si Redis no está disponible el servicio se degrada sin bloquearse.
Una conversación está llena de referencias implícitas: «el segundo», «este», «él». La resolución de contexto detecta el tipo de turno y vincula esas palabras con los elementos correctos, sin mezclar los dominios, en seis idiomas.
No se pueden llamar modelos reales en cada test. La estrategia simula el proveedor en su frontera, aísla la base de datos de cada test y cubre el código asíncrono.
La API REST sigue una convención única: prefijo de versión, esquemas Pydantic validados, routers por dominio y un formato de error común, documentados automáticamente.
Una quincena de servicios deben funcionar tanto en desarrollo como en una Raspberry Pi 5. Docker Compose lo orquesta todo, con comprobaciones de salud, límites de recursos e imágenes para dos arquitecturas.
Un servicio externo averiado no debe arrastrar a toda la aplicación. Cortacircuitos, reintentos espaciados, comprobaciones de salud y degradación controlada mantienen el servicio.
Entusiasta, profesora o amiga: cada persona elige el tono de LIA. Las personalidades se guardan en la base de datos, traducidas a seis idiomas, y se inyectan en los prompts.
Para personalizar de verdad, LIA extrae en segundo plano lo que importa de las conversaciones, lo recupera por significado y modula su tono según la sensibilidad del tema, sin bloquear nunca la respuesta.
Las conversaciones guardadas deben seguir siendo legibles cuando cambia su formato. El estado lleva un número de versión y se migra automáticamente al cargarse.
Una conversación nace con el primer mensaje, puede borrarse de forma lógica, deja un registro de auditoría y desaparece en cascada con la cuenta, conforme al RGPD.
Cada dominio (correo, contactos, agenda…) tiene su agente y sus herramientas, supervisados por un grafo padre que comparte un único estado y propaga la observabilidad.
Enviar un correo o crear una cita exige una aprobación. El borrador se presenta, se puede modificar o cancelar, y solo se ejecuta tras la confirmación — cada decisión queda registrada.
Repositorios, servicios y routers se encadenan mediante la inyección de dependencias de FastAPI, con sesiones de base de datos abiertas y cerradas en el momento justo, y fáciles de simular en los tests. Un fallo de ruta llega a la sesión para revertir su transacción; el cierre termina antes de propagar una cancelación.
Gmail, Calendar, Contactos, Drive y Tasks comparten una base común: alcances OAuth centralizados, tokens renovados bajo bloqueo y cuotas respetadas servicio a servicio.
Cada llamada a los modelos debe contarse y optimizarse. Un recuento preciso de tokens por proveedor, el coste en tiempo real, la caché y la selección semántica de herramientas han dividido por diez el catálogo enviado.
Tipos de cambio, limpieza de recuerdos, envío de recordatorios: algunas tareas deben ejecutarse solas. Un programador de tareas asíncrono las lanza según expresiones cron, se detiene limpiamente y publica sus métricas.
Un enrutamiento por significado, no por palabras clave
Las listas de palabras clave por idioma daban puntuaciones bajas y exigían un mantenimiento sin fin. Ahora el router compara el significado de la pregunta con el de los dominios y las herramientas, en más de cien idiomas.
Un recordatorio se crea en lenguaje natural, se guarda en UTC y llega como notificación push a todos los dispositivos, con un mensaje personalizado — sin enviarse nunca dos veces, ni siquiera con varios workers.
Capítulo 2 · 1 ene 2026 – 31 mar 2026 · 18 decisiones
Más allá del teclado
Un primer refuerzo de la seguridad, el dictado por voz, los espacios de conocimiento y la sincronización de una carpeta en línea, los diarios de LIA, el navegador controlado, los límites de uso — y la primera versión pública en código abierto.
Memoria y personalización · 4
Conocimiento y documentos · 3
Orquestación · 3
Modelos y costes · 2
enero de 2026
3 decisiones
ADR-034Seguridad
Refuerzo de la seguridad
Cookies HTTP-only, consultas parametrizadas, protección CSRF, contraseñas con hash: la aplicación alinea sus defensas con las recomendaciones de OWASP.
Los resultados de los agentes pueden ser contactos, correos, lugares… Una validación explícita de esta unión de tipos impide cualquier pérdida silenciosa de datos durante la conversión.
Tras cada respuesta, LIA detecta en segundo plano uno o dos temas que interesan a la persona, sin ralentizar la conversación, para personalizar sus respuestas y, después, sus iniciativas.
Palabra de activación «OK Guy», botón de micrófono, detección del final del habla y transcripción multilingüe gratuita en el servidor: la entrada por voz llega sin coste recurrente de API.
Cada persona puede subir sus documentos; LIA los fragmenta, los indexa y los recupera mediante búsqueda híbrida (significado + palabras) para enriquecer sus respuestas, en espacios estrictamente aislados.
En lugar de descargar tus archivos y luego subirlos, enlazas una carpeta de Drive: LIA reutiliza el conector existente e indexa los documentos con el mismo pipeline, archivo por archivo.
La asistente escribe sus propias reflexiones y observaciones, en primera persona, teñidas por su personalidad, y las relee por significado para razonar mejor con cada persona.
Ante «¿Qué sabes hacer?», LIA respondía de forma genérica. Un espacio de conocimiento del sistema, indexado a partir de las preguntas frecuentes, le da respuestas exactas sobre sus propias funciones.
Rellenar un formulario, buscar un producto, leer una página dinámica: un agente autónomo controla un navegador Playwright aislado, parte de una tarea descrita en lenguaje natural y la lleva a cabo.
Cada llamada a los modelos cuesta dinero real. Topes por persona — tokens, mensajes, coste — por periodo o en total protegen al operador frente a un gasto descontrolado.
Una aplicación MCP desactivada seguía recibiendo peticiones. Ahora los dominios que devuelve el analizador se filtran según los que están realmente disponibles, en cada paso.
Un plan fijo no podía reaccionar a lo que descubría. Una fase de iniciativa relee los resultados y propone comprobaciones útiles, y un subagente iterativo sabe explorar un servidor MCP complejo.
La personalidad conversacional contaminaba las notas del diario. Ahora un personaje de analista fijo escribe observaciones clínicas y directrices accionables, sea cual sea la personalidad activa.
Los nodos de agentes por dominio ya no se recorrían nunca. El análisis lo documenta, para que la administración deje de ofrecer ajustes que no sirven para nada.
Para no pagar ni esperar a un servicio externo en cada búsqueda semántica, un modelo de embeddings multilingüe se ejecuta en la propia máquina, incluso en una Raspberry Pi.
Dos almacenamientos distintos obligaban a cinco cálculos de embedding por turno. Memoria y diarios pasan a PostgreSQL con pgvector, y un único embedding sirve para todos los usos.
Activa, desactivada, eliminada, borrada: una cuenta sigue un ciclo de vida que conserva el historial de facturación tras la eliminación y lo borra todo a petición, en virtud del RGPD.
Capítulo 3 · 1 abr 2026 – 30 jun 2026 · 23 decisiones
Razonar y tomar la palabra
El modo ReAct, una psique que evoluciona, las habilidades, los datos de salud, el briefing matinal, la voz de LIA, los subagentes y un razonamiento ajustado por proveedor.
Orquestación · 5
Voz · 4
Memoria y personalización · 3
Modelos y costes · 3
abril de 2026
10 decisiones
ADR-068Memoria y personalización
Una psique que evoluciona
La personalidad era un texto fijo. Un motor psicológico de cinco capas — rasgos, estado de ánimo, emociones, relación, motivaciones — hace evolucionar el estado de LIA a lo largo de los intercambios.
La búsqueda semántica pasa a Gemini, con dos espacios distintos para almacenar y para buscar, y dos vectores por elemento (contenido y palabras clave) para recuperarlos mejor.
Un plan rígido no se adapta a un resultado inesperado. Un segundo modo, a elección de la persona, deja que el modelo llame a una herramienta, lea el resultado y decida qué hacer a continuación, en un bucle integrado en el grafo.
Dos mecanismos competían por identificar las habilidades. Ahora el analizador de consultas compara la petición con la descripción de cada habilidad activa: una única señal, semántica.
El gestor de contexto guardaba tres vistas por dominio, una de ellas inútil. Ya solo guarda la última lista y el elemento actual, lo que simplifica la resolución de las referencias.
Las alertas meteorológicas hablaban del domicilio incluso durante un viaje. Una última ubicación conocida, guardada a petición, permite que las notificaciones sigan a la persona allí donde se encuentre.
Varios campos de salida se confundían. Las entidades de negocio pasan por un único contrato explícito y plano, que los consumidores leen sin tener que adivinar.
Un mapa, un panel de control, un código QR: además de texto, una habilidad puede devolver un marco interactivo o una imagen, mediante un contrato JSON tipado.
Un atajo del iPhone envía cada día pasos y frecuencia cardiaca por lotes, autenticado con un token personal revocable, para seguir las tendencias y detectar las variaciones.
La página de inicio se convierte en un briefing del día: clima, agenda, correos, recordatorios… leídos en paralelo fuera del grafo de agentes, con una caché por sección y una síntesis redactada.
Las capacidades y los precios de los modelos estaban fijados en el código. El catálogo vive ahora en la base de datos, editable por el administrador sin volver a desplegar.
El diario se convierte en el órgano de metacognición de LIA: observaciones en bruto, directrices, síntesis y retrato de la persona, cada uno con su nivel de evidencia y su autoevaluación.
Una síntesis de voz neuronal, multilingüe y emitida frase a frase da voz a LIA, con un primer sonido en menos de tres segundos, y cada persona decide si la activa.
Como opción, el reconocimiento de voz puede pasar por ElevenLabs Scribe, más preciso; los precios incorporan una unidad por minuto o por hora de audio para calcularse con exactitud.
Catorce variables de entorno controlaban la síntesis de voz. Pasa a ser un rol del catálogo, que se elige en la administración como cualquier otro modelo.
Cliente HTTP persistente, división en frases durante la generación y envío inmediato: la voz empieza a hablar antes de que termine la respuesta escrita.
Un resumen de cinco correos había consumido cerca de 500.000 tokens. La delegación a un subagente pasa por un bucle ReAct parametrizado y acotado, y el antiguo mecanismo se elimina.
«Mis citas médicas» no daba ningún resultado: se buscaba tal cual la palabra «médica». Un principio de planificación separa lo que un servicio sabe filtrar de lo que el modelo debe juzgar.
Tras la confirmación, tres recordatorios eliminados aparecían como tres líneas idénticas. Un registro declarativo por tipo de borrador, verificado al arrancar, fija cómo se muestra cada uno.
Una conversación demasiado larga impedía cualquier mensaje nuevo. La compactación incorpora tiempos límite, reintentos, observabilidad y un recorte visible en lugar de un bloqueo.
Un mes de cien decisiones: una auditoría de principio a fin, la seguridad y las copias de seguridad, una CI que ejecuta exactamente lo que lanza el desarrollador, alertas que despiertan por un motivo, y las primeras reglas de honestidad.
Experiencia e interfaz · 16
Plataforma y entrega · 15
Fiabilidad y rendimiento · 14
Orquestación · 12
julio de 2026
101 decisiones
ADR-090Orquestación
Una capa semántica gobernada
Los vínculos entre tipos de datos y herramientas tenían dos fuentes desincronizadas. Ahora son la unión de la ontología y los manifiestos, y unos tests garantizan su integridad.
La respuesta esperaba a que terminara la iniciativa para cargar su contexto. Ahora ambas se solapan, lo que ahorra varios segundos en los turnos con herramientas.
Reanudar tras una aprobación repetía llamadas costosas. Cada nodo ya solo plantea una interrupción y el bucle pasa por el grafo, lo que hace segura la reanudación.
La dirección del cliente podía falsificarse y se podía inyectar HTML. Puertos ligados a localhost, cabeceras de proxy verificadas y saneamiento del HTML cierran esas dos brechas.
Tres funciones de ventana de mensajes ya no se invocaban en ningún sitio. Desaparecen con sus ajustes y sus tests: un subsistema muerto cuesta en cada cambio.
Una auditoría encontró siete familias de defectos discretos. Cada una se corrige y recibe una salvaguarda permanente — un test, una métrica o una regla escrita — para que nunca vuelva.
Una auditoría se centró en tres fronteras: el código síncrono que congelaba el bucle asíncrono, los servicios internos accesibles desde la red local y la salida de los modelos mostrada sin filtrar. Cada defecto se corrige y se mide antes y después.
Algunos defectos solo aparecen en paralelo o al eliminar una cuenta. Una sesión de base de datos por tarea paralela, una purga RGPD completa y un entorno aislado de habilidades reforzado los eliminan.
La política de seguridad de contenido rompía los widgets MCP. Ahora cada widget de terceros recibe su propio documento, y por tanto su propia política, sin debilitar la de la aplicación.
Un proxy inverso nginx incluido desde la primera versión nunca se había conectado a nada. Se elimina, porque un archivo que no sirve engaña a quien lo lee.
A veces un modelo respondía con JSON dentro de su texto en lugar de la estructura esperada, y la petición fallaba. Una red de seguridad recupera ese JSON, y una convención de escritura de los prompts evita el conflicto.
«Mis próximas citas médicas» fallaba al azar según el modo. La herramienta lista el periodo y después filtra ella misma, restablece las fechas y limita el volumen leído.
Cada dominio lleva un nombre en singular y una clave de resultado en plural, ambos sacados de un registro único: ya no queda ninguna tabla mantenida a mano.
Partes de la validación humana seguían en francés para todo el mundo. Las instrucciones a los modelos pasan a un inglés neutro y todo lo que lee la persona se traduce a los seis idiomas, con un control de paridad que lo garantiza.
El ánimo de LIA se quedaba atascado en unos pocos estados. La causa — las emociones creadas en cada turno — se trata en su origen, con umbrales ajustables sin reconstruir.
El estado psicológico se describía con adjetivos abstractos y no se notaba. Pasa a la forma de hablar — ritmo, longitud, registro — sin decir nunca «me siento».
Los modos Pipeline y ReAct activaban las confirmaciones de dos formas distintas. Ahora un contrato único y tipado sirve para cualquier validación, sea cual sea el modo.
Brave, OpenWeatherMap y Perplexity limitaban su ritmo de peticiones proceso a proceso, lo que resultaba erróneo con varios workers. Ahora heredan de una base reforzada, con un ciclo de vida determinista.
Ninguna copia de seguridad de la base de datos estaba versionada. Un contenedor dedicado exporta cada noche con retención, y un script demuestra la restauración en una base desechable.
Se analizan y comparan las opciones de cifrado de las copias de seguridad; la decisión es aplazarlo, con un camino trazado hacia una copia fuera de las instalaciones.
Cada worker compartía una sola conexión para guardar todas las conversaciones. Los pools de conexiones eliminan ese cuello de botella, el primero del sistema.
Las versiones instaladas variaban de una máquina a otra. Unos archivos de bloqueo universales, generados por uv y verificados en la CI, fijan cada dependencia transitiva.
250 tests de integración no se ejecutaban en ningún job. Se incorporan a la CI con una base de datos real, las cuarentenas quedan prohibidas y la cobertura ya no puede retroceder.
El núcleo del chat solo estaba protegido por el tipado. Ahora cientos de tests cubren el streaming, las validaciones y la voz, con umbrales de cobertura que no retroceden.
Cerrar la pestaña interrumpía la generación. Ahora la respuesta se produce aparte, se difunde por Redis Streams y se reanuda en directo cuando vuelves.
El generador de habilidades exigía cuatro manipulaciones manuales. La habilidad se instala directamente, mediante un proceso de importación único y reforzado.
Las alertas se habían desactivado sin una decisión escrita. Vuelve un núcleo mínimo de alertas vitales, evaluadas por Prometheus y enviadas por correo electrónico, cada una con su procedimiento.
«A casa de mi hermano» ya no lleva a cualquier sitio
Un trayecto hacia «mi hermano» salía a veces hacia un lugar arbitrario. Evidencias deterministas de referencia a una persona y un control de parámetros en la ejecución cierran cada eslabón del fallo.
Solo el 14 % de los parámetros llevaba un tipo semántico. Una campaña de anotación vincula por fin participantes, remitentes, direcciones y fechas de una herramienta a otra.
LIA puede llamar a un tercero para comprobar una disponibilidad y después traer un resumen al chat. La llamada pasa por tu propio conector y sigue siendo confirmada, acotada y de solo lectura.
Un reinicio dejaba documentos bloqueados a mitad de procesamiento. Documentos y fuentes pasan a ser tareas con arrendamiento, que se retoman automáticamente.
La mitad de las notificaciones hablaban del mismo tema. Los intereses se agrupan por tema percibido y se sortean según su rareza, con mediciones que lo respaldan.
Las solicitudes de validación no eran más que un texto que había que interpretar. Se convierten en tarjetas con botones, tras corregir defectos latentes.
Un conector revocado producía una excusa vaga. Un banner propone reconectar con un clic, gracias a una clasificación por tipo de excepción, nunca por mensaje.
El heartbeat volvía sin cesar a los mismos intereses sin nada concreto. Una muestra variada, un registro común, un filtro antirrepetición sobre el contenido y un enriquecimiento concreto corrigen el rumbo.
En el iPhone, los mapas y las aplicaciones MCP se quedaban vacíos sin ningún mensaje. Una postura de aislamiento adaptada y unos estados de fallo visibles arreglan la visualización.
👍 o 👎 bajo cada respuesta, con un comentario opcional: el veredicto se conserva y se reinyecta en el aprendizaje, nunca para regenerar la respuesta en tu lugar.
«Hazme esto todas las mañanas» llega ahora a buen puerto en el chat, tras una confirmación, y LIA sugiere una rutina cuando ve que una petición se repite.
Los ajustes psicológicos se habían entregado sin medición. Primero llega un instrumento de observación, y las propiedades deseadas se convierten en tests.
Passkeys, segundo factor TOTP con códigos de respaldo y nueva verificación antes de cualquier acción sensible: la máxima seguridad y la máxima comodidad, sin exponer nunca un secreto al navegador.
Cada persona ve los dispositivos conectados a su cuenta y puede revocar uno a distancia, con un mínimo estricto de datos (familias de navegadores, IP truncada).
En virtud de la portabilidad del RGPD, cada persona descarga la totalidad de sus datos, preparados por tareas duraderas y sin exportar nunca un secreto.
Aislar un script cambiando de usuario solo protegía si la API se ejecutaba como root. Ahora cada script de habilidad se ejecuta en un contenedor desechable, sin red.
El workflow de integración continua contenía casi cien comandos escritos en línea. Ahora cada paso llama a una tarea del Taskfile: la CI ejecuta literalmente lo que cada uno lanza en local.
Clasificar una respuesta libre a una solicitud de aprobación (sí, no, modificar) fallaba con algunos nombres de herramientas. La clasificación se hace por verbo de acción, con ejemplos que cubren todos los casos.
La voz cortaba en mitad de una URL o de un número decimal. Un delimitador solo cierra una frase si va seguido de un espacio o está al final del texto, en las dos implementaciones, ahora unificadas.
Diez suites de tests se desactivaban solas por falta de clave de API, así que nunca se ejecutaban en la CI. Se simula el proveedor o se marca el test de forma visible, y una salvaguarda impide la recaída.
Una vulnerabilidad de una dependencia de JavaScript exigía una versión incompatible. Un pequeño parche de interoperabilidad aplica la verdadera corrección de upstream sin romper las herramientas.
Un solo tema del diario recibía casi todas las entradas. La clasificación se hace según el asunto, y un arnés de medición comprueba que cada tema siga vivo.
Seis peticiones de imagen seguidas habían fallado: el modelo escribía la palabra «null» como nombre de habilidad. Las salidas se normalizan y se levantan dos topes que hacían imposible la función.
En el móvil, una respuesta podía quedarse bloqueada en «Generando…» aunque ya estaba lista. Un perro guardián en el navegador detecta el silencio y reanuda el flujo automáticamente.
Cuatro workers reindexaban el conocimiento del sistema a la vez y saturaban al proveedor. Uno solo se queda con el derecho a indexar, y su caché sobrevive al despliegue.
Un solo worker calcula los embeddings de herramientas
En el primer arranque, cada worker recalculaba los mismos embeddings. Una reserva mediante un archivo designa un único calculador; los demás esperan su resultado.
Para ajustar una habilidad, la asistente relee la versión actual y regenera el paquete completo, confirmado en la herramienta, en lugar de aplicar un parche parcial.
Cada tema mencionado se convertía en un interés. La pregunta pasa a ser: ¿ha mostrado la persona un vínculo duradero? Pedir algo no significa que te guste, y cada creación exige un fundamento citado.
El texto escrito por un tercero —un correo, una invitación, una página— debe seguir siendo un dato, nunca una instrucción. La confianza se declara por tipo de dato y se aplica allí donde el modelo lo lee.
Una búsqueda híbrida de la memoria llevaba meses sin usarse. El módulo, sus ajustes y sus métricas desaparecen, con la prueba de su inactividad como respaldo.
Las instrucciones del turno ReAct se añadían como mensajes y desaparecían al recortarse la ventana del historial. Pasan a ser estado, recompuesto al principio en cada iteración.
El tiempo pasado esperando tu aprobación se contaba como cómputo. El presupuesto ReAct solo cuenta el cómputo real, y una guarda detiene un bucle que repite la misma llamada.
Encontrar un ajuste cuyo nombre ya conocías obligaba a desplegarlo todo. Un campo de búsqueda indexa las secciones y dice claramente cuándo un destino no existe.
Un enlace que rellena el campo y un enlace que envía la petición tienen ahora dos parámetros distintos, para no enviar nunca un texto que la persona no haya validado.
Tras una llamada, solo sobrevivían un resumen y algunos datos. Compromisos, seguimientos propuestos e incertidumbres se conservan ahora en un informe estructurado.
Una rutina puede dispararse por una condición —una tarea atrasada, un cambio meteorológico— comprobada en cada tick, y solo se ejecuta una vez por cada hecho nuevo.
Recuadros destacados, viñetas, tablas, bloques plegables: un vocabulario de componentes permite respuestas maquetadas, saneadas según un esquema ampliado.
Más allá de lo técnico, un panel de control mide los resultados útiles, la activación, la retención y el coste por resultado, a partir de datos duraderos en la base de datos.
El resultado de una llamada llegaba en inglés y sin su informe: un camino esquivaba la puerta común. Ahora toda salida estructurada pasa por ella, con una guarda AST que lo respalda.
Encontrarse por nombre exacto, conectarse tras un acuerdo mutuo, escribirse de asistente a asistente y compartir en solo lectura: un contexto dedicado organiza estos vínculos.
El espacio público adopta una identidad cósmica y coreografías guiadas por el desplazamiento, aplicadas mediante un ámbito CSS sin reescribir los componentes.
Conciencia de las conexiones y fallos contados tal cual
«¿Está disponible mañana?» respondía que no había ningún servicio configurado. El enrutamiento conoce ahora las conexiones, y un fallo se comunica tal como es.
Una misma petición fallaba y luego funcionaba al azar. Un catálogo filtrado debe ser cerrado: todo lo que exige una herramienta debe producirlo otra herramienta del catálogo.
El planificador no veía los límites que la herramienta aplicaba en silencio. Toda restricción aplicada se publica para quien produce el valor, y un veredicto de validación no equivale a un fallo.
Un número mostrado debe ser exacto o no existir: contar sobre una página truncada subestima en silencio. Agregado sobre todo el conjunto, paginación solo de las filas y el total exacto al lado.
Las palabras de un mensaje tienen derecho a un plazo
El contenido de un mensaje retransmitido se borraba en cuanto se entregaba. Ahora se conserva durante un tiempo limitado, como las llamadas, antes de purgarse.
Capítulo 5 · 1 ago 2026 – 31 ago 2026 · 62 decisiones
Hacerlo todo visible
La accesibilidad por contrato, los ajustes y las capacidades a la vista, los costes según la hora, el instalador para el autoalojamiento, un catálogo de modelos que dice la verdad, los ojos expresivos y el autodiagnóstico.
Experiencia e interfaz · 15
Plataforma y entrega · 10
Orquestación · 7
Modelos y costes · 6
agosto de 2026
62 decisiones
ADR-190Orquestación
Lo que el catálogo anuncia, el registro lo cumple
Una herramienta anunciada pero ausente del registro respondía en vacío. Una guarda compara ambos, y la ficha de contacto muestra todos sus campos.
Un punto 360° volvía amputado: la herramienta no era accesible desde el dominio pedido. Cada herramienta declara los dominios a los que sirve, y un clic no es una frase.
Un segundo punto 360° se quedaba congelado en el primero: el enrutador del navegador reutilizaba la URL. Un enlace profundo del chat pasa a ser una navegación completa.
Un dominio que solo sabe escribir empuja a escribir. Se añaden tres capacidades de lectura (llamadas, compromisos, mensajes), y la identidad de una persona se puede corregir.
Una notificación tiene su identidad antes del envío
El 👍/👎 de una notificación proactiva apuntaba a veces a la fila equivocada. El identificador lo elige el productor antes del envío y sirve en todas partes.
Para dejar de recibir notificaciones sacadas de los correos había que desconectar el correo. Once interruptores separan ahora la conexión del permiso para interrumpir.
Al calcular las cinco próximas ejecuciones apareció un fallo con el cambio de hora. Una rutina se ejecuta como mucho una vez por día local, por construcción.
El chat vacío propone arranques sacados del briefing que ya está en caché, nunca de una nueva consulta: una sugerencia solo existe si existe la prueba.
Un recuerdo afirmaba una preferencia sin decir de dónde venía. Cada conclusión guarda una referencia a su origen, y un borrado deja una huella fechada.
Tres componentes codificaban sus propios colores de estado. Ahora un estado nombra un tono, renderizado por un único componente que hereda la guarda de contraste.
Una auditoría de UX mostró que la accesibilidad solo se verificaba en una parte de la interfaz. El contrato de un campo vive en un solo lugar, y una pantalla vacía siempre ofrece una puerta de salida.
Tres pantallas similares mostraban sus acciones de tres maneras, a veces invisibles con el teclado. Un componente único las hace siempre visibles y accesibles.
El panel de depuración mostraba los pasos desordenados. Cada llamada lleva ahora su instante, medido desde el inicio de la ejecución, y el panel respeta el orden real en que se ejecutó.
Regresar a una página volvía a ejecutar una acción de tarjeta ya realizada. Cada clic recibe un identificador de un solo uso, verificado en el momento de consumirlo.
El despliegue borraba el directorio vivo bajo los contenedores en servicio. La nueva versión se prepara aparte y solo toma el relevo cuando está lista.
Promover campos variados a etiquetas de Loki multiplicaba los flujos indexados. Solo los campos con un conjunto pequeño y cerrado de valores se convierten en etiquetas; el resto se filtra al leer.
¿Quién llama? Una cabecera que no se puede escribir
Tres sitios leían la dirección de quien llama, y un visitante podía falsificarla. Un único resolutor prefiere la cabecera que Cloudflare sobrescribe, lo que cierra la vía para esquivar los límites.
LIA aprende cuándo haces qué mediante estadísticas deterministas y explicables, calibradas por simulación. Cada hábito se ve, se corrige y se bloquea, y un solo interruptor cierra todo aprendizaje.
Un instalador guiado construye la aplicación en local o usa imágenes verificadas por su huella, y nunca lee un secreto en otro sitio que no sea la entrada estándar.
Los límites por usuario no acotan una instancia: N cuentas suman un gasto sin límite. Un presupuesto diario de instancia, actualizado de forma atómica, acota el propio despliegue.
Transcripción, síntesis de voz, imágenes… cada capacidad que no es un conector tiene su interruptor de administración, que de verdad le retira la capacidad a la asistente.
Las pruebas del demostrador congelaban lo que hacía el código el día de la entrega. Cada promesa se recalcula desde la fuente de verdad; una novedad sin clasificar hace fallar la CI.
Algunos proveedores solo devuelven el consumo si se les pide. Cada proveedor declara su modo de recuento, verificado al arrancar, y una llamada de pago sin recuento dispara una alerta.
El tiempo de espera por modelo se podía editar pero nunca se aplicaba. Pasa a ser el límite de transporte de cada llamada, contrastado con las latencias reales, y nada alrededor de una llamada lo corta antes.
«Haz una búsqueda y luego pásalo a CSV»: un modelo redactor produce el contenido estructurado, y motores locales construyen el archivo Excel, Word, PowerPoint o PDF.
Cincuenta y una secciones plegadas en acordeón eran muchas. Un riel lista las secciones y un panel muestra la selección, ambos renderizados desde una única tabla.
La página de capacidades describía el producto de hace seis meses. Una sola agregación responde a «en qué punto está esta capacidad», y un assert obliga a que cada novedad figure en ella.
Administrar 124 modelos un cuadro de diálogo cada vez no es sostenible. El catálogo se exporta a un libro de Excel y se vuelve a importar, con una vista previa de los cambios antes de escribirlos.
La autoevaluación del diario llevaba meses sin producir ninguna señal. Umbrales adaptativos por persona, una guarda sobre la iniciativa y bucles por fin cerrados la reactivan.
El programa de evolución se cierra con un inventario probado: la proactividad ambiental ya existía en forma de rutinas condicionales, cuya creación equivale a un consentimiento. Las misiones de varios días, un crítico automático y la transformación de rutinas en habilidades quedan reservados a la decisión del propietario, con las pruebas sobre la mesa.
Unos ojos animados traducen lo que hace LIA —pensar, buscar, hablar, esperar tu aprobación— a partir de señales que ya existían, sin ningún backend nuevo.
Tres versiones de Python convivían entre imágenes, CI y puestos de trabajo. Un solo intérprete, CPython 3.14 sobre Debian Trixie, para todo el entorno.
La puntuación léxica aplastaba a la semántica y descartaba buenos pasajes. El umbral se aplica primero al sentido, y lo léxico solo añade un bonus acotado.
89 de 114 modelos tenían capacidades por defecto nunca verificadas. Dos registros públicos alimentan el catálogo, y cada fila dice de dónde vienen sus capacidades.
Las aplicaciones móviles se publican una sola vez para todos los servidores autoalojados. Android recibe las notificaciones a través del Firebase de cada servidor; iOS pasa por un relé que no transporta ningún contenido.
Pedir a un modelo que razonara pasaba por cuatro formas almacenadas y siete constructores. Una sola intención, un perfil derivado y una sola costura de traducción por proveedor.
LIA producía cientos de métricas sin leer ninguna. Una autocomprobación periódica, una memoria de incidentes diagnosticados y respuestas que esquivan un fallo conocido.
«Dame un minuto» no es una respuesta. El bucle ReAct comparte la memoria del pipeline, se gana su presupuesto produciendo y nunca publica un mensaje que anuncie un trabajo que no va a hacer.
La identidad de un turno viajaba en un diccionario sin tipar. Pasa a un contexto tipado e inmutable de LangGraph —sin adoptar Agent Server, incompatible con LIA.
Para los cálculos que un modelo hace mal, el agente escribe un script corto y lo ejecuta en el entorno aislado existente, solo en modo ReAct, con los datos pasados sin volver a copiarlos.
El despliegue terminaba con un error que habíamos aprendido a ignorar. El veredicto remoto se lee ahora en un archivo, nunca se deduce de un código de salida SSH.
53 secciones de ajustes tenían el mismo color y a veces el mismo icono. Se corrigen los iconos que chocaban, y doce tonos de grupo, medidos, ayudan a orientarse.
Los ojos habían tocado el techo de CSS. Un motor TypeScript calcula cada canal en cada fotograma y publica propiedades que la hoja de estilos se limita a leer.
Seis tareas en segundo plano salían en el mismo segundo. Un desfase aleatorio en origen, un amortiguador corto del lado del proveedor y una espera que expira abierta absorben la ráfaga.
Una autoridad sobre lo que declara un servidor MCP
La lectura de los esquemas JSON de las herramientas MCP estaba duplicada. Un solo módulo lee la declaración al pie de la letra del estándar, tanto para el adaptador como para el planificador.
El presupuesto ReAct solo contaba el razonamiento. El tiempo de las herramientas pasa a ser un segundo presupuesto con nombre propio, cada llamada tiene su límite, y una delegación ya no puede consumirlo todo.
Una revisión de la literatura sirvió de guía de lectura: la procedencia sobrevive a la compactación, el ancla del turno se mantiene, los recuentos de la traza son honestos, la validación verifica la cobertura y el contexto entregado se mide.
El botón «+» convierte el teléfono o el ordenador en una grabadora: el audio sale por segmentos, y LIA entrega un acta estructurada —fecha, participantes, decisiones, acciones.
Una notificación push de Gmail o de Drive pone en cola un despertar. LIA lo atiende bajo todas sus reglas de elegibilidad, y Drive solo resincroniza lo que ha cambiado.
Cada herramienta declara si lee, redacta, pide confirmación o actúa. Cada acción se inscribe antes de ocurrir y luego se salda a partir de su resultado, y tres registros, que la instancia puede sellar por cuenta, dejan constancia de lo que LIA ha hecho, leído y decidido.
Las cejas tienen curvatura, una misma respiración recorre el rostro y la boca tiene vida propia: el rostro de LIA se mueve sin salirse nunca de un presupuesto de unos pocos píxeles.
El diagnosticador recoge sus pruebas en el momento en que se produce el incidente, fuente por fuente, y un texto enviado a un proveedor de embeddings es siempre una cadena exacta.
Ollama se usa a través de su cliente nativo, y su servidor declara él mismo lo que saben hacer sus modelos: herramientas, visión, razonamiento, tamaño de contexto.
Un motor de recurrencia, un recordatorio que se repite
Un solo motor de recurrencia sirve a las rutinas y a los recordatorios: «cada dos martes a las 8:00» se vuelve posible, y un recordatorio por fin puede repetirse.
Para cada relación, LIA escribe una vez al día una síntesis fechada —en qué punto estás, qué abordar—, que el chat relee sin hacerla pasar nunca por un hecho verificado.
Cada módulo que llama a un modelo declara dónde se registra su gasto, y cada fila del registro declara quién es su autor: tú, una rutina o LIA por su cuenta.
Toda llamada que paga la plataforma está acotada a la vez por el tope de la cuenta y por el presupuesto diario de la instancia, en la puerta más interior.
El renderizado cuida la forma; el modelo, el sentido
El modelo dice qué es un contenido —lista, cita, alerta, tabla— y el motor de renderizado lo dibuja con los mecanismos nativos de Word, PowerPoint, Excel y PDF, sin desbordarse nunca.
Una respuesta estructurada truncada por el límite de tokens ya no se remienda como un documento más corto anunciado como un éxito: es un rechazo, y se dice como tal.
Un ticket tiene un ciclo de vida, un portador y un resultado. LIA puede ejecutar un ticket, hacer sus preguntas en él y esperar tu respuesta, sola o con un par.
El tamaño de contexto ya no es un ajuste global de la instancia: cada puesto configurado tiene el suyo, rellenado de antemano con lo que declara el servidor.
Veinticinco capacidades tienen cada una su interruptor. Apagar una capacidad retira la función, nunca tus datos, y el mapa de capacidades solo cuenta lo que nombra.
Cuando una reunión termina a las 15:00, LIA puede preguntarte justo después cómo ha ido, y una vigilancia sobre un correo esperado se atiende al minuto.
Cada proceso declara y publica la memoria que ocupa: el supervisor ya no carga la aplicación, las bibliotecas pesadas se cargan al usarse y la caché de voz está acotada.
La auditoría de los prompts encontró seis sitios donde el texto decía algo distinto del código. Cada variable tiene un productor, y cada límite viene de una sola constante.
Un modelo que razona por defecto gastaba todo su presupuesto en pensar y devolvía recordatorios vacíos. Una respuesta corta se pide sin razonamiento, y una familia de modelos se declara una sola vez.
Un resultado de herramienta se proyecta elemento a elemento dentro de un presupuesto de tokens, y el corte se anuncia: el agente lee correos enteros en lugar de cabeceras técnicas.
LIA te llama a un número verificado con un código dicho en voz alta, lee tus datos durante la llamada, y lo que dices se convierte en tu propio mensaje en el chat.
El bucle ReAct elige sus herramientas por relevancia
En lugar de un catálogo recortado según el orden de registro, el bucle ReAct vincula las herramientas más relevantes para tu pregunta, cubriendo cada familia.
Cejas apoyadas sobre el ojo, habla generada sílaba a sílaba, gestos variados y pequeñas escenas en reposo: el avatar nunca interpreta dos veces lo mismo.
Un script puede llamar a un servicio a través de un único proxy, con tokens que no puede leer. Un host desconocido da lugar a una pregunta que LIA no puede saltarse.
Un modelo de voz escucha y responde en un mismo aliento, con tu propia clave; cada petición de datos o de acción se delega en el motor de LIA, con las mismas reglas que el chat.
Cada proveedor declara su modo de conexión y su forma de delegar, sin ninguna bifurcación según su nombre: Gemini Live, GPT-Live y luego ElevenLabs pasan por la misma costura.
Tanto por teléfono como en el navegador, «Live» delega cada petición durante la conversación y «Live directo» lee sin actuar y luego transmite tus palabras al final: un único cierre para ambos.
Volver a conectar tus servicios de Google o Microsoft requiere un solo flujo OAuth por cuenta, verificado mediante una identidad firmada, y cada servicio conserva su propio estado.
El fallo de una herramienta se dice, nunca se adivina
Cuando una herramienta falla, LIA lo dice con el motivo real en lugar de inventarse un diagnóstico, y las métricas por fin cuentan los fallos como fallos.
Una conexión a la base de datos ya nunca espera la respuesta de un proveedor: desaparecen los despertares atascados, los bloqueos retenidos y las conexiones inactivas «en transacción».
Cada familia de modelos de imagen declara lo que acepta y cómo se factura: OpenAI y Qwen Image pasan por un solo cliente, y una imagen se puede retocar.
La superficie de petición de los modelos Claude se declara una sola vez, y la caché de prompt se moldea y se factura exactamente como la mide el proveedor.
Los conectores sin clave pertenecen a la instancia
Wikipedia, la navegación, Places, la meteorología y el medio ambiente no piden nada a la persona: es el administrador quien los activa para todo el mundo.
Una caché que sobrevive de un turno ReAct al siguiente
Una opción hace que cada turno ReAct reutilice el prefijo del turno anterior —todas las herramientas y luego el contexto del turno tras la pregunta—, para pagar menos por los tokens ya enviados.
Una única disposición de prompt para todas las cachés
Lo estable antes que lo variable, una sola frontera, ninguna escritura de caché que nadie vuelva a leer: cada proveedor traduce la misma regla a su propio mecanismo.
Lo que el bucle sale a buscar acaba obtenido o declarado como ausente. Una carencia declarada abre una pasada de recuperación acotada, y la respuesta dice lo que no se ha podido obtener.
Cada persona elige entre intercambios frecuentes y puntuales. Frecuentes: LIA conserva todas sus herramientas y prepara cada turno para que el siguiente lo relea desde la caché, un primer mensaje más costoso y luego otros mucho más baratos. Puntuales: elige las herramientas por relevancia, con un coste estable.
Un mensaje enviado a unas cuentas elegidas se mostraba después a todo el mundo en su siguiente inicio de sesión: la lista de destinatarios no se guardaba. Ahora sí, y bajo el formulario el administrador consulta el historial paginado de lo enviado: fecha, destinatarios, plazo de caducidad.
Hasta ahora LIA solo recordaba lo que evocaba el mensaje. Ahora puede buscar un tema descubierto por el camino: el remitente de un correo, un lugar, una instrucción dada un día. Por teléfono, esa búsqueda por fin responde a la pregunta hecha en lugar de devolver los últimos recuerdos.
Escribir a tu propio buzón ya no pide validar un borrador, como la llamada telefónica a uno mismo: «cada mañana, envíame el tiempo por correo» puede funcionar como rutina. El destinatario nunca es un parámetro: el buzón conectado o la dirección verificada de la cuenta.
Un prompt de imagen puede mejorarse sin ser traicionado
Para quien lo activa, un modelo dedicado reescribe la descripción de cada imagen nueva con las técnicas que recomiendan los proveedores: encuadre, luz, objetivo, estilo. Lo que se pide no cambia, el texto que va en la imagen se mantiene palabra por palabra y, ante la menor duda, la petición original se envía tal cual.
Un clic en una imagen la envía a una conexión, con un comentario si quieres. Llega a sus imágenes, como si la hubiera generado, y a su chat, con el comentario citado tal cual: nunca convertido en un enlace ni en una imagen oculta.
Los registros guardan hechos, nunca las palabras de una persona
Fuera de la depuración, los registros solo guardan cifras, longitudes e identificadores: ni búsquedas, ni intereses, ni nombres de contactos o de archivos. Cuando una base de datos o un servicio cita el dato que rechaza, la cita se elimina antes de escribir la línea. Una prueba lee cada línea de registro del código y rechaza la que escribiría las palabras de una persona.
LIA calcula en lugar de estimar, y encuentra lo que ha hecho
Un cálculo, una fecha o una conversión de divisas ya no se estiman a ojo: LIA los calcula con exactitud, al tipo de referencia del día, que indica. También puede buscar en su diario un tema descubierto por el camino, decirte lo que ha hecho y consultado en un periodo con totales exactos, y volver a mostrarte un archivo que ha producido mientras siga existiendo.
Desde la galería puedes conservar una imagen, un documento o una captura: la limpieza automática ya no lo elimina, dentro de un límite por cuenta que se muestra antes de cualquier rechazo. Dejar de conservarlo le devuelve un plazo, nunca una eliminación inmediata, y el chat dice en cada lectura si el archivo está conservado o ya no existe.
Un mensaje que llega de otro lugar — otra pestaña, Telegram, una rutina, un recordatorio — aparece sin recargar la página: el servidor avisa en cuanto el mensaje se guarda, y el chat añade lo que falta sin tocar lo que ya se muestra. Nada se mueve mientras se escribe una respuesta, y quien subió en el hilo no se desplaza.
Una imagen, un documento, una captura o una respuesta sale por correo, como adjunto, con el asunto y las palabras que la persona eligió — LIA no escribe nada en su lugar. Sale de su buzón conectado hacia quien quiera o, sin buzón, va a su propia dirección verificada. Cada buzón tiene su tamaño máximo, tomado de la documentación de su proveedor y anunciado antes del envío.
Una rutina sigue o bien una programación o bien una condición — nunca las dos: primero se elige cuándo se ejecuta, y solo se muestran los campos de esa elección. Una rutina que espera algo ya no tiene horario: LIA comprueba la condición por su cuenta, de día y de noche, hasta un último día opcional. Solo se ejecuta ante algo nuevo, nunca dos veces por lo mismo, dentro de un límite diario.
Los correos, el bot de Telegram, los mensajes de error y los catálogos de la aplicación se escriben ahora en el idioma de quien los lee: ninguna frase en francés servida por defecto a una cuenta alemana o china, ningún correo de verificación recibido en inglés. Cada tabla de traducciones lleva los seis idiomas —una comprobación automática lo asegura en cada cambio—. El francés escrito en el código que solo leía el modelo pasa al inglés técnico, para no favorecer ningún idioma; lo que queda —algunos prompts y etiquetas en francés, textos dirigidos al modelo traducidos a los seis idiomas— espera a que una medición muestre qué cambia al traducirlos.
LIA se convierte en una emisora de radio a demanda en tu idioma: tu día y luego la actualidad de los medios que sigue y de los sitios que añades, escritos, verificados y locutados para ti mientras escuchas. Una parrilla fija decide qué se emite, los modelos solo escriben y cada frase muestra su fuente. No se produce nada cuando nadie escucha, no se guarda nada después, y lo que cuesta la sesión se muestra mientras gasta.
JEV ayuda a elegir, orientar o evaluar entre opciones acotadas, con un interruptor inmediato por uso y el recorrido existente ante la duda. Dos usos opcionales, desactivados por defecto, detectan la ausencia de referencias personales o el rechazo de todas las acciones pendientes; ninguno autoriza la ejecución. Las vistas previas conservan resultados canónicos y los observadores no bloquean escrituras; los administradores ven contexto y resultado, los fallos de pago y las alternativas cuentan, y las ventajas se verifican en el recorrido completo antes de activar.
Ningún texto hostil congela a LIA, ninguna redirección la desvía
Las funciones que aplanan un texto para una voz, una notificación o una tarjeta leían algunos textos en tiempo exponencial: 51 caracteres escritos en el chat costaban 4,5 s, un correo trampa de 32 KB congelaba a LIA 3 s. Cada patrón se reescribe lineal y dos pruebas lo sostienen, en el servidor y en el navegador. La lectura de una página web comprueba ahora cada redirección antes de seguirla y se conecta a la dirección verificada, nunca a una resolución posterior del nombre.
Una skill de fuera se lee como un dato, y la biblioteca instala lo que se leyó
Se pueden buscar skills en skills.sh o en una dirección de GitHub, leer cada una antes de instalarla y mantenerla al día; la instalación toma exactamente el commit leído, cada archivo verificado. Una skill escrita fuera de LIA se ejecuta aparte, solo con sus propios archivos: nunca los conectores de la persona, ni imágenes ni contenido web en sus respuestas. Una skill puede ejecutar sus propios comandos en una copia desechable de su carpeta, con red solo hacia los hosts permitidos, y la que escribe el chat solo entra con el clic de la persona.
El heartbeat ya no tiene cupo diario: cada pasada llega a la decisión
LIA ya no retiene una notificación útil porque se haya alcanzado un tope diario: el modelo de decisión juzga si una señal merece interrumpir a la persona. Cada pasada dentro de su franja horaria llega a esa decisión, y solo la franja, las pausas entre dos mensajes, una reunión en curso y los topes de gasto acotan el ritmo. Los despertares por un correo y los momentos anticipados siguen las mismas reglas.
Una palabra de activación entrenada, oída en el navegador, y una espera Live que no factura nada
LIA despierta con una frase reconocida íntegramente en el navegador por un pequeño modelo entrenado para su idioma, sin la condición técnica que privaba al iPhone y a las aplicaciones nativas del antiguo «OK Guy» en inglés; «LIA, stop» corta su voz. El primer modelo, «Dis LIA» en francés, se entrega en beta porque su banco aún no alcanza los umbrales publicados, y los demás idiomas conservan el toque. En modo Live, un silencio pone a la asistente en espera: la conexión con el proveedor se cierra, ya no se factura nada, y un toque o la frase la despierta sin perder la conversación.
Medios servidos sin trabajo en ejecución: ilustraciones pregeneradas, un vídeo declarado por el operador
Las ilustraciones del blog se escriben una vez, en cuatro anchos y una imagen para compartir, y se sirven tal cual: el servidor ya no redimensiona nada y la caché de borde las conserva. El vídeo de la página de inicio se aloja donde el operador lo declara y lo describe un manifiesto leído bajo demanda; sin él, la sección no existe. En bucle, arranca cuando es visible, con sonido donde el navegador lo permite y en silencio en otros casos hasta un clic, y mientras suena, el título de la página y los de las secciones laten con la música gracias a un mapa de pulsos calculado de antemano.
Los controles de cada cambio leían una sola base de avisos de seguridad: la revisión de septiembre de 2026 encontró veinte avisos publicados por los propios repositorios de las dependencias que ninguna herramienta veía. Una vigilancia semanal lee ahora esos avisos, los fines de soporte, los registros y el motor del navegador, y cada hallazgo se corrige o se acepta por escrito, con una fecha de revisión. Las versiones de Python avanzan con un solo comando, tras un periodo de espera, sin retroceder nunca. El paso desde una generación sin mantenimiento puede validarse mediante un adaptador oficial, sin cambiar las reglas ni los umbrales; los metadatos de compatibilidad por sí solos no bastan.
Registros, trazas y métricas se responden, y la cadena de observación se vigila a sí misma
Una línea de registro abre la traza de su petición, una traza abre sus registros y métricas, un punto de latencia abre el ejemplo que lo produjo: enlaces medidos como rotos en producción ahora funcionan. La cadena que transporta estas señales se vigila a su vez, con una alerta cuando se pierden registros, y todos los paneles siguen una misma convención: una semana de historial y un menú común.
Tarjetas que muestran todo lo recibido, y acciones ligadas al mensaje que las muestra
Las respuestas que contienen datos — correos, citas, contactos, lugares, rutas, tiempo — se muestran como tarjetas que enseñan todo lo que la fuente proporcionó, sin inventar nunca un valor ausente, y conservan el detalle completo tras un desplegable. El modelo nunca relee la tarjeta, solo los hechos autorizados, así que la conversación no se vuelve más pesada. Responder a un correo o ajustar un recordatorio desde una tarjeta prepara una petición ligada al mensaje de origen y verificada de nuevo al hacer clic, y una ruta puede abrirse como mapa interactivo cuyo coste se anuncia y luego se contabiliza.
Un avatar parlante personal con una sola salida audible — diseño propuesto
Un rostro Simli opcional acompaña la voz existente con una clave personal y una sola salida audible. La API controla la conexión y su parada; la ventana muestra el cierre confirmado o pendiente porque el silencio puede consumir el plan. La decisión sigue propuesta hasta validar el proveedor y los dispositivos reales; Radio conserva su reproductor.
Pruebas semánticas canónicas y dependencias que pueden empezar
Relacionar dos valores exige una observación de la fuente y la cuenta correctas, con el papel esperado; las palabras idénticas no bastan. El catálogo conserva las lecturas necesarias para iniciar una cadena e indica las dependencias sin fuente. Un intento de modificación invalida las pruebas anteriores antes y después de la llamada.
Los resultados solicitados se comprueban con lo que las herramientas realmente obtuvieron
Las peticiones explícitas se anclan en las palabras de la persona y se contrastan con observaciones: valor, fecha, cantidad, operación e integridad. El día y la zona horaria siguen siendo los del inicio del turno, incluso al reanudarlo. Un borrador queda pendiente y una delegación opaca, desconocida; las carencias verificadas llegan a la recuperación de lectura limitada y a la respuesta.
Lecturas ReAct guardadas antes de una interrupción y reutilizadas en el mismo turno
Las lecturas independientes declaradas pueden avanzar juntas con un límite; sus resultados se guardan antes de una posible confirmación. Una lectura reciente y completa puede volver a servir en el mismo turno y contexto. Los cambios invalidan su reutilización. Una parada abrupta antes de guardar aún puede repetir lecturas; las observaciones no se comparten entre turnos.
Los contratos MCP actuales describen capacidades e identidad exacta del servidor
Las herramientas MCP de cada persona se descubren a partir de sus declaraciones actuales; solo se anuncian las construidas correctamente. El servidor conserva su identidad exacta, separada de los nombres simplificados de enrutamiento y llamada. Una tarea ligada a un servidor comprueba su destino antes de confirmar. Las descripciones antiguas reciben las capacidades actuales sin afirmar conocer toda la ontología del servidor.
Órdenes de aplicación con permisos actuales y continuaciones privadas
LIA gestiona ajustes y objetos mediante operaciones declaradas. Las órdenes duraderas cifradas vinculan contenido aprobado, actor, origen y caducidad; permisos, capacidades y condiciones se consultan de nuevo al ejecutar. Los servicios de origen conservan sus controles compare-and-set y los claims quedan protegidos por token. Archivos, OAuth, entrada privada y acciones de dispositivo continúan en el navegador autenticado. Esperar no es un éxito completado; un resultado perdido sigue siendo incierto, sin prometer ejecución externa exactamente una vez.
El dibujo frontal texturiza un relieve acotado cuyo contorno y franja proceden del alfa original. La anatomía oculta sigue siendo aproximada; ojos, cejas y boca son capas proyectadas en DOM/SVG, y la bufanda se compone deliberadamente delante. Cuerpo, rostro y accesorios comparten el rig existente. Visibilidad, movimiento reducido, disponibilidad y contexto gráfico gobiernan recursos y retorno al dibujo fijo. Las pruebas de geometría y ciclo de vida no certifican toda oclusión ni el rendimiento en dispositivos reales.
Producción motion editable y presentación exclusiva
Un proyecto Remotion offline conserva capítulos, vistas HTML/CSS, poses y acentos musicales para evolucionar conjuntamente el film y los enfoques de funciones. Las pantallas reconstruidas citan fuentes nativas y usan datos ficticios; la geometría permanece fija fuera de enfoques explícitos, con BIP acompañando la presentación. El manifiesto puede declarar un film completo distinto de la lista: su diálogo a pantalla completa suspende el reproductor de fondo. El film está en francés y sus controles se traducen; renders, archivos entregados, procedencia musical y aceptación del medio se verifican por separado.
Una campaña de avatar en tiempo de ejecución, activada por el operador
Una opción de servidor, vacía por defecto, presenta BIP en la siguiente visita autenticada por origen y navegador. Un identificador explícito cambia solo estilo y marcador; conserva visibilidad, tamaño, posiciones y elecciones manuales posteriores. No se añade una columna de avatar a la cuenta. Web Locks coordina pestañas cuando está disponible; sin él, releer el registro más reciente no garantiza una transacción simultánea. Desactivar la campaña detiene nuevas aplicaciones sin restaurar elecciones anteriores, y no alcanza dispositivos desconectados.
El retrato lee todo el material, y su resumen es una síntesis
Nueve registros sobre la persona — recuerdos, intereses, hábitos, resúmenes de relación, hilos abiertos, Workboard, rutinas, recordatorios, respuestas guardadas — se leen enteros, cada elemento citable, bajo una sola parte de la ventana del modelo, y todo recorte se declara. El retrato vuelve a ser un análisis de la persona en siete facetas, nunca un inventario, y el resumen se escribe como frases propias; la revisión semántica, medida rechazando lecturas fundadas, se retira: lo que impide la invención es estructural, cada lectura cita lo que la funda. Los presupuestos son objetivos declarados, nunca un recorte. Un cambio del diario marca el retrato como desactualizado, servido con fecha, en lugar de borrarlo; una entrada eliminada se lleva las lecturas que fundaba. Medido en dev antes de entregar.
LIA guarda, modifica y mueve a la papelera los borradores de Gmail, Outlook e iCloud sin preguntar: un borrador se queda en el buzón de la persona y no llega a nadie, y la papelera se puede deshacer. Solo el envío pide una confirmación, en una tarjeta que muestra el borrador tal como lo tiene el buzón; un borrador modificado en el buzón mientras tanto no se envía, y un cambio pedido en la tarjeta se escribe antes de salir. De paso, la tarjeta de respuesta muestra por fin a todos aquellos a quienes llega la respuesta, y es a ellos a quienes envía.
Fish Audio se suma a las voces de LIA, y cada motor solo factura lo que dice
Fish Audio habla (cinco modelos, entre ellos s2.1-pro y drama-3), transcribe reuniones y dictados, y sus voces se clonan o se diseñan desde la administración, bajo una declaración de consentimiento archivada en el registro de auditoría. Cada frase escuchada pasa por una sola puerta que la factura una vez, en la unidad del motor que realmente la dijo; cada cuenta de proveedor tiene una única reserva de solicitudes, compartida por todas las funciones de voz; y el dictado remoto va al motor que eligió el administrador, que los ajustes nombran. LIA desliza indicaciones de interpretación (una risa, un susurro, un suspiro) en lo que escribe para ser dicho, en la sintaxis de cada motor que las interpreta, y las voces de la radio dialogan en una sola toma.
El replanificador consultivo se retira: un fallo se dice, nunca se repite
Medido en producción, el analizador que seguía a cada plan fallido calificaba de pasajeros fallos que no lo eran, y el bucle de recuperación que esperaba habría repetido lo irreparable. Desaparece: un fallo se dice en la respuesta, una caída pasajera la reintenta el cliente que la sufrió, y un contador tipado muestra cada paso fallido, incluso uno ocurrido antes de llamar a una herramienta.
Lo que encuentra una herramienta de lectura llega a la respuesta, y un rechazo nunca es un éxito
En modo pipeline, la respuesta se escribía a partir de una frase sobre los datos de una herramienta — «2 destinos» — mientras los tiempos de trayecto, las conexiones o la página siguiente quedaban a un lado: sin ellos, 0 respuestas de 9 daban los tiempos, 27 de 27 con ellos. Ahora llegan como en el modo autónomo, acotados y marcados como contenido de terceros. Y el rechazo de una herramienta ya no puede convertirse en éxito por el camino: los comandos Hue decían haber encendido una lámpara que no existía.
La experiencia de LIA se aprende de pruebas, nunca de su propia nota
La antigua autoeficacia solo se movía con la autoevaluación de LIA, un solo intercambio bastaba para crear una fortaleza o una debilidad, y solo la respuesta final la leía. Siete dominios guardan ahora dos ejes separados: lo que un turno logró de forma verificable y la utilidad que la persona expresó con 👍/👎. A partir de cinco observaciones, LIA puede verificar un punto, hacer una pregunta o nombrar un límite, sin cambiar ningún modelo, herramienta ni presupuesto.
Una conexión aceptada recibe una copia propia desactivada de una skill, servidor MCP o plugin, con su origen. El paquete revisado es inmutable, los reintentos preservan los cambios del destinatario y las credenciales siguen privadas. Una skill compartida activada sigue explícitamente la política de las skills creadas por el destinatario.
La interfaz y LIA comparten las mismas evaluaciones orientativas
Decisiones nativas opcionales anotan una sola vez las evidencias autorizadas de correos y citas. La duda no muestra etiqueta, siguen aplicándose costes y cuotas, y ni categoría ni confianza autorizan acciones. Corpus fijos y nuevos casos adversariales vinculan la política entregada con pruebas medidas.
Posición agrupa los Google Places seleccionados antes de sus tarjetas, también en HTML y Markdown. El mapa interactivo espera un clic con coste visible; la lista de fuentes sigue accesible si Maps falla.
La API detecta recorridos de rutas desconocidas y credenciales rechazadas sin penalizar los errores normales de sesión o de recursos. Redis comparte un bloqueo temporal entre los procesos; si falla la caché, las solicitudes pasan y la degradación sigue visible en las métricas.
Atribuir cada respuesta HTTP 429 a la dirección correcta
Cada respuesta 429 registra la dirección del cliente resuelta mediante la cadena de proxies de confianza, el método y la ruta sin parámetros de consulta. Los registros de acceso ordinarios siguen siendo discretos y la dirección nunca se convierte en una etiqueta de métrica.
Detalles ya obtenidos y una ruta contabilizada al lugar elegido
La ficha reutiliza la información ya obtenida sin volver a buscar el lugar. La ruta parte de una posición autorizada del navegador, de la última posición reciente y fechada, o del domicilio: a pie hasta 2 km incluidos, en coche por encima, con un único recálculo si la ruta real a pie supera el límite. Los límites de gasto siguen vigentes y cada llamada de pago queda registrada, aunque la ruta falle o se cancele.
Un mapa legible con los mismos números en la lista y los marcadores
El mapa espera una activación explícita sin reservar un gran espacio vacío. Los mismos detalles se abren en una ventana emergente en ordenador y en un diálogo en teléfono, cada uno con una sola zona de desplazamiento. La lista y los marcadores comparten los números del orden original; un lugar sin coordenadas conserva su número y su enlace sin desplazar a los demás. Si el contenido no cambia, un mapa activado permanece activo durante las actualizaciones automáticas de la presentación.
El teléfono envía eventos estrictos deduplicados por origen. Consentimientos independientes, exportación, borrado, registros y notificaciones respetan la misma autorización.
Conversaciones proactivas independientes y difusión nativa
La iniciativa personal se separa de las alertas, con política propia y publicación atómica en el chat. La arquitectura está aprobada; falta implementar el productor antes de activarlo.
Las observaciones sustentan episodios y patrones recurrentes, con retrato autónomo, purga y exclusiones reversibles persistentes. Las directrices limitan la iniciativa; falta implementar la base derivada.
Las lecturas y llamadas a modelos comparten límites finitos y presupuesto reservado. Los gastos se contabilizan incluso al rechazar o cancelar; faltan las protecciones financieras antes de activar la función.
Una sonda de salida que nombra el paso fallido y confirma el corte
La sonda de conectividad saliente separa la resolución DNS de la conexión y confirma una pérdida en varios intentos espaciados. Un paquete DNS perdido ya no abre un incidente crítico: una recuperación o una lentitud se señala como degradada, y un corte real nombra el paso que falló.
La caché de Claude releída de un turno al siguiente
El turno siguiente relee ahora todo el historial desde la caché en lugar de volver a escribirlo, y lo que releerá se conserva una hora cuando una persona espera e intercambia a menudo. Esas escrituras de una hora se facturan a su precio justo, y el razonamiento de un turno anterior vuelve al modelo Claude que lo escribió, allí donde ese modelo puede releerlo.
Un restablecimiento de contraseña limitado por cuenta y ligado a ella
Cada cuenta recibe ahora como mucho unos pocos correos de restablecimiento, sea cual sea la dirección que los pida, y un enlace solo sirve a la cuenta y a la contraseña para las que se emitió. Una cuenta que inicia sesión con Google recibe un aviso en lugar de un enlace, un administrador no recibe nada, y una oleada de solicitudes o de registros alerta al operador.
El navegador dibuja el mundo mientras Redis arbitra el acceso y los movimientos; las acciones conservan sus interfaces y aprobaciones nativas. El nombre de cuenta y la apariencia se comparten con consentimiento, las actividades y el hogar siguen siendo privados, y los contactos solo ven un estado de conexión general. Los mensajes quedan entre sus destinatarios y las traducciones consentidas se limitan y contabilizan.
Una verificación anti-robot en las puertas de la contraseña
El registro, el inicio de sesión con contraseña y las solicitudes de restablecimiento exigen ahora el token de una verificación Cloudflare Turnstile, que el servidor hace validar: un script que llama a la API sin navegador es rechazado. La mayoría de los visitantes no ve nada y, si Cloudflare no responde, solo pasa el inicio de sesión: una cuenta nueva o un correo de restablecimiento esperan.
El catálogo de un servidor MCP personal, servido sin esperar
Lo que ofrece un servidor MCP personal se guarda en la cuenta y se vuelve a servir de un mensaje a otro, en cualquier proceso, mientras uno solo lo revisa en segundo plano. Los servidores se preparan en paralelo; uno demasiado lento queda fuera de ese mensaje, nombrado en un aviso, y listo para el siguiente. Cuando la copia guardada ha dejado de estar fresca, LIA comprueba antes de la llamada que la herramienta se sigue ofreciendo de la misma forma y, si no, se niega a enviarla.
«El correo de Marc»: designado por lo que es, preguntado cuando varios encajan
Cuando la persona designa un elemento que acaba de ver por lo que es —su remitente, una palabra del asunto—, el análisis de la petición solo dice cómo se designa; es el código el que encuentra, entre los elementos realmente mostrados, los que esas palabras designan. Uno: LIA actúa y lo nombra en el registro de acciones. Varios: LIA pregunta cuál, con una pregunta que ningún modelo escribe, y nunca adivina; ninguno: una nueva búsqueda.
La persona decide cuándo LIA pregunta antes de una herramienta MCP
La persona elige cuándo LIA le pide su aprobación antes de una herramienta MCP: para toda su cuenta, para cada servidor, para cada herramienta — «no preguntar nunca» sigue ligado a lo que la herramienta declara. Antes de cualquier cambio que haría que LIA preguntara menos, la página enumera lo que LIA dejaría de preguntar; nada queda bloqueado. A un agente dedicado se le pregunta una vez antes de cada tarea en cuanto una de sus herramientas lo pediría, y la tarea se ejecuta hasta el final; desde la conversación, LIA solo puede preguntar más.
La persona actúa ella misma sobre sus servicios, sin modelo
La sección «Herramientas» abre el correo, la agenda, las tareas, los contactos, los archivos, en Google Drive u OneDrive, y las luces de la persona para que los consulte y actúe a mano: ningún modelo, ningún token, la velocidad del proveedor. La pantalla solo ofrece lo que el proveedor acepta, y lo que un cliente gana para ella lo ganan a la vez las herramientas de la asistente; nada de lo que la persona hace a mano llega a un registro, porque no es un acto de LIA.
Una página escrita por el modelo funciona en el chat, en el marco más estricto
Pedir un juego o una pequeña herramienta da una página que funciona en la conversación, con su archivo; pedir el código da el código, y lo que una persona escribe sigue siendo texto. La página se ejecuta aislada, sin acceso a la cuenta ni a ningún sitio de su elección, bajo una política que no nombra ningún host, salvo las fuentes de mapas que el operador permite. Releída desde el historial espera un clic, porque un bucle sin fin congelaría la pestaña, y el modelo solo lee su título.
Los puestos de los agentes de dominio se van con sus nodos
La administración ofrecía ajustar dieciséis agentes a los que ya no llamaba ningún turno: un plan ejecuta las herramientas directamente, y la producción no contó ni un token en ellos. Sus puestos, nodos y prompts se han retirado; el puesto Emails se queda, porque redacta los mensajes. Una instalación nueva arranca ahora con modelos que tienen tarifa.
Desde las Herramientas: un clic, una llamada, una propuesta
Resumir un mensaje, proponer una respuesta, leer una tarjeta de visita: un clic pide una sola cosa a LIA y recibe una propuesta que la persona lee, nunca una escritura en su proveedor. El acto se registra y se factura a quien hizo clic, y nada añade un control a una pantalla sin espacio: el último icono de cada barra abre la lista.
Una sesión de voz de ElevenLabs configurada con una personalidad cínica hablaba como un asistente alegre: las etiquetas de expresión del portal imponían entusiasmo y los marcos de LIA pedían calidez. Ahora cada voz de la persona — Live, Live directo, el teléfono y el comentario hablado del chat — habla con la personalidad elegida, el fondo primero, los hechos intactos; LIA misma escribe en el agente la paleta de etiquetas, el saludo y sus herramientas. Una llamada a un tercero sigue siendo cordial.
JEV conserva lo que alguien lee, y sus umbrales pasan a ser ajustes
Se retiran las vistas previas de resultados que ninguna pantalla mostraba ya y la puerta JEV de la iniciativa, que no distinguía nada, y el evaluador de iniciativa sigue viendo cada turno con herramientas. Cada umbral de JEV se convierte en un ajuste acotado que la pantalla de administración puede cambiar, y cada juicio pagado se cuenta en el tiempo, para que un umbral se decida según lo que ocurre de verdad y no según un corpus.
Lo que LIA aprende del uso se convierte en propuestas
Una hora ya no condiciona una petición recurrente: una necesidad se reconoce por los días en que vuelve, y la hora solo sirve para rellenar de antemano. Seis tipos de propuestas nacen de lo que LIA ya registra — automatizar una necesidad, mover una rutina relanzada a mano, ampliar las horas de notificación, conectar una fuente… — y un clic las acepta y las ejecuta. El chat muestra como mucho una bajo una respuesta, elegida por el código.
Una tarjeta abre su ficha en las Herramientas, con una prueba firmada de su fuente
Un correo, un evento, un contacto, una tarea, un archivo o una luz mostrados en el chat se abren en las Herramientas. La tarjeta lleva un destino firmado, ligado a la cuenta y a la fuente que respondió; al hacer clic, el servidor vuelve a comprobar esa fuente y se niega, diciendo por qué, si la cuenta cambió, en lugar de abrir otra ficha que comparta el identificador.
Todos los iconos pasan por una sola puerta que dibuja el estilo elegido por la cuenta, Lucide, Fluent Color o Streamline Flex, sin cambiar el sentido de ningún símbolo, y el alto contraste del sistema conserva sus colores. El tema también puede pasar solo del claro al negro absoluto a las horas elegidas, con el reloj de la cuenta, sin que un temporizador escriba nunca el perfil.
Principal es permanente y cada conversación tiene su propio contexto de ejecución
Un botón abre Principal y las conversaciones con título, cada una con su historial y su indicador. Los mensajes automáticos llegan a Principal. Las preferencias y el aprendizaje se comparten en la cuenta. Restablecer o eliminar retira la generación elegida y deja un registro para seguir su limpieza.
Leído por separado, un mensaje no puede decir si recibió respuesta: esta es otro mensaje de la misma conversación. LIA lee ahora esa conversación cada vez que lista correo y dice en todas partes el mismo hecho: ya respondido, respuesta que quedó en borrador, respuesta recibida. Así ya no propone responder a un correo que la persona ya respondió, ni en el chat ni en las notificaciones, la página de inicio, las relaciones o las Herramientas.
«Las nueve y media» solo designa un instante preciso junto con el huso en el que lo dices, y cada hora que LIA perdió se perdió cuando uno viajó sin el otro: una cita movida a las 9:30 aparecía a las 10:30. La hora y su huso forman ahora un único objeto, que LIA entrega tal cual a Google, Microsoft e iCloud sin convertir nada por el camino, con una sola regla para las dos noches del cambio de hora. Y cada trayecto de una hora, de la pantalla a la agenda y de la agenda a la pantalla, se repite en agendas simuladas según su documentación, en husos alejados de la hora universal.
Un modelo conocía la hora presente, nunca la de los mensajes anteriores: retomada días después, una conversación se leía como si todo se acabara de decir, y «el dentista mañana», escrito un martes, seguía pendiente el viernes. Cada uno de tus mensajes lleva ahora el momento en que lo escribiste, en tu huso horario, y todo modelo que vuelve a leer la conversación lo lee: la respuesta, el bucle ReAct, el análisis de tu petición, el resumen de compactación, la llamada telefónica, y lo que LIA retiene de ti (recuerdos, intereses, compromisos, diario), cuyos plazos se leen ahora en tu huso horario. Medido en tres familias de modelos antes de escribir el código, las preguntas que dependen de ello pasaron de unas 3 respuestas correctas de 21 a 14, 16 y 20 de 21.
La instancia busca en la web para quien no tiene clave
Sin clave de búsqueda propia, solo se buscaba en Wikipedia. LIA ejecuta ahora a su lado SearXNG, un metabuscador sin clave, activado por defecto (el operador puede rechazarlo): la búsqueda del chat, el enriquecimiento de las respuestas, la vigilancia de tus intereses y las Herramientas encuentran allí sus enlaces web, sin filtrar como con Brave, y tu propia clave de Brave sigue teniendo prioridad. Medido antes de escribir el código: 58 búsquedas útiles de 60 en los seis idiomas, en 0,7 segundos de media. Y una fuente de la vigilancia que no consultaría nada ya no se cuenta como consultada.
Dos personas que respondían al mismo correo recibían la misma respuesta de LIA. La primera vez que LIA escribe un correo por ti, ahora aprende cómo escribes a partir de tus últimos correos enviados — saludo, despedida, firma, tono, nunca de qué escribías — y lo sigue en cada respuesta y cada mensaje nuevo, incluida la respuesta que confirmas, que LIA redacta ahora ella misma cuando no dictaste sus palabras. En los ajustes puedes leerlo, desactivarlo o hacer que lo olvide. Medido con personas ficticias antes de escribir el código: las respuestas pasaron de unas 42 a 63 marcas del estilo de su autor sobre 66, sin copiar ni un solo dato de correos anteriores.
Un mensaje escrito mientras LIA trabaja espera su turno
Un mensaje enviado mientras LIA respondía —o mientras una rutina se ejecutaba en tu cuenta— se rechazaba y se perdía. Ahora el servidor lo guarda con su conversación, debajo de ella, donde puedes editarlo o retirarlo; lo que escribas después se le añade. Sale solo, como tu mensaje, en cuanto LIA termina con normalidad; si la respuesta se detuvo o falló, espera tu decisión. Nunca se toma como la respuesta a una pregunta de LIA, y «Enviar ahora» detiene la respuesta en curso y luego lo envía. Cada ejecución dice ahora cómo terminó, y ese final, escrito cuando la cuenta queda libre, es el que decide.
Lo que escribes mientras LIA trabaja suele ser una precisión de tu petición (« solo los que abren el domingo »), y enviarlo después de la respuesta obligaba a rehacer el trabajo. En modo ReAct, tu mensaje en espera puede ahora sumarse a la respuesta en curso: LIA lo lee en su próximo paso, como tus propias palabras, y lo tiene en cuenta a partir de ahí, sin reescribir nada de lo anterior. Mientras no lo haya leído, puedes editarlo o retirarlo; si termina antes, se envía justo después, como siempre. Tu nota queda en la conversación, en su sitio, y la petición que conservan la respuesta, la memoria y los turnos siguientes la incluye.
Una rutina puede ejecutarse ahora cuando otro sistema la llama: una centralita domótica, una forja de código, un servicio de formularios. LIA da a la rutina su propia dirección y un secreto, que se muestra una sola vez; el otro sistema firma cada llamada con él, y LIA atiende la llamada en menos de un minuto, leyendo lo que envió como datos, nunca como instrucciones. Una llamada sin firma válida se rechaza, una ráfaga queda acotada, un envío repetido cuenta una vez, y un secreto perdido se sustituye por uno nuevo que anula de inmediato el anterior. Un administrador puede desactivar la capacidad; el demostrador la mantiene desactivada.
Una rutina puede ahora esperar a que una página web cambie: un precio, un «en stock» que vuelve, un anuncio añadido. LIA lee ella misma la página pública, sin modelo, y solo ejecuta la rutina por las líneas que aparecen en ella, leídas como datos, nunca como instrucciones. Una línea que desaparece y vuelve se anuncia de nuevo.
Los documentos usan lo que sus formatos saben hacer
Un documento que LIA genera usa ahora los mecanismos de su formato: una hoja de cálculo calcula con fórmulas reales, un gráfico se edita en Excel o PowerPoint, una presentación que vas a proyectar se anima con sobriedad, un informe se abre con una portada, sus cifras clave, sus figuras y sus fuentes en las que se puede hacer clic. El modelo dice lo que son las cosas y el motor las dibuja, en una paleta de contraste verificado que sigue el tono del documento. Las ilustraciones son imágenes generadas: solo llegan si las autorizas en Ajustes › Documentos, dentro de un presupuesto, y cada una se cuenta en tus costes.