Event Sourcing
Cada ação do agente é registrada como um evento imutável. Eventos são a única fonte de verdade para o que aconteceu durante uma sessão.
Tipos de Evento
O sistema rastreia 16 tipos de eventos em 6 categorias:
| Categoria | Tipo de Evento | Descrição |
|---|---|---|
| Sessão | SessionStart | Nova sessão de conversa inicia |
SessionEnd | Sessão encerrada | |
| Conversa | UserMessage | Usuário envia uma mensagem |
AssistantResponse | Agente envia uma resposta | |
| Ferramentas | ToolCall | Agente invoca uma ferramenta |
ToolResult | Execução da ferramenta concluída | |
| Raciocínio | ThinkingStart | Agente começa a raciocinar |
| Tarefas | TaskStart | Agente inicia uma tarefa |
TaskEnd | Tarefa concluída (com status) | |
| Erros | Error | Erro ocorre durante o processamento |
| Sub-Agentes | SubAgentSpawn | Sub-agente é iniciado |
SubAgentComplete | Sub-agente finaliza | |
| Aprovações | ApprovalRequested | Solicitação de aprovação de comando enviada |
ApprovalGranted | Usuário aprovou um comando | |
ApprovalDenied | Usuário negou um comando |
Estrutura do Evento
rust
struct Event {
id: i64, // Auto-incrementing ID
session_id: String, // Session identifier
event_type: EventType,// One of the 16 types above
data: JsonValue, // Event-specific payload
created_at: DateTime, // Timestamp
consolidated_at: Option<DateTime>, // When processed
task_id: Option<String>, // Associated goal/task run
tool_name: Option<String>, // For tool events
}Consolidação Diária
Uma tarefa em segundo plano roda às 3:00 AM UTC diariamente e processa eventos não consolidados:
- Extração de fatos — o LLM analisa sequências de eventos para extrair fatos duráveis
- Aprendizado de procedimentos — padrões repetidos de chamadas de ferramentas são capturados como procedimentos
- Rastreamento de soluções de erros — erros e suas resoluções são pareados para depuração futura
Após o processamento, os eventos são marcados com um timestamp consolidated_at.
Contexto da Sessão
O sistema de eventos fornece um resumo da sessão para o contexto do LLM que inclui ferramentas usadas, erros encontrados, aprovações concedidas/negadas e atividade de sub-agentes.
Remoção de Eventos
Uma tarefa em segundo plano roda às 3:30 AM UTC e remove eventos mais antigos que o período de retenção (padrão 30 dias).
Imutabilidade
Eventos são somente de adição (append-only). O campo
consolidated_at é o único campo atualizado após a criação.