HASH — una base de datos abierta y automejorable con agentes inteligentes: cómo funciona, para qué sirve y cómo probarla

HASH — una base de datos abierta y automejorable con agentes inteligentes: cómo funciona, para qué sirve y cómo probarla

A veces parece que los datos tienen vida propia: se multiplican en tablas, migran entre servicios y luego de pronto entran en conflicto consigo mismos. HASH propone una idea bastante audaz: una base de datos que no solo almacena registros, sino que se compone, estructura y verifica a sí misma. En el proceso intervienen agentes autónomos que obtienen información de fuentes abiertas y de sistemas privados conectados, normalizan entidades según esquemas estrictos y vigilan la calidad. El resultado es un único «sitio de la verdad» para datos críticos, donde no solo se puede explorar el grafo de entidades, sino también tomar decisiones sin sensación de adivinanza.

Sobre este núcleo, el equipo propone un futuro en forma de espacio de trabajo con interfaces en «bloques» que se generan bajo demanda y operan directamente sobre datos tipados. Es decir, no meras paneles decorativos, sino herramientas controladas donde la integridad y la calidad de la información están integradas desde la base, no añadidas después.

Qué es HASH

En el núcleo hay una base autoevolutiva de código abierto, que:

  • integra datos casi en tiempo real y los normaliza a tipos estrictos;
  • emplea «agentes» inteligentes para recopilar, verificar y mantener la consistencia;
  • ofrece interfaces visuales para trabajar tanto con entidades (datos) como con tipos (esquemas);
  • se convierte en una plataforma para soluciones con mayor confianza y seguridad controlada.

En resumen: no es otra «capa sobre el caos», sino un intento de eliminar el caos desde el origen. El usuario, incluso si no es técnico, dispone de una navegación clara por las entidades, conciliación de campos con los esquemas y, a futuro, interfaces dinámicas en bloques «a medida» para cada tarea.

Actualmente, la forma «oficialmente soportada» de probar el sistema es registrarse en el servicio HASH. Cree una cuenta, acceda al panel y siga las indicaciones. Puede haber cola: para acelerar, tras entrar siga las instrucciones en el panel: hay una revisión por una persona real. El acceso puede realizarse mediante el formulario estándar y la funcionalidad estará disponible tras la activación.

Ejecución local

El equipo promete documentar un manual completo para el despliegue local próximamente; por ahora hay un conjunto de instrucciones prácticas para desarrolladores. No son complicadas, pero requieren cuidado. Si prefiere montar todo manualmente, es una buena forma de conocer la arquitectura en detalle.

Qué se necesita antes de empezar

  • Git (≥ 2.17), Rust con el toolchain indicado en rust-toolchain.toml, Docker (≥ 20.10), Docker Compose (≥ 2.17.2), Docker Buildx (≥ 0.10.4), Protobuf;
  • ecosistema Node.js y yarn para instalar dependencias;
  • mise — gestor de versiones de herramientas para sincronizar con el repositorio;
  • en macOS/Windows — no olvide asignar al menos 4 GB de RAM a Docker (mejor 8 GB).

Verifique las versiones con los comandos git --version, rustup --version, rustc --version, docker --version, docker compose version, docker buildx version. Si en macOS git da problemas, instale Xcode Command Line Tools con xcode-select --install.

Clone el repositorio y vaya a la raíz:

git clone https://github.com/hashintel/hash cd hash 

Instale y active mise, luego obtenga las versiones declaradas de las herramientas desde .config/mise:

mise install 

Instale las dependencias del front y del back:

yarn install 

El arranque básico funciona sin configuraciones extra: los valores por defecto están en .env y .env.development. Ponga secretos y sobrescrituras en .env.local (no se incluye en git). Si piensa usar funciones de IA (por ejemplo, agentes que responden), añada allí las claves:

  • OPENAI_API_KEY, ANTHROPIC_API_KEY — para capacidades principales;
  • HASH_TEMPORAL_WORKER_AI_AWS_ACCESS_KEY_ID y ..._SECRET_ACCESS_KEY — para el worker;
  • E2B_API_KEY — para escenarios de preguntas y respuestas.

HASH se apoya en un conjunto de contenedores: Postgres, capa de grafo, Kratos, Redis y OpenSearch. Inícielos con un comando:

yarn external-services up -d 

Si cambió la capa de grafo, añada --build para reconstruir. Para que los contenedores no interfieran en reinicios de la aplicación, use --detach y gestione el ciclo de vida por separado (... down para detener). Si la conexión es lenta, sirva el modo offline con yarn external-services:offline up — el grafo no descargará esquemas desde Block Protocol.

Puede ejecutar el API de grafo y el worker de IA fuera de Docker si cambia su código con frecuencia: detenga los contenedores y lance en terminales separados yarn dev:graph y yarn workspace @apps/hash-ai-worker-ts dev.

Inicio de los servicios de la aplicación

La opción más sencilla es arrancar todo de golpe:

yarn start 

Cuando el terminal muestre http://localhost:3000 — el frontend estará listo. El API se levantará en http://localhost:5001; para funcionamiento completo deben estar disponibles ambos extremos. También se puede iniciar por partes:

yarn start:graph yarn start:backend yarn start:frontend 

Al iniciar, el API crea automáticamente tres usuarios con la contraseña password: alice@example.com, bob@example.com (roles normales) y admin@example.com (administrador). Esto es suficiente para recorrer el flujo básico sin registrarse.

Correo, modos de prueba y el botón rojo de limpieza

El envío de correos está organizado así: Kratos envía todo lo relacionado con autenticación (verificaciones, recuperación), lo demás va vía el Email Transport API. En modo desarrollo es útil usar un transportador «maniquí» que escribe los correos en un archivo. ¿Necesita AWS SES? Ponga HASH_EMAIL_TRANSPORTER=aws_ses y suministre credenciales válidas.

Las pruebas que ensucian la base se pueden aislar — ejecute los servicios externos en yarn external-services:test up. Si rompe algo, hay dos caminos: el lento (eliminar el contenedor hash-external-services y los volumes correspondientes y reconstruir) o el rápido — yarn dev:graph:test-server y luego yarn graph:reset-database. Para el frontend, limpie además la tabla identities en la base de Kratos.

Qué hay dentro

El monorrepo está organizado de forma lógica y predecible. En /apps están los servicios del espacio de trabajo (frontend, backend, tiempo real), en /blocks los bloques públicos de Block Protocol, en /content el contenido editable de sitios y documentación, en /infra scripts y plantillas para desplegar en la nube, en /libs bibliotecas compartidas y crates de Rust, y en /tests los escenarios de integración y e2e que abarcan varias partes de la aplicación.

Los servicios externos conforman el stack habitual: Postgres (varias bases para distintas tareas — Kratos, Temporal, capa de grafo), Redis para colas y caché, Kratos como sistema de gestión de identidad y flujos de autenticación, Temporal para workflows (incluyendo dominios de IA), OpenSearch (desactivado por defecto y marcado como no soportado en su estado actual). Para el desarrollador esto significa dependencias transparentes que se pueden encender y apagar según convenga.

La mayoría de las variables de entorno ya tienen valores por defecto, por lo que un arranque «vacío» funciona de inmediato. No obstante, para escenarios avanzados hay decenas de flags y configuraciones: desde NODE_ENV y PORT hasta integraciones con AWS para subida de ficheros y correo, proveedores SMTP, URLs personalizadas del frontend, frecuencias de sondeo de notificaciones y niveles de logging. Si activa S3, ponga FILE_UPLOAD_PROVIDER=AWS_S3 y use las variables AWS_S3_UPLOADS_*. Métricas vía StatsD, telemetría vía Snowplow (HASH_TELEMETRY_ENABLED, HASH_TELEMETRY_DESTINATION, etc.).

Para el frontend es relevante FRONTEND_URL (por defecto http://localhost:3000), para el API — API_ORIGIN y SESSION_SECRET. El puerto de tiempo real se indica en HASH_REALTIME_PORT, las colas en HASH_INTEGRATION_QUEUE_NAME y HASH_SEARCH_QUEUE_NAME. Si obtiene bloques desde Block Protocol Hub, añada BLOCK_PROTOCOL_API_KEY.

Para ejecutar el plugin de navegador localmente, consulte apps/plugin-browser — ahí hay un README independiente. En el repositorio hay configuraciones de ejemplo para editores populares — VS Code, Zed — para acelerar la marcación del proyecto y evitar problemas con formateadores. Y sí: agentes y workers se pueden ejecutar junto al frontend sin ensuciar Docker: arranque solo los servicios que necesite y apague el resto.

El equipo mantiene una hoja de ruta pública: puede ver qué se está desarrollando y qué está en la cola. Un manual completo para desplegar en AWS/GCP/Azure está «en camino», mientras tanto consulte la carpeta /infra — contiene suficientes indicaciones para montar un piloto. Se anunció además que en 2025 saldrá una guía completa de autoalojamiento, que resolverá las dudas de quienes quieran mantener todo bajo su propio control.

La mayor parte del código es libre y accesible sin restricciones: los detalles de licencias están en LICENSE. El equipo solicita que las vulnerabilidades y problemas de seguridad se envíen según las instrucciones en SECURITY — ahí también figuran las versiones soportadas de paquetes. Quienes deseen contribuir tienen CONTRIBUTING con las reglas para presentar cambios. Y un pequeño extra: la empresa busca activamente ingenieros y cada PR es revisado por una persona real. Puede empezar por tareas pequeñas y luego escalar.

HASH aborda un punto doloroso: la brecha entre «los datos están en algún lugar» y «datos en los que se puede confiar aquí y ahora». Un núcleo autoevolutivo, agentes, esquemas estrictos e interfaces visuales aportan sensación de control: no hay la caótica migración de CSV por correo, ni proliferación descontrolada de entidades. Usted construye soluciones sobre el grafo, en lugar de reescribir tuberías para intentar contener la entropía. La barrera de entrada es suave (la nube), la profundidad es la que desee (local y en código), la perspectiva es un espacio de trabajo con bloques generados bajo demanda. Y parece un caso raro en el que «más IA» implica «más orden», no lo contrario.

Enlaces útiles para la navegación

Conclusión

HASH intenta convertir la base de datos en algo más que un «lugar de almacenamiento»: una sistema vivo donde la información se ordena por sí misma y las interfaces nacen para la tarea. Si quiere una vista rápida, use la nube. Si necesita profundidad, levante la pila localmente, explore el grafo y experimente con agentes y workflows. El monorrepo es transparente, la documentación práctica y la barrera de entrada menor de lo que parece. Si está cansado de lidiar con desincronizaciones infinitas, este es un proyecto que merece la pena probar ahora mismo.

Alt text