Releer y revisar código con un LLM local (revisión antes de commit)
La revisión de código con un LLM local te proporciona un primer revisor automático —errores, casos límite, vulnerabilidades evidentes— sin enviar nunca tu código propietario a la nube. Esta guía muestra cómo conectar un modelo Ollama a tu diff de Git, configurar un hook pre-commit que comente tus cambios antes de cada commit y, sobre todo, dónde están los límites de sus capacidades frente a una verdadera revisión humana.
#¿Por qué revisar el código localmente?
Pegar un diff en ChatGPT para que te lo revisen es cómodo, hasta el día en que ese diff contiene una clave de API, la lógica de negocio de un competidor o código cubierto por un NDA. La revisión de código con un LLM local soluciona este problema de raíz: el modelo se ejecuta en tu máquina y el código nunca abandona el puerto 11434.
- Código propietario
- Algoritmos propios, lógica de negocio, secretos de arquitectura: nada se envía a un tercero que podría registrarlo o utilizarlo para entrenar un modelo.
- NDA y cláusulas de confidencialidad
- Muchos contratos de clientes prohíben explícitamente enviar el código fuente a un servicio externo. La ejecución local suele ser la única opción que cumple esas condiciones.
- Cero costo recurrente
- Sin facturación por token. Puedes revisar cada commit, cada rama, sin tener que monitorear un contador.
- Funciona offline
- En un tren, en un sitio con aislamiento de red, detrás de un proxy empresarial cerrado: la revisión sigue disponible.
#Lo que un LLM detecta bien (y lo que se le escapa)
Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 j
Antes de conectar nada, hay que ajustar tus expectativas. Un modelo de código local detecta bien los errores locales que se aprecian en el diff, pero tiene dificultades con todo lo que requiere conocer el resto del sistema.
- Bien: errores locales
- Error de desfase de una unidad (off-by-one), condición invertida, variable no inicializada, recurso no cerrado, falta de gestión de errores.
- Bien: vulnerabilidades evidentes
- Inyección SQL por concatenación, secreto incrustado en el código, ruta no validada, deserialización peligrosa, XSS básico.
- Bien: legibilidad
- Nombres confusos, función demasiado larga, código muerto, duplicación visible en el diff.
- Baja: lógica entre archivos
- Solo ve el diff. Un contrato de API roto en otro lugar, un invariante global, un efecto secundario lejano le escapan.
- Bajo: intención empresarial
- No sabe qué debe hacer el código. Indica lo plausible, no necesariamente lo correcto.
- Riesgo: falsos positivos y alucinaciones
- Puede inventar una vulnerabilidad inexistente o proponer un parche que altere el comportamiento y provoque fallos. Todo debe verificarse.
#Prerrequisitos
- Ollama instalado
- El daemon escucha por defecto en http://localhost:11434. Si aún no está instalado, consultar la guía de instalación de Ollama.
- Un repositorio de Git
- La revisión se basa en git diff, por lo que requiere un proyecto bajo control de versiones con cambios que revisar.
- Un modelo de código
- Un modelo orientado al código descargado localmente (ver la sección siguiente para elegir según tu VRAM).
- GPU recomendado
- Opcional, pero cómodo: una RTX 3060 de 12 GB es suficiente para un modelo de 8-9B en Q4. También funciona solo con CPU, aunque más despacio.
#¿Qué modelos locales usar para revisar código?
Para la revisión de código, opta por un modelo especializado en código en lugar de uno generalista: entiende mejor la sintaxis, los patrones idiomáticos y las trampas de cada lenguaje. El tamaño se elige según tu VRAM, en Q4_K_M (el mejor equilibrio entre calidad y memoria). Las etiquetas que aparecen a continuación corresponden a la generación 2026, verificada en la biblioteca de Ollama.
- qwen3.5:9b — ~7 GB VRAM
- El punto de entrada 2026. Rápido, 256k de contexto, funciona en una RTX 3060 de 12 GB o en un Mac M-series de entrada. Bueno para revisar pequeños diffs.
- devstral:24b — ~14 GB VRAM
- La opción ideal para la mayoría de los equipos. Especialista en código y edición mediante agentes (Mistral AI, Apache 2.0), con mejor razonamiento sobre errores sutiles; cabe en una RTX 4080 de 16 GB.
- qwen3-coder:30b — ~19 GB VRAM
- MoE para código (30B, 3B activos), 256k de contexto, muy rápido. Calidad claramente superior en el razonamiento entre funciones. Requiere una RTX 4090 de 24 GB o un Mac con una amplia capacidad de memoria unificada.
- Alternativas
- gpt-oss:20b (de OpenAI, con pesos abiertos, muy rápido) y glm-4.7-flash (MoE con licencia MIT, sólido en modo agente) son buenas opciones; mistral-small (24B, bueno en francés) sirve como generalista si solo tienes un modelo disponible.
#Revisión manual con un solo comando
Antes de automatizar, comienza por una revisión manual bajo demanda. La idea: enviar el diff de tus cambios aún no registrados en un commit al modelo a través de la API de Ollama y leer su respuesta en el terminal. Es la pieza básica del hook que instalaremos justo después.
Haz que el script sea ejecutable (chmod +x review.sh), añade tus cambios al área de preparación con git add y luego ejecuta ./review.sh. Obtienes una lista de comentarios que puedes ignorar o seguir. Nada bloquea el proceso en esta fase: es una revisión asistida, no un guardián.
#Instalar un hook pre-commit con Ollama, paso a paso
El siguiente paso: activar esta revisión automáticamente con cada git commit, mediante un hook pre-commit. Dos enfoques: un hook Git nativo (sin dependencias) o el framework pre-commit. Explicamos en detalle el hook nativo, más sencillo de entender y de auditar.
- 011. Crear el archivo de hookLos hooks de Git están en .git/hooks/. Crea .git/hooks/pre-commit (sin extensión). Git lo ejecuta automáticamente antes de finalizar cada commit; un código de salida distinto de cero cancela el commit.
- 022. Escribir el script de revisiónEl hook obtiene el diff de los cambios preparados para el commit, lo envía a Ollama y muestra la respuesta. Elige: que sea puramente informativo (nunca cancela el commit) o que bloquee el commit cuando el modelo emita una palabra clave que indique gravedad.
- 033. Hacer ejecutable el hookchmod +x .git/hooks/pre-commit — sin esto, Git lo ignora silenciosamente.
- 044. ProbarHaz un git add de un archivo con un error intencional y luego git commit. El hook debe mostrar la observación del modelo antes de crear el commit.
- 055. Compartir con el equipo (opcional)Los hooks en .git/hooks/ no están versionados. Para compartirlos, versiona un directorio .githooks/ y haz que Git apunte a él con git config core.hooksPath .githooks.
#Mejorar el prompt de revisión
La calidad de la revisión de código con un LLM depende sobre todo del prompt. Si no recibe instrucciones bien delimitadas, el modelo oculta lo relevante bajo comentarios de estilo innecesarios. Tres principios permiten obtener una salida aprovechable.
- Restringir el alcance
- Pide explícitamente que se ignore el estilo y que solo se señalen errores, vulnerabilidades y casos límite. De lo contrario, obtienes diez comentarios cosméticos por diff.
- Imponer un formato
- Un formato estricto (- archivo:línea — problema) permite leer la salida de un vistazo y procesarla automáticamente si quieres aprovecharla más adelante.
- Pedir un veredicto explícito
- Una línea final del tipo 'VERDICT: OK/REVOIR' proporciona una señal binaria fácil de comprobar en un hook bloqueante.
- Indicar el lenguaje y el contexto
- Especifica el lenguaje y, si resulta útil, la convención del proyecto. El modelo adapta sus comprobaciones (por ejemplo, gestión de memoria en C, promesas en JS).
#Una visión honesta de las limitaciones frente a la revisión humana
Seamos claros sobre lo que no hace un revisor de código basado en un LLM local, para evitar una falsa sensación de seguridad: lo peor sería hacer commits con menos cuidado creyendo que estás protegido.
- Visión limitada al diff
- No conoce el resto del repositorio. Un cambio que rompe el código que hace una llamada desde otro archivo pasa desapercibido. Las pruebas de integración siguen siendo indispensables.
- Sin comprensión de la lógica de negocio
- No sabe si el código hace lo que pide el ticket. Valida la forma, no la intención. Un humano que conoce el producto sigue siendo irremplazable.
- Falsos positivos y alucinaciones
- Puede inventar una vulnerabilidad o una corrección errónea. Cada observación debe verificarse antes de actuar: nunca corrijas a ciegas.
- No sustituye a los linters ni a los tests
- Un linter, un verificador de tipos y un conjunto de pruebas detectan clases de errores de forma determinista. El LLM los complementa, no los sustituye.
- Depende del modelo y del prompt
- Un 7B con un prompt mal planteado pasa por alto cosas que un 32B bien orientado detectaría. La calidad no está garantizada ni es reproducible token por token.
#Para ir más allá
Para profundizar en la elección del modelo, la integración con el IDE o la memoria necesaria, estas guías relacionadas del sitio complementan esta guía:
- Mejor LLM local para programar en 2026
- Comparativa detallada entre Devstral, Qwen3-Coder y otras alternativas, con VRAM y velocidad por modelo.
- Copilot gratuito en local en VS Code
- Ir más allá de la revisión en CLI: chat y refactorización en el IDE con Cline, Tabby y CodeGeeX.
- Elegir tu cuantización (Q4, Q5, Q8, FP16)
- Entender por qué se recomienda Q4_K_M y cómo hacer que un modelo de 32B quepa en una GPU de 16 GB.
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.