mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-22 22:48:11 +02:00
Cache : corrections de relecture du lot 2 — KEEP_TURN_IMAGES retire les images avant tout résumé, partout
Le README promet que les images gardées partent d'abord et que le résumé (avec perte) ne suit que s'il reste nécessaire. C'était vrai en début de tour et entre deux étapes, pas ailleurs : la compaction de fin de tour, le filet réactif (prompt refusé) et la fenêtre pleine en génération retiraient les images ET résumaient d'un même geste, alors que le retrait seul suffisait. - Fin de tour : même retrait que le début de tour, puis le seuil est relu. - Prompt refusé pour débordement : images retirées, requête rejouée sans elles, avant la compaction de secours. - finish=length : images retirées d'abord ; l'étape est rejouée sans résumé si le contexte libéré suffit. Sans la clé, aucune image gardée : chemins d'avant à l'identique. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
78d15cefbf
commit
39487f9449
3 files changed
+94
No files matched your search
@@ -1560,6 +1560,18 @@ func runChatLoop(ctx context.Context, kt *keepImages, messages []Message, tools
|
||||
if echoOffTurn {
|
||||
messages = stripReasoning(messages)
|
||||
}
|
||||
// KEEP_TURN_IMAGES : les images gardées partent d'abord, et la requête
|
||||
// est rejouée sans elles ; le résumé (avec perte) ne vient qu'ensuite,
|
||||
// s'il le faut encore. Sans la clé, aucune image gardée.
|
||||
if contextOverflow(msg, messages) && hasKeptImages(messages) {
|
||||
if s, freed := dropKeptImages(messages); freed > 0 {
|
||||
logKeptImagesDropped("réactif", freed)
|
||||
messages = s
|
||||
extra = nil
|
||||
publishHistory()
|
||||
continue
|
||||
}
|
||||
}
|
||||
if compactEnabled() && !compactedRetry && contextOverflow(msg, messages) {
|
||||
if c, changed := compactMessages(ctx, messages, caps); changed {
|
||||
compactedRetry = true
|
||||
@@ -2646,6 +2658,18 @@ func runChatLoop(ctx context.Context, kt *keepImages, messages []Message, tools
|
||||
if finishReason == "length" && !ep.External && lengthReplays < 1 &&
|
||||
compactWouldTrigger(messages, stats.PromptTokensTotal+stats.GenTokens) {
|
||||
lengthReplays++
|
||||
// KEEP_TURN_IMAGES : les images gardées d'abord ; le résumé ne suit
|
||||
// que s'il reste nécessaire. Sans la clé, rien à retirer.
|
||||
if s, freed := dropKeptImages(messages); freed > 0 {
|
||||
logKeptImagesDropped("fenêtre-pleine", freed)
|
||||
messages = s
|
||||
extra = nil
|
||||
publishHistory()
|
||||
if !compactWouldTrigger(messages, max(stats.PromptTokensTotal+stats.GenTokens-freed, 1)) {
|
||||
cb(StreamEvent{DropReasoning: true})
|
||||
continue
|
||||
}
|
||||
}
|
||||
yes, no := true, false
|
||||
cb(StreamEvent{Compacting: &yes})
|
||||
c, changed := compactMessages(ctx, messages, caps)
|
||||
|
||||
Reference in new issue
Block a user