Series de NES (Parte 2): Gestión de contexto en tiempo real en tu editor de código
En la Parte 2 de la serie NES explicamos cómo gestionar en tiempo real el contexto que necesita el modelo para sentir la intención del desarrollador dentro del editor. Más allá de entrenar un buen modelo, la experiencia final exige suministrar al motor el contexto correcto en el momento preciso. Pochi es el sistema que administra, filtra, clasifica y transmite en streaming el contexto de edición para que NES entienda la intención y prediga el próximo cambio significativo.
Por qué importa la gestión de contexto. Cuando un usuario empieza a teclear existe un periodo intermedio entre la acción y la petición bien formada al modelo. Durante ese lapso el sistema recoge y prepara todo el contexto relevante que el LLM necesita. Enviar el fichero completo en cada pulsación haría el sistema lento, ruidoso e inestable, con decenas de llamadas por segundo. En su lugar NES recibe tres tipos de contexto diseñados para ser compactos y precisos: <|editable_region|>, <|edit_history|> y <|additional_context|>.
1. Contexto de archivo y región editable. La primera pregunta es dónde está editando el usuario justo ahora. Para responderla extraemos tres datos desde la API de VS Code: el texto del archivo, la ruta del archivo y la posición del cursor. Con ello calculamos la región editable, una ventana estrecha de código alrededor del cursor de aproximadamente 10 líneas. Ese tamaño mantiene la latencia muy baja, captura la estructura inmediata y evita que el modelo reescriba zonas del archivo que el usuario no está tocando.
2. Historial de ediciones: seguir la intención a lo largo del tiempo. Además de saber dónde se escribe, hay que entender cómo cambia el código. Los eventos nativos de cambio de texto disparan una señal por casi cada pulsación, lo que produciría muchas llamadas irrelevantes. En su lugar reconstruimos pasos de edición reales mediante una agrupación interna. Agrupamos eventos en unidades de escala undo-redo, acumulando varios cambios en un mismo paso. Hemos establecido que 5 pasos es el punto óptimo para construir el prompt: más añade ruido, menos pierde intención. Para cada cambio verificamos si está adyacente al anterior; si lo está se incorpora al mismo paso, si no se crea un nuevo paso. Esos pasos se empaquetan dentro del token <|edit_history|> para que NES aprenda cómo evoluciona el código.
Caso especial: ruido por operaciones git. Operaciones como git checkout, pull o stash generan grandes cambios de fichero que no representan una intención del usuario y podrían contaminar el historial. Para evitarlo monitorizamos el estado git, reiniciamos el historial de ediciones cuando detectamos cambios de rama o sincronizaciones y reanudamos el seguimiento tras unos segundos, descartando los pasos masivos que provienen del control de versiones.
3. Contexto adicional: traer el resto del proyecto. El código no vive aislado. Si el usuario edita una llamada a función o un tipo, el modelo puede necesitar la definición correspondiente. Para incorporar contexto de proyecto usamos capacidades del Language Server. Con vscode.provideDocumentRangeSemanticTokens detectamos tokens relevantes en la región editable como funciones, interfaces o tipos. Luego ejecutamos vscode.executeDefinitionProvider para localizar la definición en otros archivos, similar a usar Ctrl o Cmd y hacer clic en una función. Extraemos el fragmento de definición y lo incluimos dentro del token <|additional_context|> para dar al modelo la misma referencia que un desarrollador consultaría mentalmente.
Limitaciones y límites. Algunas definiciones pueden ser enormes. Para evitar sobrecargar el prompt hemos limitado la extracción semántica a un tamaño máximo por fragmento, actualmente 2000 caracteres. Cuando el lenguaje no tiene buen soporte LSP, por ejemplo texto plano, no añadimos fragmentos relacionados y el prompt queda con prefijo, sufijo y registros de edición.
Ensamblado final. Cada petición a NES contiene ordenadamente <|editable_region|>, <|edit_history|> y <|additional_context|> tal como fue entrenado el modelo. Esa simetría entre entrenamiento y tiempo de ejecución hace a NES mucho más fiable que los enfoques tipo autocompletar nativo, y reduce al mínimo las alucinaciones y reescrituras fuera de foco.
Qué sigue. En la siguiente entrega hablaremos de Request Management, el sistema que evita que el modelo se equivoque sobre el contexto activo del usuario. La experiencia de codificar implica muchas pulsaciones cortas, movimientos del cursor y ediciones continuas mientras hay respuestas en vuelo. Por eso es esencial cancelar predicciones obsoletas: todo lo que no represente la última intención se descarta inmediatamente para mantener la experiencia rápida y precisa. Más sobre esto en la Parte 3.
Sobre Q2BSTUDIO. En Q2BSTUDIO somos una empresa de desarrollo de software que crea soluciones y aplicaciones a medida y software a medida para clientes de múltiples sectores. Contamos con especialización en inteligencia artificial y ofrecemos servicios de IA para empresas, agentes IA y automatizaciones que potencian flujos de trabajo. También proporcionamos servicios cloud aws y azure y capacidades de ciberseguridad y pentesting para proteger sus aplicaciones. Si necesita impulsar la toma de decisiones tenemos experiencia en servicios inteligencia de negocio y inteligencia artificial aplicada, incluyendo integraciones con power bi y soluciones analíticas avanzadas.
Palabras clave relacionadas con nuestros servicios: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Si desea que le ayudemos a diseñar una solución que integre modelos de edición asistida por IA como NES con su cadena de herramientas de desarrollo, seguridad y despliegue en la nube, en Q2BSTUDIO podemos acompañarle desde la asesoría hasta la entrega e integración completa.
Comentarios