mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-24 15:38:12 +02:00
Contexte : fini le 400 « dépasse la fenêtre » qui bloquait la discussion
Repris d'AJEAN 0.17.5. Sur une fenêtre de 65k, un tour qui lit plusieurs gros fichiers d'un coup passait de 60 % à plus de 130 % sans jamais compacter, et l'erreur remontait telle quelle. - Le test de compactage en cours de tour compte aussi les résultats d'outils de l'étape, que le moteur n'a pas encore vus. Sans usage côté serveur, l'estimation porte toujours sur tout l'historique. - Tout résultat d'outil est borné à 30 000 caractères dans la vue du modèle, avec une mention qui l'invite à cibler. L'interface garde le résultat complet (« voir plus »). - Dernier recours quand le moteur refuse encore le prompt et que le compactage n'a rien pu faire : shrinkToFit tronque les gros résultats d'outils puis retire les plus vieux échanges, vers 60 % de la fenêtre corrigés par la taille réelle lue dans l'erreur. Deux essais au plus. - Tâches planifiées : la note de tâche passe en tête du message utilisateur au lieu du système. Le préfixe reste celui du chat et le cache de prompt de llama-server sert aux deux (l'amont mesurait 12 s de recalcul pour un « salut » après une tâche). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
199d7f1e99
commit
8171899ac1
4 files changed
+170
-15
No files matched your search
+11
-12
@@ -68,26 +68,25 @@ func (c *Conversation) RunAutonomous(ctx context.Context, taskID, taskName, prom
|
||||
if temperature == 0 {
|
||||
temperature = 0.7
|
||||
}
|
||||
// La note de tâche (conscience du mode autonome + compte-rendu du passage
|
||||
// précédent) va EN TÊTE DU MESSAGE UTILISATEUR, pas dans le système : le
|
||||
// préfixe système + outils reste ainsi identique à celui du chat, et le cache
|
||||
// de prompt de llama-server sert aux deux. Une note dans le système faisait
|
||||
// tout recalculer à la tâche, PUIS au message suivant de l'utilisateur (12 s
|
||||
// mesurées en amont pour un simple « salut », AJEAN 0.17.5).
|
||||
if note := taskContextNote(taskName, lastReport); note != "" {
|
||||
prompt = note + "\n\n" + prompt
|
||||
}
|
||||
msgs := []Message{{Role: "user", Content: prompt}}
|
||||
// Même préambule que la vraie génération : consigne personnelle + préambule
|
||||
// agent + briefing machine (via InjectSkills), pour que l'IA ait le même
|
||||
// contexte et les mêmes outils qu'en chat. On préfixe le tout d'une note de
|
||||
// contexte (conscience du mode autonome + mémoire du passage précédent),
|
||||
// fusionnée dans UN SEUL message système en tête — comme l'exigent les
|
||||
// gabarits stricts (normalizeSystemMessages le garantit de toute façon).
|
||||
// contexte et les mêmes outils qu'en chat.
|
||||
// Contexte du projet de la tâche : le projet est déjà forcé par l'appelant
|
||||
// (setProjectOverride dans runTask), donc ces messages décrivent le bon
|
||||
// chantier — la tâche voit la mémoire et les trackers qu'elle vise.
|
||||
final := append(projectSystemMessages(), msgs...)
|
||||
sys := readSysPrompt()
|
||||
note := taskContextNote(taskName, lastReport)
|
||||
switch {
|
||||
case sys != "" && note != "":
|
||||
final = append([]Message{{Role: "system", Content: sys + "\n\n" + note}}, final...)
|
||||
case sys != "":
|
||||
if sys := readSysPrompt(); sys != "" {
|
||||
final = append([]Message{{Role: "system", Content: sys}}, final...)
|
||||
case note != "":
|
||||
final = append([]Message{{Role: "system", Content: note}}, final...)
|
||||
}
|
||||
|
||||
var content strings.Builder
|
||||
|
||||
Reference in new issue
Block a user