mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-20 05:28:15 +02:00
Mode Code : les consignes du dépôt (AGENTS.md, CLAUDE.md) font partie du contexte
Repris de context/instructions.ts d'OpenFox. Un dépôt qui documente ses commandes de build et de test, ses conventions et ses pièges le fait dans AGENTS.md ou CLAUDE.md. Le modèle les redécouvrait à coups de read et de bash — quand il les redécouvrait. En mode Code, le premier de ces fichiers trouvé (dépôt cloné détecté, puis racine de la discussion) part avec le contexte du projet, tronqué à 4 000 caractères. Comme le reste du contexte projet, il est déplacé dans le premier message utilisateur : le préfixe système, et le cache de prompt, restent intacts. Les tours de correction et de relance du builder reçoivent désormais le même contexte projet que le tour de build : sans lui, le début du premier message utilisateur changeait et tout le prompt était recalculé. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
dfafca6fb2
commit
d5632e3595
5 files changed
+102
-3
No files matched your search
@@ -0,0 +1,34 @@
|
||||
package loki
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// AGENTS.md du dépôt cloné part avec le contexte en mode Code, déplacé dans le
|
||||
// premier message utilisateur (préfixe système intact).
|
||||
func TestConsignesDuDepot(t *testing.T) {
|
||||
withWorkspace(t)
|
||||
if _, ok := codeInstructionsMessage(Caps{Code: true}); ok {
|
||||
t.Fatal("consignes trouvées dans un dossier vide")
|
||||
}
|
||||
repo := filepath.Join(agentCwd(), "projet")
|
||||
_ = os.MkdirAll(filepath.Join(repo, ".git"), 0o755)
|
||||
if err := os.WriteFile(filepath.Join(repo, "AGENTS.md"), []byte("Build : make test\n"+strings.Repeat("x", 5000)), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, ok := codeInstructionsMessage(Caps{}); ok {
|
||||
t.Fatal("consignes injectées hors mode Code")
|
||||
}
|
||||
m, ok := codeInstructionsMessage(Caps{Code: true})
|
||||
s := msgText(m)
|
||||
if !ok || !strings.Contains(s, "make test") || !strings.Contains(s, "projet/AGENTS.md") || !strings.Contains(s, "tronqué") {
|
||||
t.Fatalf("message = %.200q", s)
|
||||
}
|
||||
out := normalizeSystemMessages([]Message{{Role: "system", Content: "base"}, m, {Role: "user", Content: "fais-le"}})
|
||||
if msgText(out[0]) != "base" || !strings.Contains(msgText(out[1]), "make test") {
|
||||
t.Fatalf("consignes restées dans le système : %+v", out)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user