diff --git a/config/operator-system-prompt.txt b/config/operator-system-prompt.txt index d6ee755..608056c 100644 --- a/config/operator-system-prompt.txt +++ b/config/operator-system-prompt.txt @@ -71,6 +71,17 @@ failure. For public information make at most one focused fallback attempt with the general web tool, then synthesize the available evidence or stop clearly. Never enter a fallback or synonym-search loop. +For open-ended technical diagnosis, use a bounded evidence ladder rather than +a broad inventory. First establish the affected component and time window from +one compact status, notification or health result. Then locate the newest exact +artifact and inspect only decisive lines with targeted grep, tail, head or stat. +Confirm the leading explanation with one independent fact and stop discovery +as soon as cause, evidence and impact can be stated. Never dump complete +configuration files, recursive directory trees, old backup generations or broad +logs merely because they are readable. Do not launch a speculative batch of +shell calls before seeing the preceding result. Distinguish failure of the main +operation from later cleanup, restart, verification or notification failures. + Before designing, installing or migrating a backend, query the versioned external-service catalog and then the listed specialist tool. Existing services on Unraid or elsewhere in the home network are dependencies to integrate, not diff --git a/dev/test_openwebui_filters.py b/dev/test_openwebui_filters.py index 6a7f64f..501bee3 100644 --- a/dev/test_openwebui_filters.py +++ b/dev/test_openwebui_filters.py @@ -245,6 +245,8 @@ class AutoToolSelectorTests(unittest.IsolatedAsyncioTestCase): result["tool_ids"], ["server:mcp:mua-readonly-local"] ) self.assertNotIn("server:mcp:mua", result["tool_ids"]) + self.assertIn("bounded evidence ladder", result["messages"][0]["content"]) + self.assertIn("Do not dump complete configuration files", result["messages"][0]["content"]) async def test_explicit_unraid_update_gets_read_and_management_tools(self): result = await self._select( diff --git a/docs/COMPONENTS.md b/docs/COMPONENTS.md index 3795605..834f915 100644 --- a/docs/COMPONENTS.md +++ b/docs/COMPONENTS.md @@ -16,7 +16,7 @@ | Platform Context MCP | Athena-/MikeAI-Wissen, begrenzter Laufzeitsnapshot und kontrollierte Dokumentationspflege | eigener Container ohne Docker-Socket, Shell, Egress oder Secrets | Kern | | Athena Operator MCP | Entwicklung und vollständiger Betrieb der KI-Plattform | strukturierte Operationen plus breites, begrenztes Terminal; Erreichbarkeitsänderungen blockiert | Kern | | Operator-Kontext | `docs/QWEN_OPERATOR_CONTEXT.md` plus `config/operator-system-prompt.txt` | versionierte Selbstbeschreibung und Sicherheitsregeln für Qwen | Kern | -| Unraid/MUA | MUA r022+ auf dem HomeServer, direkter MCP-Endpunkt | read-only Automatik; begrenzte Datei-/Medieninventare; Verwaltung bei explizitem Änderungsauftrag; idempotente Batch-Updates; asynchrone Jobs mit Start/Status/Aufräumen für lange Arbeiten | Kern | +| Unraid/MUA | MUA r023+ auf dem HomeServer, direkter MCP-Endpunkt | read-only Automatik; serverseitig begrenzte Diagnoseausgaben; begrenzte Datei-/Medieninventare; Verwaltung bei explizitem Änderungsauftrag; idempotente Batch-Updates; asynchrone Jobs mit Start/Status/Aufräumen für lange Arbeiten | Kern | | Whisper | ggml-org/whisper.cpp | Service im Router-Deploy | optional | | XTTS-v2 | Coqui, offizielles CUDA-12.1-Image per Digest | RTX-3060-Container, Stimme `Annmarie Nele`, CPML | Kern | | TTS-Gateway | `platform/docker/tts-gateway/` | interne Queue, stabile deutsche Satzblöcke, automatische Erkennung rein englischer Texte und Piper-Fallback | Kern | diff --git a/docs/CURRENT_REFERENCE.md b/docs/CURRENT_REFERENCE.md index 83d012a..8dffc1d 100644 --- a/docs/CURRENT_REFERENCE.md +++ b/docs/CURRENT_REFERENCE.md @@ -205,7 +205,16 @@ ein Download, Transcode oder vergleichbarer Auftrag weder Open WebUI noch Hermes oder Pi bis zum Prozessende. Die drei Werkzeuge erben dieselbe ausdrücklich erteilte Berechtigung wie die uneingeschränkte Shell. -Auto Tool Selector 4.6 kennzeichnet allgemeine lange Operator-Aufgaben +Ab MUA r023 begrenzt `unraid_system_shell_readonly` seine Ausgabe bereits auf +dem Unraid-Server standardmäßig auf 12.000 Zeichen; pro Aufruf sind explizit +1.000 bis 30.000 Zeichen möglich. Auto Tool Selector 4.7 ergänzt für offene +Diagnosen eine allgemeine Beweiskette: kompakten Status oder Benachrichtigung +prüfen, das neueste exakte Artefakt lokalisieren, nur entscheidende Zeilen +lesen, die führende Ursache mit einem unabhängigen Fakt bestätigen und dann +antworten. Vollständige Konfigurationen, rekursive Verzeichnisbäume und breite +historische Logs sind kein zulässiger Standardweg. + +Auto Tool Selector 4.7 kennzeichnet allgemeine lange Operator-Aufgaben produktunabhängig. Der OpenWebUI-Agentenloop stellt dafür bis zu 64 Werkzeugausführungen insgesamt und 24 je Werkzeug bereit; normale Aufgaben bleiben bei 40/12. Zusätzlich verlangt der Systemhinweis das generische diff --git a/docs/TOOLING_RELIABILITY_2026-08-24.md b/docs/TOOLING_RELIABILITY_2026-08-24.md index 21af403..6a70a5b 100644 --- a/docs/TOOLING_RELIABILITY_2026-08-24.md +++ b/docs/TOOLING_RELIABILITY_2026-08-24.md @@ -65,10 +65,20 @@ benötigte deshalb kleinere, klarere Werkzeuge und harte Abbruchgrenzen. 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. +10. Offene technische Diagnosen folgen unabhängig vom konkreten Plugin einer + begrenzten Beweiskette: betroffene Komponente und Zeitfenster aus einem + kompakten Status bestimmen, das jüngste exakte Artefakt finden, nur + entscheidende Zeilen lesen und die führende Ursache mit einem zweiten Fakt + bestätigen. MUA r023 begrenzt die Nur-Lese-Shell dafür bereits serverseitig + auf standardmäßig 12.000 Zeichen. Auto Tool Selector 4.7 untersagt als + Standard vollständige Konfigurationsausgaben, rekursive Verzeichnisbäume + und spekulative Shell-Batches. Auslöser war ein realer Appdata-Backup-Test: + Die notwendigen Belege waren vorhanden, wurden jedoch durch eine breite + Konfigurations- und Verzeichnisinventur verdrängt. ## Abnahme -- OpenWebUI-Filtertests: 36 +- OpenWebUI-Filtertests: 43 - Web-MCP-Tests: 9 - Athena-Operator-Tests: 13 - Platform-Context-Test: bestanden diff --git a/platform/openwebui/filters/auto_tool_selector.py b/platform/openwebui/filters/auto_tool_selector.py index b957935..4da3fe3 100644 --- a/platform/openwebui/filters/auto_tool_selector.py +++ b/platform/openwebui/filters/auto_tool_selector.py @@ -1,7 +1,7 @@ """ title: MikeAI Auto Tool Selector author: MikeAI -version: 4.6.0 +version: 4.7.0 description: Keeps broad web access available and adds relevant portable MCP domains without acting as a gate. """ @@ -222,7 +222,18 @@ class Filter: ) elif "unraid" in selected: rule += ( - " For bounded file or media-library inventory on Unraid, prefer " + " For Unraid diagnosis, follow a bounded evidence ladder: (1) establish " + "the affected component and time window from one compact status or " + "notification call; (2) locate the newest exact log or state artifact; " + "(3) inspect only decisive lines with grep, tail, head, or stat; (4) test " + "the leading cause with one independent targeted fact; then stop discovery " + "and answer. Do not dump complete configuration files, recursive directory " + "trees, historical backup directories, or broad logs merely because they " + "are readable. Do not issue a large speculative batch of shell calls: use " + "the result of each narrowing step to choose the next one. A successful " + "overall job marker does not erase component-level errors; distinguish the " + "primary operation from cleanup, restart, or verification failures. " + "For bounded file or media-library inventory on Unraid, prefer " "unraid_files_inventory over repeated ls/find shell calls. The " "inventory tool can first locate matching collection directories; " "then call it once more on the exact returned relative_path with an "