Wozu braucht man ein Plugin?

Die allererste Frage lautet: Wozu überhaupt ein eigenes Plugin? Man kann Claude (oder eine andere beliebte KI) zum Beispiel im Browser öffnen und darum bitten, eine Unterrichtsstunde zu einem gewünschten Thema zu halten oder einfach ein freies Gespräch zu führen. Meiner Meinung nach erfordert Sprachenlernen aber recht viel Struktur und Ordnung.

Entwickelt man ein Plugin für Claude Code (die CLI-Version von Claude), eröffnen sich große Möglichkeiten: Man kann die nötige Logik aufbauen, ein Langzeitgedächtnis speichern und bei Bedarf deterministischen Programmcode einsetzen, statt sich in allem auf das LLM zu verlassen.

Schreibaufgabe im Plugin zum Deutschlernen

Vorgegebene Lernstruktur

Mit dem Plugin wollte ich vier Bereiche des Sprachenlernens üben: Grammatik, Lesen, Schreiben und Wortschatz. Das Sprechen übe ich zum Beispiel mit anderen Werkzeugen und Methoden.

Wenn ich das Plugin an einem neuen Tag starte, weiß ich, dass ich mehrere Sitzungen zur Wortschatzarbeit absolvieren muss – bis die Abfrage der halb gelernten Wörter abgeschlossen ist und einige neue Wörter hinzukommen, die ich noch nicht kenne. Das Plugin speichert den Verlauf, wie gut ich welches Wort beherrsche. Dafür wird der Algorithmus FSRS (Free Spaced Repetition Scheduler) verwendet. Kurz gesagt: Er sorgt dafür, dass das Plugin Wörter, bei denen ich häufiger Fehler mache, öfter abfragt und bereits gefestigte Wörter nur gelegentlich auf korrekte Verankerung prüft.

Außerdem mache ich auf jeden Fall eine Schreibaufgabe, denn mithilfe von KI lässt sich so am besten die Fähigkeit trainieren, selbst Inhalte in der Zielsprache zu verfassen. Das Format der Übung habe ich an Sprachprüfungen angelehnt: Es wird eine Situation vorgegeben, und dazu muss ein Brief geschrieben werden.

Die übrigen Fertigkeiten wie Lesen und Grammatik übe ich deutlich seltener.

So habe ich am Ende ein Übungspaket, an das ich Claude nicht ständig erinnern muss. Diese Anweisungen stehen im Quellcode des Plugins und lassen sich nur durch ein Plugin-Update ändern. Bei Bedarf können sie in einer konkreten Sitzung je nach Kontext leicht angepasst werden.

Dadurch muss ich vor einer Lerneinheit keine kognitiven Ressourcen darauf verwenden, was und wie ich lernen soll.

Lernstatus im Plugin: Fortschritt, Serie und Ergebnisse je Bereich

Gedächtnis

Obwohl der Kontext moderner Modelle inzwischen in Millionen von Tokens gemessen wird, bedeutet das noch lange nicht, dass sich das Modell den gesamten Kontext gut merkt. Ein Teil ist bereits von den System-Prompts des Modells belegt, ein Teil geht für widersprüchliche Eingaben drauf (zum Beispiel: Das LLM schlägt etwas vor, ich lehne ab), der größte Teil entfällt auf die Nachrichten von Claude selbst. Nach einer Weile möchte man einfach eine neue Sitzung öffnen und mit einem leeren Blatt und möglichst wenigen Halluzinationen neu beginnen.

In solchen Fällen wünscht man sich ein „festes“ Gedächtnis in einer klaren Struktur: Es soll genau die benötigte Information speichern, möglichst kompakt und für die weitere Verarbeitung bequem. Mit einem Plugin für Claude Code lässt sich das leicht umsetzen, indem man die Daten zum Beispiel in einer JSON-Datei ablegt.

Drift minimieren

Mit wachsender Daten- und Anweisungsmenge neigt ein LLM zum „Driften“: Es weicht von früheren Anweisungen ab und gestaltet die Stunde nach eigenem Gutdünken. Das hat mich sehr genervt. Am ärgerlichsten war, dass anfangs alles gut laufen konnte, sich das Lernen nach etwa einer Woche gesammelter Daten aber teilweise in einen Kampf um die Einhaltung der Anweisungen verwandelte.

Das war der Hauptgrund, warum ich mein eigenes Plugin schreiben wollte. Gelöst habe ich das Problem, indem ich so viel Logik wie möglich in Python-Code verlagert habe.

Das Schöne am LLM ist, dass es Texte und Antworten gut prüfen und hochwertige, einzigartige Inhalte für Übungen erzeugen kann. Das Schöne an Python ist seine Determiniertheit: Der Code tut genau das, was einprogrammiert wurde, nicht mehr und nicht weniger. Deshalb war es sinnvoll, ein Plugin zum Erlernen von Fremdsprachen zu bauen, in dem die gesamte „operative Tätigkeit“ so weit wie möglich von Python übernommen wird. So wird der Kontext des LLM nicht mit Hilfsoperationen zugemüllt – Daten schreiben, lesen und speichern, Statistiken führen (Anzahl und Dauer der Sitzungen, Anzahl richtiger Antworten usw.) und viele weitere Kleinigkeiten.

Das Ergebnis hat die Erwartungen erfüllt: Ich lerne nun schon die dritte Woche mit diesem Plugin und habe kein Drift-Problem bemerkt. Idealerweise sollte sich das Plugin bequem auf dem gesamten Weg von A1 bis C2 nutzen lassen, aber selbst ein korrektes Funktionieren über 150 Lernstunden wäre völlig ausreichend. 150 Stunden sind laut Goethe-Institut die durchschnittliche Stundenzahl für den Übergang zur nächsten Sprachniveaustufe.

Logisch betrachtet dürfte es auch keinen Drift geben, denn im Betrieb des Plugins sammeln sich keine Anweisungen an – sie stehen im Quellcode. Die wachsenden Daten (Wortschatz, Sitzungen usw.) bekommt das LLM von Python portionsweise geliefert.

Veröffentlichung des Plugins

Anthropic bietet eine bequeme Möglichkeit, ein Plugin zu veröffentlichen, wenn es über den eigenen Marktplatz verfügbar sein soll. Für die Verbreitung ist das aber keineswegs notwendig. Wenn man den Quellcode des Plugins auf GitHub veröffentlicht, kann jeder mit Claude Code es mit folgenden Befehlen installieren:

claude plugin marketplace add doszhan/nachhilfebot
claude plugin install nachhilfebot@doszhan

Der erste Befehl fügt das GitHub-Repository als Marktplatz hinzu. Der zweite installiert das Plugin aus diesem Marktplatz.

Trotzdem habe ich mich aus Neugier für die Veröffentlichung entschieden – und um sie in gewisser Weise mit der Veröffentlichung mobiler Apps zu vergleichen.

Der Prozess war recht unkompliziert. Man muss eine Datenschutzerklärung, eine Dokumentation und die Lizenzart angeben. All das lässt sich direkt im Repository ablegen. Nach einiger Zeit erhielt ich das Label „veröffentlicht“:

Status „veröffentlicht“ des Plugins im Anthropic-Marktplatz

Der gesamte Veröffentlichungsprozess dauerte nur zwei Tage, obwohl ich Beschwerden gesehen habe, dass das Review teils mehrere Wochen dauert.

Zeitverlauf des Plugin-Reviews

So sieht die Suche nach dem Plugin in Claude Code aus:

Suche nach dem Plugin in Claude Code

Persönliches Fazit

Es war eine interessante Erfahrung, ein Plugin für ein LLM zu entwickeln und zu veröffentlichen. Sie zeigt gut, wie KI dabei helfen kann, konkrete Aufgaben im Leben jedes Menschen zu lösen. Diese Erfahrung hat mich zu einer weiteren Anwendung inspiriert (diesmal für den Desktop), die die persönliche Effizienz steigern soll – darüber schreibe ich bestimmt im nächsten Beitrag.

Repository mit dem Plugin: github.com/doszhan/nachhilfebot