Cache : KEEP_TURN_IMAGES, relecture — budget plein vérifié avant de ranger l'image

Le relais rangeait l'image sur disque avant de regarder si le budget des
images gardées était déjà plein : un fichier écrit pour rien, élagué 24 h
plus tard.

- budget vérifié d'abord ; plein, l'image reste éphémère sans être rangée
- README : sur un modèle hybride, le gain dépend des points de reprise du
  moteur après une image, à vérifier dans la télémétrie avant d'adopter la clé
- test : budget plein, rien d'écrit dans chatimg

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5.5 committed 2026-10-04 09:49:06 +02:00
1 parent f74f64ed90
commit c1d3757f23
3 files changed
+38 -14

No files matched your search

+18 -12
View File
@@ -228,19 +228,25 @@ func (k *keepImages) relay(messages, extra []Message, m Message, from int) ([]Me
return append(messages, m), extra
}
m.ImgRelay = true
if !k.stopped {
if r, w, ok := refRelayImage(m); ok && keptImageTokens(messages) < keepImgBudget() {
if len(k.pend) == 0 {
k.pendReq, k.pendBase, k.pendFrom = k.reqN+1, k.lastAfter, from
}
messages = append(messages, r)
extra = append(extra, r)
k.pend = append(k.pend, keepPend{msgIdx: len(messages) - 1, extraIdx: len(extra) - 1, weight: w})
return messages, extra
}
k.stopped = true
if k.stopped {
return append(messages, m), extra
}
return append(messages, m), extra
// Budget déjà plein : inutile de ranger le fichier.
r, w, ok := Message{}, 0, false
if keptImageTokens(messages) < keepImgBudget() {
r, w, ok = refRelayImage(m)
}
if !ok {
k.stopped = true
return append(messages, m), extra
}
if len(k.pend) == 0 {
k.pendReq, k.pendBase, k.pendFrom = k.reqN+1, k.lastAfter, from
}
messages = append(messages, r)
extra = append(extra, r)
k.pend = append(k.pend, keepPend{msgIdx: len(messages) - 1, extraIdx: len(extra) - 1, weight: w})
return messages, extra
}
// sending : une requête part avec n messages.