Compaction : COMPACT_CONTINUATION, relecture — un refus mémorisé ne vaut que pour le même fil

Le refus mémorisé ne regardait que la taille du contexte. Il n'est évalué
qu'au-dessus du seuil : une discussion vidée, éditée ou régénérée qui
remontait dans la même plage de jetons voyait sa compaction sautée sur la foi
d'un refus qui concernait un autre fil.

- le refus garde l'empreinte de l'historique (celle de perfPrefix) ; seul un
  historique qui prolonge celui d'alors en profite, tout autre retente
- testé : historique modifié ou raccourci, refus noté par une vraie
  compaction, filet réactif jamais bloqué

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5.5 committed 2026-10-04 09:25:35 +02:00
1 parent 2097c9f915
commit b0c53e32af
5 files changed
+83 -32

No files matched your search

+1 -1
View File
@@ -2501,7 +2501,7 @@ func runChatTools(ctx context.Context, messages []Message, tools []Tool, tempera
if ptag.kind == perfMain {
mainConv = ptag.conv
}
if compactNeeded(messages, used, peakGen) && !compactRefusedSkip(mainConv, used) {
if compactNeeded(messages, used, peakGen) && !compactRefusedSkip(mainConv, used, messages) {
opt := compactOptsMid(chatCfg, ep, mainConv, messages, used, tools, reasoningEffort, reasoningKwargs, pol,
disableTools || toolChoiceNone)
yes, no := true, false