mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-21 22:18:13 +02:00
Cache : corrections de relecture — un rappel de loki ne laisse plus deux messages user d'affilée
Persister les rappels ouvrait trois façons de coller deux `user` dans l'historique, celles-là même qu'appendNudge voulait éviter : sur un gabarit à alternance stricte, chaque tour suivant aurait échoué. - Fin de tour : un rappel resté sans réponse (stop, erreur) ou suivi d'un ajout en cours de réponse est retiré avant persistance (dropStrayNudges), comme avant sa persistance. - Compaction : la queue ne commence plus sur un rappel ; la vraie demande réinjectée devant elle lui était collée. Elle recule d'un groupe d'outils. - isLokiInjected ne se contente plus du préfixe « [system] » : un message de l'utilisateur qui commence ainsi n'est plus pris pour un rappel (sa demande était sautée par la compaction, le vérificateur et le titre). - Relance tool_choice « none » : pas de repli après un stop, qui partait sur un contexte annulé et affichait une erreur. - Tests : appel par le protocole et refus 4xx sous « none » (et rien d'exécuté), frontière de compaction, nettoyage de fin de tour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
38b488515a
commit
9263df404d
6 files changed
+151
-8
No files matched your search
@@ -1713,8 +1713,9 @@ func runChat(ctx context.Context, messages []Message, temperature float64, caps
|
||||
// Relance tool_choice « none » sans réponse exploitable (appel tenté
|
||||
// malgré tout, balisage d'appel en texte, ou rien du tout) : repli UNE
|
||||
// fois sur le chemin historique, outils retirés du gabarit. Le prompt est
|
||||
// alors recalculé, mais le tour aboutit comme avant.
|
||||
if toolChoiceNone && (noneLeak || textualToolCallSnippet(assistantContent.String()) != "" ||
|
||||
// alors recalculé, mais le tour aboutit comme avant. Pas après un stop :
|
||||
// la relance partirait sur un contexte annulé et afficherait une erreur.
|
||||
if toolChoiceNone && ctx.Err() == nil && (noneLeak || textualToolCallSnippet(assistantContent.String()) != "" ||
|
||||
strings.TrimSpace(assistantContent.String()) == "") {
|
||||
logCtx("relance tool_choice=none sans réponse exploitable : repli sans outils")
|
||||
toolChoiceNone = false
|
||||
|
||||
Reference in new issue
Block a user