Convierte cambios de Git en hallazgos precisos con reglas deterministas y un agente LLM.
Aprende a instalar, configurar y operar OpenCodeReview, la CLI de Alibaba para revisar diffs, ramas, commits y directorios completos. Diseñarás revisiones repetibles y exportables para tu flujo local o CI.

Un agente generalista puede leer un diff, pero en cambios grandes tiende a omitir archivos, perder la posición de una línea o producir avisos poco accionables. OpenCodeReview parte de una pregunta concreta: ¿cómo hacer que las partes que no pueden fallar dependan de ingeniería determinista y no solo de texto?
| Necesidad | Enfoque de OpenCodeReview |
|---|---|
| Cobertura | Selección explícita de archivos y agrupación de cambios relacionados. |
| Contexto | El agente puede leer archivos completos y buscar en el repositorio. |
| Precisión | Módulos independientes para ubicar y reflexionar sobre comentarios. |
La revisión automática propone evidencia; no sustituye la decisión técnica ni la responsabilidad del revisor humano.
El proyecto combina un pipeline determinista con un agente que recupera contexto y razona sobre el caso. El pipeline decide qué archivos entran, agrupa unidades relacionadas y aplica reglas por tipo de archivo; el LLM se concentra en entender dependencias, riesgos y semántica.
Un resultado “sin hallazgos” no demuestra ausencia de defectos. Úsalo como una capa de control adicional, especialmente antes de fusionar.
Necesitas Git 2.41 o superior porque la herramienta usa Git para generar diffs, buscar código y operar sobre el repositorio. La distribución recomendada se instala desde npm y expone el comando ocr.
$ git --version
$ npm install -g @alibaba-group/open-code-review
$ ocr --helpConfirma la versión antes de iniciar; actualiza si es menor que 2.41.
La instalación global permite invocar ocr desde cualquier repositorio.
Empieza en una rama con un cambio pequeño y revisable.
Antes de una revisión normal debes elegir un proveedor y un modelo. El asistente interactivo guarda la configuración y prueba conectividad; nunca incluyas una clave API en un commit o captura de pantalla.
ocr config provider
ocr config modelLa alternativa es el modo de delegación: el host de IA ejecuta el razonamiento mientras OpenCodeReview resuelve selección de archivos y reglas. Es útil cuando ya trabajas con un agente compatible.
Prueba primero con un repositorio no sensible y un proveedor aprobado por tu organización. Revisa qué fragmentos de código se enviarán fuera de tu entorno.
En el directorio del proyecto, ocr review revisa cambios preparados, no preparados y archivos sin seguimiento. Haz cambios mínimos y lee cada comentario junto a su línea y el contexto del archivo.
cd mi-proyecto
ocr review
# Guardar una salida que otro proceso pueda consumir
ocr review --format json --output result.jsonEl JSON permite separar la generación de hallazgos de su presentación: puedes archivarlo como artefacto de CI, filtrarlo por severidad o convertirlo en comentario de pull request.
Para revisar una funcionalidad completa, delimita el rango de ramas. OpenCodeReview usa el punto de divergencia de Git para comparar tu trabajo con la base indicada. Para un cambio histórico, apunta a un commit específico.
# Cambios entre la base y la rama de funcionalidad
ocr review --from main --to feature-branch
# Un commit concreto
ocr review --commit abc123
# Reanudar una ejecución interrumpida
ocr session list
ocr review --from main --to feature-branch --resume <session-id>Antes de automatizar un rango, verifica que main y la rama objetivo representan exactamente la comparación que deseas revisar.
Un diff no siempre existe: quizá estás auditando un repositorio heredado o evaluando un directorio antes de modificarlo. ocr scan revisa archivos completos en lugar de depender del historial.
# Todo el repositorio
ocr scan
# Solo una zona de riesgo
ocr scan --path internal/agent
# Reanudar un análisis amplio
ocr scan --resume <session-id>Limitar --path hace la primera auditoría más asequible y facilita validar la calidad de los resultados.
Las reglas permiten que una revisión de migraciones SQL no use el mismo criterio que una de autenticación o componentes de interfaz. El diseño de OpenCodeReview busca resolver reglas por archivo, evitando cargar instrucciones irrelevantes en cada llamada al modelo.
| Formato | Uso | Ventaja |
|---|---|---|
| Terminal | Explorar comentarios durante el desarrollo. | Feedback inmediato. |
| JSON | Pasar hallazgos a scripts o CI. | Integración reproducible. |
| Reglas por ruta | Concentrar criterios de seguridad, pruebas o estilo. | Menos ruido contextual. |
Empieza por reglas breves y verificables: “no registrar tokens”, “validar autorización antes de mutar datos” o “añadir prueba para cada ruta de error”.
El repositorio incluye integraciones para Claude Code, Codex, Cursor, Kimi Code, OpenCode y agentes compatibles con skills. En delegación, puedes inspeccionar lo que la herramienta preparó antes de ceder el análisis al agente.
ocr delegate preview
ocr delegate rule src/main.go src/handler.goEjecuta ocr review --format json --output result.json en una rama de prueba.
Decide qué severidades bloquean una fusión y cuáles solo informan.
Valida los hallazgos de mayor impacto y mide falsos positivos antes de endurecer el pipeline.
Una adopción gradual es más útil que imponer un bloqueo automático el primer día. Comienza con informes, compara los hallazgos con revisiones humanas y ajusta reglas. Después, automatiza solo las condiciones con evidencia sólida.
Trata cada comentario como una hipótesis que debe convertirse en una afirmación comprobable. Abre el archivo señalado, mira el bloque que llama a esa línea y sigue el dato hasta su origen. Un comentario de seguridad es útil si especifica el activo afectado, la condición que lo activa y el impacto; “esto parece inseguro” no basta para bloquear una entrega.
| Pregunta | Cómo comprobarla | Decisión |
|---|---|---|
| ¿La línea indicada existe en el diff actual? | Comprueba el hash, la rama y el rango de revisión. | Descarta posiciones obsoletas. |
| ¿Hay una ruta de ejecución real? | Busca llamadas, condiciones y pruebas que alcancen el código. | Eleva el hallazgo si puede reproducirse. |
| ¿Existe una defensa ya aplicada? | Revisa validaciones previas, autorización y límites. | Marca falso positivo con evidencia. |
| ¿Qué prueba faltaría? | Formula un caso mínimo que falle antes del arreglo. | Convierte la observación en una acción verificable. |
Supón que una rama cambia un controlador para actualizar el perfil de un usuario. Una revisión seria no se limita a buscar la palabra auth. Debe seguir el identificador del usuario: ¿viene de la sesión autenticada o del cuerpo de la petición?, ¿la autorización se evalúa antes de escribir?, ¿la consulta está filtrada por organización?, ¿la prueba cubre a un usuario no propietario? Estas preguntas convierten una alerta genérica en un criterio técnico claro.
# Crear un cambio mínimo y revisar solo lo que cambió
git checkout -b ejemplo-perfil
git diff --stat main...HEAD
ocr review --from main --to ejemplo-perfil --format json --output review.json
# Inspeccionar después el artefacto y contrastarlo con las pruebas
python -m json.tool review.jsonNo automatices una corrección solo porque un modelo la sugiera. Para cada hallazgo aceptado, redacta el motivo de la corrección, añade una prueba que hubiera detectado el defecto y vuelve a ejecutar la revisión. El valor está en cerrar el bucle: cambio, evidencia, prueba, revisión y decisión.
Durante las primeras semanas, conserva una muestra de revisiones humanas y calcula cuántas observaciones del sistema eran correctas. La precisión representa qué fracción de los avisos fue realmente útil; la cobertura señala qué parte del cambio recibió revisión; y el tiempo de ciclo indica si el control está ayudando o frenando al equipo. No uses una métrica aislada: un sistema muy silencioso puede parecer preciso y, sin embargo, no detectar problemas importantes.
OpenCodeReview publica un benchmark basado en 50 repositorios open-source, 200 pull requests y 10 lenguajes, con incidencias anotadas por revisores. Ese tipo de benchmark es una señal para explorar la herramienta, no una garantía de que tendrá el mismo comportamiento con tu lenguaje, reglas, proveedor o código propietario. Ejecuta una evaluación propia antes de definir políticas de bloqueo.
Ejecuta la CLI en pull requests y adjunta review.json como artefacto. Nadie queda bloqueado; el objetivo es aprender.
Un responsable etiqueta los hallazgos: confirmado, falso positivo, duplicado o necesita contexto. Esta clasificación alimenta el ajuste de reglas.
Solo bloquea una fusión para categorías que hayan demostrado alta fiabilidad, por ejemplo secretos expuestos o ausencia de autorización verificable.
Si el código o los logs son sensibles, consulta primero las políticas de datos y del proveedor LLM. Un diff puede contener credenciales, información personal o detalles de infraestructura. Filtrar archivos, usar proveedores aprobados y rotar claves comprometidas son controles previos, no tareas posteriores.
La forma más honesta de saber si una herramienta sirve a tu equipo no es repetir una cifra pública: es medirla contra cambios que tu equipo entiende. Construye una muestra pequeña de pull requests ya fusionados. Incluye cambios de bajo riesgo, correcciones de errores, modificaciones de autorización, migraciones y refactorizaciones. Para cada caso, anota qué defectos detectó el equipo en la revisión o después del despliegue, y separa los hechos conocidos de las conjeturas.
Ejecuta OpenCodeReview con la misma configuración sobre toda la muestra. Después compara sus observaciones con una rúbrica sencilla: confirmado si el problema existe y el comentario permite localizarlo; útil pero incompleto si señala una zona que merece atención; falso positivo si una defensa existente lo invalida; y no accionable si no ofrece suficiente contexto para tomar una decisión. Esta rúbrica evita que “parece interesante” se convierta en una medida engañosa de calidad.
| Indicador | Fórmula práctica | Interpretación |
|---|---|---|
| Precisión observada | Comentarios confirmados ÷ comentarios evaluados. | Si cae, hay demasiado ruido para los revisores. |
| Tasa de acción | Comentarios que terminan en cambio o prueba ÷ comentarios evaluados. | Mide utilidad, no solo plausibilidad. |
| Tiempo de triage | Minutos para aceptar o descartar un comentario. | Un sistema preciso puede seguir siendo caro si exige mucho contexto. |
| Cobertura de muestra | PRs revisados por la herramienta ÷ PRs de la muestra. | Evita concluir a partir de unos pocos cambios fáciles. |
Una buena regla describe una propiedad comprobable y el contexto en que importa. “Escribe código seguro” es demasiado amplio. “En rutas que modifican un recurso, comprueba que el identificador de la sesión tiene permiso sobre el recurso antes de persistir” señala qué buscar, dónde y por qué. Empieza con unas pocas reglas relacionadas con fallos que ya hayas visto; aumenta el conjunto solo cuando puedas evaluar su efecto.
# Ejemplo de preparación antes de una revisión de rama
# 1. Actualiza la referencia base sin cambiar tu trabajo local
git fetch origin main
# 2. Inspecciona qué archivos estarán en el alcance
git diff --name-status origin/main...HEAD
# 3. Revisa el rango y guarda un artefacto trazable
ocr review --from origin/main --to HEAD --format json --output review.jsonEl segundo paso importa: si la lista de archivos no coincide con tu expectativa, no interpretes el resultado del LLM todavía. Puede que la base esté desactualizada, que la rama contenga merges inesperados o que el rango no represente la propuesta real. La reproducibilidad de una revisión empieza por la identidad del diff.
Al responder a un hallazgo, deja una nota breve que conecte causa y decisión. Por ejemplo: “confirmado: el identificador venía del cuerpo de la petición y permitía editar otro usuario; añadimos comparación con session.userId y una prueba negativa”. O: “falso positivo: el middleware requireOrgRole se ejecuta antes del controlador y la prueba de integración cubre el rol”. Con el tiempo, esas decisiones se convierten en material para mejorar reglas, pruebas y documentación del equipo.
Finalmente, conserva el control de versiones de la configuración de revisión junto al código cuando sea apropiado. Igual que una regla de lint o una prueba, una regla de revisión puede introducir ruido, quedar obsoleta o necesitar una explicación. Revisarla en pull request permite discutir su alcance y evita que una política invisible cambie el comportamiento de la automatización.
Elige un pull request pequeño. Ejecuta una revisión, selecciona un comentario útil y explica qué evidencia del código lo confirma. Si no puedes confirmarlo, etiquétalo como hipótesis, no como defecto.
No. ocr scan permite revisar un repositorio completo o una ruta concreta sin depender de un diff.
No. Acelera la detección y aporta contexto, pero las decisiones de diseño, riesgo y aceptación siguen siendo humanas.
Hallazgos estructurados para archivarlos o procesarlos en automatizaciones, en vez de depender solo de la terminal.