18 de septiembre de 2026

hermes-memory-pgvector v0.5.4: Una versión sin código

hermes-memory-pgvector v0.5.4: Una versión sin código

hermes-memory-pgvector es el plugin de código abierto que proporciona a una flota de agentes hermes-agent memoria compartida y duradera en PostgreSQL y pgvector. La versión 0.5.4 ya está disponible en PyPI y no incluye ninguna funcionalidad nueva ni ningún cambio de código. He aquí por qué se publicó igualmente.

Una versión sin código

v0.5.4 mueve exactamente dos límites mínimos de dependencias:

psycopg[binary]>=3.3.6,<4
psycopg-pool>=3.3.2,<4

Ese es todo el cambio. El proyecto upstream publicó psycopg 3.3.6 y psycopg-pool 3.3.2 el 18 September 2026, ambas versiones parche sin cambios de API. Los valores predeterminados no se tocan, no hay migración y nada en el propio código fuente del plugin se ha movido.

La corrección del pool es el motivo

psycopg-pool 3.3.2 propaga la cancelación y otras excepciones base que se producen durante una comprobación de conexión. Eso suena a una nota al pie hasta que ves cómo está construido este plugin.

Abre una ConnectionPool, compartida entre el hilo del agente y el hilo de vaciado del escritor asíncrono. Antes de que el pool entregue una conexión, comprueba que la conexión sigue estando en buen estado. Si esa comprobación se interrumpe — una cancelación, un apagado, cualquier cosa que derive de BaseException en lugar de Exception — el comportamiento anterior podía tragarla en vez de dejar que siguiera su curso. Una escritura de memoria que debería haber fallado de forma ruidosa desaparece, en cambio, en silencio.

Para un componente cuyo trabajo entero es no perder lo que recuerda un agente, el silencio es el peor modo de fallo que existe. Esa única corrección upstream ya merece una versión por sí sola.

Qué más aporta 3.3.6

  • Una consulta cancelada ya no espera eternamente cuando el servidor ha dejado de responder. Esto requiere libpq 17 o posterior — las ruedas binarias incluyen libpq 18, así que entra en vigor en vez de quedar inactivo.
  • La consulta en ejecución se cancela en SystemExit. Eso importa en el momento en que un worker recibe un SIGTERM a mitad de consulta: antes, la sentencia podía seguir ejecutándose en el servidor después de que el proceso ya estuviera en retirada.
  • Las sentencias preparadas se descartan con DEALLOCATE ALL, lo que evita sorpresas de "prepared statement does not exist" cuando algo vuelve a emitir DISCARD entre extracciones.
  • Menor sobrecarga de espera asíncrona y compatibilidad con Python 3.15.

El pin está en cuatro sitios, y eso es deliberado

El requisito de psycopg aparece en pyproject.toml, en hermes_pgvector/plugin.yaml, en scripts/install.sh y en el comando de instalación que se imprime en el README. Los cuatro se movieron juntos en esta versión, y eso no es una minuciosidad de mantenimiento.

Una revisión completa del código el 7 September encontró que el README y el script de instalación seguían fijando >=3.3.4 mientras que pyproject.toml ya había pasado a >=3.3.5. A cualquiera que siguiera la ruta de instalación documentada se le estaba entregando exactamente la versión de la que la versión anterior existía para alejarse. La deriva sobrevivió a un ciclo completo de versiones sin que nadie se diera cuenta.

Así que ahora la regla es que los cuatro se mueven como uno solo, siempre, o la versión no sale.

Actualización

pip install -U hermes-memory-pgvector

Sin migración, sin cambio de configuración, sin diferencia de comportamiento que vayas a notar — que es precisamente la idea de una versión como esta.

El código fuente y la referencia completa de configuración están en GitHub:

👉 github.com/andreab67/hermes-memory-pgvector