Agente programador
Un agente programador (o perfil coder/developer) en una arquitectura multi-agente como la de Hermes Agent es la entidad encargada de la estrategia técnica, especificación de requerimientos de software y control de calidad (QA). En lugar de escribir manualmente bloques extensos de código en la ventana de chat, actúa como un director técnico que especifica la tarea, delega la edición pesada de archivos en herramientas especializadas como OpenCode CLI y valida los resultados mediante pruebas automatizadas.
Características Principales
- Rol de Especificador Técnico: Diseña la estrategia de solución, selecciona los patrones de diseño y redacta instrucciones precisas y acotadas (prompts de tareas) para entregárselas a OpenCode.
- Control de Calidad y Enfoque TDD: No da por completada una tarea simplemente porque OpenCode haya modificado los archivos. Corre las suites de pruebas (
pytest,cargo test,npm test), analiza los errores de compilación o linter y, si algo falla, re-invoca a OpenCode con el diagnóstico del error. - Ahorro de Contexto y Gestión de Entorno: Mantiene limpia la ventana de memoria principal al no saturarla con código intermedio, operando mediante espacios de trabajo aislados (Git worktrees) o ejecuciones en segundo plano.
- Bucle de Realimentación y Autocorregido: Ante errores de compilación o fallos en los tests, captura las trazas de error (stack traces) y re-invoca a OpenCode con diagnósticos precisos hasta lograr una solución válida.
- Síntesis de Aprendizaje: Cuando OpenCode logra resolver una refactorización compleja o un flujo de compilación particular, el perfil de Hermes sintetiza esa experiencia en un archivo de habilidad reutilizable (
SKILL.md).
Finalidad
Su propósito principal es garantizar la robustez, mantenibilidad y calidad técnica del software generado. Sirve de puente entre la visión de alto nivel del proyecto y la modificación física de los archivos en disco, aislando al sistema de errores de sintaxis o regresiones no deseadas.
Diferencias Clave frente a otros Roles
| Dimensión | Agente Programador | Agente Orquestador | Motor OpenCode CLI |
|---|---|---|---|
| Ámbito | Estrategia técnica y QA: Diseña la solución de código y valida su funcionamiento. | Gestión global: Descompone proyectos, gestiona el tablero Kanban y asigna roles. | Ejecución directa: Escribe, modifica y refactoriza archivos en el sistema de archivos. |
| Interacción | Supervisa a OpenCode e informa de los avances al Orquestador. | Asigna tarjetas de trabajo y coordina dependencias entre perfiles. | Es invocado mediante comandos no interactivos (opencode -p "..."). |
| Contexto | Centrado en la arquitectura del módulo y los tests del componente. | Visión macro del proyecto completo y su tablero de tareas. | Acotado a la sesión o archivo de código local bajo modificación. |
Para integrar de manera óptima Hermes Agent y OpenCode, la clave arquitectónica radica en separar las responsabilidades: Hermes actúa como el director de ingeniería/arquitecto de software y OpenCode como el ejecutor técnico de código.
Al contar con OpenCode para la edición y manipulación directa de archivos, el perfil «programador» (o coder) de Hermes no necesita escribir grandes bloques de código dentro de la conversación del chat. En su lugar, asume un rol de alto nivel enfocado en la especificación, supervisión y verificación.
Tareas Típicas en el Flujo de Trabajo
- Análisis del Problema: Leer el requerimiento del usuario o la tarjeta del tablero Kanban.
- Preparación del Entorno: Crear una rama o un espacio de trabajo aislado (Git worktree) para trabajar sin alterar el código principal.
- Delegación a OpenCode: Invocar a OpenCode mediante la CLI no interactiva (
opencode -p "<instrucciones>") o mediante plugins de integración comohermes-code-bridge. - Revisión del Diffs e Inspección: Analizar los cambios generados (
git diff), comprobar el cumplimiento de estándares y verificar los tests. - Cierre y Documentación: Documentar los cambios, realizar el commit y actualizar el estado de la tarea.
Cómo se Estructura la Delegación en la Práctica
Para que la delegación entre el perfil programador de Hermes y OpenCode sea limpia, se utilizan tres capas de configuración:
- Instrucciones del Repositorio (
AGENTS.mdo.opencode/): En la raíz del proyecto de código se coloca un archivoAGENTS.mdo reglas de proyecto. Cuando OpenCode se activa en la carpeta, lee automáticamente las convenciones del repositorio (lenguaje, frameworks, comandos de test y estilo). - Invocación con Parámetros o Presets: El perfil
programadorde Hermes invoca a OpenCode pasando flags específicos según el tipo de tarea:- Para implementar una función:
opencode -p "Implementa la interfaz definida en src/auth.py". - Para refactorizar o corregir errores:
opencode -p "Corrige el fallo en los tests adjuntos en logs/error.log".
- Para implementar una función:
- Modos y Modelos de OpenCode: Puedes configurar OpenCode para que utilice un modelo de generación de código rápido y económico en su propia configuración, permitiendo que la interacción entre Hermes y OpenCode sea fluida y de bajo costo.
Resumen del Flujo de Integración
[Usuario / Orquestador]
│ (Asigna tarea de código)
▼
[Perfil "Programador" en Hermes]
├── 1. Diseña el plan y prepara el entorno (worktree / rama)
├── 2. Invoca OpenCode: opencode -p "Instrucciones detalladas"
│ │
│ ▼
│ [OpenCode CLI] (Escribe y modifica los archivos en disco)
│ │
├── 3. Ejecuta tests y verifica diffs (git status / pytest)
└── 4. Aprueba los cambios y reporta el resultado
Comando para crear el perfil y guardar el SOUL.md en la terminal
Ejecutando el siguiente bloque de comandos en la consola se creará el perfil Programador (programador o coder) en Hermes Agent, optimizado para trabajar de la mano con OpenCode CLI. y se registrará su identidad:
1. Crear el perfil en Hermes Agent (si aún no existe)
hermes profile create programador --description "Especialista en arquitectura de código, especificación técnica, pruebas y coordinación con OpenCode"
2. Guardar el archivo SOUL.md específico en su directorio correspondiente
cat << 'EOF' > ~/.hermes/profiles/programador/SOUL.md
# Identidad y Rol Principal
Eres el **Agente Programador y Arquitecto Técnico** del sistema. Tu responsabilidad principal es diseñar la estrategia técnica de desarrollo, redactar especificaciones precisas, ejecutar suites de pruebas y auditar el código.
Para la escritura, edición y refactorización directa de archivos en disco, delegas la ejecución pesada en **OpenCode CLI**, actuando tú como la mente analítica y el supervisor de calidad (QA).
---
## 1. Estrategia de Delegación en OpenCode
- **Ahorro de Contexto**: NUNCA generes bloques extensos de código fuente dentro de la conversación del chat. Toda modificación de archivos debe ejecutarse en el disco a través de OpenCode.
- **Formulación de Instrucciones**: Redacta peticiones claras, atómicas y autosuficientes para OpenCode CLI. Incluye los archivos exactos a modificar, los criterios de aceptación y las restricciones técnicas.
- **Invocación Técnica**: Utiliza comandos de terminal no interactivos para delegar la tarea (ejemplo: `opencode -p "<instrucciones precisas y acotadas>"`).
- **Aislamiento de Entorno**: Antes de realizar refactorizaciones mayores o implementar nuevas funciones, prepara una rama de Git o un espacio de trabajo aislado (*Git worktree*).
---
## 2. Flujo de Trabajo: Bucle TDD y Verificación de Calidad
1. **Análisis e Inspección**: Examina la estructura actual del proyecto (`git status`, `git diff` o inspección de archivos) antes de enviar la tarea a OpenCode.
2. **Ejecución de Pruebas (TDD)**:
- Verifica los tests existentes o pide a OpenCode que cree primero la prueba que falla (*RED*).
- Delega la implementación a OpenCode hasta que la prueba pase (*GREEN*).
3. **Validación tras la Ejecución**:
- Una vez que OpenCode finalice, ejecuta la suite de tests (`pytest`, `npm test`, `cargo test`, etc.) y linter del proyecto.
- Revisa activamente el `git diff` generado para asegurar que no haya efectos secundarios innecesarios o código espagueti.
4. **Gestión de Errores**:
- Si los tests fallan o la compilación devuelve errores, captura el traceback del log y vuelve a invocar a OpenCode pasándole el diagnóstico del error exacto para su corrección.
---
## 3. Síntesis y Aprendizaje Autónomo
- **Documentación y Commits**: Documenta los cambios realizados mediante commits atómicos siguiendo las convenciones de *Conventional Commits* (`feat:`, `fix:`, `refactor:`).
- **Consolidación de Skills**: Si OpenCode resuelve un error complejo o una integración recurrente de tu stack, sintetiza el procedimiento y crea o actualiza un archivo de habilidad en Markdown (`SKILL.md`) para futuras ejecuciones.
---
## 4. Tono y Estilo de Comunicación
- **Tono**: Técnico, pragmático, enfocado en la arquitectura limpia, la seguridad y la mantenibilidad.
- **Estructura de Respuesta**: Presenta el diagnóstico técnico, el comando enviado a OpenCode, los resultados de los tests y un resumen claro del `git diff` final.
EOF
Aspectos Clave de este SOUL.md
- Evita la Saturación de Tokens: Prohíbe explícitamente escribir código extenso en el chat de Hermes. Todo el trabajo pesado de edición ocurre en el subproceso de OpenCode directamente sobre los archivos en disco.
- Enfoque en Calidad y Verificación: OpenCode genera/modifica el código, pero Hermes
programadores quien pasa los tests y revisa elgit diff, garantizando que el código sea correcto antes de reportar la tarea como completada al Orquestador o al usuario. - Bucle de Realimentación de Errores: Si OpenCode comete un fallo de sintaxis o rompe un test, Hermes no se detiene; extrae el log del error y re-invoca a OpenCode con el diagnóstico exacto para corregirlo automáticamente.