Volver al blog
General

Optimización de Revisiones de Código mediante Agentes Múltiples y Gestión de Estado Persistente con adamsreview

La revisión de código es una práctica fundamental en el desarrollo de software, esencial para garantizar la calidad, la seguridad y la mantenibilidad del código...

11 de mayo de 202614 min read

Optimización de Revisiones de Código mediante Agentes Múltiples y Gestión de Estado Persistente con adamsreview

La revisión de código es una práctica fundamental en el desarrollo de software, esencial para garantizar la calidad, la seguridad y la mantenibilidad del código. Tradicionalmente, este proceso se ha realizado de forma manual, confiando en la experiencia y la diligencia de los desarrolladores para identificar errores y posibles mejoras. Sin embargo, el advenimiento de la inteligencia artificial, y en particular de los modelos de lenguaje grande (LLM) como Claude, ha abierto nuevas vías para automatizar y mejorar significativamente este proceso. A pesar de los avances, las herramientas de revisión de código basadas en IA existentes a menudo presentan limitaciones en cuanto a la profundidad del análisis, la gestión del contexto y la capacidad de abordar revisiones complejas de manera sistemática.

Este artículo técnico presenta adamsreview, una extensión para Claude Code diseñada para superar estas limitaciones. adamsreview introduce un enfoque de revisión de código multi-agente, que opera en varias etapas y emplea técnicas avanzadas como la paralelización de sub-agentes, pases de validación dedicados, gestión de estado persistente a través de artefactos JSON y la opción de consolidar revisiones mediante un ensamble de modelos (incluido Codex) y comentarios automatizados de bots de PR. El objetivo es proporcionar un análisis más exhaustivo y preciso que las soluciones integradas o de terceros, reduciendo al mismo tiempo los falsos positivos.

Arquitectura y Componentes de adamsreview

adamsreview se concibe como un conjunto de seis comandos slash (/review, /codex-review, /add, /promote, /walkthrough, /fix) integrados en el entorno de Claude Code. Estos comandos están diseñados para interactuar de manera coherente y escalar la complejidad de la revisión de código, desde un análisis inicial hasta la corrección de errores identificados.

1. Comandos Principales y Flujo de Trabajo

  • /review: Inicia una revisión de código estándar, similar al comando /review integrado en Claude Code, pero con la capacidad subyacente de un análisis más profundo y multi-etapa.
  • /codex-review: Permite la integración de Codex (u otros modelos de código) para una revisión complementaria o paralela, aprovechando las fortalezas específicas de diferentes modelos.
  • /add: Añade nuevas funcionalidades o archivos a la revisión en curso, permitiendo una iteración incremental sobre la base de código.
  • /promote: Promociona los hallazgos o sugerencias de una etapa de revisión a una etapa superior o a la consideración final.
  • /walkthrough: Facilita una interacción guiada con el usuario para discutir hallazgos complejos o elementos que requieren juicio humano.
  • /fix: Desencadena el proceso de corrección de los errores identificados, involucrando agentes dedicados y validaciones posteriores.

El flujo de trabajo general está diseñado para ser iterativo y modular. Un comando inicial como /review puede desencadenar una serie de sub-agentes que analizan diferentes aspectos del código (lógica, seguridad, estilo, rendimiento). Los resultados de estas sub-revisiones se agregan y gestionan mediante el estado persistente.

2. Gestión de Estado Persistente (JSON Artifacts)

Una de las innovaciones clave de adamsreview es su mecanismo de gestión de estado persistente. A diferencia de las herramientas que dependen exclusivamente de la memoria volátil de la sesión del LLM, adamsreview almacena el estado de la revisión (hallazgos, comentarios, decisiones, contexto relevante) en archivos JSON en el disco.

Propósito de la Gestión de Estado

  • Persistencia del Contexto: Permite que el contexto de la revisión persista a través de interacciones separadas o reinicios de la sesión de Claude Code. Esto es crucial para revisiones de larga duración o para volver a una revisión en un momento posterior.
  • Modularidad y Reutilización: El estado almacenado puede ser cargado y modificado por diferentes comandos o agentes, permitiendo un flujo de trabajo más granular. Por ejemplo, un agente de corrección puede cargar el estado de los errores identificados por un agente de revisión y luego actualizarlo con las soluciones aplicadas.
  • Depuración y Auditoría: Los archivos JSON sirven como un registro detallado del proceso de revisión, facilitando la depuración de la propia herramienta y proporcionando una pista de auditoría de las decisiones tomadas durante la revisión.
  • Integración Externa: El formato JSON permite una fácil integración con herramientas externas o scripts de automatización.

Implementación y Manipulación

El sistema incluye scripts integrados para mantener actualizados estos artefactos JSON. Estos scripts son responsables de serializar el estado de la revisión, actualizarlo con nuevos hallazgos o modificaciones y deserializarlo para su uso por otros componentes.

Ejemplo conceptual de estructura de archivo JSON para el estado de la revisión:

{
  "reviewId": "pr-123-commit-abc",
  "timestamp": "2023-10-27T10:00:00Z",
  "filesReviewed": [
    {
      "fileName": "src/utils.py",
      "changes": {
        "addedLines": [10, 11, 12],
        "modifiedLines": [25, 26],
        "deletedLines": [5]
      },
      "findings": [
        {
          "findingId": "f1",
          "severity": "critical",
          "type": "bug",
          "description": "Potential null pointer dereference if 'config' is None.",
          "lines": [11, 12],
          "agent": "claude-opus-review-logic",
          "status": "open",
          "comments": []
        },
        {
          "findingId": "f2",
          "severity": "medium",
          "type": "style",
          "description": "Line exceeds 80 characters limit.",
          "lines": [25],
          "agent": "claude-opus-review-style",
          "status": "open",
          "comments": []
        }
      ]
    },
    {
      "fileName": "src/main.py",
      "changes": {},
      "findings": []
    }
  ],
  "summary": {
    "totalFindings": 2,
    "critical": 1,
    "medium": 1,
    "low": 0,
    "fixed": 0
  },
  "configuration": {
    "model": "claude-3-opus-20240229",
    "reviewDepth": "deep",
    "parallelAgents": 4
  }
}

La manipulación de este estado se realiza a través de llamadas internas a funciones de serialización/deserialización y a través de los scripts de utilidad que el usuario puede ejecutar para actualizar o cargar el estado.

3. Agentes Paralelos y Pasadas de Validación

adamsreview utiliza un enfoque de agentes múltiples, donde cada agente está especializado en una tarea particular. Estos agentes pueden ejecutarse en paralelo para acelerar el proceso de revisión.

Paralelización de Sub-Agentes

En lugar de un único LLM que intente abarcar todos los aspectos de la revisión, adamsreview puede desglosar la tarea en sub-tareas asignadas a agentes específicos. Por ejemplo:

  • Agente de Lógica: Se enfoca en la corrección de errores algorítmicos, condiciones de carrera y manejo de excepciones.
  • Agente de Seguridad: Busca vulnerabilidades como inyecciones SQL, XSS, manejo inseguro de credenciales.
  • Agente de Estilo y Convenciones: Verifica el cumplimiento de guías de estilo (PEP 8 para Python, etc.) y convenciones del equipo.
  • Agente de Rendimiento: Identifica cuellos de botella potenciales, uso ineficiente de memoria o CPU.
  • Agente de Documentación: Revisa la calidad y completitud de los comentarios y la documentación.

Estos agentes se ejecutan en paralelo, cada uno procesando su porción del código o su aspecto de análisis, y luego sus resultados se agregan.

Pasadas de Validación

La revisión no se limita a una única pasada. adamsreview puede implementar múltiples pasadas de validación:

  • Primera Pasada (Análisis Inicial): Ejecución de todos los agentes especializados en paralelo para identificar hallazgos iniciales.
  • Pasada de Consolidación: Agregación y eliminación de duplicados de los hallazgos de la primera pasada. Los hallazgos se almacenan en el estado JSON.
  • Pasada de Corrección: Si se activa el comando /fix, agentes específicos intentan corregir los problemas identificados.
  • Pasada de Regresión: Después de aplicar las correcciones, se ejecuta una pasada de validación para asegurar que las correcciones no hayan introducido nuevos errores (regresiones) en otras partes del código. Esta pasada puede ser menos exhaustiva pero enfocada en verificar la integridad general.

4. Comando /walkthrough y Interacción Humana

Uno de los desafíos de la automatización de revisiones de código es la interpretación de hallazgos ambiguos o la necesidad de juicios contextuales que solo un humano puede proporcionar. El comando /walkthrough aborda esto utilizando la función AskUserQuestion de Claude.

Cuando el comando /walkthrough se activa, adamsreview puede presentar al usuario una lista de hallazgos que requieren su atención. Para cada hallazgo, puede:

  • Describir el hallazgo: Explicar el problema potencial, las líneas de código afectadas y la razón por la que se marcó.
  • Preguntar por aclaración: Si el hallazgo es ambiguo o su impacto no es claro, puede usar AskUserQuestion para solicitar al usuario que confirme si el problema es real o si existe una justificación para el comportamiento observado.
  • Solicitar acción: Pedir al usuario que decida si el hallazgo debe ser corregido, ignorado o si necesita más información.

Este proceso interactivo asegura que las revisiones se mantengan precisas y evita la generación excesiva de "ruido" o falsos positivos que obliguen al desarrollador a revisar manualmente cada punto.

5. Comando /fix y Gestión de Correcciones

El comando /fix está diseñado para automatizar la corrección de los errores identificados. Este proceso se realiza en varias etapas:

  1. Agrupación de Correcciones: Los hallazgos se agrupan por tipo o por archivo para optimizar el proceso de corrección.
  2. Despliegue de Agentes de Corrección: Agentes especializados (posiblemente utilizando modelos como Claude Opus o incluso enfoques de codificación más directos) se encargan de generar las modificaciones de código necesarias para abordar cada hallazgo.
  3. Aplicación de Cambios (Preliminar): Las correcciones propuestas se aplican al código, pero aún no se confirman permanentemente.
  4. Revisión Post-Corrección: El código modificado se somete nuevamente a un análisis (potencialmente con un modelo como Opus) para verificar la eficacia de las correcciones y detectar regresiones.
  5. Commit de Supervivientes: Solo las correcciones que pasan la validación post-corrección se aplican permanentemente (por ejemplo, mediante un commit de borrador o la preparación de un PR). Las regresiones o correcciones fallidas se revierten o se marcan para una revisión manual.

Este enfoque de "corrección y validación" ayuda a mantener la integridad del código a medida que se aplican correcciones automáticas.

6. Ensamble de Modelos y Codex CLI

La flexibilidad para integrar diferentes modelos de IA es una característica distintiva de adamsreview. Además de Claude, el comando /codex-review permite la ejecución de revisiones utilizando Codex CLI, aprovechando la robustez de los modelos de código de OpenAI.

Ensamble de Revisión

La idea del ensamble es combinar las fortalezas de múltiples modelos. Por ejemplo:

  • Claude Opus podría ser el principal motor de revisión, con su amplia capacidad de comprensión contextual y razonamiento.
  • Codex podría usarse para identificar patrones de código específicos o para verificar la sintaxis y semántica de manera más precisa en ciertos lenguajes.

Los resultados de estos diferentes modelos se fusionan, y las discrepancias o los hallazgos complementarios se reportan. Esto puede llevar a una cobertura más completa y a una mayor confianza en los hallazgos.

Integración con PR Bot Comments

La automatización de adamsreview se extiende a la comunicación. Los hallazgos y las decisiones del proceso de revisión pueden ser automáticamente publicados como comentarios en Pull Requests (PRs) a través de la integración con bots de PR. Esto mantiene a los equipos informados sobre el estado de la revisión y los problemas identificados sin necesidad de intervención manual.

7. Diferencias con /ultrareview y Consideraciones de Costo

Es importante distinguir adamsreview de comandos como /ultrareview de Claude. Mientras que /ultrareview puede ofrecer una revisión de alto nivel, a menudo se carga contra el "Extra Usage Pool" de la suscripción de Claude, lo que puede generar costos adicionales significativos. adamsreview, al ejecutarse dentro de la suscripción estándar de Claude Code (se recomienda el plan Max por su mayor cuota de tokens y capacidad de procesamiento), ofrece una alternativa más predecible en términos de costos, aprovechando la infraestructura ya pagada.

Implementación Práctica y Casos de Uso

La implementación de adamsreview se realiza a través de la instalación del plugin en Claude Code:

/plugin marketplace add adamjgmiller/adamsreview
/plugin install adamsreview@adamsreview

Una vez instalado, los comandos pueden ser invocados directamente en la interfaz de Claude Code.

Ejemplo de Flujo de Trabajo para un PR

  1. Inicio de Revisión: El desarrollador abre un Pull Request y, en la conversación de Claude Code, invoca: /adamsreview review --repo <url_del_repo> --branch <nombre_de_la_rama> o si ya está en el contexto de un PR: /adamsreview review

  2. Análisis Inicial: adamsreview detecta los cambios en el PR, inicia los agentes de revisión paralelos (lógica, seguridad, estilo, etc.) y almacena los hallazgos iniciales en un archivo JSON (review_state.json en el directorio de trabajo).

  3. Revisión de Hallazgos (Opcional): Si hay hallazgos que requieren aclaración, el desarrollador puede invocar: /adamsreview walkthrough Claude interactúa con el desarrollador para discutir los puntos sensibles. Las decisiones (corregir, ignorar) se actualizan en review_state.json.

  4. Corrección de Errores: El desarrollador puede decidir automatizar la corrección de los errores marcados: /adamsreview fix Los agentes de corrección actúan, aplican cambios propuestos y se realiza una pasada de validación de regresión. Los cambios exitosos se preparan para ser commit.

  5. Revisión Complementaria (Opcional): Si se desea una perspectiva adicional, se puede ejecutar una revisión con otro modelo: /adamsreview codex-review Los hallazgos de Codex se fusionan con el estado existente.

  6. Promoción y Finalización: Los hallazgos finales y las correcciones aplicadas pueden ser "promocionados" para generar un informe de resumen o para ser automáticamente comentados en el PR: /adamsreview promote --level final

Beneficios Clave Observados

  • Mayor Detección de Bugs: En las revisiones del propio autor, adamsreview ha identificado significativamente más errores reales en comparación con Claude Code /review, /ultrareview, CodeRabbit, Greptile y la revisión integrada de Codex.
  • Reducción de Falsos Positivos: El enfoque multi-agente y las pasadas de validación contribuyen a una mayor precisión, minimizando las alertas irrelevantes.
  • Profundidad de Análisis: La ejecución de múltiples agentes especializados y la gestión de estado permiten un análisis más profundo y matizado que una única pasada de un solo modelo.
  • Eficiencia y Escalabilidad: La paralelización y la persistencia del estado agilizan el proceso de revisión, haciéndolo más escalable para proyectos grandes y revisiones continuas.
  • Interacción Controlada: El comando /walkthrough permite un control humano efectivo sobre los hallazgos ambiguos, manteniendo el equilibrio entre automatización y juicio experto.

Consideraciones Técnicas y Futuras Direcciones

La implementación efectiva de adamsreview se basa en varios pilares técnicos:

  • Orquestación de Agentes: Un componente central es el orquestador que gestiona la creación, ejecución, comunicación y agregación de resultados de los múltiples agentes.
  • Serialización Eficiente: La elección de JSON como formato de estado es una decisión práctica por su ubicuidad y facilidad de parseo, pero para estados muy grandes, se podrían explorar formatos binarios o bases de datos ligeras.
  • Manejo de Contexto del LLM: La clave para el éxito es cómo se pasan los fragmentos de código, los hallazgos y el estado a los modelos de IA. Esto implica estrategias de chunking, summarization y prompt engineering cuidadosas para cada agente y cada etapa.
  • Gestión de Dependencias y Entorno: Asegurar que los scripts de utilidades y los comandos de plugin funcionen correctamente dentro del entorno de Claude Code es fundamental.

Las futuras direcciones de desarrollo podrían incluir:

  • Integración de Modelos Adicionales: Ampliar la compatibilidad con otros LLMs o herramientas de análisis estático especializadas.
  • Aprendizaje Continuo: Permitir que el sistema aprenda de las correcciones del usuario para refinar sus modelos de detección de errores y sus estrategias de corrección.
  • Análisis Predictivo de Riesgos: Utilizar métricas de código y patrones de cambios para predecir áreas de alto riesgo que requieran revisiones más exhaustivas.
  • Soporte para Múltiples Lenguajes: Mejorar la adaptabilidad a un espectro más amplio de lenguajes de programación.
  • Interfaz Gráfica/Visualización: Desarrollar herramientas complementarias para visualizar el estado de la revisión y los hallazgos de manera más intuitiva.

Conclusión

adamsreview representa un avance significativo en la aplicación de IA para la revisión de código, yendo más allá de las soluciones existentes al implementar un marco robusto de agentes múltiples, gestión de estado persistente y flujos de trabajo interactivos. Al abordar las limitaciones de profundidad, contexto y precisión, adamsreview tiene el potencial de transformar la forma en que los desarrolladores abordan la calidad del código, permitiendo la detección temprana de errores y la mejora continua del software. Este enfoque no solo aumenta la eficiencia sino que también fomenta una cultura de código más sólida y segura.

Para quienes buscan optimizar sus procesos de desarrollo de software mediante soluciones avanzadas de ingeniería de datos e inteligencia artificial, https://www.mgatc.com ofrece servicios de consultoría experta para implementar y adaptar estas tecnologías a sus necesidades específicas.

Escrito por Mariano Gobea Alcoba