mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-19 21:18:20 +02:00
Compaction plus efficace : resume borne, reduction garantie, jauge immediate
- Resume borne et dense : max_tokens 700, consigne 250 mots max, plafond dur a 1500 caracteres, et surtout thinking DESACTIVE pour l'appel de resume (chat_template_kwargs enable_thinking:false) -> plus rapide, plus dense, plus de budget gaspille en <think> par un modele hybride. - Garantie de reduction : la compaction n'est acceptee que si elle enleve >=20% du contexte estime, sinon refusee -> fini le "compactage a chaque message sans reduire". Queue plus agressive (tailFrac 0.35 -> 0.25) : le contexte retombe plus bas et met plus longtemps a re-declencher. - Jauge de contexte : chute immediatement apres compaction (delta ctx_used emis aussitot) au lieu d'attendre la fin du tour.
This commit is contained in:
1 parent
7720877533
commit
dcbfcb36f9
4 files changed
+36
-11
No files matched your search
@@ -198,13 +198,16 @@ func (c *Conversation) generate(ctx context.Context, caps Caps, temperature floa
|
||||
}
|
||||
if compacted, changed := MaybeCompact(ctx, msgs, caps, ctxUsed); changed {
|
||||
msgs = compacted
|
||||
est := estimateTokens(compacted)
|
||||
c.mu.Lock()
|
||||
if c.epoch == epoch {
|
||||
c.Messages = compacted
|
||||
c.CtxUsed = est // le vrai compte reviendra avec les stats du tour
|
||||
}
|
||||
c.mu.Unlock()
|
||||
c.appendDelta(epoch, map[string]any{"compacting": false})
|
||||
c.appendDelta(epoch, map[string]any{"compacted": true})
|
||||
c.appendDelta(epoch, map[string]any{"ctx_used": est}) // fait chuter la jauge tout de suite
|
||||
} else if willCompact {
|
||||
c.appendDelta(epoch, map[string]any{"compacting": false})
|
||||
}
|
||||
@@ -298,13 +301,15 @@ func (c *Conversation) CompactNow() error {
|
||||
c.appendDelta(epoch, map[string]any{"compact_noop": true})
|
||||
return
|
||||
}
|
||||
est := estimateTokens(compacted)
|
||||
c.mu.Lock()
|
||||
if c.epoch == epoch {
|
||||
c.Messages = compacted
|
||||
c.CtxUsed = estimateTokens(compacted) // feedback immédiat ; le vrai compte revient au prochain tour
|
||||
c.CtxUsed = est // feedback immédiat ; le vrai compte revient au prochain tour
|
||||
}
|
||||
c.mu.Unlock()
|
||||
c.appendDelta(epoch, map[string]any{"compacted": true})
|
||||
c.appendDelta(epoch, map[string]any{"ctx_used": est})
|
||||
c.persist()
|
||||
}()
|
||||
return nil
|
||||
|
||||
Reference in new issue
Block a user