Open sourceHecho en Brasil

La IA lo escribió. ¿Quién lo revisó?

El código de IA llega rapidísimo. Los agujeros también. CodeCorvus le pasa el ojo a cada pull request antes del merge y te muestra lo que no tiene sentido, lo que se filtra y lo que se rompe.

Compila. Pasa los tests. Y está lleno de agujeros.

La IA escribe en minutos lo que llevaría un día. Lo que viene con eso, nadie tiene tiempo de leerlo. Le pasa a todo el mundo.

Secreto en el commit

src/pagos/cliente.ts+3−0

@@ -12,1 +12,4 @@

1212import Stripe from "stripe";
13const stripe = new Stripe("sk_live_••••••••");

codecorvusbot· ahorabloqueante

Una clave de producción en el código. Gitleaks la bloquea al instante y el valor sale censurado del comentario.

14export const cobrar = (monto: number) =>
15 stripe.charges.create({ amount: monto });

Datos de pacientes en el log

src/reporte.js+1−1

@@ -41,3 +41,3 @@

4141} catch (error) {
42 logger.error("export failed", error.message);
42 logger.error("export failed", payload.patient);

codecorvusbot· ahorabloqueante

payload.patient manda nombre y documento al log. Registra solo el id del reporte.

validado

4343 throw error;

Compila, pero está mal

src/api/pedidos.ts+2−0

@@ -27,2 +27,4 @@

2727const size = 20;
28const start = (page - 1) * size;
29return pedidos.slice(start, size);

codecorvusbot· ahoraimportante

slice recibe dónde termina, no cuántos elementos. Desde la página 2, la lista vuelve vacía.

2830}

Regla de negocio ignorada

src/planes/descuento.ts+1−1

@@ -8,3 +8,3 @@

88export function descuentoSenior(edad: number) {
9 return edad >= 60 ? 0.3 : 0;
9 return edad > 60 ? 0.3 : 0;

codecorvusbot· ahoraimportante

La regla del repositorio dice “desde los 60 años”. Con >, quien tiene 60 se queda sin descuento.

1010}

PR #517 · Refactoriza la facturación · 47 archivos

Un PR gigante que nadie lee con calma.

Corvus lee cada línea y solo habla de lo que importa.

Revisión de Corvus

corvus -b main

Revisado · 46s · paso 12

  • 1bloqueante
  • 2importantes
  • 3sugerencias

Merge frenado: 1 problema serio, confirmado.

Revisa línea por línea. Bloquea solo lo grave.

Lee todo el diff

Cada archivo del PR, con el contexto del repo. El comentario cae justo en la línea del problema.

Explica y ya sugiere la corrección

Te dice por qué es un problema y te pasa la corrección como Commit suggestion. Un clic y listo.

Bloquea solo lo grave

Lo bloqueante frena el merge. Lo importante solo avisa. Una sugerencia es solo eso, nadie te obliga.

Comentario en la línea, marcador de severidad y el sello de la IA que intentó refutar el hallazgo.

github.com/acme/portal-clinico/pull/482

Mejora la exportación de informes #482

Abierto
Conversación4Commits3
codecorvus bot revisó estos cambios · hace 2 min

Revisión de CodeCorvus

🔴 1 bloqueante·🟡 2 importantes·🔵 3 sugerencias

src/informe.js
4141 } catch (error) {
42- logger.error("export failed", error.message);
42+ logger.error("export failed", payload.patient);
4343 throw error;
codecorvus bot · hace 2 min

🔴 Datos del paciente pueden terminar en el log

payload.patient incluye nombre y documento. Registra solo el identificador del informe.

validadoUna segunda IA intentó refutarlo y no pudo.
Cambio sugerido
42- logger.error("export failed", payload.patient);
42+ logger.error("export failed", { report: payload.id });
Commit suggestion

Para liberar con motivo: /corvus ok o /corvus fp

Merge bloqueado

1 hallazgo bloqueante debe corregirse o liberarse con un motivo.

No frena por nada. Otra IA impugna antes.

Antes de frenar, otra IA le busca el error al hallazgo. ¿Lo encontró? No frena. ¿No? Recibe el sello “validado” y frena el merge.

Prueba el gate

Mueve los interruptores. El merge cambia al instante.

¿Hay un secreto en el diff?
¿El hallazgo es grave?
¿La segunda IA lo tumbó?

¿No estás de acuerdo? Manda un /corvus fp con el motivo y sigue. Queda registrado.

  1. HallazgoHallazgo grave
  2. ImpugnaciónIntentó tumbarlo y no pudo

Merge bloqueado

validado

El hallazgo recibe el sello “validado” y la corrección sugerida va en la misma línea.

El marcador es público. Demuestra que revisó.

En cada versión, Corvus corre sobre un golden set de casos reales y sembrados, y el resultado se publica. Este es el del caso Grupo Mais Saúde.

golden set · 13 casos
  • 100%recall en bloqueantesencontró todos los problemas graves
  • 100%precisión en bloqueantescada bloqueo era un problema real
  • 0falsos positivos frenando el mergeningún PR se frenó por nada

Resultado de este golden set de 13 casos; no es garantía para todo repositorio.

Empieza en tu próximo PR. Sin tocar tu flujo.

.github/workflows/corvus.ymlYAML
name: CodeCorvuson: [pull_request]permissions:  contents: read  pull-requests: write  id-token: write   # sesión corta vía OIDCjobs:  review:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - run: corvus review

Revisa cada PR en tu runner.

terminal
$ corvus -b main⠹ 46s · paso 12 · Leyendo src/reporte.js1bloqueante2importantes3sugerencias

Córrelo antes de abrir el PR y mira el progreso en vivo.

Problemas · VS Code · Cursor
  • Datos de pacientes en el logsrc/reporte.js:42
  • Compila, pero está malsrc/api/pedidos.ts:29
  • Regla de negocio ignoradasrc/planes/descuento.ts:9

Los hallazgos aparecen en tu editor. En el PR, solo pregunta: /corvus explica.

Ejemplo ilustrativo. Instala y configura el CLI según tu entorno de CI.

Cloud · próximamenteEl mismo Corvus, sin clave de IA y con panel.

Tu código, en tu CI. La clave, fuera del repo.

  • Corre en tu runnerEl workflow corre en tu GitHub Actions. El código va del runner directo al proveedor de IA.
  • Sin clave en el repositorioSesión corta vía OIDC de GitHub. Ningún secreto guardado en el repo, ni de broma.
  • La IA solo lee el códigoRevisa el diff y su contexto. No ejecuta comandos ni accede a la red.
  • Secretos siempre censuradosGitleaks determinista y Semgrep confirmado por la IA.
  • Hecho para la LGPDReglas para documentos y datos de pacientes en logs, payloads y respuestas.

Preguntas rápidas.

¿Qué es CodeCorvus?

Un revisor de código con IA, open source, que corre en GitHub Actions. Lee cada pull request, comenta en la línea con la corrección y solo bloquea el merge cuando encuentra un problema grave que una segunda IA no logró tumbar.

¿Cuánto cuesta?

El open source es gratis: usas tu propia clave de IA, o tu suscripción en el CLI. Cloud todavía no tiene precio; llega pronto.

¿A dónde va mi código?

El workflow corre en tu runner de GitHub Actions. El código va de ahí directo al proveedor de IA que elijas.

¿Va a frenar mi merge por nada?

No. Solo un hallazgo grave frena el merge, y solo después de que otra IA intenta tumbarlo. ¿No estás de acuerdo? /corvus ok o /corvus fp, con el motivo, y sigue.

¿Funciona con GitLab?

Por ahora, no. La integración de CI es para GitHub Actions y pull requests en GitHub.

¿Ayuda con la LGPD?

Corvus trae reglas para documentos y datos de pacientes en logs, payloads y respuestas, y registra la evidencia de la revisión. No reemplaza una evaluación legal.

¿Qué estás esperando?

Un workflow, un PR y listo: Corvus ya está revisando.

Dale, instálalo

Open source y gratis. Sin registro, sin trampa.