mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
Sur une reprise (« ajoute un bouton », « continue »), le routeur ne voyait que le message courant : score trop bas, jamais le moteur code, et le modèle décrivait les changements sans les appliquer. - routage contextuel : si le tour précédent était du code (engine ou outils write_file/edit_file/code_task), les suites courtes partent au moteur code (is_code_followup) - chemin agent sur session code : directive système « AGIS avec les outils, ne décris jamais sans appliquer » - fichiers cités dans le message et présents au workspace transmis à Aider (travail direct, sans deviner via la repo map) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
import os
|
|
import tempfile
|
|
|
|
os.environ.setdefault("DATA_DIR", tempfile.mkdtemp())
|
|
os.environ.setdefault("WORKSPACE_DIR", tempfile.mkdtemp())
|
|
|
|
from app import router # noqa: E402
|
|
from app.routes.chat import _mentioned_files, _prev_was_code # noqa: E402
|
|
from app.config import settings # noqa: E402
|
|
|
|
|
|
def test_message_code_explicite():
|
|
assert router.is_code_task("crée une page html avec un formulaire") is True
|
|
|
|
|
|
def test_message_banal_pas_code():
|
|
assert router.is_code_task("quelle heure est-il ?") is False
|
|
|
|
|
|
def test_followup_courts():
|
|
# Suites typiques d'un travail de code, sans vocabulaire code explicite.
|
|
assert router.is_code_followup("ajoute un bouton rouge en haut") is True
|
|
assert router.is_code_followup("continue") is True
|
|
assert router.is_code_followup("enlève le menu et agrandis le titre") is True
|
|
assert router.is_code_followup("merci beaucoup !") is False
|
|
|
|
|
|
def test_prev_was_code_via_engine():
|
|
history = [
|
|
{"role": "user", "content": "crée un site", "meta": None},
|
|
{"role": "assistant", "content": "fait", "meta": {"engine": "code"}},
|
|
]
|
|
assert _prev_was_code(history) is True
|
|
|
|
|
|
def test_prev_was_code_via_write_file():
|
|
history = [
|
|
{"role": "assistant", "content": "ok",
|
|
"meta": {"tools": [{"name": "write_file", "args": {}}]}},
|
|
]
|
|
assert _prev_was_code(history) is True
|
|
|
|
|
|
def test_prev_was_code_discussion():
|
|
history = [
|
|
{"role": "assistant", "content": "voici la réponse", "meta": None},
|
|
]
|
|
assert _prev_was_code(history) is False
|
|
|
|
|
|
def test_mentioned_files_existants_seulement():
|
|
root = os.path.abspath(settings.workspace_dir)
|
|
os.makedirs(root, exist_ok=True)
|
|
with open(os.path.join(root, "index.html"), "w", encoding="utf-8") as f:
|
|
f.write("<html></html>")
|
|
found = _mentioned_files("modifie index.html et style.css")
|
|
assert found == ["index.html"] # style.css n'existe pas
|