1. Infrastructure
1
PostgreSQL 16 + pgvector, Redis 7
docker-compose.yml démarre pgvector/pgvector:pg16 (utilisateur
haki, base haki, exposé sur le port hôte 5433 — pas 5432, déjà
pris par un Postgres Windows local sur beaucoup de machines) et
redis:7 (provisionné, usage prévu pour la queue).2
Dépendances Python
uv installe Python 3.12 lui-même si besoin, plus haki (le SDK
Python, dépendance éditable locale déclarée dans pyproject.toml).3
Migrations
alembic/versions/0001 à 0008) :
extension pgvector, tables du Ledger, colonnes de recherche
plein-texte, forget_receipts, auth/RLS/feedback, événements
épisodiques, organisations.4
L'API
2. La preuve que tout marche
Dans un second terminal :haki connect teste /health et écrit ~/.haki/config.json. haki verify joue le scénario complet en quelques secondes : il mémorise
une préférence, ouvre une nouvelle conversation (nouveau thread_id),
et vérifie que l’agent s’en souvient — avec la latence de chaque étape.
haki verify tente un bootstrap de
clé pour le projet prj_haki_verify (fonctionne sur un serveur neuf sans
HAKI_ADMIN_KEY, ou en mode dev ouvert) ; sur un serveur qui refuse ce
bootstrap, le scénario échoue avec un message explicite plutôt qu’une
erreur muette.
Multilingue par défaut : Haki comprend et mémorise en français,
anglais, espagnol et ~50 autres langues (embeddings multilingues
locaux,
paraphrase-multilingual-MiniLM-L12-v2). Un souvenir capturé en
anglais est retrouvé par une question en français — vérifié par
scripts/check_multilingual.py (3/3 PASS au dernier run documenté dans
docs/SECURITY.md).3. Premier appel manuel : capture puis context
Créez d’abord une clé (la toute première création est libre tant qu’aucune clé n’existe — voir Clés API) :key (hk_...) une seule fois — copiez-la.
Ajoutez ensuite -H "Authorization: Bearer hk_..." à chaque appel
ci-dessous.
1
Capturer une préférence
2
Consolider (dev/ops — extraction du fait durable)
HAKI_LLM_PROVIDER=fake, le défaut), l’extraction
ne fait pas d’appel réseau. En production (HAKI_LLM_PROVIDER=openai),
ce même appel déclenche une vraie extraction LLM.3
Demander la mémoire avant une réponse
invoice_language: {"language": "fr"},
sa date de validité, l’identifiant de l’événement source, et un
trace_id inspectable via GET /v1/inspect/{trace_id}.Et ensuite
Concepts
Comprendre le Ledger, la bitemporalité, la supersession et le
Context Assembler avant d’intégrer.
SDK Python
HakiClient, build_prompt_context, capture_turn, CLI haki.Cursor
Serveur MCP en un clic, ou Cursor Hooks pour une capture garantie.
Gateway OpenAI
Mémoire automatique en ne changeant que
base_url.
