Im Rahmen meiner Vibecoding Experimente sind mit Codex, dem Vibecoder von OpenAI zwei Plugins entstanden, die hier ausprobiert und um meiner Text-Moodle Plattform ausprobiert werden können. Natürlich übernehme ich keine Haftung für eventuell Sicherheitslücken. Der Code steht auch auf Github bereit und kann dort eingesehen und natürlich auch verbessert oder kommentiert werden.
Tutoring Machine
Ein Block für Moodle, der eine KI-basierte Tutoring Machine zur Unterstützung von Lernenden bereitstellt. Die Tutoring Machine kann Fragen zum Kursinhalt basierend auf verschiedenen Kursressourcen beantworten.
Installation
- Entpacke das Plugin in das
/blocks/tutoring_machine-Verzeichnis Ihrer Moodle-Installation. - Navigiere zu „Website-Administration“ > „Mitteilungen“ > „Benachrichtigungen aktualisieren“.
- Folge dem Installationsprozess und bestätige die Installation.
Konfiguration
Das Plugin kann über die Blockeinstellungen in jeder Kursseite konfiguriert werden:
- Schalte den Bearbeitungsmodus ein.
- Füge den „Tutoring Machine“-Block hinzu.
- Klicken Sie auf das Zahnrad-Symbol und wähle „Tutoring Machine konfigurieren“.
- Passe die Einstellungen nach Bedarf an:
- Tutoring Machine-Anweisungen: Gebe spezielle Anweisungen für die Tutoring Machine ein, zum Beispiel: Gebe keine Lösungen vor, sondern verweise auf das Material, in dem die Lösung auf die gestellte Frage zu finden ist.
- Willkommensnachrichten: Lege Begrüßungstexte fest – inklusive einer optionalen Analytics-Variante –, damit Lernende direkt verstehen, welche Rolle der Bot übernimmt.
- Kontextweitergabe: Schalte explizit frei, ob Kursmaterialien überhaupt an den KI-Anbieter übertragen werden dürfen. Erst danach lassen sich einzelne Aktivitäten selektiv einbeziehen.
- Willkommensnachrichten: Lege Begrüßungstexte fest – inklusive einer optionalen Analytics-Variante –, damit Lernende direkt verstehen, welche Rolle der Bot übernimmt.
- Kontextweitergabe: Schalte explizit frei, ob Kursinhalte überhaupt an den KI-Anbieter übertragen werden dürfen. Erst danach lassen sich einzelne Aktivitäten selektiv einbeziehen.
- KI-Modell-Einstellungen: Wähle das Modell aus, dass für deine Aufgabe im Kurs geeignet ist
- Darstellung: Wähle die Hauptfarbe für die Benutzeroberfläche
- Kontext: Wähle, welche Kursressourcen als Kontext verwendet werden sollen:
- Textseiten
- Glossare
- H5P-Aktivitäten
- PDF-Dokumente
- Internetsuche (für Fragen, die nicht durch Kursinhalte beantwortet werden können) Quellen, die nicht ausgewählt werden, werden auch nicht in den Kontext einbezogen, Die Tutoring Machine gibt dann die Antwort, dass dazu keine Informationen im Kurs gefunden werden konnten und die Referent*innen befragt werden müssen.
- Lehr-Analysen: Wenn die Lehr-Analysen aktiviert werden, werden alle Prompts der Teilnehmenden gespeichert und in einem für die Referentinnen zugänglichen Analyse-Dashboard ausgewertet, bzw. angezeigt. Der Willkommensprompt weist die Teilnehmenden darauf hin, dass ihre Eingaben gespeichert und den Referentinnen zugänglich gemacht werden.
- Prompt-Empfehlungen: Wenn aktiviert, wird ein weiterer Button angezeigt, mit dem den Teilnehmenden Prompt-Empfehlungen für die Nutzung der Tutoring Machine vorgeschlagen werden. Die können ausgewählt und abgeschickt werden. Um zu verschiedenen Kategorien Prompt-Empfehlugnen zu machen kann eine Raute vorausgeschickt werden. Beispiel: #Anfänger Wie alt ist Einstein geworden? Wann ist Einstein geboren? #Forgeschrittene Wie alt ist Watts geworden? Wann ist Watts geboren?
Globale Einstellungen
Globale Einstellungen für die Tutoring Machine können unter „Website-Administration“ > „Plugins“ > „Blöcke“ > „Tutoring Machine“ konfiguriert werden:
- Assistantname: Der Name, der im Chat-Interface angezeigt wird
- Kurskontext standardmäßig teilen: Voreinstellung, ob neue Blöcke Kursmaterialien automatisch an die KI weitergeben oder zunächst lokal behalten.
- Domain-Whitelist für Links: Nur Domains aus dieser Liste werden für externe Kontextlinks abgefragt.
- robots.txt respektieren: Steuert, ob der Linkcrawler Hinweise aus robots.txt beachtet und gesperrte Pfade auslässt.
- Crawler-User-Agent: HTTP User-Agent, unter dem der Linkcrawler auftritt.
- Link-Aktualisierungsintervall: Legt fest, wie lange gecachte Link-Inhalte gültig bleiben, bevor sie erneut geladen werden.
- OpenAI API-Schlüssel: Dein OpenAI API-Schlüssel für die Verbindung mit OpenAI-Modellen
- Google API-Schlüssel: Dein Google API-Schlüssel für die Verbindung mit Gemini-Modellen
- Standard-Modell: Das zu verwendende Standard-KI-Modell im Format „provider:model“
- Unterstützte OpenAI-Modelle: gpt-5, gpt-5-mini, gpt-5-nano und weitere
- Unterstützte Google-Modelle: gemini-1.5-pro, gemini-1.5-flash, gemini-pro
Unterstützte Kursressourcen
Die Tutoring Machine kann folgende Kursressourcen als Kontext verwenden:
- Textseiten (Moodle Page-Aktivitäten)
- Glossare und deren Einträge
- H5P-Aktivitäten (wenn installiert)
- PDF-Dokumente (mit automatischer Textextraktion)
Sicherheitsfunktionen
Die Tutoring Machine implementiert folgende Sicherheitsfunktionen:
- Eingabevalidierung: Alle Benutzereingaben werden geprüft und bereinigt
- CSRF-Schutz: Verhinderung von Cross-Site Request Forgery durch Session-Key-Validierung
- Rate-Limiting: Begrenzung auf 30 Anfragen pro Stunde pro Benutzer
- XSS-Schutz: Bereinigung von HTML-Inhalten zur Vermeidung von Cross-Site-Scripting
- Zugriffskontrolle: Prüfung der Benutzerberechtigungen
Chat-Verlauf & Sitzungen
- Chatverläufe und UI-Zustände werden clientseitig pro Kurs und Blockinstanz gespeichert. Beim Wechsel in andere Kurse oder das Dashboard startet immer eine frische Unterhaltung.
- Legacy-Schlüssel in
localStoragewerden automatisch bereinigt, damit bestehende Installationen ohne manuelles Eingreifen auf das neue Scoped-Storage-Verhalten umstellen.
Technische Anforderungen
- PHP 8.2 oder höher
- Moodle 4.1 oder höher
- OpenAI API-Schlüssel oder Google Gemini API-Schlüssel
- Für PDF-Textextraktion (mindestens eine der folgenden Optionen):
- pdftotext (empfohlen, Teil von Poppler-Utils)
- Ubuntu/Debian:
apt-get install poppler-utils - CentOS/RHEL:
yum install poppler-utils - macOS:
brew install poppler
- Ubuntu/Debian:
- Alternative PHP-Bibliotheken:
- Smalot/PdfParser:
composer require smalot/pdfparser - Spatie/PdfToText:
composer require spatie/pdf-to-text
- Smalot/PdfParser:
- pdftotext (empfohlen, Teil von Poppler-Utils)
API-Test-Tools
Zur Überprüfung der API-Verbindungen stehen zwei Test-Tools zur Verfügung:
Kommandozeilen-Test
Der Kommandozeilen-Test kann über die Moodle-Wurzel ausgeführt werden:
php blocks/tutoring_machine/api_test.php [provider]
Wobei [provider] einer der folgenden Werte sein kann:
openai– Test nur für OpenAI APIgoogle– Test nur für Google Gemini APIall– Test für alle konfigurierten APIs (Standard)
Die Ergebnisse werden sowohl in der Konsole ausgegeben als auch in einer Logdatei im Verzeichnis blocks/tutoring_machine/logs/ gespeichert.
Web-basierter Test
Der web-basierte Test kann über folgende URL aufgerufen werden:
https://ihre-moodle-url/blocks/tutoring_machine/api_test_web.php
Dieser Test bietet eine benutzerfreundliche Oberfläche zur Überprüfung der API-Verbindungen und ist nur für Administratoren im Entwicklungsmodus verfügbar.
Unterstützte Sprachen
- Englisch
- Deutsch
- Deutsch Du-Form
Caching-System
Die Tutoring Machine nutzt ein umfassendes Caching-System, um die Leistung zu verbessern und die Anzahl der API-Aufrufe zu reduzieren:
- PDF-Caching: Extrahierte PDF-Inhalte werden in der Datenbank gespeichert (TTL: 1 Woche)
- Kursinhalt-Caching: Vollständiger extrahierter Kurskontext wird im Moodle Cache gespeichert (TTL: 12 Stunden)
- Ressourcen-Caching: Einzelne Ressourcen (Seiten, Glossare, H5P) werden separat gecacht (TTL: 24 Stunden)
- Automatische Cache-Invalidierung: Cache-Einträge werden automatisch ungültig, wenn Kursinhalte aktualisiert werden
Dieses Caching-System reduziert die Verarbeitungszeit und verbessert die Reaktionsfähigkeit der Tutoring Machine erheblich.
Peertube im Dateimanager
Dieses Plugin ermöglicht es, Videos von einer PeerTube-Instanz direkt in Moodle zu suchen und einzubetten.
Installation
- Kopiere den Plugin-Ordner
peertubein das Verzeichnismoodledata/repository/Deiner Moodle-Installation. - Führe die Moodle-Installation/Upgrade-Routine aus.
- Aktiviere das Plugin in den Repository-Einstellungen.
Konfiguration
- Gehe zu Website-Administration > Plugins > Repositories > PeerTube videos
- Gebe die PeerTube Instance URL ein (z.B.
https://peertube.example.com) - Gebe Deinen Access Token ein. Den bekommst du mit diesem Befehl:
curl -X POST
-d „client_id=Is6jenqfqprnxtsbikucz8zr7jjyae7ly&client_secret=IHR_CLIENT_SECRET&grant_type=password&response_type=code&username=IHR_BENUTZERNAME&password=IHR_PASSWORT“
https://peertube.example.com/api/v1/users/token
Video-Einbettung in Moodle
Um ein PeerTube-Video direkt in Moodle einzubetten:
- Erstelle eine Link/URL-Aktivität in Deinem Moodle-Kurs
- Klicke auf „Link auswählen“
- Wähle „PeerTube videos“ als Quelle
- Suche nach dem gewünschten Video
- Wähle das Video aus
- Unter „Darstellung“ wähle „Einbetten“ aus
- Speichere die Aktivität
Das Video wird nun direkt in Moodle eingebettet und abgespielt.
Unterstützte Funktionen
- Suche nach Videos auf der PeerTube-Instanz
- Zugriff auf alle Videos, auf die der Benutzer (jeder Nutzer hat einen anderen token, es gitb keine peertubeweiten, nutzendenunanhängigen token) Berechtigung hat (inklusive unlisted Videos)
- Sortierung nach Datum, Views, Likes
- Embed-URLs für direkte Einbettung
Anforderungen
- Ein gültiger Access Token mit entsprechenden Berechtigungen
- Moodle 4.0 oder höher
- Eine PeerTube-Instanz mit aktivierter API
Seminarplaner
Dieses Plugin besteht aus zwei Bestandteilen. Zum einen einer Moodle Aktivität zur Planung und Konzeption von Veranstaltungen und zum anderen aus einer Verwaltung von globalen Methodensets
- Anlegen und Verwalten von Methodenkarten in einer Aktivität
- Seminarplaner mit nutzerspezifischem Zustand
- Import globaler Methodensets aus dem
local-Plugin - Review-Einreichung von neuen/geänderten Methoden aus der Aktivität
- Import/Export von Methoden (JSON, CSV/ZIP kompatible Flows)
- PDF-Export-Flows (ZIM / Seminarverlauf)
- Soft-Lock-Mechanismus für Grid-Bearbeitung
- Datei-Uploads für Methodenmaterialien















