Correctifs repris d'AJEAN : chiffrement, preset externe, heartbeat, commande du moteur

- Désactivation du chiffrement (amont cac0cda, 19918c6) : une valeur
  illisible ne bloque plus tout (quarantaine datée + copie du keyvault), et la
  reprise au démarrage déchiffre aussi les conversations au lieu de retirer la
  clé après les seules pages. Propre à Loki : les images de conversation
  (chatimg/) sont maintenant déchiffrées elles aussi — elles restaient
  chiffrées sans clé. Les .bak chiffrés devenus illisibles sont retirés.
- Preset externe (amont #95) : `loki serve` sort sans erreur (plus de boucle
  systemd « MODEL non défini »), le pré-vol l'accepte, le superviseur du
  conteneur ne le prend plus pour un plantage.
- Unité systemd du moteur : TimeoutStopSec=5 (bascule de preset bloquée 90 s
  en pleine génération).
- Heartbeat SSE (amont #105) : plus d'écriture après le retour du handler.
- Paramètres → Configuration : commande exacte du moteur copiable (clé API
  masquée, Strata compris) et nombre de couches du modèle à côté de NGL, lu
  dans l'en-tête GGUF (amont #108, #43) ; aussi dans l'éditeur de preset.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5.5 committed 2026-10-07 09:28:42 +02:00
1 parent 4a9a5a1712
commit 127013b32b
16 files changed
+479 -34

No files matched your search

+15
View File
@@ -599,6 +599,20 @@ function onPickModel(){
ta.value = 'MODEL="'+val+'"\n' + ta.value;
}
toast('MODEL='+val);
showNglMax(val);
}
// Nombre de couches du modèle du preset (amont #43), lu dans son en-tête GGUF :
// affiché à côté du champ NGL (placeholder, « / N » et survol).
async function showNglMax(model){
const e=document.getElementById('s-ngl'), u=document.getElementById('s-ngl-max'); if(!e) return;
e.placeholder='999'; e.title=''; if(u) u.textContent='';
if(!model) return;
const ly=await jget('/api/model/layers?model='+encodeURIComponent(model)).catch(()=>null);
if(!ly || !ly.ok) return;
e.placeholder=String(ly.ngl_max);
if(u) u.textContent='/ '+ly.ngl_max;
e.title=ly.ngl_max+' = tout le modèle sur le GPU ('+ly.layers+' couches + la sortie)';
}
// --- Vision (projecteur multimodal --mmproj) --------------------------------
@@ -1013,6 +1027,7 @@ function populateSettings(){
const set = (id,v)=>{ const e=document.getElementById(id); if(e) e.value=v; };
set('s-ctx', cfgReadKey('CTX'));
set('s-ngl', cfgReadKey('NGL'));
showNglMax(cfgReadKey('MODEL'));
set('s-threads', cfgReadKey('THREADS'));
set('s-batch', cfgReadKey('BATCH'));
set('s-ubatch', cfgReadKey('UBATCH'));