Agent Loop - Próximos Passos Implementados
✅ Status: Implementado
Todos os próximos passos opcionais foram implementados e estão prontos para uso.
📋 Componentes Implementados
1️⃣ SQLs Corrigidos
Arquivo: sql/16_agent_loop_policy_decay_integration_fixed.sql
- ✅ View
vw_policy_decay_from_timelinecorrigida - ✅ Procedure
sp_ctx_detect_decay_from_timelinecorrigida - ✅ Procedure
sp_ctx_autotune_from_timelinecorrigida
Aplicação:
# Aplicar SQL corrigido
python3 sql/apply_detection_job.py sql/16_agent_loop_policy_decay_integration_fixed.sql
2️⃣ Script de Setup de Cron Jobs
Arquivo: scripts/agent_loop_cron_setup.sh
Funcionalidades:
- Configura cron jobs automaticamente
- Cria diretório de logs
- Evita duplicatas ao re-executar
Jobs configurados:
1. Detection Job: A cada hora (00:00, 01:00, 02:00, ...)
2. Memory Feed: Diário às 03:00
3. Policy Decay Detection: Semanal (Quarta-feira às 06:30)
Uso:
# Executar setup
./scripts/agent_loop_cron_setup.sh
# Verificar jobs configurados
crontab -l
# Ver logs
tail -f logs/agent_loop_detection.log
tail -f logs/agent_loop_memory_feed.log
tail -f logs/agent_loop_decay_detection.log
Remover jobs:
# Editar crontab
crontab -e
# Ou remover todos os jobs do Agent Loop
crontab -l | grep -v "agent_loop" | crontab -
3️⃣ Script de Backfill de Snapshots
Arquivo: scripts/agent_loop_backfill_snapshots.py
Funcionalidades:
- Cria snapshots retroativos para decisões antigas
- Processa decisões sem snapshot
- Monta snapshot JSON básico a partir de dados disponíveis
Uso:
# Backfill dos últimos 30 dias (máximo 100 decisões)
python3 scripts/agent_loop_backfill_snapshots.py 30 100
# Backfill dos últimos 7 dias (máximo 50 decisões)
python3 scripts/agent_loop_backfill_snapshots.py 7 50
# Backfill dos últimos 90 dias (máximo 500 decisões, org_id=0)
python3 scripts/agent_loop_backfill_snapshots.py 90 500 0
Parâmetros:
- days_back: Quantos dias para trás processar (padrão: 30)
- limit: Limite de decisões a processar (padrão: 100)
- org_id: ID da organização (padrão: 0 = todas)
O que faz:
1. Busca decisões sem snapshot nos últimos N dias
2. Para cada decisão:
- Extrai dados de pg_decision_log
- Monta snapshot JSON básico
- Tenta inferir policy_code do decision_id
- Chama sp_ctx_snapshot_decision_context para criar snapshot
3. Retorna estatísticas de sucesso/erro
Exemplo de saída:
============================================================
🔄 Agent Loop - Backfill de Snapshots Antigos
============================================================
📊 Parâmetros:
- Dias para trás: 30
- Limite: 100
- Org ID: 0
🔍 Buscando decisões sem snapshot...
📋 Encontradas 40 decisões sem snapshot
[1/40] Processando decision_log_id 1234 (720h atrás)... ✅
[2/40] Processando decision_log_id 1235 (719h atrás)... ✅
...
============================================================
✅ BACKFILL CONCLUÍDO!
============================================================
✅ Sucesso: 38
❌ Erros: 2
📊 Total: 40
4️⃣ Teste da UI Decision Timeline
URL: https://csuite.internut.com.br/executive/decision-timeline
Funcionalidades disponíveis:
- Visualização em timeline de todas as decisões
- Filtros por policy, entity_type, entity_ref
- Estatísticas de cobertura (snapshot, outcome)
- Visualização de contexto JSON (snapshot)
- Badges de status (SUCCESS, FAILURE, PENDING)
Como testar:
1. Acesse a URL acima
2. Use os filtros para explorar decisões
3. Clique em "Ver contexto (snapshot)" para ver o JSON completo
4. Verifique as estatísticas no topo da página
🔄 Fluxo Completo de Uso
Setup Inicial
# 1. Aplicar SQLs corrigidos
python3 sql/apply_detection_job.py sql/16_agent_loop_policy_decay_integration_fixed.sql
# 2. Configurar cron jobs
./scripts/agent_loop_cron_setup.sh
# 3. (Opcional) Backfill de snapshots antigos
python3 scripts/agent_loop_backfill_snapshots.py 30 100
Monitoramento
# Ver logs do detection job
tail -f logs/agent_loop_detection.log
# Ver logs do memory feed
tail -f logs/agent_loop_memory_feed.log
# Ver logs do decay detection
tail -f logs/agent_loop_decay_detection.log
# Verificar saúde do Agent Loop
python3 scripts/agent_loop_detection_job.py
Uso Manual
# Executar memory feed manualmente
python3 -c "
import pymysql
conn = pymysql.connect(host='...', user='...', password='...', database='csuite_memory')
cursor = conn.cursor()
cursor.callproc('sp_ctx_feed_memory_from_timeline', [0, 7, 100, 'system'])
conn.commit()
"
# Executar decay detection manualmente
python3 -c "
import pymysql
conn = pymysql.connect(host='...', user='...', password='...', database='csuite_memory')
cursor = conn.cursor()
cursor.callproc('sp_ctx_detect_decay_from_timeline', [0, 2, 'system'])
conn.commit()
"
# Executar auto-tuning (dry run)
python3 -c "
import pymysql
conn = pymysql.connect(host='...', user='...', password='...', database='csuite_memory')
cursor = conn.cursor()
cursor.callproc('sp_ctx_autotune_from_timeline', [0, 'INV_LOW_TURN', 1, 'system'])
result = cursor.fetchall()
for row in result:
print(row)
"
📊 Verificação de Status
Verificar componentes aplicados
-- Verificar views
SHOW FULL TABLES WHERE Table_type = 'VIEW'
AND Tables_in_csuite_context LIKE 'vw_%decision%'
OR Tables_in_csuite_memory LIKE 'vw_%decay%';
-- Verificar procedures
SELECT ROUTINE_NAME
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA IN ('csuite_context', 'csuite_memory')
AND ROUTINE_NAME LIKE 'sp_ctx_%'
ORDER BY ROUTINE_SCHEMA, ROUTINE_NAME;
Verificar saúde do Agent Loop
-- Métricas de saúde
SELECT * FROM csuite_context.vw_agent_loop_health;
-- Decisões sem snapshot
SELECT * FROM csuite_context.vw_decisions_missing_snapshot
WHERE age_category = 'RECENT'
ORDER BY hours_since_decision ASC
LIMIT 20;
Verificar policy decay
-- Políticas com decay
SELECT
policy_code,
decay_score,
success_rate_pct,
avg_delta_score,
total_decisions
FROM csuite_memory.vw_policy_decay_from_timeline
WHERE org_id = 0
AND decay_score <= 2
ORDER BY decay_score ASC, success_rate_pct ASC;
🎯 Checklist de Implementação
- [x] SQLs corrigidos e aplicados
- [x] Script de setup de cron jobs criado
- [x] Script de backfill de snapshots criado
- [x] Documentação completa
- [x] Scripts com permissões de execução
Status: ✅ TUDO IMPLEMENTADO E PRONTO PARA USO
📚 Referências
- Agent Loop Complete:
docs/AGENT_LOOP_COMPLETE.md - Agent Loop Implementation:
docs/AGENT_LOOP_IMPLEMENTATION.md - Agent Loop Integration:
docs/AGENT_LOOP_INTEGRATION.md - Agent Loop Detection Job:
docs/AGENT_LOOP_DETECTION_JOB.md