Files
AI-Profile-Router/docs/TOOLING_RELIABILITY_2026-08-24.md
T

6.2 KiB
Raw Blame History

Werkzeug-Zuverlässigkeit – Umbau vom 24. August 2026

Anlass

Mehrere reale Aufgaben scheiterten nicht am Qwen-Modell, sondern an der Werkzeugschicht: öffentliche Suchen lieferten leere oder veraltete Resultate, ein rekursiver GitHub-Baum verdrängte die Antwort aus dem Kontext, eine private Bank-CSV wurde als Knowledge-Quelle statt als Tabelle behandelt und ein nicht erreichbarer Home-Assistant-Endpunkt provozierte Wiederholungen. Das System benötigte deshalb kleinere, klarere Werkzeuge und harte Abbruchgrenzen.

Verbindliche Lösung

  1. Allgemeine öffentliche Recherche verwendet Open WebUIs native search_web- und fetch_url-Werkzeuge. Für Hermes/Pi steht TinySearch direkt auf VPN-Port 8203 bereit; der eigene Web-MCP ist nur Rollback.
  2. Der offizielle GitHub-MCP bietet genau drei read-only Werkzeuge: search_repositories, search_code und get_file_contents. Rekursive Komplettbäume sind ausgeschlossen.
  3. Private CSV-/Excel-Dateien werden ausschließlich mit dem lokalen Code-Interpreter und pandas/openpyxl ausgewertet. Web, MCP und Knowledge/RAG erhalten keine Dateiinhalte oder daraus abgeleitete Suchbegriffe. Der Filter leert dafür die MCP-Auswahl und deaktiviert features.web_search; im installierten OpenWebUI-Code läuft der Filter nachweislich vor der Webwerkzeug-Injektion. Vor pandas.read_csv werden Rohvorschau, Kodierung, Trennzeichen, Kopfzeile, Metadatenzeilen, Dezimal- und Datumsformat erkannt; 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 48 interne Werkzeugrunden und 40 tatsächlich ausgeführte Einzelaufrufe erlaubt. Pro Werkzeugname sind höchstens zwölf Aufrufe zulässig; identische Argumente dürfen einmal wiederholt werden und werden beim dritten Versuch unterdrückt. Die zusätzlichen internen Runden sind Synthesepuffer und erhöhen nicht das Ausführungsbudget. Das abgeleitete, reproduzierbar gebaute OpenWebUI-Image verwendet die letzte Runde zwingend 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 nicht erneut ausgeführt werden. Seit OpenWebUI-Derivat V7 sitzt die Größenbegrenzung deshalb direkt in der internen Fortsetzungsschleife: ein einzelnes Resultat ist auf 12.000, alle Resultate zusammen auf 64.000 Zeichen begrenzt. Zitate und sichtbarer Werkzeugstatus werden zuvor verarbeitet; das Modell erhält eine markierte Kopf-/Ende-Verdichtung. Die Basis ist unveränderlich auf OpenWebUI-Revision 01f4282f1ffe0d6212f58d3afbeae21fffd0c4be beziehungsweise Image-Digest sha256:6a773e5c3a246b65cbe74ce942b294292c0e5f81c138f703d111bc162f7d7c3d gepinnt. Das zuvor dokumentierte v0.9.5 war nicht der tatsächlich migrierte Datenbankstand und darf für diese Datenbank nicht verwendet werden.
  5. Repository-Prüfungen beginnen mit README/Wurzel, verwenden anschließend gezielte Code-Suchen und öffnen nur relevante Treffer. Eine konkrete Laufzeitinstanz wird genau einmal über ihr Fachwerkzeug geprüft.
  6. Der Home-Assistant-MCP behält den TLS-Namen ha.casaderoll.de, routet ihn im Container aber auf HOME_LAN_PROXY_IP im Heimnetz. Dadurch funktioniert 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 die passenden 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

  • OpenWebUI-Filtertests: 36
  • Web-MCP-Tests: 9
  • Athena-Operator-Tests: 13
  • Platform-Context-Test: bestanden
  • MCP-Katalog-TÜV: Handshake, Toolanzahl, Schema-Größe, Regex-Muster und verbotene Tools; keinerlei fachliche Toolaufrufe
  • Gesamttest des Routers: Profile, Streaming, Tools, Bild, Sprache und Fehlerwiederherstellung

Der wiederholbare MCP-Test lautet:

sudo /opt/mike-ai/stack/dev/verify_mcp_catalogs.sh

Er muss mit MCP_CATALOG_SUITE_OK enden.

Reale Browserabnahme

Die angemeldete OpenWebUI-Sitzung bestand am 24. August 2026 folgende Läufe:

  • unbekannte Website MakerWorld über native Suche plus TinySearch 0.6.1
  • GitHub-Repository plus vorhandener Unraid-Container plus Athena-Planung
  • mehrstufige Home-Assistant-YAML-Analyse ohne Vollinventar
  • bewusst angeforderte 223-KB-Klasse einer Home-Assistant-Zustandsliste; V7 lieferte trotz 2.169 Zuständen nach 30,9 Sekunden eine sichtbare Kurzantwort

Noch manuell zu prüfen

Ein echter Browsertest mit einer bewusst synthetischen CSV benötigt eine angemeldete OpenWebUI-Sitzung. Nach Login wird eine harmlose Beispieltabelle hochgeladen und geprüft, dass die Antwort sichtbare Summen enthält und in der Werkzeuganzeige ausschließlich lokale Datei-/Codewerkzeuge erscheinen. Für diesen Test dürfen niemals echte Bankdaten verwendet werden.

Rollback

Vor dem Live-Umbau liegt die Quell- und Konfigurationssicherung unter /data/mike-ai-recovery/pre-tooling-upgrade-20260823-235527. OpenWebUIs Datenbank wurde zusätzlich unmittelbar vor Filter- und Modellinstallation gesichert. Ein Rollback betrifft ausschließlich Werkzeug-/OpenWebUI-Dateien; Netzwerk, SSH, WireGuard, Kernel, GPU-Treiber und Bootkonfiguration wurden nicht verändert.