mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
N'annonce jamais au modèle un outil inutilisable (idée reprise d'AJEAN)
AJEAN (github.com/nathaninline/jean) n'expose ses outils web que si le service répond : « le modèle ne peut pas inventer un outil indisponible, un outil absent n'apparaît pas dans son contexte ». Loki, lui, listait les outils d'après les seuls interrupteurs de config. Conséquence : sans Aider installé, code_task était quand même annoncé — le modèle l'appelait, recevait « moteur code indisponible » et perdait un tour, au lieu d'employer directement write_file / edit_file. enabled_tool_names filtre désormais sur la disponibilité réelle. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SVay7z3y7q2gEe54ByAE6N
This commit is contained in:
1 file changed
+15
-1
@@ -248,4 +248,18 @@ def ollama_options(cfg: dict) -> dict:
|
||||
|
||||
|
||||
def enabled_tool_names(cfg: dict) -> list[str]:
|
||||
return [name for name, on in cfg["tools"].items() if on]
|
||||
"""Outils réellement proposables au modèle.
|
||||
|
||||
Un outil activé dans la config mais INUTILISABLE (dépendance absente) ne
|
||||
doit pas apparaître dans le contexte : sinon le modèle l'appelle, échoue,
|
||||
et gâche un tour. Mieux vaut qu'il ne sache pas qu'il existe et emploie
|
||||
directement write_file / edit_file.
|
||||
"""
|
||||
names = [name for name, on in cfg["tools"].items() if on]
|
||||
|
||||
if "code_task" in names:
|
||||
from . import coder
|
||||
if not coder.available():
|
||||
names.remove("code_task")
|
||||
|
||||
return names
|
||||
Reference in new issue
Block a user