Ir al contenido

Los 7 agentes ADK: roles, tools y comunicación A2A

Cada agente tiene una única responsabilidad. Ninguno recibe datos directamente de otro — todos buscan y leen los artefactos que dejaron los agentes anteriores en el sistema de archivos.


Rol: Diseñador del IDP — toma todas las decisiones de stack.

{
"task": "Build IDP for Python FastAPI apps",
"deploy_mode": "local"
}
  • Analizar los requerimientos de la tarea
  • Seleccionar el stack tecnológico completo
  • Justificar cada decisión con contexto
  • Generar la especificación de arquitectura como primer artefacto
RequerimientoStack localStack cloud
DeploymentDocker ComposeTerraform + Cloud Run
Base de datosPostgreSQL containerCloud SQL
MonitoreoGrafana + PrometheusGrafana Cloud
Secretsarchivo .envSecret Manager
CI/CDScripts Bash + JenkinsGitHub Actions / GitLab CI
# platform-config.yaml
version: "1.0"
deployment:
mode: local
orchestration: docker-compose
database:
type: postgresql
version: "15"
monitoring:
metrics: prometheus
visualization: grafana
security:
scanner: trivy
cicd:
build: docker
test: pytest
deploy: docker-compose

Rol: Provisionador de recursos — convierte decisiones en código de infraestructura.

platform-config.yaml generado por el Arquitecto.

  • Leer la configuración del Arquitecto
  • Generar Docker Compose con todos los servicios, healthchecks, networks y volúmenes
  • Asegurar que los servicios dependientes tienen depends_on correctos
  • Validar las configuraciones generadas antes de escribirlas
# docker-compose/app-stack.yml
version: '3.8'
services:
app:
build: ./demo-app
ports: ["8000:8000"]
environment:
DATABASE_URL: postgresql://user:pass@postgres:5432/db
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: db
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user"]
redis:
image: redis:alpine
prometheus:
image: prom/prometheus:latest
grafana:
image: grafana/grafana:latest

Rol: Guardián — puede bloquear el pipeline si detecta issues críticos.

docker-compose/app-stack.yml + Dockerfiles generados por Infrastructure.

  • Escanear imágenes Docker con Trivy
  • Detectar secrets hardcodeados en configuraciones
  • Verificar que los puertos expuestos son los correctos
  • Aplicar políticas de seguridad según severidad
SeveridadAcción
CRITICALBloquea el deploy — el pipeline no continúa
HIGHBloquea el deploy (configurable)
MEDIUMWarning — logueado en el reporte
LOWInfo — logueado en el reporte
{
"status": "passed",
"scan_results": {
"dockerfile": {
"issues": [],
"score": 95
},
"image_scan": {
"critical": 0,
"high": 0,
"medium": 2,
"low": 15
},
"secrets_detected": false
},
"recommendations": [
"Considerar actualizar postgres a 15.2"
],
"blocked": false
}

Rol: Automatización de deployment — genera los scripts adaptados al stack.

platform-config.yaml + validación aprobada de Security Agent.

  • Generar scripts de build, test y deploy adaptados al stack detectado
  • Crear el Jenkinsfile para el pipeline completo
  • Integrar el escaneo de seguridad dentro del pipeline
  • Configurar procedimientos de rollback
#!/bin/bash
# cicd/deploy.sh
set -e
echo "Building Docker image..."
docker build -t app:latest ./demo-app
echo "Running tests..."
docker run --rm app:latest pytest tests/ -v
echo "Security scan..."
trivy image --severity CRITICAL,HIGH app:latest
echo "Deploying..."
docker-compose -f docker-compose/app-stack.yml up -d
echo "✓ App: http://localhost:8000"
echo "✓ Grafana: http://localhost:3000"

Rol: Configuración de monitoreo completo con Prometheus y Grafana.

platform-config.yaml

  • Configurar Prometheus con scrape configs para la app generada
  • Crear dashboard de métricas de aplicación
  • Crear dashboard de métricas del sistema
  • Configurar reglas de alertas básicas
DashboardMétricas
app-metrics.jsonAPI Latency (p50/p95/p99), Error Rate por endpoint, Request Throughput
system-metrics.jsonCPU usage, Memory usage, Disk I/O, Network in/out
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'fastapi-app'
static_configs:
- targets: ['app:8000']
metrics_path: '/metrics'

Rol: Herramientas para desarrolladores — CLI tool ejecutable adaptada al proyecto.

Todos los outputs de los agentes anteriores — lee el stack completo para generar comandos coherentes.

  • Generar CLI tool ejecutable con comandos específicos del proyecto
  • Los comandos se adaptan al stack detectado — no son genéricos
#!/bin/bash
# cli-tool/idp
case "$1" in
init)
echo "Inicializando nuevo proyecto..."
;;
build)
docker build -t app:latest .
;;
test)
docker run --rm app:latest pytest
;;
deploy)
docker-compose -f docker-compose/app-stack.yml up -d
;;
status)
docker-compose ps
;;
logs)
docker-compose logs -f
;;
*)
echo "Usage: idp {init|build|test|deploy|status|logs}"
;;
esac

Rol: Portal web self-service — el artefacto más complejo del sistema (~45s).

Toda la configuración del IDP generada por los 6 agentes anteriores.

  • Generar portal web completo con FastAPI backend
  • Dashboard con servicios running conectado a Docker API en tiempo real
  • Catálogo de templates para crear nuevos servicios
  • Formulario para crear servicios con 1 click
  • Integración de Grafana embebido para visualización de métricas
portal/
├── main.py — FastAPI app
├── routes/
│ ├── dashboard.py — Estado de servicios (Docker API)
│ ├── catalog.py — Catálogo de templates
│ └── services.py — CRUD de servicios
├── templates/
│ ├── base.html — Layout con TailwindCSS
│ ├── dashboard.html — Dashboard principal
│ ├── catalog.html — Templates disponibles
│ └── create_service.html — Formulario crear servicio
├── services/
│ ├── docker_manager.py — Cliente Docker API
│ └── template_manager.py — Generador de proyectos
├── static/
│ └── js/htmx.min.js
├── requirements.txt
└── Dockerfile
LayerTecnologíaRazón
BackendFastAPIAPI REST + documentación automática
TemplatesJinja2HTML server-side, sin build step
InteractividadHTMXActualizaciones parciales sin JS complejo
EstilosTailwindCSSUI profesional generada directamente
Datos en tiempo realDocker SDKEstado real de los servicios, no mock