hermes-memory-pgvector è il plugin open-source che offre a una flotta di agenti hermes-agent una memoria condivisa e durevole su PostgreSQL e pgvector. La versione 0.5.4 è disponibile su PyPI e non contiene né nuove funzionalità né alcuna modifica al codice. Ecco perché è stata pubblicata comunque.
Una release senza codice al suo interno
v0.5.4 sposta esattamente due versioni minime delle dipendenze:
psycopg[binary]>=3.3.6,<4
psycopg-pool>=3.3.2,<4
Questa è l'intera modifica. A monte sono state pubblicate psycopg 3.3.6 e psycopg-pool 3.3.2 il 18 September 2026, entrambe release di patch senza cambiamenti API. I valori predefiniti restano invariati, non c'è alcuna migrazione e nulla nel codice sorgente del plugin si è spostato.
La correzione del pool è il motivo
psycopg-pool 3.3.2 propaga la cancellazione e altre eccezioni di base sollevate durante un controllo della connessione. Sembra una nota a piè di pagina finché non si guarda a come è costruito questo plugin.
Apre uno ConnectionPool, condiviso tra il thread dell'agente e il thread di drenaggio async-writer. Prima che il pool assegni una connessione, verifica che la connessione sia ancora sana. Se quel controllo viene interrotto — una cancellazione, uno spegnimento, qualsiasi cosa derivante da BaseException anziché da Exception — il comportamento precedente poteva inghiottirlo invece di lasciarlo passare. Una scrittura in memoria che avrebbe dovuto fallire in modo evidente sparisce invece in silenzio.
Per un componente il cui unico compito è non perdere ciò che un agente ricorda, il silenzio è la peggiore modalità di errore possibile. Questa singola correzione a monte vale da sola una release.
Cos'altro porta 3.3.6
- Una query cancellata non aspetta più all'infinito quando il server ha smesso di rispondere. Questa modifica richiede libpq 17 o più recente — i wheel binari includono libpq 18, quindi entra in vigore invece di restare inattiva.
- La query in esecuzione viene cancellata su
SystemExit. Questo conta nel momento in cui un worker riceve un SIGTERM a metà query: in precedenza l'istruzione poteva continuare a girare lato server anche dopo che il processo era già in fase di uscita. - Le prepared statement vengono scartate su
DEALLOCATE ALL, il che evita sorprese del tipo "prepared statement does not exist" quando qualcosa reimpostaDISCARDtra un checkout e l'altro. - Minore overhead di attesa async e supporto per Python 3.15.
Il pin vive in quattro punti, ed è una scelta deliberata
Il requisito psycopg compare in pyproject.toml, in hermes_pgvector/plugin.yaml, in scripts/install.sh e nel comando di installazione stampato nel README. Tutti e quattro si sono mossi insieme in questa release, e non si tratta di pignoleria da manutenzione.
Una revisione completa del codebase il 7 September ha rilevato che il README e lo script di installazione bloccavano ancora >=3.3.4 mentre pyproject.toml era già passato a >=3.3.5. Chiunque seguisse il percorso di installazione documentato veniva indirizzato esattamente alla versione da cui la release precedente esisteva per spostarsi via. La deriva è sopravvissuta a un intero ciclo di release senza che nessuno se ne accorgesse.
Quindi ora la regola è che i quattro si muovono come uno solo, ogni volta, altrimenti la release non esce.
Aggiornamento
pip install -U hermes-memory-pgvector
Nessuna migrazione, nessuna modifica di configurazione, nessuna differenza comportamentale che noterai — ed è proprio questo il punto di una release come questa.
Il codice sorgente e la referenza completa della configurazione sono su GitHub:
