Jarvis: Wie mein Sprachassistent aufgebaut ist. Ablauf, Entscheidungen, Grenzen.
Jarvis ist mein persönlicher Sprachassistent. Ich spreche mit ihm, er versteht mich, nutzt Werkzeuge und antwortet mit Stimme. Gebaut habe ich ihn in Python, gemeinsam mit Claude Code. Der Code ist privat. Hier beschreibe ich, wie er funktioniert.
- Ablauf: Taste oder „Hey Jarvis“, dann Whisper, dann Claude mit Werkzeugen, dann eine Stimme.
- Haltung: Persönliche Daten sind verschlüsselt, Tests dürfen sie nie anfassen, und ich merge selbst.
- Zahl: 3.619 automatische Tests am 28. Oktober 2026. Das ist eine Menge, aber kein Beweis, dass alles stimmt.
Ablauf einer Anfrage
Ich drücke eine Taste oder sage „Hey Jarvis“. Whisper macht aus meiner Sprache Text. Der Text geht an Claude, und Claude darf Werkzeuge benutzen, zum Beispiel für Wetter, Timer oder Musik. Die Antwort wird als Stimme ausgegeben. Es gibt außerdem eine Weboberfläche für den Browser und das iPhone.
Claude bekommt nicht alle Werkzeuge auf einmal. Die wichtigsten gehen in voller Beschreibung mit, der Rest steht als Ein-Zeilen-Liste da und wird bei Bedarf nachgeladen. Das spart Tokens. Dazu gibt es ein festes Budget für den Anfang jeder Anfrage. Wird eine Beschreibung zu lang, kürze ich sie. Das Limit erhöhe ich nicht.
Entscheidungen und was dagegen sprach
Verschlüsselte Daten, Schlüssel im Schlüsselbund
Persönliche Daten liegen verschlüsselt auf dem Mac. Der Schlüssel steckt im macOS-Schlüsselbund, nicht im Projektordner. Dafür gibt es mehr Aufwand und ein Risiko: Geht der Schlüssel verloren, sind die Daten weg. Dieses Risiko nehme ich in Kauf.
Eine extra Bestätigung für heikle Werkzeuge
Werkzeuge, die etwas verändern oder Persönliches anfassen, brauchen eine extra Bestätigung, am Mac auch per Touch ID. Jedes neue Werkzeug muss ich bewusst einordnen, ob es hinter diese Sperre gehört. Genau diese Lücke hat eine meiner Sicherheitsprüfungen gefunden: ein Werkzeug, das ich vergessen hatte einzuordnen.
Tests schützen die echten Daten
Die Tests laufen mit umgeleiteten Datenpfaden, damit sie nie meine echten Daten ändern. Wie ich das gelernt habe, steht in der Notiz über Tests.
Tests lokal, Cloud nur nachts
Das Repo ist privat, und die kostenlosen Rechenminuten bei GitHub sind begrenzt. Im Oktober waren sie einmal aufgebraucht. Seitdem teste ich lokal und pushe sparsam. Zusätzlich läuft nachts ein Cloud-Lauf auf Linux, die „Nachtwache“. Sie führt die Tests aus und meldet Fehler. Das fängt Dinge, die nur bei mir am Mac funktionieren. Nachteil: Der Lauf sieht keine Mac-spezifischen Tests.
Nachtschicht-Routine mit Draft-PRs
Ich schreibe ein Issue und gebe ihm ein Label. Nachts nimmt eine Routine das älteste dieser Issues, baut es auf einem eigenen Branch, lässt die Tests laufen und öffnet einen Draft-PR. Sie merged nie. Das mache ich morgens selbst. Gibt es kein Issue, tut sie nichts. Mehr dazu in der Notiz über Agents.
Eine Codebasis für Mac und Windows
Ich wollte keine zweite Version pflegen. Mac-Code liegt deshalb hinter einer Plattform-Schicht, und Windows läuft in der CI. Der Preis: Alles, was nur am Mac geht, muss ich sauber markieren.
Was ich gelernt habe
- Sicherheit heißt bei einem Assistenten mit Werkzeugen vor allem: jedes neue Werkzeug einordnen.
- Ein Assistent, der handeln darf, braucht Bestätigungen im Code, nicht nur im Prompt.
- Mit KI-Agents baue ich schneller. Prüfen muss ich trotzdem selbst.
Grenzen
Einige Tests schlagen gelegentlich fehl, etwa bei Zeitabhängigkeit, Netzproblemen oder hoher Last. Ein Teil der neueren Funktionen ist noch nicht im Alltag erprobt. Und 3.619 Tests sagen nur, dass die Fälle klappen, an die ich gedacht habe.
Warum der Code privat ist
Jarvis arbeitet mit sehr persönlichen Daten. Selbst ein sauberer Code gibt Hinweise darauf, was es gibt und wo es liegt. Ich zeige deshalb den Aufbau, aber keinen Code und keine Screenshots mit Inhalten. Öffentlich und vorzeigbar ist dafür Agent-Board.
Gebaut mit Claude Code. Ich entscheide, was gebaut wird, und prüfe, was zurückkommt. Persönliche Daten nenne ich hier bewusst nicht.