CTO Agent - Documentação Completa
📋 Visão Geral
O CTO Agent (Chief Technology Officer) é um agente executivo do CSuite que protege infraestrutura técnica e inovação. Ele monitora saúde de infraestrutura, performance, planejamento de capacidade e dívida técnica.
Status: ✅ Implementado (v1.0.0) - Pronto para uso
🎯 Propósito
O CTO Agent existe para:
- Monitorar Infraestrutura: Acompanhar saúde de Docker Swarm, serviços e redes
- Monitorar Performance: Acompanhar latência, throughput e erros
- Planejar Capacidade: Avaliar necessidade de escalabilidade
- Analisar Dívida Técnica: Identificar e priorizar dívida técnica
- Identificar Inovação: Detectar oportunidades de inovação técnica
🏗️ Arquitetura
Fluxo de Execução
1. Recebe Payload
↓
2. Build Context
├─ Infrastructure Health (Docker Swarm, serviços, redes)
├─ Performance Metrics (latência, throughput, erros)
├─ Capacity Planning (escalabilidade, recursos)
├─ Technical Debt (dívida técnica, políticas)
└─ Memory Query (precedentes técnicos)
↓
3. Determine Decision Type
├─ CTO.SCALE_SERVICE (escalar serviço)
├─ CTO.ALERT_DEGRADATION (alerta de degradação)
├─ CTO.RECOMMEND_UPGRADE (recomendar upgrade)
└─ CTO.ESCALATE_INCIDENT (escalar incidente)
↓
4. Calculate Confidence
↓
5. Propose Actions
├─ SCALE_SERVICE
├─ ALERT_DEGRADATION
├─ RECOMMEND_UPGRADE
└─ ESCALATE_INCIDENT
↓
6. Policy Validation
↓
7. Policy Engine Integration
↓
8. Execute Actions
↓
9. Record Outcome
Componentes
- YAML Config:
agents/cto/cto_agent.yaml- Configuração canônica - Script Python:
workflows/scripts/cto_agent_daily_brief.py- Execução diária - Cron Setup:
workflows/scripts/setup_cron_cto.sh- Configuração de cron
🔌 Integrações
1. Gateway
Base URL: https://csuite.internut.com.br
| Endpoint | Descrição | Uso |
|---|---|---|
GET /api/status |
Status de serviços | Health checks de todos os serviços |
GET /api/metrics |
Métricas agregadas | Performance e latência |
2. Policy Engine
Base URL: https://csuite.internut.com.br/executive
| Endpoint | Descrição | Uso |
|---|---|---|
POST /v1/policy/evaluate |
Avaliar decisão | Validação de políticas técnicas |
GET /v1/governance/policies/radar |
Policy Radar | Políticas técnicas |
3. Executive API
Base URL: https://csuite.internut.com.br/executive
| Endpoint | Descrição | Uso |
|---|---|---|
POST /v1/memory/query |
Consultar memória | Precedentes técnicos |
4. Docker Swarm
Comandos: docker service ls, docker stats
| Comando | Descrição | Uso |
|---|---|---|
docker service ls |
Listar serviços | Status de serviços no Swarm |
docker stats |
Estatísticas | Uso de recursos |
📥 Payload de Entrada
Formato Padrão
{
"org_id": 0,
"as_of_date": "2025-01-04",
"time_window_days": 7,
"focus": {
"themes": ["infrastructure_health", "performance", "capacity_planning", "technical_debt"],
"constraints": []
},
"attention": {
"max_recommendations": 3,
"max_output_tokens": 1200
}
}
Campos
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
org_id |
integer | ✅ | ID da organização |
as_of_date |
string | ✅ | Data de referência (YYYY-MM-DD) |
time_window_days |
integer | ❌ | Janela de análise (padrão: 7) |
focus.themes |
array | ❌ | Temas de foco |
attention.max_recommendations |
integer | ❌ | Máximo de recomendações (padrão: 3) |
📤 Payload de Saída
Formato Padrão
{
"decision": {
"decision_type": "CTO.SCALE_SERVICE | CTO.ALERT_DEGRADATION | CTO.RECOMMEND_UPGRADE | CTO.ESCALATE_INCIDENT",
"confidence": 0.85,
"proposed_actions": [
{
"action": "SCALE_SERVICE",
"service_name": "csuite-gateway",
"reason": "Alta latência detectada",
"recommendation": "Escalar para 3 réplicas"
}
]
},
"context": {
"infrastructure_health": {
"summary": "Resumo da saúde de infraestrutura",
"health_score": 0.95,
"services_status": [],
"docker_swarm_status": "active"
},
"performance_analysis": {
"avg_response_time_ms": 150.0,
"performance_trends": [],
"bottlenecks": []
},
"capacity_planning": {
"services_needing_attention": [],
"capacity_concerns": false,
"scalability_recommendations": []
},
"technical_debt": {
"debt_score": 0.3,
"debt_indicators": [],
"debt_priorities": []
}
},
"execution": {
"status": "completed",
"actions": []
},
"opportunities": [
{
"type": "SCALE_SERVICE",
"description": "Serviço com alta latência",
"impact": "alto | médio | baixo",
"confidence": 0.85,
"service_name": "csuite-gateway"
}
],
"recommendations": [
{
"action": "Escalar serviço csuite-gateway",
"reason": "Alta latência detectada",
"priority": "alta",
"technical_impact": "alto"
}
],
"next_steps": [
"Escalar serviço",
"Monitorar performance",
"Validar escalabilidade"
],
"generated_at": "2025-01-04T08:45:00",
"org_id": 0,
"as_of_date": "2025-01-04"
}
🔄 Decision Types
CTO.SCALE_SERVICE
Descrição: Escalar serviço
Condições:
- Alta latência detectada (> 1s)
- Alta carga de trabalho
- Serviço saudável mas lento
- Confidence >= 0.7
Ações:
- SCALE_SERVICE: Escalar serviço
- ALERT_DEGRADATION: Alertar sobre degradação
CTO.ALERT_DEGRADATION
Descrição: Alerta de degradação de performance
Condições:
- Performance degradada detectada
- Latência aumentando
- Throughput diminuindo
- Confidence >= 0.8
Ações:
- ALERT_DEGRADATION: Enviar alerta
- SCALE_SERVICE: Escalar (se necessário)
CTO.RECOMMEND_UPGRADE
Descrição: Recomendar upgrade técnico
Condições:
- Dívida técnica identificada
- Tecnologia desatualizada
- Oportunidade de melhoria
- Confidence >= 0.9
Ações:
- RECOMMEND_UPGRADE: Recomendar upgrade
- ALERT_DEGRADATION: Alertar sobre necessidade
CTO.ESCALATE_INCIDENT
Descrição: Escalar incidente técnico
Condições:
- Incidente crítico detectado
- Múltiplos serviços afetados
- Impacto alto
- Confidence >= 0.7
Ações:
- ESCALATE_INCIDENT: Escalar para equipe técnica
- ALERT_DEGRADATION: Alertar sobre incidente
🎛️ Autonomia
Níveis de Autonomia
| Nível | Descrição | Condição |
|---|---|---|
| L0 | Sempre recomendação | SCALE_SERVICE, ESCALATE_INCIDENT, ou confidence < 0.7 |
| L1 | Alerta automático | ALERT_DEGRADATION e confidence >= 0.8 |
| L2 | Recomendar upgrade automaticamente | RECOMMEND_UPGRADE e confidence >= 0.9 |
⚙️ Configuração
Variáveis de Ambiente
# LLM
OPENAI_API_KEY=sk-...
LLM_MODEL=gpt-4o-mini
# CSuite Services
CSUITE_POLICY_ENGINE_URL=https://csuite.internut.com.br/executive
CSUITE_EXECUTIVE_URL=https://csuite.internut.com.br/executive
CSUITE_GATEWAY_URL=https://csuite.internut.com.br
CSUITE_MEMORY_URL=https://csuite.internut.com.br/executive
# Webhook
CTO_BRIEF_WEBHOOK_URL=https://hooks.slack.com/services/...
# Configuração
ORG_ID=0
TIME_WINDOW_DAYS=7
Cron Job
O CTO Agent executa diariamente às 08:45:
cd workflows/scripts
./setup_cron_cto.sh
Cron Entry:
45 8 * * * cd /path/to/workflows/scripts && /usr/bin/python3 cto_agent_daily_brief.py >> logs/cto_agent_cron.log 2>&1
🚀 Uso
Execução Manual
cd workflows/scripts
python3 cto_agent_daily_brief.py
Output
O brief é publicado no Slack e salvo em arquivo JSON:
cto_brief_YYYYMMDD_HHMMSS.json
Formato do Brief no Slack
O brief é formatado com:
- Header com status de saúde (🟢/🟡/🔴 baseado em health_score)
- Contexto técnico
- Saúde de infraestrutura (score)
- Performance (latência média)
- Capacidade (preocupações)
- Oportunidades identificadas
- Recomendações prioritárias
- Próximos passos
🔍 Métricas Monitoradas
Infrastructure Health
- Services Status: Status de todos os serviços (healthy, unhealthy, unreachable)
- Docker Swarm Status: Status do Docker Swarm (active, inactive)
- Health Score: Score geral de saúde (0.0 a 1.0)
- Services Count: Número total de serviços
Performance
- Avg Response Time: Latência média de resposta (ms)
- Response Time Trends: Tendências de latência
- Bottlenecks: Gargalos identificados
- Throughput: Taxa de processamento
Capacity Planning
- Services Needing Attention: Serviços que precisam de atenção
- Capacity Concerns: Preocupações de capacidade
- Scalability Recommendations: Recomendações de escalabilidade
Technical Debt
- Debt Score: Score de dívida técnica (0.0 a 1.0)
- Debt Indicators: Indicadores de dívida técnica
- Debt Priorities: Prioridades de dívida técnica
🛠️ Troubleshooting
Erro: "OPENAI_API_KEY não configurada"
Solução: Configure a variável de ambiente OPENAI_API_KEY ou LLM_API_KEY.
Erro: "Gateway retornou 404"
Solução: Verifique se o csuite-gateway está rodando e acessível.
Erro: "Docker Swarm não disponível"
Solução: Verifique se o Docker Swarm está ativo e acessível. O agente continuará funcionando sem Docker Swarm.
Brief não publicado no Slack
Solução:
1. Verifique se CTO_BRIEF_WEBHOOK_URL está configurada
2. Verifique se o webhook do Slack está válido
3. Verifique logs em cto_agent.log
📚 Referências
- YAML Config:
agents/cto/cto_agent.yaml - Script Python:
workflows/scripts/cto_agent_daily_brief.py - README:
agents/cto/README.md - Monitoring Guide:
docs/operations/MONITORING_GUIDE.md - Health Checks:
docs/operations/HEALTH_CHECKS.md
Última atualização: 2025-01-04