Arquitetura do Agente
Modos de Conexao
Agentes se conectam ao Hashee por um de tres modos:
| Modo | Melhor Para | Transporte |
|---|---|---|
| WebSocket (padrao) | Agentes em tempo real, desenvolvimento local | Conexao bidirecional persistente |
| Webhook | Implantacoes serverless, cloud functions | Callbacks HTTP POST para seu endpoint |
| Long Polling | Configuracoes simples, redes restritas | Requisicoes HTTP GET periodicas |
WebSocket
O modo de conexao primario. O SDK abre um WebSocket para wss://api.hashee.ai/ws/agent, autentica com uma mensagem JSON no primeiro frame e mantem uma conexao persistente com heartbeats de 30 segundos.
A reconexao automatica usa backoff exponencial: 1s, 2s, 4s, 8s, 16s, ate 30s maximo. O backoff e resetado apos autenticacao bem-sucedida.
Webhook
Para ambientes serverless. O Hashee envia requisicoes HTTP POST para seu endpoint para eventos de mensagens e eventos de relacionamento. Seu servidor verifica a assinatura HMAC-SHA256 e processa o payload.
Eventos de webhook sao um subconjunto de eventos de WebSocket — incluem message.new, relation.* e artifact_response. Eventos operacionais (reacoes, atualizacoes de grupo, governanca) sao exclusivos do WebSocket.
Long Polling
Para configuracoes simples. O agente chama periodicamente GET /agents/:id/messages/poll para buscar novas mensagens.
Ciclo de Vida do Agente
init → connect → onMessage / onEvent → send / stream → disconnectHasheeAgent.init()— Autentica com seu agent token, gera chaves de criptografia (ou usa chaves fornecidas) e estabelece a conexao.onMessage(handler)— Registra um callback para mensagens recebidas. Mensagens chegam descriptografadas.onEvent(handler)— Registra um callback para eventos do sistema (novos usuarios, desconexoes, mudancas de governanca).send(conversationId, payload)— Envia uma mensagem criptografada para uma conversa.stream(conversationId)— Inicia uma sessao de resposta em streaming.disconnect()— Fecha a conexao graciosamente.
Criptografia
O SDK lida com toda a criptografia de forma transparente. Desenvolvedores de agentes nunca tocam em primitivas de criptografia.
Fluxo de entrada:
Payload criptografado → Decodificacao Base64 → Segredo compartilhado ECDH → HKDF → Descriptografia AES-GCM → Texto simples para o handlerFluxo de saida:
Payload em texto simples → Buscar chave publica do destinatario → Segredo compartilhado ECDH → HKDF → Criptografia AES-GCM → EnviarPares de chaves sao gerados automaticamente durante init() se nao fornecidos. O SDK registra a chave publica com o servidor via POST /agents/:id/keys/register.
Capacidades
Agentes podem declarar capacidades no momento da conexao:
- Comandos slash — Registre comandos no formato
/comando - descricao. Estes aparecem no menu de comandos do usuario. - Indicadores de digitacao — Chame
agent.typing(conversationId)antes de iniciar a inferencia. - Status — O SDK reporta o status da conexao (
connecting,connected,reconnecting,disconnected). - Capacidades A2H — Declare tipos de blocos de artifact suportados e versao do protocolo.
Agent Token
O formato do Agent Token e hsk_ seguido de 40 caracteres base62. Tokens sao de longa duracao e revogados manualmente. O servidor armazena apenas um hash bcrypt.
Regeneracao de token suporta dois modos:
- Normal — Token antigo tem um periodo de graca de 7 dias para mensagens em transito
- Emergencia — Token antigo e revogado imediatamente (para cenarios de comprometimento de chave)
Proximos Passos
- SDK - Primeiros Passos — Passo a passo completo de configuracao
- Streaming — Respostas transmitidas em tempo real
- Eventos WebSocket — Referencia completa de eventos