mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-23 15:08:16 +02:00
Contexte : corrections de relecture — la garde de marge ne compacte plus en boucle, et le preset externe compte comme avant
La garde de marge de génération réclamait 1,2 × la plus longue génération récente, sans plafond. Une étape de 40 k sur une fenêtre de 65 k (ou de 20 k sur 32 k, sans budget de raisonnement) demandait plus de place que l'historique fraîchement compacté n'en laisse : la garde repartait à chaque étape, et chaque fois résumait le résumé précédent. - Garde : jamais avant la moitié de la fenêtre. Au-delà, le rejeu sur « length » reste le filet. - Preset externe : le complément « messages arrivés depuis la mesure » ne s'applique plus. Son CtxUsed garde le raisonnement, qui couvrait déjà ce complément ; l'ajouter le faisait compacter plus tôt qu'avant. - Journal [ctx] : l'estimation d'avant compaction (début de tour, en tour) n'est plus comparée au compte d'une requête compactée, ce qui donnait de faux écarts. - Tests : génération énorme juste après compaction, seuil de 50 % pour toutes les fenêtres, comptage externe contre local. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d6023ef8a0
commit
26fc348506
4 files changed
+59
-11
No files matched your search
@@ -234,12 +234,18 @@ func compactNeeded(msgs []Message, used, peakGen int) bool {
|
||||
// fenêtre pour les petites), plus une petite marge. Fonction pure, testable.
|
||||
// Plancher et marge sont choisis pour ne JAMAIS devancer le seuil de 75 % à eux
|
||||
// seuls : seule une génération longue avance la compaction.
|
||||
//
|
||||
// Et jamais avant la MOITIÉ de la fenêtre, si longue que soit la génération :
|
||||
// une étape de 40 k sur 65 k (ou de 20 k sur 32 k) réclamait sinon une place
|
||||
// que l'historique compacté lui-même — prompt système, outils, résumé, queue —
|
||||
// ne laisse pas. La garde repartait alors à CHAQUE étape, résumé de résumé, le
|
||||
// fil perdu pour rien. Au-delà, c'est le rejeu sur « length » qui rattrape.
|
||||
func genHeadroomShort(used, peakGen, window int) bool {
|
||||
if used <= 0 || peakGen <= 0 || window <= 0 {
|
||||
return false
|
||||
}
|
||||
need := max(peakGen*6/5, min(8192, window/8)) + min(1024, window/32)
|
||||
return used+need > window
|
||||
return used+min(need, window/2) > window
|
||||
}
|
||||
|
||||
// logCtx trace un fait du comptage de contexte (fenêtre pleine, relance après
|
||||
|
||||
Reference in new issue
Block a user