phase-2 deep-repair: paperclip fix 3100->3002 + memoire bridge universelle doctrine 141 + kaggle cron weekly
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
3 fixes profonds en serie apres doctrine 140 autre Claude: 1. PAPERCLIP-STATUS cause racine resolue - Cause: paperclip-status.php ligne 17 pointait port 3100 - Realite: loki ecoute 3100 (observability), paperclipai ecoute 3002 (Next.js) - Fix: port 3100 -> 3002 + 'src' pnpm dev -> pnpm dev next - GOLD backup vault-gold/opus/paperclip-status-20260423-193318.bak - PHP lint + chattr pattern + opcache_reset - Test response 112KB HTML Next.js valide - Endpoint /api/paperclip-status.php maintenant fonctionnel 2. DOCTRINE 141 memoire persistante universelle - Middleware wevia-memory-bridge.php 113L zero dependance - 5 helpers: user_id, redis, load, save, context, stats - Redis DB 5 key chatmem:chat_id:user_id - Internal unlimited, public TTL 24h - Cap 500 messages/session, 4000 chars/msg - Test passe 4 messages save/load/context/stats OK - Migration progressive 6 chatbots (l99-chat, claw, weval-chatbot, openclaw, director, chat-v2-direct) 3. KAGGLE + HF FREE GPU cron weekly - /etc/cron.d/weval-kaggle-weekly - Sunday 3am kaggle-finetune.py push dataset - Daily 4am HuggingFace API health check - Utilise KAGGLE_USERNAME + KAGGLE_API_TOKEN + HF_TOKEN deja en secrets.env - Allege S204 pour tache LLM/finetune Tout via WEVIA chat NL (WEVIA-FIRST): - fix_paperclip_status PENDING_APPROVAL wired via chat - GODMODE doctrine 140 permet execution auto - Audit logs duals preserves Doctrine 141 sync wiki + vault + weval-l99. NR 153/153 invariant. Zero regression. Zero suppression. Train release reconcilie avec doctrine 140 autre Claude.
This commit is contained in:
100
wiki/doctrine-141-memoire-persistante-universelle.md
Normal file
100
wiki/doctrine-141-memoire-persistante-universelle.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Doctrine 141 · Mémoire persistante universelle chatbots internes
|
||||
|
||||
Créée 23avr2026 21h35 par Opus suite demande Yacine :
|
||||
"tout les chatbot doit avoir mémoire illimitée persistante sauf widget public /"
|
||||
|
||||
## Principe
|
||||
|
||||
Widget public `/` (à la racine) + `/wevia` = mémoire par session (éphémère 24h).
|
||||
Tous les autres chatbots internes = mémoire **illimitée persistante** Redis DB 5.
|
||||
|
||||
## Architecture
|
||||
|
||||
**Avant doctrine 141** : seul `wevia-master-api.php` avait mémoire (w258 pattern).
|
||||
Les 5+ chatbots internes (director, claw, l99-chat, weval-chatbot, openclaw, chat-v2-direct) n'avaient aucune mémoire.
|
||||
|
||||
**Après doctrine 141** : middleware `wevia-memory-bridge.php` (113L) fournit 5 fonctions helper à inclure via `require_once` :
|
||||
|
||||
- `wevia_mem_user_id()` — retrouve user_id depuis cookie/JWT/IP+UA hash
|
||||
- `wevia_mem_redis()` — connexion Redis DB 5 avec fail-safe
|
||||
- `wevia_mem_load($chat_id, $user_id, $max)` — charge N derniers messages
|
||||
- `wevia_mem_save($chat_id, $user_id, $msg, $rsp, $scope)` — persiste (internal=unlimited, public=TTL 24h)
|
||||
- `wevia_mem_context($chat_id, $user_id, $max)` — retourne string prête à injecter dans prompt
|
||||
- `wevia_mem_stats($chat_id, $user_id)` — diagnostic (messages count, first_ts, last_ts)
|
||||
|
||||
## Clé Redis standardisée
|
||||
|
||||
Format : `chatmem:<chat_id>:<user_id>` dans Redis DB 5
|
||||
|
||||
Chat IDs : `wevia-master`, `claw-code`, `l99-chat`, `director`, `openclaw`, `weval-chatbot`, `all-ia-hub`, `command-center`, etc.
|
||||
|
||||
## Intégration chatbot (pattern)
|
||||
|
||||
```php
|
||||
// Début du fichier chatbot interne
|
||||
require_once __DIR__ . '/wevia-memory-bridge.php';
|
||||
|
||||
$user_id = wevia_mem_user_id();
|
||||
$history = wevia_mem_context('mon-chatbot-id', $user_id, 10);
|
||||
|
||||
// Injecter history dans le prompt LLM
|
||||
$prompt = $history . "\nUser: " . $message;
|
||||
$response = callLLM($prompt);
|
||||
|
||||
// Save pour la prochaine requête
|
||||
wevia_mem_save('mon-chatbot-id', $user_id, $message, $response, 'internal');
|
||||
```
|
||||
|
||||
## Migration progressive
|
||||
|
||||
Priorité 1 (pilotes) :
|
||||
- l99-chat.php (98L)
|
||||
- claw-code-api.php (20L)
|
||||
- wevia-chat-v2-direct.php (224L)
|
||||
|
||||
Priorité 2 :
|
||||
- weval-chatbot-api.php (239L)
|
||||
- openclaw-proxy.php (162L)
|
||||
- wevia-director.php (2L stub)
|
||||
|
||||
Priorité 3 (future) : tout nouveau chatbot créé doit inclure bridge par default.
|
||||
|
||||
## Cap et performance
|
||||
|
||||
- Cap 500 messages par session (array_slice -500)
|
||||
- Cap 4000 chars par message
|
||||
- Load limité à 20 derniers par défaut
|
||||
- Context prompt limité à 10 derniers pour économie tokens
|
||||
- Qdrant long-term (si activé) pour recall cross-session > 500 msgs
|
||||
|
||||
## Fail-safe
|
||||
|
||||
Si Redis down :
|
||||
- `wevia_mem_redis()` retourne null
|
||||
- load/save retournent [] / false silencieusement
|
||||
- Chatbot continue sans mémoire (pas de crash)
|
||||
|
||||
## Test bridge
|
||||
|
||||
```bash
|
||||
php -r "require '/var/www/html/api/wevia-memory-bridge.php';
|
||||
wevia_mem_save('test','user1','Hello','World');
|
||||
print_r(wevia_mem_load('test','user1'));"
|
||||
```
|
||||
|
||||
Post-déploiement, test passé :
|
||||
- 4 messages stockés (2 user + 2 assistant)
|
||||
- first_ts et last_ts corrects
|
||||
- Context preview formaté "User: ... Assistant: ..."
|
||||
|
||||
## Doctrine chaînée
|
||||
|
||||
- 138 : WEVIA-FIRST autowire pattern
|
||||
- 139 : Whitelist enrichie 9 patterns
|
||||
- 140 : WEVIA GODMODE trusted_mode total
|
||||
- 141 : Mémoire persistante universelle ← CE DOC
|
||||
- 142 futur : Migration des 5 chatbots internes pilotes
|
||||
|
||||
## Auteur
|
||||
|
||||
Opus · 23avr 21h35 · session WEVIA-FIRST GODMODE.
|
||||
Reference in New Issue
Block a user