Agent Loop Next Steps

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

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

Status:TUDO IMPLEMENTADO E PRONTO PARA USO


📚 Referências

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir