mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-24 07:28:13 +02:00
Lot 33 : préchauffage (PREWARM) tenu par la façade
PREWARM ne garde plus la conversation au Go. La façade tient l'historique : elle assemble et envoie la requête du prochain tour ; le Go garde le compteur des requêtes en vol et ce qui l'annule. Go (facade_prewarm.go) : - /internal/v1/prewarm/check : moteur libre d'un vrai travail, loin de minuit, en bonne santé, slot visé ; - /internal/v1/prewarm/begin : rechargement SLOT_PERSIST puis inscription comme LA requête en vol ; son annulation est relayée à la façade ; - /internal/v1/prewarm/end : place rendue, cache repris noté ; - /internal/v1/oai/begin : prewarm_keep pour l'étape qui le prolonge ; - fin de tâche planifiée : le déclencheur part à la façade. Rust (chat/prewarm.rs) : - assemblage par les mêmes fonctions que le tour, sentinelle « . », un seul jeton, non streamé ; abstention (capacités inconnues, tour en cours, discussion vide, compaction attendue, assemblage inattendu) ; - déclencheurs : fin de tour, fin de tâche, changement de discussion ou de projet (full : après 3 s) ; - le tour garde le préchauffage qu'il prolonge (empreintes des messages et des options de rendu) et coupe tout de suite les autres ; - télémétrie kind=prewarm. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
21 files changed
+1457
-35
No files matched your search
@@ -70,6 +70,10 @@ func handleInternalOAIBegin(w http.ResponseWriter, r *http.Request) {
|
||||
// MainConv : étape d'un tour de cette discussion, tenue par la façade
|
||||
// (LOKI_CHAT=rust) — comptée comme la requête principale du Go.
|
||||
MainConv string `json:"main_conv"`
|
||||
// PrewarmKeep : étape d'un tour de la façade qui prolonge exactement
|
||||
// le préchauffage en vol (PREWARM, facade_prewarm.go) — il n'est pas
|
||||
// annulé, la requête le suit dans le même slot.
|
||||
PrewarmKeep bool `json:"prewarm_keep"`
|
||||
}
|
||||
if r.Method != http.MethodPost || json.NewDecoder(r.Body).Decode(&in) != nil {
|
||||
sendJSON(w, http.StatusBadRequest, map[string]any{"error": "POST JSON attendu"})
|
||||
@@ -80,7 +84,11 @@ func handleInternalOAIBegin(w http.ResponseWriter, r *http.Request) {
|
||||
if in.Read {
|
||||
end, seq = engineRequestBeginSide(func(*prewarmRun) bool { return true }, true)
|
||||
} else {
|
||||
end, seq = engineRequestBeginSide(nil, in.Side)
|
||||
var keep func(*prewarmRun) bool
|
||||
if in.PrewarmKeep {
|
||||
keep = func(*prewarmRun) bool { return true }
|
||||
}
|
||||
end, seq = engineRequestBeginSide(keep, in.Side)
|
||||
}
|
||||
if in.PostV1 {
|
||||
refuse := func(retry, msg, code string) {
|
||||
|
||||
Reference in new issue
Block a user