v0.2.8 : l'IA garde la trace de ses appels d'outils entre les tours

Les tours d'outils (lecture de skill, commandes shell) ne survivaient
qu'a l'interieur de la boucle agentique d'un seul tour : seul le texte
final etait persiste. Resultat : a chaque nouveau message le modele
n'avait aucune trace d'avoir deja lu un skill, donc il le re-appelait
en boucle et confabulait des chemins/resultats disparus du contexte.

runChat retourne desormais les messages intermediaires (assistant
tool_calls + resultats tool). Le CLI les insere dans l'historique avant
la reponse finale ; le serveur web les emet en fin de flux SSE pour que
le client (stateless) les stocke. Couvre aussi ajean.link via E2E
(handleE2EChat -> runChatStream).
This commit is contained in:
nathaninline committed 2026-06-25 21:26:20 +02:00
1 parent a453229642
commit f632b7b42c
7 files changed
+54 -19

No files matched your search

+1 -1
View File
@@ -24,7 +24,7 @@ func cmdTest(args []string) error {
t0 := time.Now()
var firstTok time.Time
tokens := 0
err := runChat(context.Background(), msgs, 0, Caps{}, func(ev StreamEvent) bool {
_, err := runChat(context.Background(), msgs, 0, Caps{}, func(ev StreamEvent) bool {
if ev.Content != "" {
if firstTok.IsZero() {
firstTok = time.Now()