El motor que da a nuestros agentes el repositorio entero
Este lo construimos para nosotros. Un agente al que se le pedía revisar o reescribir código veía el archivo abierto y poco más, así que recorría el proyecto leyendo a base de suposiciones. El motor convierte el código base en árboles de sintaxis y un grafo de uso, ordena lo que importa alrededor de un cambio y responde consultas que combinan la coincidencia exacta con el significado. Hoy cada revisión y cada refactorización que hacemos empieza por la forma del repositorio entero y no por el archivo abierto.
- SectorHerramientas para desarrollo
- Tipo de trabajoMotor interno, construido para nuestros propios agentes
- EstadoEn uso en nuestro propio trabajo, y sigue creciendo
Primero para nuestros propios agentes
No es un proyecto de cliente. Es la pieza de nuestra propia cadena de herramientas que decide qué llega a ver un agente antes de tocar nada. Indexa un proyecto una vez, mantiene ese índice al día a medida que se guardan archivos y responde preguntas estructurales sobre el código: qué está definido dónde, qué lo usa, qué trae un archivo y quién trae ese archivo.
Lo que dio forma a todo fue el presupuesto de razonamiento. Una respuesta técnicamente completa pero demasiado grande para leerse vale menos que una más pequeña que cabe, así que cada respuesta se recorta a un presupuesto fijo sin dejar de ser una salida estructurada válida, y los archivos vuelven como firmas en lugar de cuerpos enteros. La idea es gastar el presupuesto en el trabajo y no en leer.
El problema era nuestro
Ningún cliente lo pidió. Salió de mirar cómo nuestros propios agentes trabajaban sobre códigos base grandes con una imagen equivocada de ellos.
Un archivo abierto no es un código base
Un agente al que se le pedía cambiar una función veía la función y el archivo a su alrededor. Qué la llamaba, qué llamaba ella a su vez y qué partes del proyecto notarían el cambio quedaban fuera del encuadre. El cambio se pensaba en aislamiento y se revisaba igual.
Leer un proyecto entero para encontrar una sola cosa
Sin un mapa, encontrar el sitio correcto significa abrir archivos y descartarlos. Cada archivo descartado ya se pagó del mismo presupuesto que necesita el trabajo real, y en un repositorio grande ese coste llega antes de que empiece ningún pensamiento útil.
Un solo tipo de búsqueda nunca bastó
La búsqueda exacta por nombre se pierde el código que hace lo mismo con otro nombre. La búsqueda por significado se pierde el identificador exacto que alguien acaba de escribir. Elegir una de las dos dejaba la herramienta equivocada de una forma distinta cada vez.
Lo que construimos
Un índice que entiende la estructura, una capa de búsqueda que mezcla tres maneras de mirar y límites firmes sobre lo que puede costar cualquier respuesta.
Un mapa estructural en lugar de un montón de archivos
El motor convierte el código fuente en árboles de sintaxis y extrae lo que de verdad se declara en cada archivo, de modo que un proyecto se puede describir por su forma y no por su texto.
- Funciones, clases, métodos, interfaces, tipos, enumeraciones, estructuras, rasgos e implementaciones se extraen en diez lenguajes
- Un archivo puede volver solo con sus firmas, sin cuerpos, de forma que un agente ve la forma de un archivo que no ha leído
- El mapa del proyecto lleva el lenguaje, el número de líneas y el número de símbolos de cada archivo, y se repliega al nivel superior cuando el árbol es demasiado grande para servir de algo
Tres maneras de mirar, fundidas en un solo orden
La búsqueda por palabra clave, la coincidencia literal de nombre y la similitud semántica responden cada una a un tipo distinto de pregunta, así que el motor ejecuta las tres sobre un mismo índice y las funde en vez de elegir.
- Búsqueda de texto completo, coincidencia de nombre por subcadena y similitud vectorial se ejecutan juntas en cada consulta
- Los tres órdenes se combinan por fusión recíproca de rangos, que no necesita pesos ajustados a mano porque compara posiciones y no puntuaciones que no se pueden comparar
- Cuánto se referencia un símbolo en todo el proyecto empuja el orden con suavidad, de modo que el código que sostiene el sistema aparece por delante del que no llama nadie
Qué depende de esto, no solo dónde vive
Junto a las definiciones, el motor registra dónde se usan los nombres, tanto llamadas como referencias de tipo, y qué archivos importan a cuáles. Eso convierte una consulta en una pregunta sobre consecuencias.
- Un grafo de uso responde qué depende de esto además de dónde está definido esto
- Las importaciones van en los dos sentidos: qué trae un archivo y, de forma aproximada, qué archivos del proyecto lo traen a él
- Junto al mapa hay una ventana de historia reciente, así lo que cambió últimamente forma parte de la respuesta y no de otra consulta
Respuestas acotadas, en la máquina donde ya está el código
Dos reglas dieron forma al lado de la entrega. Una respuesta tiene que caber en el espacio que quien pregunta tiene para ella, y ningún código debería salir de la máquina para poder entenderse.
- Cada respuesta se recorta a un presupuesto fijo sin dejar de ser una salida estructurada válida, de modo que una consulta amplia no puede inundar el contexto de quien la hizo
- Todo el índice es un único archivo de base de datos en la máquina de quien programa, con la búsqueda vectorial dentro del mismo proceso, y ningún código se sube a ninguna parte
- Un guardado lo recoge un vigilante de archivos y se reindexa en menos de medio segundo, mientras que un archivo cuyo contenido no cambió se reconoce por su huella y se salta
Qué cambió en nuestro trabajo
Es una herramienta interna, así que lo honesto es contar qué cambió en nuestra forma de trabajar. No hay ninguna medición detrás y no publicamos ninguna.
Repositorio entero
Por dónde empieza una revisión
Una revisión o una refactorización empieza por la forma del proyecto: qué toca el cambio, qué lo usa y quién lo trae. El archivo abierto dejó de ser el límite de lo que se puede razonar.
Presupuesto al trabajo
Adónde va el razonamiento
Firmas en lugar de cuerpos, y respuestas recortadas para que quepan, significan que se gasta menos contexto abriendo archivos que al final no importaban. La ganancia está en lo que nunca hace falta leer.
Se queda en la máquina
Por qué podemos apuntarlo a código de cliente
Un archivo de índice en la máquina de quien programa, con la búsqueda dentro del mismo proceso. Los archivos de credenciales, las claves privadas y el material de certificados quedan fuera del indexado, y el índice solo lo puede leer su propietario.
¿Sus herramientas ven su código base o solo el archivo abierto?
Cuéntenos cómo trabaja hoy su equipo con un repositorio grande y dónde se queda sin contexto. Nosotros le diremos qué merece la pena construir y qué no.
Hablemos de su proyecto