fix: automate verified Unraid update workflows

This commit is contained in:
Mikei386
2026-08-24 11:28:49 +02:00
parent 5cb6079918
commit 5008f3329c
9 changed files with 199 additions and 24 deletions
+1 -1
View File
@@ -15,7 +15,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 mit gebundenen Freigaben | unprivilegierte MCP-Fassade plus rootseitiger strukturierter Executor; keine freie Shell | 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-Plugin auf dem HomeServer, direkter MCP-Endpunkt | read-only Automatik plus bewusst aktivierte Verwaltung in Open WebUI | Kern |
| Unraid/MUA | MUA r019+ auf dem HomeServer, direkter MCP-Endpunkt | read-only Automatik; Verwaltung bei explizitem Änderungsauftrag; idempotente Batch-Updates | 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 |
+10 -7
View File
@@ -180,14 +180,17 @@ 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
mit erweiterten Verwaltungsrechten bleibt von der Automatik ausgeschlossen;
eine automatisch bereitgestellte Verbindung erteilt niemals Schreibrechte
oder eine Änderungsfreigabe.
Fachkataloge klein und kurze Profile verlieren keinen unnötigen Kontext. Reine
Unraid-Abfragen erhalten nur MUA read-only. Verlangt die aktuelle Nachricht
ausdrücklich eine Unraid-Änderung, stellt die Automatik zusätzlich den
Verwaltungszugang für die feste Kette Prüfen → Ändern → Verifizieren bereit.
Die Bereitstellung ersetzt niemals die ausdrückliche Änderungsanweisung.
Unraid ist ausschließlich über das MUA-Plugin angebunden. Die automatische
Verbindung `mua-readonly-local` und die bewusst aktivierte Verbindung `mua`
nutzen denselben MUA-Endpunkt. Der frühere GraphQL-basierte Unraid-MCP wurde
Unraid ist ausschließlich über das MUA-Plugin angebunden. Die Verbindungen
`mua-readonly-local` und `mua` nutzen denselben MUA-Endpunkt. Mehrere bestätigte
Docker-Updates laufen ab MUA r019 gebündelt und idempotent; echte Image-IDs
verhindern Neuerstellungen aufgrund eines veralteten Statuscaches. Der frühere
GraphQL-basierte Unraid-MCP wurde
entfernt und gehört weder zum Start noch zum Recovery.
Der GitHub-Container läuft produktiv. Token-Datei, interner
+5 -1
View File
@@ -58,7 +58,11 @@ laufen, sondern alle fachlichen Funktionen geprüft wurden.
- [ ] native OpenWebUI-Websuche funktioniert ohne `web-local`; Auto Tool Selector wählt GitHub, Home
Assistant, ARR, Navidrome, Unraid read-only, Athena-Plattformwissen und
den Athena Operator korrekt
- [ ] normale Unterhaltung erhält kein MCP; MUA wird niemals automatisch gewählt
- [ ] normale Unterhaltung erhält kein MCP; reine Unraid-Abfragen erhalten nur
MUA read-only; ausdrücklich verlangte Unraid-Änderungen erhalten automatisch
MUA read-only plus Verwaltung
- [ ] MUA r019 oder neuer meldet `unraid_docker_update_verified_batch`; ein
Wiederholungstest mit aktuellem Image endet ohne Container-Neuerstellung
- [ ] eine synthetische CSV wird lokal ausgewertet; kein Webwerkzeug erhält Dateidaten
- [ ] ein rekursiver GitHub-Komplettbaum ist nicht als Werkzeug verfügbar
- [ ] der zweite identische Werkzeugaufruf wird gestoppt und eine Abschlussantwort erzeugt
+5 -3
View File
@@ -13,9 +13,11 @@ Reihenfolge ist absichtlich festgelegt:
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
automatisch zugeschaltet. Die Auswahl eines MCP ist ausdrücklich keine
Freigabe für eine Zustandsänderung.
bleiben erhalten. Bei einer ausdrücklich verlangten Unraid-Änderung werden
MUA-Diagnose und -Verwaltung gemeinsam bereitgestellt; reine Statusfragen
bleiben read-only. Docker-Updates verwenden MUA r019 gebündelt, vergleichen
echte Image-IDs und erhalten den Laufzustand. Die Auswahl eines MCP ist
ausdrücklich keine Freigabe für eine andere Zustandsänderung.
4. `MikeAI Stability Guard`, Priorität 30: begrenzt einzelne und gesamte
Werkzeugresultate, verdichtet bei Bedarf zuerst alte Tool-Ausgaben und
Dialogteile und stoppt identische beziehungsweise ausufernde Tool-Schleifen.
+10 -3
View File
@@ -242,16 +242,23 @@ WireGuard-Adresse sind alle Fach-MCPs direkt erreichbar.
| ARR | Sonarr/Radarr, Indexersuche, kontrollierte Grabs | Lesen; Schreiben nur Preview/Approval |
| Navidrome | Bibliothek, Empfehlungen, Playlists/Favoriten | eigener Benutzer; gezielt aktivieren |
| MUA read-only | Host-, Docker-, Array-, Netzwerk- und Logdiagnose | automatischer Standard |
| MUA/Admin | eng definierte Unraid-Verwaltung | bewusst aktivieren |
| MUA/Admin | eng definierte Unraid-Verwaltung | bei ausdrücklich verlangter Änderung automatisch zusätzlich bereitgestellt |
Für automatische Unraid-Diagnose existiert in Open WebUI zusätzlich
`mua-readonly-local`. Diese Verbindung nutzt denselben lokalen MUA-Endpunkt,
blendet aber Start/Stop, Installation, Änderungen und die freie Root-Shell
serverseitig in Open WebUI aus. Die vollständige Verbindung `mua` wird niemals
automatisch bereitgestellt.
serverseitig in Open WebUI aus. Die vollständige Verbindung `mua` wird nur bei
einer in der aktuellen Nachricht ausdrücklich verlangten Unraid-Änderung
zusätzlich bereitgestellt.
Es gibt keinen zweiten GraphQL-basierten Unraid-MCP. Schlägt MUA fehl, darf
nicht auf GraphQL ausgewichen oder dessen API eigenmächtig aktiviert werden.
Für mehrere Docker-Image-Updates ist
`unraid_docker_update_verified_batch` verbindlich. Es ersetzt wiederholte
Einzelaufrufe, vergleicht echte Image-IDs, erhält laufend/gestoppt und
verifiziert das Ergebnis im selben Aufruf. Details stehen in
`docs/UNRAID_AUTOMATIC_UPDATE_WORKFLOW.md`.
Der vorhandene Deemix-Dienst läuft auf Unraid und ist als externe Abhängigkeit
im Diensteverzeichnis eingetragen. Für ein Deemix-MCP wird standardmäßig nur
ein Relay auf Athena gebaut; ein zweites Deemix-Backend erfordert einen
+89
View File
@@ -0,0 +1,89 @@
# Automatischer Unraid-Docker-Updateablauf
Stand: 24. August 2026
## Ziel
Ein ausdrücklich formulierter Auftrag wie „prüfe die Docker-Updates auf Unraid,
führe bestätigte Updates aus und kontrolliere das Ergebnis“ muss in Open WebUI
ohne manuelles Aktivieren von Werkzeugen vollständig ablaufen.
## Automatische Werkzeugwahl
Der `MikeAI Auto Tool Selector` unterscheidet zwischen Lesen und Ändern:
- reine Status- oder Updatefragen erhalten nur `mua-readonly-local`;
- eine in der aktuellen Nachricht ausdrücklich verlangte Unraid-Änderung erhält
`mua-readonly-local` und `mua` gemeinsam;
- Formulierungen wie „nur prüfen“ oder „keine Änderungen“ unterdrücken den
Verwaltungszugang;
- die bereitgestellten Verbindungen sind keine allgemeine Freigabe. Der Auftrag
muss die konkrete Änderung selbst enthalten.
Der vorgesehene Ablauf lautet immer:
1. Zustand und Kandidaten read-only erfassen.
2. Die engste gebündelte Änderung ausführen.
3. Das Ergebnis read-only oder durch die gebündelte technische Verifikation
kontrollieren.
## Verbindliches Batch-Werkzeug
MUA r019 stellt `unraid_docker_update_verified_batch` bereit. Das Werkzeug
akzeptiert 1 bis 25 exakte, mit `|` getrennte Containernamen.
Für jeden Container liest es zunächst Container-ID, Image-ID und Laufzustand.
Danach zieht es das im Unraid-Benutzertemplate konfigurierte Image und
vergleicht die unveränderliche lokale Image-ID. Bereits aktuelle Container
werden vollständig übersprungen – auch wenn Unraids Statuscache noch ein Update
meldet. Nur bei tatsächlich geänderter Image-ID wird neu erstellt. Laufend
bleibt laufend, gestoppt bleibt gestoppt.
Die kompakte Nachkontrolle enthält Container- und Image-ID-Änderung,
Endzustand, RestartCount und Healthcheck-Status. Templates, Ports, Volumes und
Netzwerke werden nicht verändert. Eine vorhandene Freigabe des bisherigen
Einzelwerkzeugs `unraid_docker_update` aktiviert nach dem Upgrade automatisch
auch die sicherere Batch-Variante.
## Idempotenz
Der Cache `/var/lib/docker/unraid-update-status.json` ist nur ein
Kandidatenhinweis. Er darf nie allein eine Neuerstellung auslösen. Autoritativ
ist der Image-ID-Vergleich nach dem Pull.
Ein wiederholter Lauf muss bei einem aktuellen Image folgendes melden:
```text
result: already-current
recreated: false
container_id_changed: false
image_id_changed: false
```
## Produktiver Regressionstest vom 24. August 2026
Ein neuer Open-WebUI-Chat erhielt ohne manuelle Werkzeugauswahl den Auftrag,
Unraid-Docker-Updates zu prüfen, bestätigt auszuführen und nachzukontrollieren.
- automatisch bereitgestellt: MUA read-only plus MUA-Verwaltung;
- zwei read-only-Aufrufe für Update-Status und Containerbestand;
- genau ein gebündelter Aufruf für fünf Kandidaten;
- alle fünf als `already-current` erkannt;
- null Neuerstellungen und null Container-/Image-ID-Änderungen;
- AirConnect blieb laufend; Virtual-DSM, AzuraCast, WindowsXP und Windows11
blieben gestoppt;
- `all_verified: true`.
Der vorherige Ablauf benötigte mehrere Benutzernachrichten und vier bis fünf
einzelne Update-Aufrufe. Dieser Pfad ist ersetzt.
## Recovery-Prüfung
1. MUA-Health muss r019 oder neuer melden.
2. Open WebUI muss den Auto Tool Selector 3.3.0 oder neuer enthalten.
3. „Gibt es Docker-Updates auf Unraid? Nur prüfen“ darf nur MUA read-only
bereitstellen.
4. Ein ausdrücklich schreibender synthetischer Auftrag muss beide MUA-Zugänge
bereitstellen und das Batch-Werkzeug wählen.
5. Ein Wiederholungstest mit aktuellem Image darf keine Neuerstellung auslösen.