perf(router): lokales Fenster auf letzte 8 Turns cappen (Speed bei langer History)

Gemessen: lokaler Call mit 12-Turn-Fenster ~2,6s statt ~0,8s. Im Hauptchat (bis
50 Turns) wuerde volles Fenster das Prefill aufblaehen und den Speed-Vorteil
auffressen. Lokales Tier ist fuer kurze Plauder-Turns — letzte 8 Turns reichen.

B1a end-to-end verifiziert: plaudern→lokal (~0,8s warm), Tool/hart→Claude,
localOnly erzwingt lokal; Config live gelesen, Default aus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-11 12:00:35 +02:00
co-authored by Claude Opus 4.8
parent c8b7ea322e
commit 71b3fc5d31
+6 -1
View File
@@ -1062,6 +1062,8 @@ class Agent:
# /shared/config/local_llm.json (Default aus → alles Claude wie bisher). # /shared/config/local_llm.json (Default aus → alles Claude wie bisher).
# Rueckgabe: fertige Antwort (str) wenn lokal erledigt, sonst None → Claude. # Rueckgabe: fertige Antwort (str) wenn lokal erledigt, sonst None → Claude.
_LOCAL_WINDOW_TURNS = 8 # nur die letzten N Turns ans lokale Modell (Speed)
def _try_local_fast_lane(self, user_message: str, def _try_local_fast_lane(self, user_message: str,
active_project_id: str) -> Optional[str]: active_project_id: str) -> Optional[str]:
cfg = router_mod.load_config() cfg = router_mod.load_config()
@@ -1069,7 +1071,10 @@ class Agent:
return None return None
sys_prompt = router_mod.build_local_system_prompt(IDENTITY_ANCHOR) sys_prompt = router_mod.build_local_system_prompt(IDENTITY_ANCHOR)
window = self.conversation.window(project_id=active_project_id) # Nur die letzten paar Turns ans lokale Modell — es ist fuer kurze
# Plauder-Turns da. Volles Fenster (bis 50) wuerde das Prefill aufblaehen
# und den Speed-Vorteil auffressen (gemessen: 12 Turns → ~2,6s statt ~0,8s).
window = self.conversation.window(project_id=active_project_id)[-self._LOCAL_WINDOW_TURNS:]
messages = [{"role": "system", "content": sys_prompt}] messages = [{"role": "system", "content": sys_prompt}]
messages += [{"role": t.role, "content": t.content} for t in window] messages += [{"role": t.role, "content": t.content} for t in window]