docs: lokales LLM bekommt kuratierte Tool-Auswahl (Tool-Calling in B1 statt B3)

Qwen3 kann natives OpenAI-Tool-Calling; llama.cpp (--jinja) unterstuetzt es.
Lokales Tier bekommt einen kleinen, risikoarmen Start-Satz (Wetter, memory_search,
trigger_timer, Spotify, Licht); volles Arsenal bleibt bei Claude, Escalation-Netz
bleibt. Klein halten = Speed. Plan-Entscheidungen + Phasen entsprechend gezogen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-11 11:20:52 +02:00
co-authored by Claude Opus 4.8
parent 75b022a456
commit e6e87a8b20
+34 -8
View File
@@ -73,27 +73,53 @@ hat keine Tools; das ist ein Gespraechs-Eval-Modus, kein Voll-ARIA. Fast-Path
Das lokale Modell braucht ARIAs Identität, sonst bricht es aus der Rolle Das lokale Modell braucht ARIAs Identität, sonst bricht es aus der Rolle
(gelernt aus dem `--system-prompt`-Debakel). Aber **schlanker**: (gelernt aus dem `--system-prompt`-Debakel). Aber **schlanker**:
- IDENTITY_SEED + Kern-Persona: ja. - IDENTITY_SEED + Kern-Persona: ja.
- Volles Memory / alle Skill-Schemas / Tool-Block: **nein** (Tier 1 macht keine - Volles Memory / ALLE Skill-Schemas: **nein** — nur eine **kuratierte, kleine
Tools). Hält den lokalen Prompt klein → schnell. Tool-Auswahl** (siehe unten). Haelt den lokalen Prompt klein → schnell.
- Persona kommt lokal auch als echter System-Prompt (llama.cpp `system`-Rolle). - Persona kommt lokal auch als echter System-Prompt (llama.cpp `system`-Rolle).
## Tool-Calling lokal (kuratierte Auswahl)
Das lokale LLM DARF Werkzeuge nutzen (Qwen3 = natives OpenAI-Tool-Calling, von
llama.cpp `--jinja` unterstuetzt). Ablauf wie bei Claude: Brain schickt
messages + tools → Qwen antwortet mit `tool_calls` → Brain fuehrt via
`_dispatch_tool` aus → Ergebnis zurueck → finale Antwort. Tool-Loop im Brain,
Ziel = lokales LLM statt Claude-Proxy.
**Kritische Regel: klein halten.** Der Wert des lokalen Tiers ist Speed; das
volle Arsenal (~49 K Zeichen Schemas) wuerde den Prompt sprengen und das kleine
Modell ueberfordern. Daher nur ein **Start-Satz haeufiger, risikoarmer Tools**:
- Lokal: Wetter, Uhrzeit, `memory_search` (lesen), `trigger_timer`,
Spotify-Steuerung (Nicht-Fast-Path-Saetze), Licht/Smart-Home.
- Bleibt bei Claude: `skill_create/update/delete`, `oauth_*`, `project_*`,
`flux_generate`, `memory_save` (schreiben) — erst spaeter evtl. lokal.
Escalation-Netz bleibt: braucht ein Turn ein Tool, das lokal nicht dabei ist →
`<<ESCALATE>>` → Claude mit vollem Arsenal.
Implementierung (B1): Adapter reicht `tools` an llama.cpp + gibt `tool_calls`
zurueck; Bridge schleust beides durch (llm_request/llm_response); Brain-Tool-Loop
mit Ziel lokal.
## Phasen ## Phasen
- **B0 — Infra:** llama.cpp-Container + RVS-Adapter auf der Gamebox, - **B0 — Infra:** llama.cpp-Container + RVS-Adapter auf der Gamebox,
`ALLOWED_TYPES`, `local_llm_chat()` im Brain. Isoliert testen („sag hallo"). `ALLOWED_TYPES`, `local_llm_chat()` im Brain. Isoliert testen („sag hallo").
- **B1 — Router:** Heuristik Tier-1/2 + Escalation, schlanke Persona lokal. - **B1 — Router + lokale Tools:** Heuristik Tier-1/2 + Escalation, schlanke
Einfache Turns → lokal. Messen: Trefferquote & Latenz. Persona lokal, **kuratierte Tool-Auswahl lokal** (Adapter/Bridge/Brain-Tool-
Loop, siehe oben) + „Nur lokales LLM"-Checkbox. Einfache Turns → lokal.
Messen: Trefferquote, Tool-Zuverlaessigkeit & Latenz.
- **B2 — Streaming/Voice:** `llm_partial` → TTS beginnt beim ersten Satz → - **B2 — Streaming/Voice:** `llm_partial` → TTS beginnt beim ersten Satz →
der „live"-Sprung. **Hier den Gong-/Ohr-Re-Arm-Bug mit-fixen** (Barge-In, der „live"-Sprung. **Hier den Gong-/Ohr-Re-Arm-Bug mit-fixen** (Barge-In,
sauberes Re-Listen). sauberes Re-Listen).
- **B3 (optional):** dem lokalen Modell ein paar schnelle, sichere Tools geben. - **B3 (optional):** lokalen Tool-Satz erweitern, sobald Qwen sich als
zuverlaessig erweist (z.B. `memory_save`).
## Offene Entscheidungen (für Stefan) ## Offene Entscheidungen (für Stefan)
1. **Modell:** Qwen3 8B (Tool-Calling) — oder doch Mistral Small 3 7B (Speed)? 1. **Modell:** Qwen3 8B (Tool-Calling) — oder doch Mistral Small 3 7B (Speed)?
2. **Routing v1:** rein heuristisch + Escalation (empfohlen) — oder gleich ein 2. **Routing v1:** rein heuristisch + Escalation (entschieden).
Mini-Classifier? 3. **Tools lokal:** kuratierte kleine Auswahl (entschieden — Start-Satz oben;
3. **Tools lokal:** in v1 bewusst KEINE (alles Tool-artige → Claude) — ok? Stefan bestaetigt/justiert die konkrete Liste vor dem B1-Bau).
## Folge-Baustein: Modell-Auswahl in ARIA Diagnostic (B0.5) ## Folge-Baustein: Modell-Auswahl in ARIA Diagnostic (B0.5)