feat: harden Qwen agentic tool orchestration

This commit is contained in:
Mikei386
2026-08-24 10:47:13 +02:00
parent 4ac0c479c4
commit 5cb6079918
11 changed files with 371 additions and 62 deletions
+12 -2
View File
@@ -1,6 +1,6 @@
# Aktueller produktiver Referenzstand
Stand: 23. August 2026. Dieses Dokument beschreibt die auf Athena installierte
Stand: 24. August 2026. Dieses Dokument beschreibt die auf Athena installierte
und geprüfte Docker-Referenz. Die verbindlichen Profilparameter stehen in
`STANDARD_PROFILE_MATRIX.md`.
@@ -49,6 +49,7 @@ Zielplattform.
- Batch 64, Micro-Batch 32
- ein paralleler Slot
- Jinja und automatisches Reasoning
- erhaltener Reasoning-Zustand über Werkzeugrunden (`--reasoning-preserve`)
- Temperatur 0,2, Top-p 0,8, Top-k 20
### Profile
@@ -174,7 +175,9 @@ Aktuell existieren funktionale Adapter für:
OpenWebUI bindet diese Kataloge nicht pauschal an jedes Modellprofil. Der
lokale `MikeAI Auto Tool Selector` ergänzt anhand der jüngsten Nutzernachricht
höchstens zwei passende Fach-MCP-Verbindungen pro Anfrage. Allgemeine
höchstens drei passende Fach-MCP-Verbindungen pro Anfrage. Eine echte
Mehrdomänen-Aufgabe erhält automatisch ein begrenztes mittleres Reasoning-
Budget; einfache Aufgaben bleiben schnell. Allgemeine
Webrecherche erfolgt über Open WebUIs native `search_web`/`fetch_url`-Werkzeuge;
`web-local` ist nur noch manuell für Spezialfälle verfügbar. Dadurch bleiben
Fachkataloge klein und kurze Profile verlieren keinen unnötigen Kontext. MUA
@@ -194,6 +197,13 @@ Die Transportbrücke verwendet den OpenWebUI-kompatiblen `mcp-proxy` 0.12.0 im
stateless Betrieb. Supergateway wurde nach reproduzierbaren HTTP-400-Fehlern
bei `notifications/initialized` aus diesem Pfad entfernt.
Die agentische OpenWebUI-Schleife führt höchstens zwölf einzelne Werkzeuge aus,
höchstens vier Varianten desselben Werkzeugs und niemals zweimal exakt dieselbe
Signatur. Nach Ende des Budgets stehen zusätzliche interne Runden ausschließlich
für eine sichtbare werkzeugfreie Schlussantwort bereit. Das produktive
OpenWebUI-Derivat trägt den Tag
`mike-ai/openwebui:main-01f4282-agent-loop-v5`.
Der Platform Context MCP läuft ohne Docker-Socket, Shell, Egress oder Secrets.
Ein root-eigener Minutentimer erzeugt nur einen begrenzten Laufzeitsnapshot.
Der Schreibpfad ist auf `docs/*.md`, Vorschau, ausdrückliche Freigabe, atomare
+1 -1
View File
@@ -10,7 +10,7 @@ Reihenfolge ist absichtlich festgelegt:
2. `Thinking`, Priorität 20: läuft nur bei aktiviertem Brain-Schalter und
überschreibt den Standard mit Low, Medium oder High.
3. `MikeAI Auto Tool Selector`, Priorität 25: betrachtet ausschließlich die
jüngste Nutzernachricht und stellt pro Anfrage höchstens zwei passende MCPs
jüngste Nutzernachricht und stellt pro Anfrage höchstens drei passende MCPs
bereit. Er erkennt GitHub, Home Assistant, Sonarr/Radarr, Navidrome,
Unraid-Diagnose und Athena-Plattformwissen. Manuell gewählte Werkzeuge
bleiben erhalten. MUA mit erweiterten Verwaltungsrechten wird nie
@@ -0,0 +1,90 @@
# Qwen3.8-27B – agentischer Werkzeugtest vom 24. August 2026
## Ergebnis in einem Satz
Qwen3.8-27B ist auf Athena für längere agentische Aufgaben brauchbar, wenn die
Werkzeugschicht ihm gebündelte Fachoperationen, erhaltenes Reasoning und eine
garantierte Schlussrunde anbietet. Die früheren Ausfälle waren überwiegend
Orchestrierungs- und MCP-Probleme, nicht ein grundsätzliches Unvermögen des
Modells.
## Warum die Community-Erfahrungen besser wirkten
Community-Demos verwenden meist einen spezialisierten Agent-Harness, große
Kontexte, erhaltenes Reasoning und kompakte Werkzeuge. Athena kombinierte zuvor
76K Kontext, standardmäßig abgeschaltetes Thinking, sechs Einzelaufrufe,
teilweise sehr kleinteilige MCP-Operationen und OpenWebUIs hartes Ende ohne
Syntheserunde. Zusätzlich existieren aktuelle llama.cpp-Randfälle bei
Qwen3.8-Systemnachrichten, verschachtelten Werkzeugschemata und gestreamten
Parallelaufrufen. Die Differenz war daher kein fairer Modellvergleich.
## Produktive Änderungen
- `--reasoning-preserve` in allen Qwen-Profilen.
- Automatische Auswahl von bis zu drei Fach-MCPs.
- Automatisch mittleres, auf 3.072 Token begrenztes Reasoning nur bei echten
Mehrdomänen-Aufgaben; explizite Benutzereinstellungen werden nicht ersetzt.
- Zwölf tatsächliche Aufrufe, höchstens vier pro Werkzeug, keine identische
Signatur zweimal; 16 interne Runden lassen Raum für die Schlussantwort.
- Genau ein zusätzlicher werkzeugloser Syntheseversuch, falls Qwen nach Ende
der Recherche trotzdem noch einen Funktionsaufruf formuliert.
- Home Assistant `find_commented_blocks`: vollständige auskommentierte
Automationseinträge einschließlich ID, Alias und Zeilen in einem Aufruf.
- MUA r017: gebündelte CA-Suche mit bis zu fünf Namensvarianten.
- MUA r018: fokussierte Loganalyse mit mehreren `focus_terms` in einem Aufruf.
- Evidenzplan im Systemprompt: zuerst ein breiter Aufruf je Domäne, danach nur
gezielte Lücken schließen, Pflichtbedingungen früh prüfen und bei deren
Scheitern sofort den Kandidaten wechseln.
## Browser-Benchmarks
| Test | Vorher | Nachher | Bewertung |
|---|---:|---:|---|
| Auskommentierte HA-Automationen inventarisieren | 9 Aufrufe, 90,9 s | 1 Aufruf, 26,8 s | IDs, Aliase und Zeilen korrekt; sehr gut |
| Deemix: GitHub + laufender Unraid-Container + MCP-Entwurf | zuvor 37 GitHub-Aufrufe und Abbruch | 7 Aufrufe, sichtbare Antwort | klare Verbesserung; einzelne Betriebsannahmen noch zu optimistisch |
| Web + GitHub + Unraid: CA-Negativprüfung und Template-Entwurf | Kandidat zu spät verworfen, Budgetende | 11 Aufrufe, vollständiger Entwurf | Schlussantwort vorhanden; XML und Architektur müssen weiterhin fachlich geprüft werden |
| Drei Domänen: HA-YAML + Unraid-Logs + GitHub-Quelle | vorher kein finaler Text am Budgetende | 12 Aufrufe, vollständige Evidenzmatrix | Finalizer v5 bestanden; Quellenverwechslung wurde transparent als Unsicherheit markiert |
| Fokussierte Home-Assistant-Logprüfung | mehrere Shell-/grep-Aufrufe | 1 Inventar + 1 fokussierte Loganalyse, 44,7 s | MUA r018 korrekt gewählt; klare Beleggrenzen |
## Qualitätsbefund
### Stark
- wählt nach der Anpassung die drei korrekten Fachdomänen automatisch;
- beginnt parallel/breit und liefert belastbare Livewerte;
- kann aus Werkzeugresultaten strukturierte Evidenzmatrizen und sichere Pläne
bauen;
- verschweigt verbleibende Unsicherheit überwiegend nicht;
- die HA-Spezialoperation reduziert Laufzeit und Kontextverbrauch drastisch.
### Noch nicht auf Frontier-Agent-Niveau
- bei ähnlichen GitHub-Repositories kann Qwen den falschen Treffer vertiefen,
statt zuerst den exakten installierten Upstream zu bestimmen;
- bei komplexen Containerstacks erzeugt es gelegentlich formal plausible,
aber fachlich fragwürdige Unraid-XMLs;
- ohne gebündelte Logoperation fällt es auf mehrere Shell-/grep-Aufrufe zurück;
- zwölf Werkzeugaufrufe sind kein Qualitätsbeweis: Die Auswahl und Form der
Werkzeuge sind wichtiger als eine möglichst große Zahl.
## Empfehlung
Fast bleibt für normale Aufgaben geeignet. Für Änderungen, längere Recherche
oder mehrere Systeme gleichzeitig soll das automatische Mehrdomänen-Reasoning
greifen; bei besonders kritischer Arbeit kann Thinking manuell auf Hoch gesetzt
werden. Ergebnisse, die Installationen, Sicherheit, Geld oder Datenänderungen
betreffen, benötigen weiterhin Vorschau, Belegprüfung und Freigabe. Weitere
Verbesserungen sollten bevorzugt gebündelte Fachoperationen ergänzen und nicht
das globale Aufruflimit erhöhen.
## Versionierte Quellen
- Qwen3.8-27B Modellkarte: <https://huggingface.co/Qwen/Qwen3.8-27B>
- OpenWebUI native tool calling:
<https://github.com/open-webui/docs/blob/main/docs/features/extensibility/plugin/tools/index.mdx>
- llama.cpp Systemnachrichten-Randfall:
<https://github.com/ggml-org/llama.cpp/issues/27367>
- llama.cpp verschachtelte Schemas:
<https://github.com/ggml-org/llama.cpp/issues/21771>
- llama.cpp Streaming/Parallel-Toolcalls:
<https://github.com/ggml-org/llama.cpp/issues/18591>
+16 -3
View File
@@ -27,10 +27,15 @@ benötigte deshalb kleinere, klarere Werkzeuge und harte Abbruchgrenzen.
damit führen deutsche Bankexporte nicht mehr unnötig zuerst zu einem
ParserError wegen einer falschen Spaltenzahl. Tabellenanalysen sollen im
Regelfall mit einer Erkennungs- und einer Auswertungsrunde auskommen.
4. Pro Antwort sind höchstens acht Werkzeugrunden und sechs tatsächlich
ausgeführte Einzelaufrufe erlaubt. Das abgeleitete,
4. Pro Antwort sind höchstens 16 interne Werkzeugrunden und zwölf tatsächlich
ausgeführte Einzelaufrufe erlaubt. Pro konkretem Werkzeug sind höchstens
vier unterschiedliche Aufrufe zulässig; identische Argumente werden kein
zweites Mal ausgeführt. Die zusätzlichen vier internen Runden sind nur
Synthesepuffer und erhöhen nicht das Ausführungsbudget. Das abgeleitete,
reproduzierbar gebaute OpenWebUI-Image verwendet die letzte Runde zwingend
als werkzeugfreie Synthese. Statt `Tool-call limit reached` ohne Ergebnis
als werkzeugfreie Synthese. Erzeugt das Modell trotz entfernter Schemata
noch einmal werkzeugförmige Ausgabe, folgt genau ein zweiter, ebenfalls
werkzeugloser Syntheseversuch. Statt `Tool-call limit reached` ohne Ergebnis
erhält der Benutzer deshalb eine sichtbare Antwort aus den vorhandenen
Befunden samt ehrlicher Angabe fehlender Belege. Inlet-Filter allein können
dies nicht erzwingen, weil sie zwischen OpenWebUIs internen Werkzeugrunden
@@ -50,6 +55,14 @@ benötigte deshalb kleinere, klarere Werkzeuge und harte Abbruchgrenzen.
er auch vom Außenstandort über WireGuard.
7. Task-Management ist keine Faktenquelle und wird nicht für einzelne Fragen,
Nachschlageaufgaben oder Dateianalysen verwendet.
8. Mehrdomänen-Aufgaben erhalten automatisch höchstens drei passende
Fachkataloge und ein begrenztes Qwen-Reasoning-Budget. Einfache Ein-Domänen-
Aufgaben bleiben im schnellen Non-Thinking-Modus. Alle llama.cpp-Profile
bewahren Reasoning-Zustand zwischen Werkzeugrunden (`--reasoning-preserve`).
9. Wiederkehrende Fachsuchen werden serverseitig gebündelt: Home Assistant
inventarisiert auskommentierte YAML-Blöcke in einem Aufruf; MUA durchsucht
Community Applications mit mehreren Namensvarianten in einem Feed-Durchlauf
und filtert Containerlogs mit mehreren `focus_terms` in einem Aufruf.
## Abnahme