Vibe Coding: JuStAI selbst weiterentwickeln
JuStAI wurde per Vibe Coding gebaut: Man beschreibt einem KI-Coding-Assistenten, was man haben möchte, probiert das Ergebnis aus und steuert mit dem nĂ€chsten Satz nach, statt jede Zeile selbst zu tippen. Das Projekt ist Open Source (AGPL-3.0), also kann das jeder genauso machen. Du musst kein Profi-Programmierer sein. Du brauchst Geduld, Neugier und die Gewohnheit, das Ergebnis des Assistenten zu prĂŒfen.
Es gibt drei Wege mitzumachen, von âgar kein Codeâ bis âden Kern Ă€ndernâ. Fang beim ersten an und geh nur weiter, wenn du es brauchst.
| Weg | Du brauchst | Ergebnis |
|---|---|---|
| 1. JuStAI selbst fragen | eine laufende Installation | ein neues Tool oder Plugin, vom Assistenten geschrieben |
| 2. Plugin mit einem Coding-Assistenten bauen | einen Rechner mit Python-Werkzeugen und einen KI-Coding-Assistenten | ein Plugin, das du zippen und installieren kannst |
| 3. Den Kern Àndern | die vollstÀndige Entwicklungsumgebung | ein neues Feature oder ein Fix, auf Wunsch als Pull Request |
1. JuStAI selbst fragen
Abschnitt betitelt â1. JuStAI selbst fragenâDer einfachste Weg: Sag oder schreib, was dir fehlt. Wenn kein vorhandenes Tool es abdeckt, schreibt der Assistent selbst ein Plugin (âBau ein Plugin, das mir sagt, wenn Strom billiger als 20 Cent ist.â). Er erzeugt Code und Tests, prĂŒft sie statisch, fĂŒhrt die Tests in der Sandbox aus und lĂ€sst den Code begutachten. Danach gibst du es in der Admin-OberflĂ€che unter Tools frei. Details, Grenzen und Rollback: Selbst entwickelte Plugins.
Gute WĂŒnsche sind konkret: Was soll es auslösen (Uhrzeit, Ereignis, Frage), was soll herauskommen (gesprochene Antwort, Display, Ereignis) und welche Datenquelle darf es nutzen.
2. Plugin mit einem Coding-Assistenten bauen
Abschnitt betitelt â2. Plugin mit einem Coding-Assistenten bauenâPlugins sind klein: ein Ordner mit plugin.yaml (Manifest), plugin.py und Tests. Damit
eignen sie sich ideal fĂŒr Vibe Coding. Alles, was Hardware, KI-Anbieter oder externe Dienste
anbindet, ist ein Plugin (PLUGINS.md).
Einrichten
Abschnitt betitelt âEinrichtenâDu brauchst Linux, uv und einen KI-Coding-Assistenten, der Dateien in einem Ordner lesen und Ă€ndern kann (zum Beispiel Claude Code, Cursor, GitHub Copilot oder ein Ă€hnliches Werkzeug).
git clone https://github.com/naxeu/justai.gitcd justaiuv sync --all-packagesDen Assistenten das Projekt zuerst kennenlernen lassen
Abschnitt betitelt âDen Assistenten das Projekt zuerst kennenlernen lassenâSag dem Assistenten vor der ersten Anfrage, dass er die passenden Dokumente lesen soll.
Eine kurze Kontextdatei im Projektordner (viele Assistenten lesen CLAUDE.md oder
AGENTS.md automatisch) erspart dir Wiederholungen. Ein Startpunkt:
# JuStAI â Kontext fĂŒr den Coding-Assistenten
- Lies docs/PLUGINS.md und docs/DEVELOPMENT.md, bevor du etwas Ă€nderst.- Neue Funktionen sind ein Plugin unter plugins/<id>/ mit plugin.yaml, plugin.py, tests/. Referenz ist plugins/example-weather.- Code, Kommentare, Logs und Tool-Beschreibungen sind Englisch. Texte, die ohne das KI-Modell gesprochen werden, gehören in backend/src/justai/i18n.py (en, de, it).- Fordere nur die Berechtigungen an, die das Plugin wirklich braucht. Logge nie Geheimnisse, deklariere sie in secret_fields.- Jedes Plugin braucht Tests mit justai_sdk.testing.FakePluginContext.- Vor dem Abschluss ausfĂŒhren: uv run ruff check . && uv run ruff format --check . und die Tests des Plugins.Eine erste Anfrage
Abschnitt betitelt âEine erste AnfrageâKopiere das Beispiel-Plugin und bitte um deine Ănderung. Zum Beispiel:
Lege ein neues Plugin
plugins/muell-erinnerungauf Basis vonplugins/example-weatheran. Es soll ein Toolmuell.naechsteanbieten, das sagt, welche Tonne als NĂ€chstes geleert wird, anhand der Abholtermine aus den Plugin-Einstellungen (config_schema). ErgĂ€nze einen Job, der es abends vor der Abholung ĂŒberservices.sayansagt. Schreibe Tests mitFakePluginContextund fordere nur die nötigen Berechtigungen an.
Dann in dieser Reihenfolge:
-
Zuerst das Manifest lesen. Die Liste
permissionsist der wichtigste Teil. Fragt das Plugin mehr an, als es braucht? Lass den Rest entfernen. -
Tests ausfĂŒhren und Fehler vom Assistenten beheben lassen:
Terminal-Fenster uv run pytest plugins/muell-erinnerung/tests -
QualitĂ€tsprĂŒfungen ausfĂŒhren:
Terminal-Fenster uv run ruff check plugins/muell-erinnerunguv run ruff format --check plugins/muell-erinnerung -
Installieren: Plugin-Ordner zippen und in der Admin-OberflĂ€che unter Plugins â Installieren hochladen. Hochgeladene Plugins starten immer als
untrusted(in der Sandbox) und ohne Berechtigungen. Du prĂŒfst und erteilst die Berechtigungen, trĂ€gst die Einstellungen ein und aktivierst es (Ein Plugin verteilen). -
Ausprobieren per Sprache oder in der Admin-OberflĂ€che und dem Assistenten sagen, was passiert ist. Fehlermeldungen und Logs kopierst du zurĂŒck ins GesprĂ€ch.
Plugins, die Zugriff auf GerÀte, das lokale Netz oder KI-Anbieter brauchen (zum Beispiel ein
neuer Kameratreiber), laufen nicht in der Sandbox. Das sind trusted Plugins im Core-Prozess;
lies zuerst Berechtigungen und prĂŒfe solchen Code besonders
sorgfÀltig.
3. Den Kern Àndern
Abschnitt betitelt â3. Den Kern Ă€ndernâFĂŒr neue Module, API-Routen, Ănderungen an der OberflĂ€che oder Fixes im Kern.
Entwicklungsumgebung einrichten
Abschnitt betitelt âEntwicklungsumgebung einrichtenâFolge DEVELOPMENT.md: Docker, uv und Node 22. Der empfohlene Entwicklungsmodus lĂ€dt Backend und OberflĂ€che bei jeder Ănderung neu:
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --buildDie OberflÀche lÀuft dann auf http://localhost:5173.
In kleinen Schritten arbeiten
Abschnitt betitelt âIn kleinen Schritten arbeitenâ-
Forke das Repository auf GitHub, klone deinen Fork und lege einen Branch fĂŒr deine Idee an.
-
Beschreibe Ziel und Grenzen gegenĂŒber dem Assistenten: welches Modul, was sich nicht Ă€ndern darf, welche Tests es beweisen sollen. Verweise auf ARCHITECTURE.md und das Dokument des Bereichs, den du anfasst (zum Beispiel AUDIO.md oder ROOMS.md).
-
Bitte zuerst oder gleichzeitig um Tests. Fachlogik ohne I/O (zum Beispiel
output/router.py) lÀsst sich leicht testen; siehe TESTING.md. -
Committe nach jedem funktionierenden Schritt, damit du immer zurĂŒck kannst.
-
FĂŒhre die PrĂŒfungen aus, bevor du fertig bist:
Terminal-Fenster uv run ruff check .uv run ruff format --check .(cd backend && uv run mypy src)uv run pytest backend/tests/unit(cd frontend && npm run lint && npm run typecheck) -
Aktualisiere die Dokumentation, wenn sich Verhalten Àndert, auf Englisch und Deutsch. Neue OberflÀchentexte gehören in
en.ts,de.tsundit.ts; der Build schlĂ€gt fehl, wenn ein SchlĂŒssel fehlt. -
Ăffne einen Pull Request mit einer kurzen Beschreibung: was sich geĂ€ndert hat, warum und wie du es getestet hast (auch, was du nicht testen konntest, zum Beispiel weil du keine Kamera hattest).
Die Konventionen, an die sich der Assistent halten muss, stehen in DEVELOPMENT.md. Wenn du sie in die Kontextdatei von oben ĂŒbernimmst, werden die Ergebnisse deutlich besser.
Tipps fĂŒr gutes Vibe Coding
Abschnitt betitelt âTipps fĂŒr gutes Vibe Codingâ- Kleine Schritte schlagen groĂe Prompts. Ein Feature, ein Commit.
- Lass den Assistenten lesen, bevor er schreibt. Nenne die Dateien und Dokumente, die er ansehen soll.
- Lass dir erklĂ€ren, was du nicht verstehst, und bitte um ein Review seiner eigenen Ănderung (âWas kann schiefgehen, was hast du nicht getestet?â).
- Teste mit dem Simulator. Der Treiber
simulatedliefert eine simulierte Kamera, Mikrofon und Lautsprecher, damit du Sprachfunktionen ohne Hardware ausprobieren kannst (DEVICES.md). - Sei ehrlich, was getestet ist. Das Projekt sagt offen, welche Teile mit echter Hardware geprĂŒft wurden (TESTING.md). Mach das in deinem Pull Request auch.
- Halte Geheimnisse aus Chat und Commits heraus. API-Keys gehören in
.envoder die Plugin-Einstellungen, nie in Prompts, Code oder das Repository. - Du bleibst verantwortlich. Der Assistent kann sich irren und dabei ĂŒberzeugt klingen. Lies, was in deinem Zuhause lĂ€uft, besonders Code mit Zugriff auf Kameras, Mikrofone oder das Netzwerk.
Fragen, Fehler und Ideen
Abschnitt betitelt âFragen, Fehler und IdeenâAlles lĂ€uft auf GitHub im JuStAI-Repository:
| Ich möchte⊠| Wo |
|---|---|
| eine Frage stellen, zeigen was ich gebaut habe, ĂŒber Ideen reden | Discussions |
| einen Fehler melden | Issues â Bug report |
| ein Feature vorschlagen | Issues â Feature request |
| selbst etwas beheben oder bauen | ein Pull Request (siehe die drei Wege oben) |
Fehler und Feature-WĂŒnsche werden als Issues gesammelt. Bei einem Fehler bitte angeben, was du gemacht hast, was du erwartet hast, was passiert ist, deine Hardware (zum Beispiel das Kameramodell) und, wenn möglich, die Logzeilen. Poste nie Passwörter, API-Keys oder Kamera-Adressen mit Zugangsdaten. Englisch und Deutsch sind beide willkommen.
JuStAI steht unter der AGPL-3.0: Du darfst es nutzen, Àndern und
weitergeben, und wer eine geÀnderte Version als Netzwerkdienst anbietet, muss den Quellcode
der Ănderungen unter derselben Lizenz veröffentlichen. Das Plugin-SDK (sdk/python) steht
unter MIT, damit deine Plugins jede Lizenz haben können. Siehe den Lizenzabschnitt im
README.