# ShinrAI für Dify

Schützen Sie Workflow-Texte, Dokumente und Modellaufrufe mit den bereits in Dify gespeicherten Modell-Zugangsdaten. Die drei Werkzeuge stehen unter der MIT-Lizenz. Das `.difypkg` wird direkt installiert; das ShinrAI-Paket ist nicht im Dify-Marktplatz veröffentlicht.

Getestet: **Dify 1.17.0**, Plugin-Daemon **0.6.10**, ShinrAI-Plugin **0.1.1**, Python-SDK **0.10.2** und der offizielle OpenAI-API-kompatible Anbieter **0.0.66**. Anwendungs- und Browsertests liefen auf zwei unabhängigen Installationen mit Claude Sonnet 4.6 und GPT-5 mini. Die vollständige Freigabe und externe Abhängigkeiten werden im QA-Bericht getrennt ausgewiesen.

## Installieren und prüfen

1. Registrieren Sie sich bei ShinrAI und erstellen Sie einen API-Schlüssel innerhalb des bestehenden Schlüssellimits Ihres Kontos.
2. Öffnen Sie in Dify **Plugins → Plugin installieren → Lokales Paket** und wählen Sie `shinrai-0.1.1.difypkg`. Die Administration muss lokale Pakete erlauben. Dieses Paket beansprucht keine Marktplatzsignatur.
3. Hinterlegen Sie in der ShinrAI-Werkzeugautorisierung die Dienstadresse, normalerweise `https://api.shinrai.innovius.io`, und Ihren Schlüssel. Dify prüft die Verbindung mit einer synthetischen Schutzanfrage. Für Dokumente benötigen Sie außerdem den **internen Dateiserver-Ursprung** Ihrer Dify-Installation, beispielsweise `http://api:5001`. Er muss zu den signierten Upload-Adressen passen, die Dify an Plugins übergibt. Workflow-Eingaben können diese Administratoreinstellung nicht ändern.
4. Importieren Sie `workflows/text.yml`. Wählen Sie gegebenenfalls die gespeicherte ShinrAI-Autorisierung. Starten Sie einen Testlauf mit `Kontakt Max Mustermann, E-Mail max.mustermann@example.org.`. Das Ergebnis muss geschützte Ersatzwerte enthalten.
5. Importieren Sie `workflows/document.yml` und testen Sie eine synthetische TXT-, PDF- oder DOCX-Datei. Sie erhalten geschützten extrahierten Text und die flache PDF `protected-document.pdf`. Laden Sie die PDF herunter und prüfen Sie den sichtbaren Inhalt. Der ursprüngliche Upload bleibt in Ihrer Dify-Installation.
6. Importieren Sie `workflows/ai-private.yml` und `workflows/ai-restored.yml`. Wählen Sie im Knoten **Geschützter Modellaufruf** eine vorhandene Modellverbindung Ihres Dify-Arbeitsbereichs und passende Ausgabelimits. Die mitgelieferte Laborauswahl dient als Beispiel. Dify verwendet die vorhandenen Zugangsdaten intern. Lassen Sie das Modell die synthetische E-Mail wiederholen: Der private Modus behält den Ersatzwert, der Wiederherstellungsmodus stellt erkannte Werte im Plugin wieder her.
7. Veröffentlichen Sie den geprüften Workflow anschließend in Dify. Der ShinrAI-Schritt muss vor Exporten und externen Modellaufrufen verbindlich bleiben. Aktivieren Sie keine Fehlerfortsetzung oder ungeschützten Ersatzpfade.

Der Innovius-Anbieter im Labor liefert Streaming-Ereignisse mit CRLF-Trennzeichen. In dessen OpenAI-kompatibler Modellverbindung ist deshalb `\r\n\r\n` als Trennzeichen für Streaming-Ergebnisse hinterlegt. Verwenden Sie das Format Ihres eigenen Anbieters. Leere, abgebrochene oder unvollständige Antworten sowie Antworten mit Werkzeugaufrufen lassen diesen Schritt fehlschlagen. GPT-5 mini akzeptiert beim getesteten Anbieter keinen Temperaturparameter; die Vorlagen setzen daher keine Temperatur. Das Tokenlimit des Workflows darf das Limit der Modellverbindung nicht überschreiten.

## Schutzumfang

- **Text schützen** gibt geschützten Text aus, keine Zuordnung mit Originalwerten.
- **Dokument schützen** akzeptiert nur Uploads vom administrativ eingestellten Dify-Dateiserver, ohne Weiterleitungen. TXT, PDF und DOCX einschließlich Scans und eingebetteter Bilder werden unterstützt. Grenzen: 10 MB, 100 Seiten, 125.000 extrahierte Zeichen, fünf Minuten und 40 MB Ausgabe. Nicht unterstützte oder unvollständig verarbeitete Dateien führen zum Abbruch. Originaldateinamen und Workflow-Metadaten werden weder an ShinrAI übermittelt noch an die geschützte PDF angehängt.
- **Geschützter Modellaufruf** schützt Frage, Systemanweisungen, gefundenen Kontext und unterstützten Gesprächsverlauf innerhalb der Anfrage konsistent. Der Aufruf erfolgt über Dify mit vorhandenen Zugangsdaten. Wiederherstellungszuordnungen bleiben im jeweiligen Plugin-Aufruf und werden weder Workflow-Variablen noch normale Modelleingaben oder Ausgaben. Unterstützt wird ein JSON-Verlauf mit Textnachrichten der Rollen `user` und `assistant`. Rohe Bilder, Audio, Werkzeuge und beliebige Nachrichtenstrukturen werden von diesem Schritt abgewiesen.
- Jede neue Workflow-Ausführung ist ein eigener kostenpflichtiger Schutzvorgang. Ergebnisabrufe und Dienstwiederholungen verwenden denselben Auftrag. Nach dem Dokumentabruf fordert das Plugin die Löschung der Dienstergebnisse an; die automatische Ablaufzeit von 24 Stunden bleibt als Absicherung bestehen. Dify-Uploads, Workflow-Eingaben, geschützte Ausgaben und Ausführungsprotokolle unterliegen Ihren Dify-Aufbewahrungseinstellungen.
- Geschützt werden die ausgewählten Workflows. Andere Apps, Wissensindexierung, externe Embeddings, andere Plugins und Modellknoten ohne vorgeschalteten Schutz werden nicht abgefangen. Dify selbst erhält die ursprüngliche Eingabe. Übergeben Sie gefundenen Dokumentkontext vollständig an den geschützten Modellknoten, bevor ein externes Modell ihn verarbeitet.

## Fehlerbehebung und Entwicklung

Prüfen Sie bei Fehlern Schlüssel, Guthaben, Dateiserver-Ursprung, Modellverbindung, Tokenlimits und Streaming-Trennzeichen. Stimmen interne Dify-Dateiadressen und Administratoreinstellung nicht überein, korrigieren Sie die Einstellung. Ergänzen Sie keinen beliebigen URL-Downloader und keinen ungeschützten Ersatzaufruf.

`build-plugin.py` stellt die öffentliche Connector-Bibliothek und zweisprachige Werkzeugschemata zusammen. Paketieren Sie `plugin/` mit der offiziellen Dify-CLI 0.6.10: `dify plugin package plugin -o shinrai-0.1.1.difypkg`. Die Python-Abhängigkeiten sind in `plugin/requirements.txt` festgelegt. Private Dienst- und Modellimplementierungen sind nicht enthalten.

Referenzen: [Dify-Werkzeugplugins](https://docs.dify.ai/en/develop-plugin/dev-guides-and-walkthroughs/tool-plugin), [Modellaufrufe aus Plugins](https://docs.dify.ai/en/develop-plugin/features-and-specs/advanced-development/reverse-invocation-model), [Dify 1.17.0](https://github.com/langgenius/dify/tree/1.17.0).

## Geprüftes Beispiel

Die [Screenshots](screenshots/) stammen aus der tatsächlich installierten Testumgebung mit synthetischen Daten. Ersatzwerte können bei jedem Lauf anders aussehen. Die gemeinsamen Beispieldateien und ein ausführbarer Verbindungstest liegen im Ordner `../fixtures/` des Downloadpakets.
