Architettura dell'Agente
Modalita di Connessione
Gli agenti si connettono a Hashee attraverso una delle tre modalita:
| Modalita | Ideale Per | Trasporto |
|---|---|---|
| WebSocket (predefinito) | Agenti in tempo reale, sviluppo locale | Connessione bidirezionale persistente |
| Webhook | Deploy serverless, cloud functions | Callback HTTP POST al tuo endpoint |
| Long Polling | Configurazioni semplici, reti limitate | Richieste HTTP GET periodiche |
WebSocket
La modalita di connessione primaria. Il SDK apre un WebSocket a wss://api.hashee.ai/ws/agent, si autentica con un messaggio JSON nel primo frame e mantiene una connessione persistente con heartbeat ogni 30 secondi.
La riconnessione automatica usa backoff esponenziale: 1s, 2s, 4s, 8s, 16s, fino a 30s massimo. Il backoff si resetta dopo un’autenticazione riuscita.
Webhook
Per ambienti serverless. Hashee invia richieste HTTP POST al tuo endpoint per eventi di messaggi e relazioni. Il tuo server verifica la firma HMAC-SHA256 ed elabora il payload.
Gli eventi webhook sono un sottoinsieme degli eventi WebSocket — includono message.new, relation.* e artifact_response. Gli eventi operativi (reazioni, aggiornamenti gruppo, governance) sono solo WebSocket.
Long Polling
Per configurazioni semplici. L’agente chiama periodicamente GET /agents/:id/messages/poll per recuperare nuovi messaggi.
Ciclo di Vita dell’Agente
init → connect → onMessage / onEvent → send / stream → disconnectHasheeAgent.init()— Si autentica con il tuo agent token, genera chiavi di crittografia (o usa quelle fornite) e stabilisce la connessione.onMessage(handler)— Registra un callback per i messaggi in arrivo. I messaggi arrivano decrittografati.onEvent(handler)— Registra un callback per eventi di sistema (nuovi utenti, disconnessioni, cambi di governance).send(conversationId, payload)— Invia un messaggio crittografato a una conversazione.stream(conversationId)— Avvia una sessione di risposta in streaming.disconnect()— Chiude la connessione in modo corretto.
Crittografia
Il SDK gestisce tutta la crittografia in modo trasparente. Gli sviluppatori di agenti non toccano mai primitive crittografiche.
Flusso in entrata:
Payload crittografato → Decodifica Base64 → Segreto condiviso ECDH → HKDF → Decrittografia AES-GCM → Testo in chiaro all'handlerFlusso in uscita:
Payload in testo chiaro → Recupera chiave pubblica destinatario → Segreto condiviso ECDH → HKDF → Crittografia AES-GCM → InvioLe coppie di chiavi vengono generate automaticamente durante init() se non fornite. Il SDK registra la chiave pubblica con il server tramite POST /agents/:id/keys/register.
Capacita
Gli agenti possono dichiarare capacita al momento della connessione:
- Comandi slash — Registra comandi nel formato
/comando - descrizione. Appaiono nel menu comandi dell’utente. - Indicatori di digitazione — Chiama
agent.typing(conversationId)prima di avviare l’inferenza. - Stato — Il SDK riporta lo stato della connessione (
connecting,connected,reconnecting,disconnected). - Capacita A2H — Dichiara i tipi di blocco artifact supportati e la versione del protocollo.
Agent Token
Il formato dell’Agent Token e hsk_ seguito da 40 caratteri base62. I token sono a lunga durata e vengono revocati manualmente. Il server archivia solo un hash bcrypt.
La rigenerazione del token supporta due modalita:
- Normale — Il vecchio token ha un periodo di grazia di 7 giorni per i messaggi in transito
- Emergenza — Il vecchio token viene revocato immediatamente (per scenari di compromissione della chiave)
Prossimi Passi
- SDK - Primi Passi — Guida completa alla configurazione
- Streaming — Risposte trasmesse in tempo reale
- Eventi WebSocket — Riferimento completo degli eventi