Agent Templates - CSuite (v1) - Documentação Oficial
Visão Geral
Os Agent Templates são templates canônicos, reutilizáveis e governáveis, baseados no Agent Loop v1, que transformam o CSuite em uma plataforma decisional auto-evolutiva.
Arquitetura
Template Base (Herdado por Todos)
Todo agente CSuite deve:
- ✅ Gravar
pg_decision_log(viainstrument_decision) - ✅ Congelar contexto (
ctx_decision_context_snapshot) - ✅ Executar via
execution_action_ledger - ✅ Fechar outcome (
ctx_policy_outcomes) - ✅ Alimentar memória (
csuite_memory) - ✅ Respeitar policies (
ctx_policy_registry)
Estrutura Padrão
Cada agente segue a mesma estrutura:
agent/
├── main.py # Entrypoint FastAPI
├── context.py # Context Builder (snapshot_json)
├── decision.py # Decision Engine (integra com Policy Engine)
├── execution.py # Execution Handler (execution_action_ledger)
└── policies.py # Policy Guardrails (validações locais)
Templates Canônicos
1️⃣ Sales Agent (CSuite.Sales.Agent)
Propósito: Converter intenção comercial em decisão executável com governança.
Decision Types
SALES.QUOTE: Criar orçamentoSALES.FOLLOW_UP: Agendar follow-upSALES.ESCALATION: Escalar para humanoSALES.REJECT: Rejeitar oportunidade
Contexto Mínimo
{
"customer": { "id", "segment", "rfm_score", "credit_status" },
"product": { "sku", "stock", "base_price" },
"pricing": { "price_tier", "max_discount" },
"history": { "last_quote_at", "conversion_rate" }
}
Ações Permitidas
CREATE_QUOTE: Criar orçamentoSEND_MESSAGE: Enviar mensagemSCHEDULE_FOLLOWUP: Agendar follow-upESCALATE_TO_HUMAN: Escalar para humano
Outcomes Esperados
QUOTE_ACCEPTEDNO_RESPONSEQUOTE_REJECTEDESCALATED
Autonomia
| Nível | Condição |
|---|---|
| L0 | Sempre recomendação |
| L1 | Execução automática para RFM >= 70 |
| L2 | Follow-up automático |
| L3 | Ajuste dinâmico de desconto (guardado por policy) |
Policies
SALES_DISCOUNT_MAX: Desconto máximo 8%SALES_RFM_AUTONOMY: Autonomia L1 para RFM >= 70
2️⃣ Pricing Agent (CSuite.Pricing.Agent)
Propósito: Otimizar preço respeitando margem, elasticidade e risco.
Decision Types
PRICING.ADJUST: Ajustar preçoPRICING.HOLD: Manter preçoPRICING.BLOCK: Bloquear descontoPRICING.PROMOTION: Ativar promoção
Contexto Mínimo
{
"sku": { "id", "cost", "margin" },
"inventory": { "days_on_hand", "turn_rate" },
"market": { "elasticity", "competitor_price" },
"policy": { "floor_margin", "max_discount" }
}
Ações Permitidas
UPDATE_PRICE: Atualizar tabela de preçoACTIVATE_PROMOTION: Ativar promoçãoBLOCK_DISCOUNT: Bloquear descontoSUGGEST_COMMERCIAL_ACTION: Sugerir ação comercial
Outcomes
PRICE_ACCEPTEDMARGIN_DRIFTVOLUME_UPVOLUME_DOWN
Autonomia
| Nível | Condição |
|---|---|
| L0 | Recomendação |
| L1 | Ajustes ≤ 5% |
| L2 | Promoções automáticas |
| L3 | Otimização contínua |
Policies
PRICE_MARGIN_FLOOR: Margem mínima 18%PRICE_ADJUST_LIMIT: Ajuste máximo 5%
3️⃣ Operations Agent (CSuite.Operations.Agent)
Propósito: Manter execução estável, previsível e eficiente.
Decision Types
OPS.DISPATCH: Disparar processoOPS.RETRY: ReexecutarOPS.REASSIGN: ReatribuirOPS.ESCALATE: Escalar
Contexto Mínimo
{
"process": { "type", "sla", "attempts" },
"resource": { "id", "capacity", "status" },
"history": { "failures", "latency" }
}
Ações Permitidas
TRIGGER_PROCESS: Disparar processoRETRY: ReexecutarREASSIGN: ReatribuirOPEN_INCIDENT: Abrir incidente
Outcomes
EXECUTEDFAILEDRETRIEDESCALATED
Autonomia
| Nível | Condição |
|---|---|
| L0 | Manual |
| L1 | Retry automático |
| L2 | Rebalanceamento |
| L3 | Self-healing |
Policies
OPS_RETRY_LIMIT: Limite de 3 retriesOPS_AUTO_REASSIGN: Reatribuição quando failure_rate > 30%
4️⃣ Risk Agent (CSuite.Risk.Agent)
Propósito: Detectar, priorizar e mitigar riscos antes de virarem crises.
Decision Types
RISK.ALERT: Criar alertaRISK.BLOCK: Bloquear operaçãoRISK.MONITOR: MonitorarRISK.CLOSE: Fechar risco
Contexto Mínimo
{
"signal": { "type", "severity" },
"entity": { "type", "ref" },
"trend": { "direction", "velocity" },
"policy": { "thresholds" }
}
Ações Permitidas
CREATE_ALERT: Criar alertaBLOCK_OPERATION: Bloquear operaçãoREQUEST_REVIEW: Solicitar revisãoCLOSE_RISK: Fechar risco
Outcomes
RISK_CONFIRMEDFALSE_POSITIVEMITIGATEDESCALATED
Autonomia
| Nível | Condição |
|---|---|
| L0 | Alerta |
| L1 | Monitoramento automático |
| L2 | Bloqueio parcial |
| L3 | Bloqueio total |
Policies
RISK_BLOCK_SEVERITY: Bloqueio quando risk_score >= 85RISK_FALSE_POSITIVE_DECAY: Reduz sensibilidade quando false_positive_rate > 40%
Agent Registry
Tabela: agent_registry
Registra todos os agentes do sistema:
SELECT * FROM csuite_agents.agent_registry;
Campos principais:
- agent_code: Código único (ex: CSuite.Sales.Agent)
- agent_domain: Domínio (SALES, PRICING, OPS, RISK)
- autonomy_level: Nível de autonomia (L0, L1, L2, L3)
- metadata_json: Decision types, ações, outcomes
Tabela: agent_runs
Registra execuções de agentes:
SELECT * FROM csuite_agents.agent_runs
WHERE agent_code = 'CSuite.Sales.Agent'
ORDER BY started_at DESC
LIMIT 10;
Links:
- decision_log_id → pg_decision_log
- outcome_id → ctx_policy_outcomes
View: vw_agent_performance
Performance agregada por agente:
SELECT * FROM csuite_agents.vw_agent_performance;
Métricas:
- Total de runs
- Taxa de sucesso
- Confiança média
- Latência média
Policy Packs
Policy Packs são registrados em ctx_policy_registry:
Sales Policy Pack
SALES_DISCOUNT_MAXSALES_RFM_AUTONOMY
Pricing Policy Pack
PRICE_MARGIN_FLOORPRICE_ADJUST_LIMIT
Ops Policy Pack
OPS_RETRY_LIMITOPS_AUTO_REASSIGN
Risk Policy Pack
RISK_BLOCK_SEVERITYRISK_FALSE_POSITIVE_DECAY
Integração com Agent Loop v1
Fluxo Completo
1. Request → Agent
2. Agent → Context Builder → snapshot_json
3. Agent → Decision Engine → decision
4. Decision Engine → Policy Engine → pg_decision_log
5. Policy Engine → Snapshot → ctx_decision_context_snapshot
6. Policy Engine → Outcome → ctx_policy_outcomes
7. Agent → Execution → execution_action_ledger
8. Agent → Registry → agent_runs
9. Memory Feed → csuite_memory (precedents)
Exemplo de Integração
# Em decision.py
from app.policy_engine.instrumentation import instrument_decision
from app.policy_engine.outcome_recorder import record_outcome_from_decision
# Cria request
req = EvaluateRequest(
decision_id=f"{agent_code}:{decision_type}",
actor=f"{agent_code}:system",
inputs={"org_id": org_id, "payload": payload, "context": context}
)
# Instrumenta (grava pg_decision_log + snapshot)
decision_log_id = instrument_decision(db, req, resp, start_time)
# Registra outcome
record_outcome_from_decision(
db=db,
decision_log_id=decision_log_id,
org_id=org_id,
policy_code=decision_type,
entity_type=entity_type,
entity_ref=entity_ref,
action_taken=action_taken,
created_by=agent_code
)
# Registra run
db.execute(text("""
CALL csuite_agents.sp_register_agent_run(...)
"""))
Uso
Executar Agente
# Sales Agent
curl -X POST http://localhost:8001/run \
-H "Content-Type: application/json" \
-d '{
"org_id": 0,
"customer": {"id": "CUST-123", "rfm_score": 75},
"product": {"sku": "PROD-456", "base_price": 10000},
"pricing": {"max_discount": 8}
}'
Ver Performance
SELECT
agent_code,
total_runs,
success_rate_pct,
avg_confidence,
avg_latency_ms
FROM csuite_agents.vw_agent_performance
WHERE agent_domain = 'SALES';
Ver Runs Recentes
SELECT
r.run_id,
r.agent_code,
r.run_status,
r.confidence_score,
r.started_at,
d.decision_id,
o.status AS outcome_status
FROM csuite_agents.agent_runs r
LEFT JOIN csuite_executive.pg_decision_log d
ON d.decision_log_id = r.decision_log_id
LEFT JOIN csuite_context.ctx_policy_outcomes o
ON o.decision_log_id = r.decision_log_id
WHERE r.started_at >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
ORDER BY r.started_at DESC;
Benefícios
✅ Reutilizável
- Mesma estrutura para todos os agentes
- Fácil criar novos agentes baseados nos templates
✅ Comparável
- Mesmas métricas para todos
- Performance agregada por domínio
✅ Governável
- Policies versionáveis
- Autonomia progressiva baseada em dados
- Auditoria completa
✅ Auto-Evolutivo
- Outcomes alimentam memória
- Policies ajustam automaticamente
- Autonomia evolui com confiança
Próximos Passos
- Integrar com sistemas reais
-
Orçamentos, precificação, processos, alertas
-
Evoluir autonomia
- Aumentar autonomia baseado em performance
-
Ajustar thresholds dinamicamente
-
Adicionar novos agentes
- Inventory Agent
- Customer Service Agent
-
Finance Agent
-
Machine Learning
- Treinar modelos por agente
- Otimizar decisões baseado em outcomes
Conclusão
Os Agent Templates transformam o CSuite de um "sistema com agentes" em uma plataforma decisional auto-evolutiva, onde:
- ✅ Agentes são governáveis (policies versionáveis)
- ✅ Decisões são auditáveis (snapshot + timeline)
- ✅ Outcomes são observáveis (métricas + aprendizado)
- ✅ Autonomia é progressiva (baseada em dados)
Isso não é um MVP. É uma arquitetura de produção.