{"id":648,"date":"2026-05-05T08:05:43","date_gmt":"2026-05-05T08:05:43","guid":{"rendered":"https:\/\/jan-brinkhaus.de\/?p=648"},"modified":"2026-05-05T08:08:34","modified_gmt":"2026-05-05T08:08:34","slug":"der-assistent-den-ich-mir-selbst-gebaut-habe","status":"publish","type":"post","link":"https:\/\/jan-brinkhaus.de\/en\/der-assistent-den-ich-mir-selbst-gebaut-habe\/","title":{"rendered":"Der Assistent, den *ich* mir selbst gebaut habe"},"content":{"rendered":"\n<p>Warum ich angefangen habe, mir selbst einen KI-Assistenten zu bauen.<\/p>\n\n\n\n<p>Seit ein paar Monaten l\u00e4uft auf einem der Firmenserver ein Ding namens Jarvis. In verschiedenen Varianten. Erst OpenClaw&#8230; und dann irgendwann stumpf Claude Code.<\/p>\n\n\n\n<p>Kein Cloud-Abonnement, kein SaaS-Anbieter, kein monatlicher Preis auf einer Kreditkartenabrechnung. Jarvis geh\u00f6rt mir, und kennt meinen Alltag erheblich besser als sonst jemand &#x1f923;.<\/p>\n\n\n\n<p>Da gingen einige Stunden herein. Das war quasi meine kleine Modelleisenbahn, an der ich n\u00e4chtlich schraubte &#x1f609;.<\/p>\n\n\n\n<p>Was Jarvis tut, ist unspektakul\u00e4r \u2014 und die Unspektakularit\u00e4t ist das coole.<\/p>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_08-AM-1024x576.png\" alt=\"\" class=\"wp-image-649 size-full\" srcset=\"https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_08-AM-1024x576.png 1024w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_08-AM-300x169.png 300w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_08-AM-768x432.png 768w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_08-AM-1536x864.png 1536w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_08-AM.png 1672w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p>Jeden Morgen um halb acht bekomme ich ein Briefing: was heute im Kalender steht, welche Mails reingekommen sind, wie meine Stundenbuchung diese Woche aussieht, was ich gestern als offen markiert hatte. Kein \u00d6ffnen von f\u00fcnf verschiedenen Apps. Einfach Telegram aufmachen, lesen.<\/p>\n<\/div><\/div>\n\n\n\n<p>Alle halbe Stunde schaut Jarvis in meine Mailbox, bewertet, was wichtig ist, notiert es \u2014 und schweigt, wenn nichts zu sagen ist. Das klingt trivial. Wer das einmal erlebt hat, wei\u00df, dass &#8220;schweigen wenn nichts zu sagen ist&#8221; die seltenste und wertvollste Eigenschaft eines Assistenten ist &#x1f92d;.<\/p>\n\n\n\n<p>Abends archiviert er, was wir besprochen haben. Was entschieden wurde, was offengeblieben ist, wen ich anrufen wollte.<\/p>\n\n\n\n<p><strong>Was entstanden ist<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Am Flughafen stehen, der Flieger kommt zu sp\u00e4t an, man braucht den Anschlussflieger? Jarvis kannte meinen Kalender, hatte Webzugriff, verstand die Zusammenh\u00e4nge &#8211; und konnte mir auf kurze Anfrage hin ansagen, zu welchem Gate ich rennen musste &#x1f923;, w\u00e4hrend ich rannte.<br><\/li>\n\n\n\n<li>Beim Nachrichtenlesen \u00fcber eine Linux-Sicherheitsl\u00fccke, mal eben eine Sprachnachricht an Jarvis, zu checken ob <em>*beide*<\/em> Firmenserver bei einem Kernel-Update auch definitiv neu starten w\u00fcrden (und dies best\u00e4tigt bekommen).<br><\/li>\n\n\n\n<li>Im Morgenbriefing eine Frage, ob sich der Termin in Linz nicht damit bei\u00dfe, dass ich heute Kinder im Haus h\u00e4tte &#8211; ob der Arbeitstermin nicht verschoben werden m\u00fcsse? Gotcha!! (Cool hier auch die Priorisierung, n\u00e4mlich die implizite Entscheidung, dass er mir vorschlug, den <em>Arbeitstermin <\/em>zu verschieben und nicht die <em>Kinder <\/em>&#x1f923;.<br><\/li>\n\n\n\n<li>Am Ende eines Tages erinnert werden, dass ich meine Zeiterfassung f\u00fcr heute verschlampt habe?<\/li>\n<\/ul>\n\n\n\n<p>In Summe unbezahlbar &#x1f609; .<\/p>\n\n\n\n<p><strong>Warum selbst bauen?<\/strong><\/p>\n\n\n\n<p>Weil die W\u00fcnsche, als es einmal so halbwegs lief, immer gr\u00f6\u00dfer wurden &#x1f973;. Und das ging am Besten, indem ich das Framework, das Dinge in Claude einspielte, selbst in die Hand nahm.<\/p>\n\n\n\n<p>KI-Assistenten haben einen strukturell interessanten Aspekt: sie starten bei jedem Gespr\u00e4ch bei Null. W\u00f6rtlich. Sie wissen nicht, dass ich gerade in einem FFG-Projekt mitmache und dabei einen bestimmten Ansprechpartner habe. Sie wissen nicht, dass ich Rechnungen zu einem bestimmten Zeitpunkt im Monat schreibe. Sie wissen nicht, was ich gestern entschieden habe. Sie haben nur einen Riiiiesen-Haufen Dateien und sind durchaus motiviert, sich einzuarbeiten.<\/p>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p>Mein Setup ist anders. Jarvis hat ein Langzeitged\u00e4chtnis \u2014 als strukturierte Markdown-Dateien des Firmenwissens, die er selbst pflegt, wenn ich ihm Gespr\u00e4chsnotizen zu Terminen mache. \u00c4hnlich wie es sich manche andere mit Obsidian gebaut haben.<\/p>\n\n\n\n<p>Jarvis hat Zugriff auf meine Mails, meinen Kalender, meine Zeiterfassung. Er hat sich unter meiner Anleitung Skripte gebaut, mit denen er aus der Zeiterfassung Rechnungen machen kann.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_27-AM-1024x576.png\" alt=\"\" class=\"wp-image-650 size-full\" srcset=\"https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_27-AM-1024x576.png 1024w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_27-AM-300x169.png 300w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_27-AM-768x432.png 768w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_27-AM-1536x864.png 1536w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_27-AM.png 1672w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p>Er durchsucht seine eigenen Notizen und alle Projektnotizen semantisch, wenn ich ihn etwas frage. Und er l\u00e4uft auf Anthropics Claude \u2014 einem Modell, das gut genug ist, um Aufgaben zu erledigen, die viel dicker sind, als dass sie in einen Telegram-Chat passen &#x1f609;.<\/p>\n\n\n\n<p><strong>Was es technisch ist<\/strong><\/p>\n\n\n\n<p>Das Fundament war ein Open-Source-Projekt: ein Telegram-Bot, der Claude Code als Backend nutzt. Ich habe einen Fork davon gebaut, &nbsp;damit ich frei \u00e4ndern kann. Ich w\u00fcnschte mir die F\u00e4higkeit von Sprachnachrichten. Und zwar konkret so, wie <em>_ich_<\/em> es wollte, n\u00e4mlich so, dass das, was ich spreche vom Bot nochmal untendrunter<\/p>\n\n\n\n<p><em>*geschrieben*<\/em> wird, damit ich es per Textsuche wiederfinden w\u00fcrde. Und so, dass Jarvis unter seine Sprachantwort ebenso den Text transkribiert, aus gleichem Grund. Ich wollte eine linguistische Datenbank, mit der Jarvis Dinge findet, ohne dass die exakte Schreibweise stimmt und ohne dass er wei\u00df, welche Dateien er durchsuchen muss. Ich wollte, dass Jarvis sich selbst umbauen kann (ich habe keine Zeile Code geschrieben).<\/p>\n\n\n\n<p><strong>Was ist es technisch genau?<\/strong><\/p>\n\n\n\n<p>Letztlich, unter der Haube, ist das stumpf Claude Code.<\/p>\n\n\n\n<p>Den ich fernsteuere. Dem ich sage er hei\u00dfe Jarvis. Der tausend Prozessbeschreibungen unter der Haube hat. Der daraus die Firmenserverstruktur kennt. Der alle internen Programmierrichtlinien kennt. Der alle Projekte ausgecheckt vor der Flinte hat und bearbeiten k\u00f6nnte (selten genutzt, eher zum schnellen Nachschlagen, da man in Telegram Software nicht testen k\u00f6nnte &#x1f937;&#x200d;&#x2642;&#xfe0f; ). Der meine Office365-Token hat. Und Zugrang zu meinen Dateien. Und Zugang zu einer linguistisch indizierten Datenbank der wichtigsten Notizen&#8230; etc. .<\/p>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_21-AM-1024x1024.png\" alt=\"\" class=\"wp-image-651 size-full\" srcset=\"https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_21-AM-1024x1024.png 1024w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_21-AM-300x300.png 300w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_21-AM-150x150.png 150w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_21-AM-768x768.png 768w, https:\/\/jan-brinkhaus.de\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-May-5-2026-09_56_21-AM.png 1254w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p>Ferngesteuert von einem Python-Frontend, das ein Interface zu Telegram bietet und ein paar Infrastrukturen bietet.<\/p>\n\n\n\n<p>Aber im Summe: immernoch Claude Code.<\/p>\n\n\n\n<p>Den ich als Programm starten kann. Der die volle Power von Claude Codes 200Eur\/Monat-Abo hat. Den ich mit Anthropic verbinden kann. Und der danach einfach l\u00e4uft.<\/p>\n<\/div><\/div>\n\n\n\n<p>&nbsp;So wie Cowork auf Eurem Rechner. Nur besser, fand ich &#x1f31e;. Ist halt auf <em>mich<\/em> angepasst.<\/p>\n\n\n\n<p><strong>Was ich gelernt habe<\/strong><\/p>\n\n\n\n<p>Der wertvollste Teil war, Jarvis sauber Regeln zu geben. &#8220;Prozessbeschreibung&#8221; hei\u00dft das im Qualit\u00e4tsmanagement. Die Strukturen m\u00fcssen so sein, dass sich t\u00e4glich ein neuer Mitarbeiter einarbeiten kann &#8211; weil eine KI nach Einschalten erstmal <em>*nichts*<\/em> mehr wei\u00df.<\/p>\n\n\n\n<p>Das ist l\u00e4stig &#8211; aber fl\u00f6t, fl\u00f6t, fl\u00f6t, &#8230; wer mich kennt, wei\u00df, dass ich das auch gar nicht sooooo uncoool finde &#x1f923;&#x1f31e;.<\/p>\n\n\n\n<p><strong>&#8212;<\/strong><\/p>\n\n\n\n<p>Das Framework kann sich jeder herunterladen: &nbsp;<em>*Jarvis*<\/em> basiert auf <a href=\"https:\/\/gitlab.com\/brinkhaus\/claude-code-telegram-bh\" data-type=\"link\" data-id=\"https:\/\/gitlab.com\/brinkhaus\/claude-code-telegram-bh\">https:\/\/gitlab.com\/brinkhaus\/claude-code-telegram-bh<\/a>, meinem \u00f6ffentlichen Fork eines Open-Source-Projekts.<\/p>\n\n\n\n<p>Der Code ist verf\u00fcgbar \u2014 mit der ausdr\u00fccklichen Warnung, dass das kein Out-of-the-box-Produkt ist und nicht werden soll. Vom &#8220;Produkt&#8221; habe ich mit Blick auf die Nutzungsbedingungen von Anthropic ausdr\u00fccklich Abstand gehalten. Aber wer viel mit KI macht (wie ich), der kann Claude Code den Link geben, bitten, auf dem Server XYZ damit eine Instanz aufzusetzen &#8211; und danach mal gucken, wie er es sich einrichtet. Im Kern muss dann definiert werden, wo welche Dateien liegen, wie der Speicher des Bots organisiert werden soll, was er schreiben darf und was nicht. Etc. . Aber das m\u00fcsstet ihr mit allen m\u00f6glichen anderen Tools auch. Und da das hier ein Open Source Framework ist, hat das Ding seinen eigenen Frameworkcode und kann den einfach selbst \u00e4ndern. Ohne freilich den Kern &#8211; Claude Code &#8211; anzufassen.<\/p>\n\n\n\n<p>Viel Spa\u00df!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warum ich angefangen habe, mir selbst einen KI-Assistenten zu bauen. Seit ein paar Monaten l\u00e4uft auf einem der Firmenserver ein Ding namens Jarvis. In verschiedenen Varianten. Erst OpenClaw&#8230; und dann irgendwann stumpf Claude Code. Kein Cloud-Abonnement, kein SaaS-Anbieter, kein monatlicher &hellip; <a href=\"https:\/\/jan-brinkhaus.de\/en\/der-assistent-den-ich-mir-selbst-gebaut-habe\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-648","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/posts\/648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/comments?post=648"}],"version-history":[{"count":3,"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/posts\/648\/revisions"}],"predecessor-version":[{"id":655,"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/posts\/648\/revisions\/655"}],"wp:attachment":[{"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/media?parent=648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/categories?post=648"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jan-brinkhaus.de\/en\/wp-json\/wp\/v2\/tags?post=648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}