# 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: ```bash 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.