Gestion d'État & Mémoire
Persistance sauvegardée en SQLite avec mémoire de travail en mémoire vive, recherche sémantique via embeddings et récupération tri-hybride.
Mise à jour v0.9.x
La persistance principale des conversations utilise maintenant la table
events. Les anciennes données de messages sont migrées vers events pendant la mise à jour.Schéma de la Base de Données
Table messages
| Key | Type | Default | Description |
|---|---|---|---|
id | TEXT PK | — | Clé primaire UUID |
session_id | TEXT | — | Identifiant de session (indexé) |
role | TEXT | — | user, assistant ou tool |
content | TEXT | null | Contenu texte du message |
tool_call_id | TEXT | null | ID pour les messages de résultat d'outil |
tool_name | TEXT | null | Nom de l'outil pour les messages d'outil |
tool_calls_json | TEXT | null | Tableau JSON des appels d'outil |
created_at | TEXT | — | Horodatage RFC3339 |
importance | REAL | 0.5 | Score d'importance (0.0–1.0) |
embedding | BLOB | null | Embedding encodé en JSON Vec<f32> |
embedding_error | TEXT | null | Message d'erreur si l'embedding a échoué |
consolidated_at | TEXT | null | Horodatage de consolidation de la mémoire |
Table facts
| Key | Type | Default | Description |
|---|---|---|---|
id | INTEGER PK | auto | Clé primaire auto-incrémentée |
category | TEXT | — | Catégorie de regroupement |
key | TEXT | — | Clé du fait (unique par catégorie) |
value | TEXT | — | Contenu du fait |
source | TEXT | "" | Qui l'a stocké : "agent" ou "user" |
created_at | TEXT | — | Horodatage RFC3339 |
updated_at | TEXT | — | Horodatage RFC3339 |
Table macros
| Key | Type | Default | Description |
|---|---|---|---|
id | INTEGER PK | auto | Clé primaire auto-incrémentée |
trigger_tool | TEXT | — | Outil qui déclenche la macro |
trigger_args_pattern | TEXT | null | Modèle d'arguments à correspondre |
next_tool | TEXT | — | Outil à chaîner ensuite |
next_args | TEXT | — | Arguments pour l'outil chaîné |
confidence | REAL | 0.0 | Score de confiance de la macro |
used_count | INTEGER | 0 | Nombre de fois que la macro a été utilisée |
created_at | TEXT | — | Horodatage RFC3339 |
updated_at | TEXT | — | Horodatage RFC3339 |
Table scheduled_tasks
| Key | Type | Default | Description |
|---|---|---|---|
id | TEXT PK | — | Clé primaire UUID |
name | TEXT | — | Libellé lisible de la tâche |
cron_expr | TEXT | — | Expression cron à 5 champs calculée |
original_schedule | TEXT | — | Entrée utilisateur (langage naturel ou cron) |
prompt | TEXT | — | Prompt de l'agent à exécuter selon le planning |
source | TEXT | — | "tool" (créé via l'outil) ou "config" (depuis config.toml) |
is_oneshot | INTEGER | 0 | Se déclenche une fois puis suppression automatique |
is_paused | INTEGER | 0 | Les tâches en pause ne se déclenchent pas |
is_trusted | INTEGER | 0 | Les tâches trusted passent l'approbation terminal |
next_run_at | TEXT | — | Horodatage RFC3339 de la prochaine exécution |
last_run_at | TEXT | null | Horodatage RFC3339 de la dernière exécution |
created_at | TEXT | — | Horodatage RFC3339 |
updated_at | TEXT | — | Horodatage RFC3339 |
Table terminal_allowed_prefixes
| Key | Type | Default | Description |
|---|---|---|---|
prefix | TEXT PK | — | Préfixe de commande persisté depuis les approbations "Allow Always" |
Mémoire de Travail
Un HashMap<String, VecDeque<Message>> en mémoire par session, plafonné à working_memory_cap (par défaut 50). Évite les accès base de données pour l'historique de conversation récent.
Récupération Tri-Hybride
La méthode get_context combine trois stratégies de récupération :
| Stratégie | Source | Limite | Objectif |
|---|---|---|---|
| Récence | N derniers messages | 10 | Continuité conversationnelle |
| Saillance | importance ≥ 0.8 | 5 | Souvenirs critiques marqués |
| Pertinence | Similarité vectorielle > 0.65 | 5 | Recherche sémantique via embeddings |
Les résultats sont dédupliqués par ID de message avant d'être inclus dans le contexte.
Service d'Embedding
- Modèle : AllMiniLML6V2 (via fastembed)
- S'exécute en arrière-plan — génère les embeddings des nouveaux messages après leur ajout
- Active la branche pertinence de la récupération tri-hybride
Consolidation de la Mémoire
Une tâche en arrière-plan s'exécute toutes les consolidation_interval_hours (par défaut 6). Elle compresse les anciennes conversations en résumés à l'aide du modèle fast, réduisant le stockage et l'utilisation de la fenêtre de contexte.
Scoring d'Importance
| Rôle | Score par Défaut |
|---|---|
| Message utilisateur | 0.5 |
| Réponse assistant | 0.5 |
| Sortie d'outil | 0.3 |
| Message système | 0.1 |
Pool de Connexions
- Pool SQLite : max 5 connexions
- Mode journal : WAL (Write-Ahead Logging) pour les lectures concurrentes
- Crée automatiquement la base de données et les tables si absentes