mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-23 15:08:16 +02:00
Lot 6 : parité de la boucle d'un tour avec le Go (journaux de référence)
internal/loki/parity_test.go rejoue 19 scénarios dans runChatTools contre un faux moteur aux réponses scriptées, outils aux résultats fixés (execToolHook, nil en service) : réponse simple, raisonnement, outils seuls et en parallèle, appel répété, arguments illisibles, outil inconnu, budget dépassé, « pensé sans agir » une et deux fois, pensée en ligne, échantillonnage et intensité, raisonnement coupé, 500 une et deux fois, erreur du moteur, appel d'outil écrit en texte, API externe, historique déjà outillé. Les corps envoyés au moteur, les événements d'affichage (texte regroupé, mesures ignorées), l'historique ajouté et l'erreur sont rangés dans rust/loki-rs/tests/parity/*.json ; le test Go échoue si la boucle ne les produit plus (LOKI_PARITY_UPDATE=1 pour régénérer). rust/loki-rs/tests/parity.rs rejoue les mêmes scénarios dans chat::turn::run_turn et retrouve les 19 journaux à l'identique. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
22 files changed
+6250
-1
No files matched your search
@@ -2366,7 +2366,12 @@ func runChatLoop(ctx context.Context, kt *keepImages, messages []Message, tools
|
||||
extra = append(extra, toolMsg)
|
||||
continue
|
||||
}
|
||||
ex := execTool(ctx, tc.Function.Name, args, label, caps)
|
||||
var ex toolExecResult
|
||||
if execToolHook != nil {
|
||||
ex = execToolHook(ctx, tc.Function.Name, args, label, caps)
|
||||
} else {
|
||||
ex = execTool(ctx, tc.Function.Name, args, label, caps)
|
||||
}
|
||||
result, diff, diffAdd, diffDel, visionImg = ex.Result, ex.Diff, ex.Added, ex.Removed, ex.VisionImg
|
||||
if ex.Ask != nil {
|
||||
cb(StreamEvent{Ask: ex.Ask})
|
||||
@@ -2609,6 +2614,10 @@ type toolExecResult struct {
|
||||
Ask *AskEvent `json:"ask,omitempty"`
|
||||
}
|
||||
|
||||
// execToolHook : nil en service. Les tests de parité Go/Rust
|
||||
// (parity_test.go) y fixent les résultats des outils.
|
||||
var execToolHook func(ctx context.Context, name string, args map[string]any, label string, caps Caps) toolExecResult
|
||||
|
||||
// execTool exécute UN appel d'outil. Extrait tel quel de runChatLoop (lot 6
|
||||
// de la migration Rust) : c'est la frontière par laquelle une boucle de chat
|
||||
// écrite en Rust fera exécuter ses outils par ce process, tant qu'ils n'auront
|
||||
|
||||
Reference in new issue
Block a user