PROJEKTEINBLICK ·
Was aus meinem Jugendtraum geworden ist
Am Anfang wollte ich mit meinem Computer sprechen. Inzwischen hatte mein Assistent eine Stimme, eine Oberfläche und Fähigkeiten, an die ich beim ersten CLI-Experiment noch nicht gedacht hatte. Zeit für einen Blick zurück – und auf das, was diesen eigenen Weg für mich ausmacht.

Das erste Wort aus den Lautsprechern war für mich unverständlich gewesen. Trotzdem war dieser Moment umwerfend. Mein Programm hatte geantwortet. Nicht nur mit einer Zeile im Terminal, sondern mit einer Stimme.
Wenn ich auf die bisherigen Teile zurückblicke, ist genau das noch immer der Ausgangspunkt. Ich wollte als Jugendlicher mit meinem Computer sprechen können. Jarvis im Film hatte dieser Vorstellung später ein Gesicht gegeben. Mein eigenes Projekt begann dann deutlich kleiner: eine CLI-Anwendung, ein lokales Modell und die Frage, ob überhaupt eine Antwort zurückkommen würde.
Aus dieser ersten Antwort wurde ein Gespräch. Und aus dem Gespräch entstanden nach und nach ganz andere Möglichkeiten.
Der Traum bekam konkrete Aufgaben
Eine Stimme allein reichte irgendwann nicht mehr. Mein Assistent sollte Dinge ausführen, Informationen sichtbar halten und sich etwas merken können. Mit jeder Erweiterung stellte sich dabei eine neue Frage.
| Mein Wunsch | Was daraus wurde |
|---|---|
| Mit dem Computer sprechen | Sprachverarbeitung, Streaming und die Arbeit an den Wartezeiten |
| Mehr als Antworten bekommen | Intents, Skills und kontrollierte Ausführung |
| Ergebnisse sehen können | Weboberfläche, Widgets und Signal Desk |
| An ein Gespräch anknüpfen | Begrenzter Gesprächsspeicher und gespeicherte Erinnerungen |
| Andere Geräte einbeziehen | Zugänge und Integrationen wie Telegram, Home Assistant, CAD und SIP-Telefonie |
| Etwas zeigen statt beschreiben | Einzelaufnahmen für Bildanalyse und Dokumenttext |
Hinter jeder Zeile steckte mehr als eine neue Funktion. Eine Antwort konnte zu spät kommen. Eine Aktion brauchte eine Rückfrage. Eine Oberfläche musste zeigen, was tatsächlich passiert war. Und ein Modell konnte überzeugend klingen, obwohl seine Aussage falsch war.
Damit wurde aus einer ziemlich großen Vorstellung eine Reihe von Problemen, die ich einzeln bearbeiten konnte.
Die Architektur hat mir Spielraum gegeben
Die frühe Trennung in C# zahlte sich besonders beim Wechsel zur Weboberfläche aus. Ich musste den Kern nicht verwerfen. Die vorhandenen Fähigkeiten konnten bleiben, während eine neue Art der Bedienung dazukam.
Der gemeinsame Kern verbindet weiterhin die Konsole und den Webhost. Diese Trennung macht für mich einen wesentlichen Unterschied: Ich kann an der Oberfläche arbeiten, ohne gleichzeitig jede Fähigkeit neu zu schreiben. Und ich kann einzelne Bestandteile austauschen oder testen, ohne das ganze Projekt wieder von vorne aufzubauen.

Das bedeutete nicht, dass jede Erweiterung einfach war. Browser-Audio, Zustände und gemeinsame Ressourcen brauchten eigene Arbeit. Aber die Frage lautete häufiger: Wo gehört diese neue Aufgabe hin? Die vorhandene Struktur gab mir dafür einen Ausgangspunkt.
Ich wollte mir die Möglichkeit erhalten, meine Meinung zu ändern, ohne dafür alles wegwerfen zu müssen.
Genau diese Freiheit war mir schon wichtig gewesen, als ich verschiedene Modelle, Stimmen und Wege der Spracherkennung ausprobierte. Sie blieb auch dann wertvoll, als das Projekt größer wurde.
Entwickeln mit KI und dabei selbst lernen
In diesen Wochen habe ich viel darüber gelernt, wie ich gemeinsam mit KI-Agenten Software entwickeln kann. Ich konnte Ideen schnell ausprobieren und direkt sehen, was daraus wurde. Gleichzeitig musste ich lernen, Aufgaben klar zu beschreiben, Änderungen kritisch zu prüfen und bei der Architektur den Überblick zu behalten. Gerade dieses Zusammenspiel hat mir viel Spaß gemacht und mich als Entwickler weitergebracht.
Ein kleines Sprachmodell lokal einzubinden, war für mich dabei längst ein normaler Teil der Entwicklung geworden. Schon auf der eigenen Hardware waren Dinge möglich, von denen ich früher nur geträumt hatte. Mit mehr Grafikspeicher konnte ich später ein leistungsfähigeres Modell nutzen und die Qualität der Antworten weiter verbessern.
Die Grenzen verschwanden dadurch nicht. Aber ich lernte sie kennen: Was passte in den Speicher? Welche Aufgabe konnte das Modell zuverlässig übernehmen? Wo brauchte es einen klar definierten Skill? Und wie weit konnte ich die Abläufe optimieren, bevor immer mehr Aufwand nur noch wenig Verbesserung brachte?
Schneller war nicht automatisch besser
Anfangs fiel vor allem die Wartezeit auf. Später wurde ebenso wichtig, dass ein Ablauf verständlich und wiederholbar blieb. Eine schnelle erste Reaktion half wenig, wenn danach ein Zustand hängen blieb oder unklar war, ob ein Auftrag wirklich ausgeführt worden war.
Die Protokolle halfen mir dabei, genauer hinzusehen. Ich konnte den Weg durch die Anwendung nachvollziehen und Zeitabschnitte messen. Aus einem Gefühl wie „Das dauert zu lange“ wurde eine konkretere Frage: An welcher Stelle geht die Zeit verloren?
- Eine zusätzliche Verarbeitung muss ihren Nutzen rechtfertigen.
- Ein klares Ergebnis braucht einen sichtbaren Zustand.
- Eine ausgeführte Aktion braucht mehr als eine Behauptung des Modells.
- Eine neue Fähigkeit muss mit den vorhandenen Abläufen zusammenpassen.
Diese Fragen begleiteten Sprache, Widgets und Vision auf unterschiedliche Weise. Es ging längst nicht mehr nur darum, ob etwas grundsätzlich möglich war. Es sollte sich auch beim nächsten Versuch wieder richtig verhalten.
Meine Regeln blieben Teil des Projekts
Die Idee eines lokalen Assistenten wurde mit Wetterdaten, Nachrichten und weiteren Zugängen offener. Der Kern konnte lokal arbeiten; manche Fähigkeiten brauchten trotzdem andere Dienste oder Geräte. Diese Unterschiede mussten erkennbar bleiben.
Auch die Instruktionen und die Freigaben hatten unterschiedliche Aufgaben. Vorgaben konnten die Antworten des Modells beeinflussen. Ob eine konkrete Aktion ausgeführt werden durfte, musste dagegen die Anwendung entscheiden.
Gerade die Momente, in denen mein Assistent etwas behauptete, das er nicht getan hatte, machten diese Trennung wichtig. Ich wollte mich nicht allein auf seine Antwort verlassen müssen. Ich wollte nachsehen können.
Währenddessen ging die Entwicklung weiter
Während ich an Joris arbeitete, kamen auch bei den großen KI-Systemen neue Funktionen hinzu. Manche Möglichkeiten, die ich für meinen eigenen Assistenten aufgebaut hatte, wurden inzwischen Teil fertiger Produkte. Nach etlichen Wochen Arbeit fragte ich mich deshalb schon, wie viel ich künftig noch selbst entwickeln müsste. Der Wert dessen, was ich dabei gelernt hatte, blieb für mich jedoch unverändert.
Was mir dieser eigene Weg gegeben hat
Der eigene Weg bringt Arbeit mit sich. Abhängigkeiten, Fehler, Tests und Pflege verschwinden nicht, weil das Ergebnis auf meinem Rechner läuft. Wenn ich etwas ändern möchte, gehört auch die Verantwortung dafür zu mir.
Aber ich kann es ändern. Ich kann eine Idee ausprobieren, einen Skill ergänzen, eine Oberfläche umbauen oder eine Entscheidung noch einmal überdenken. Das Projekt muss nicht bei dem stehen bleiben, was ich am Anfang davon erwartet hatte.
Für mich liegt darin ein großer Teil seines Werts. Ich habe nicht nur einen Assistenten gebaut. Ich habe mich mit Sprache, Modellen, Schnittstellen und Geräten beschäftigt und dabei immer besser verstanden, wie diese Teile zusammenspielen.
Die erste Stimme aus den Lautsprechern war deshalb kein kleinerer Erfolg, nur weil inzwischen viel mehr möglich ist. Sie war der Anfang. Ohne diesen Moment hätte es die ganzen nächsten Fragen vielleicht gar nicht gegeben.
Eine Stimme an neuen Orten
Mit der Telefonie kam zuletzt ein weiterer Zugang hinzu. Ich konnte Joris über den Gira G1 anrufen und mit ihm sprechen. Wieder blieb der vertraute Gesprächskern bestehen, während ein anderes Gerät zum Zugang wurde.
Das passt für mich zu diesem ganzen Weg: Aus einer Idee entstand eine Anwendung, und aus jeder neuen Erfahrung ergab sich die nächste Frage. Nicht alles davon muss sofort umgesetzt werden. Die geplante Anzeige der Gerätezustände und mögliche externe Telefonate dürfen zunächst Ideen bleiben.
Joris darf erst einmal ruhen
Ich habe noch andere Projekte und Ideen, denen ich Zeit geben möchte. Deshalb lasse ich Joris vorerst ruhen. Nach diesen intensiven Wochen fühlt sich das richtig an. Nicht jede neue Möglichkeit muss sofort die nächste Baustelle werden.
Meine Idee dafür ist, einen autonomen Hermes-Agenten einzubinden. Zusammen mit einem passenden lokalen Modell könnte er die Auswahl und den Aufruf von Werkzeugen direkter übernehmen. Das native Tool Calling würde ich gerne als neuen Ansatz für Teile meiner bisherigen Intent-Verarbeitung erproben.
Ob das besser funktioniert, müsste sich zeigen. Genügend RAM würde mir mehr Spielraum bei der Modellwahl geben. Welches Modell die Aufgaben zuverlässig erledigt und wie sich der Agent mit meinen vorhandenen Funktionen verbindet, wäre dann die nächste spannende Frage.
Wer sich schon mit der Entwicklung eines Agenten-Harness oder mit Agentenschleifen beschäftigt hat, kennt die zusätzlichen Herausforderungen. In meiner bisherigen deterministischen Intent-Pipeline waren die Wege für bekannte Befehle klar vorgegeben. Ein Agent entscheidet dagegen Schritt für Schritt, welches Werkzeug er aufruft und wie er mit dessen Ergebnis weiterarbeitet. Dabei können Schleifen entstehen, unnötige Aktionen aufeinanderfolgen oder Fehler spätere Entscheidungen beeinflussen. Wann er weitermachen, nachfragen oder aufhören sollte, müsste ich entsprechend sorgfältig gestalten.
Gerade diese neuen Fragen reizen mich. Ich weiß, dass damit andere Probleme auf mich zukommen können, und freue mich darauf, diesen Ansatz auszuprobieren.
Die Geräteanbindungen, die Oberfläche und all die Erfahrungen mit Sprache wären dafür eine Grundlage. Ich würde nicht wieder bei null anfangen. Vieles von dem, was ich bis hierhin gebaut habe, könnte in diesen nächsten Schritt einfließen.
Die Geschichte bekommt noch Bilder
Bei Gelegenheit möchte ich diese Serie auch um Screenshots und Videos ergänzen. Ich möchte zeigen, wie Joris auf dem Bildschirm aussah, wie sich die Widgets bedienen ließen und wie sich ein Gespräch mit ihm anfühlte. Manche dieser Momente lassen sich mit einem Bild oder einer Aufnahme einfach besser vermitteln als mit Text allein.
Diese Zwischenbilanz ist deshalb kein Schlussstrich. Dass ich heute mit meinem Assistenten sprechen, ihm etwas zeigen und ihn sogar anrufen kann, hätte mir am Anfang schon ziemlich viel bedeutet. Dazwischen liegen viele Entscheidungen, Umwege und kleine Erfolge. Genau diese Erfahrung bleibt.
Ich hoffe, du hattest Spaß beim Lesen dieser Serie und konntest etwas aus meinen Versuchen mitnehmen. Ich habe noch viele andere Ideen und freue mich darauf, dir zu zeigen, was daraus wird.













