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:
Claude committed 2026-08-03 05:49:40 +00:00
1 parent c5dc936f50
commit 236e875cf9
1 file changed
+15 -1
+15 -1
View File
@@ -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