<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>TCDEV Blog</title>
  <subtitle>Practical notes on AI, engineering, and developer tooling.</subtitle>
  <link href="https://www.tcdev.de/de/blog/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://www.tcdev.de/de/blog/" rel="alternate" type="text/html" />
  <id>https://www.tcdev.de/de/blog/</id>
  <updated>2026-04-27T00:00:00Z</updated>
  <author>
    <name>TCDEV Blog</name>
  </author>
  <entry>
    <title>Lass deinen LLM auf Englisch denken</title>
    <link href="https://www.tcdev.de/de/blog/let-your-llm-think-in-english/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/let-your-llm-think-in-english/</id>
    <updated>2026-04-27T00:00:00Z</updated>
    <summary>Zuverlässige RAG- und Tool-Aufrufe brauchen in der Regel eine stabile Arbeitssprache. Behalte Englisch innerhalb der Modellschleife bei und lokalisiere dann für die Benutzer an den Rändern.</summary>
    <content type="html">&lt;p&gt;Du lieferst einen Chatbot für dein deutsches Team. Die Benutzeroberfläche ist deutsch. Die Quelldokumente sind teilweise deutsch, teilweise englisch. Die Tools hinter dem Assistenten erwarten englische Enum-Werte, englische Funktionsbeschreibungen, englische Produktnamen, alles auf Englisch.&lt;/p&gt;
&lt;p&gt;Dann stellt jemand eine ganz normale Frage auf Deutsch, das Modell wählt das richtige Tool aus, übergibt ein Argument auf Deutsch statt auf Englisch, und die ganze Sache fällt still und leise auseinander.&lt;/p&gt;
&lt;p&gt;Ich habe das schon so oft erlebt, dass ich es nicht mehr als Übersetzungsproblem betrachte. **Es ist ein Ausführungsproblem.&lt;/p&gt;
&lt;p&gt;Meine derzeitige Vorgabe ist einfach: Lass die Benutzer/innen in der Sprache sprechen, die sie wollen, aber lass den LLM die Suche, die Schlussfolgerungen und die Werkzeuge auf Englisch ausführen, wenn es um Zuverlässigkeit geht. Dann lokalisiere die Antwort außerhalb dieser Schleife.&lt;/p&gt;
&lt;p&gt;Das klingt im ersten Moment etwas ketzerisch. Meiner Meinung nach ist es aber das Praktischste, was du im Moment tun kannst.&lt;/p&gt;
&lt;h2&gt;Die Forschung beginnt, dies laut zu sagen&lt;/h2&gt;
&lt;p&gt;Die Zahlen sind nicht mehr unauffällig.&lt;/p&gt;
&lt;p&gt;Im [MASSIVE-Agents-Benchmark] (https://aclanthology.org/2025.findings-emnlp.1099/) haben Forscher den mehrsprachigen Funktionsaufruf in 52 Sprachen, 47.020 Stichproben und 21 Modellen bewertet. Die beste durchschnittliche Punktzahl über alle Sprachen hinweg lag bei nur 34,05 %. Englisch erreichte 57,37%. Amharisch fiel auf 6,81%.&lt;/p&gt;
&lt;p&gt;Das ist keine kleine Qualitätsschwankung. Das ist eine Klippe in Sachen Zuverlässigkeit.&lt;/p&gt;
&lt;p&gt;Dann gibt es noch [Lost in Execution] (https://arxiv.org/abs/2601.05366), das noch näher an das reale Systemproblem heranreicht. Die Arbeit zeigt, dass viele mehrsprachige Werkzeugaufrufe scheitern, ** nachdem das Modell die Absicht bereits verstanden und das richtige Werkzeug ausgewählt hat**. Das Hauptproblem war die mangelnde Übereinstimmung der Parameterwerte mit der Sprache. Im Klartext: Das Modell wusste, was zu tun war, drückte die ausführbaren Bits aber in der Sprache des Benutzers statt in der Sprache der Schnittstelle aus, sodass der Aufruf trotzdem fehlschlug.&lt;/p&gt;
&lt;p&gt;Und das ist nicht auf Tool-Aufrufe beschränkt. In [Do Multilingual Language Models Think Better in English?] (https://aclanthology.org/2024.naacl-short.46/) haben Etxaniz und Kollegen herausgefunden, dass die Selbstübersetzung ins Englische bei fünf Aufgaben durchweg besser ist als die direkte Schlussfolgerung aus dem Nicht-Englischen. Ihre Formulierung ist erfrischend unverblümt: Modelle sind &amp;quot;nicht in der Lage, ihr volles mehrsprachiges Potenzial auszuschöpfen, wenn sie in nicht-englischen Sprachen aufgefordert werden&amp;quot;.&lt;/p&gt;
&lt;p&gt;Also ja, mehrsprachige Modelle sind beeindruckend. Aber wenn deine Messlatte nicht &amp;quot;klingt ziemlich gut&amp;quot; ist, sondern &amp;quot;muss sich in der Produktion korrekt verhalten&amp;quot;, sieht Englisch immer noch erstaunlich oft wie die sicherere Betriebssprache aus.&lt;/p&gt;
&lt;h2&gt;Warum RAG immer an derselben Stelle bricht&lt;/h2&gt;
&lt;p&gt;Wenn man dieses Argument hört, denkt man normalerweise zuerst an Agenten. Funktionsaufrufe, strukturierte Ausgaben, API-Ausführung und dergleichen mehr.&lt;/p&gt;
&lt;p&gt;RAG hat die gleiche Schwäche, nur eine Ebene früher.&lt;/p&gt;
&lt;p&gt;Wenn deine Suchschicht die lokalen Formulierungen eines Nutzers mit Inhalten abgleichen muss, die in verschiedenen Sprachen verfasst wurden, mit inkonsistenter Terminologie, übersetzten Produktnamen und halb lokalisierten Taxonomiebezeichnungen, erhöht sich die Wahrscheinlichkeit, dass das System abdriftet, bevor die Generierung überhaupt beginnt. Ehrlich gesagt, kommen viele Beschwerden über &amp;quot;das Modell ist unzuverlässig&amp;quot; daher. Das Modell mag in Ordnung sein. Die Inhaltsschnittstelle ist es nicht.&lt;/p&gt;
&lt;p&gt;Ich würde lieber früh normalisieren.&lt;/p&gt;
&lt;p&gt;Übersetze die Frage ins Englische. Vergleiche sie mit einem kanonischen englischen Korpus. Lass das Modell über eine stabile Terminologieebene nachdenken. Erstelle bei Bedarf einen Antwortentwurf auf Englisch. Übersetze oder lokalisiere dann die endgültige Antwort für den Nutzer.&lt;/p&gt;
&lt;p&gt;So hast du einen Ort, an dem die Benennung stabil bleibt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ein kanonischer Dokumententitel&lt;/li&gt;
&lt;li&gt;ein kanonisches Produktvokabular&lt;/li&gt;
&lt;li&gt;ein kanonisches Werkzeugschema&lt;/li&gt;
&lt;li&gt;ein kanonisches Set von Retrieval Labels&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Du kannst immer noch jede Benutzersprache auf der Außenseite unterstützen. Du verlangst nur nicht mehr, dass der Kernausführungspfad bei jedem Schritt perfekt mehrsprachig ist.&lt;/p&gt;
&lt;h2&gt;Das ist nicht gegen die Lokalisierung.&lt;/h2&gt;
&lt;p&gt;Ganz im Gegenteil.&lt;/p&gt;
&lt;p&gt;Eine schlechte mehrsprachige KI-Architektur schadet in der Regel zuerst den lokalen Nutzern. Sie bekommen eine schöne lokalisierte Oberfläche, aber das versteckte englischsprachige System darunter verhält sich inkonsequent und lässt sie den Preis dafür zahlen.&lt;/p&gt;
&lt;p&gt;Richtige Lokalisierung bedeutet, dass man ehrlich darüber ist, wo sich die Sprache biegen sollte und wo nicht.&lt;/p&gt;
&lt;p&gt;Für mich sieht die Aufteilung folgendermaßen aus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lokalisiere die Benutzeroberfläche, die Eingabeaufforderungen, den Hilfetext, das Onboarding und die endgültigen Antworten.&lt;/li&gt;
&lt;li&gt;Lokalisiere den Quellinhalt, den die Leute direkt lesen, wenn dieser Inhalt auf dem Markt benötigt wird.&lt;/li&gt;
&lt;li&gt;Behalte interne Tooldefinitionen, kanonische Bezeichner, Abrufbezeichnungen und Argumentationspunkte auf Englisch, wenn dies die stabilste Ebene ist.&lt;/li&gt;
&lt;li&gt;Füge explizite Nachbearbeitung oder menschliche Überprüfung hinzu, wenn eine lokalisierte Ausgabe rechtlich, regulatorisch oder vertraglich von Bedeutung ist.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dieser letzte Punkt ist wichtiger, als die Teams zugeben wollen. Wenn das Modell mit einem Menschen spricht, ist die Lokalisierung eine Entscheidung für die Benutzererfahrung. Wenn das Modell mit einem anderen System kommuniziert, ist die Sprache ein Schnittstellenvertrag.&lt;/p&gt;
&lt;p&gt;Das ist nicht dasselbe.&lt;/p&gt;
&lt;h2&gt;Die Architektur, der ich im Moment am meisten vertraue&lt;/h2&gt;
&lt;p&gt;Dies ist die Version, auf die ich heute für mehrsprachige KI-Produkte setzen würde:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Der Benutzer fragt in seiner Sprache.&lt;/li&gt;
&lt;li&gt;Das System übersetzt oder normalisiert die Anfrage ins Englische.&lt;/li&gt;
&lt;li&gt;Abfrage, Schlussfolgerung, Ranking und Tool-Aufrufe erfolgen anhand kanonischer englischer Daten.&lt;/li&gt;
&lt;li&gt;Die endgültige Antwort wird wieder in die Sprache des Nutzers übersetzt.&lt;/li&gt;
&lt;li&gt;Ausgaben mit hohem Risiko werden einem zusätzlichen Validierungsschritt unterzogen, bevor sie das System verlassen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Es ist nicht philosophisch rein. Es ist operativ vernünftig.&lt;/p&gt;
&lt;p&gt;Das Schöne daran ist, dass neuere Forschungsergebnisse in die gleiche Richtung weisen. Die Studie [Lost in Execution] (https://arxiv.org/abs/2601.05366) hat herausgefunden, dass die Vorübersetzung von Benutzeranfragen die Fehler bei der Sprachübereinstimmung in der Regel besser reduziert als Nachbesserungen, auch wenn dadurch die Leistung auf englischem Niveau nicht vollständig wiederhergestellt werden kann. Das entspricht dem, was viele Entwickler/innen in der Praxis bereits vermuten. Wenn du bis zum Ende wartest, um mehrsprachige Inkonsistenzen zu bereinigen, ist es meist zu spät.&lt;/p&gt;
&lt;p&gt;Und ja, es gibt Ausnahmen. Wenn du für Sprachen mit geringen Ressourcen, für eine domänenspezifische Sprache oder für kulturell abhängige Formulierungen baust, kann es zu einem Drift kommen, wenn du alles ins Englische übersetzt. Davor wird in dem oben genannten Papier ausdrücklich gewarnt. Mach das also nicht zu einem Dogma.&lt;/p&gt;
&lt;p&gt;Aber als Standard für Copiloten in Unternehmen, interne Assistenten, mehrsprachige RAG und Agenten, die Tools verwenden, halte ich die Regel für erstaunlich gut geeignet.&lt;/p&gt;
&lt;h2&gt;Was das für Rasepi bedeutet&lt;/h2&gt;
&lt;p&gt;Das ist genau der Grund, warum ich so viel Wert auf die kanonische Inhaltsstruktur lege.&lt;/p&gt;
&lt;p&gt;Wenn deine Wissensbasis eine saubere Quellenschicht, eine stabile Terminologie und eine kontrollierte Lokalisierung aufweist, ist es einfacher, der KI zu vertrauen. Wenn jede Sprachversion unabhängig voneinander in den Ausführungspfad abdriftet, bittest du das Modell zu improvisieren, wo dein System präzise sein sollte.&lt;/p&gt;
&lt;p&gt;Der gesamte Ansatz von Rasepi ist darauf ausgerichtet, diese Bereiche sauber voneinander zu trennen. Behalte einen kanonischen Kern. Lokalisiere absichtlich. Verfolge, wo Varianten existieren. Gib nicht vor, dass jede Schicht des Stacks gleichermaßen mehrsprachig sein sollte, nur weil die Benutzeroberfläche es ist.&lt;/p&gt;
&lt;p&gt;Früher dachte ich, dass die beste mehrsprachige KI-Erfahrung bedeutet, alles in der Sprache des Nutzers zu machen. Das glaube ich nicht mehr. Nicht für Systeme, die den richtigen Absatz abrufen, das richtige Werkzeug wählen und etwas zurückgeben müssen, dem man vertrauen kann.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Die praktische Regel ist einfach: Die Benutzer sollten lokal bleiben, aber der Ausführungspfad des LLM sollte stabil bleiben. Im Moment bedeutet das normalerweise Englisch in der Mitte und Lokalisierung an den Rändern.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das wird sich mit der Zeit ändern. Ich hoffe, es ändert sich schnell. Aber wenn du heute auslieferst und Zuverlässigkeit wichtiger ist als Ästhetik, würde ich das Modell auf Englisch denken lassen und dein Produkt die Sprache des Nutzers sprechen lassen.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="multilingual" />
    <category term="developer-experience" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Claude Design und die Ein-Personen-Kreativagentur</title>
    <link href="https://www.tcdev.de/de/blog/claude-design-the-one-person-creative-agency/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/claude-design-the-one-person-creative-agency/</id>
    <updated>2026-04-18T00:00:00Z</updated>
    <summary>Anthropic hat gerade Design-, Prototyping- und Präsentationstools in Claude veröffentlicht. Kombiniert mit Code und Cowork hat eine Person nun eine komplette Kreativagentur auf ihrem Laptop.</summary>
    <content type="html">&lt;p&gt;Gestern hat Anthropic [Claude Design] (https://www.anthropic.com/news/claude-design-anthropic-labs) vorgestellt, ein neues Produkt des Anthropic Labs Teams, mit dem du Designs, Prototypen, Präsentationen und Marketingmaterial erstellen kannst, indem du mit Claude sprichst. Und ich saß da, sah mir die Ankündigung an und dachte: Okay, jetzt hat eine Person mit einem Claude-Abo wirklich das meiste, was eine kleine Kreativagentur bietet. Entwerfen. Code. Automatisierung. Präsentationen. Markenkonsistenz. Alles innerhalb desselben Ökosystems.&lt;/p&gt;
&lt;p&gt;Das ist ein wilder Satz für das Jahr 2026. Aber ich glaube nicht, dass er übertrieben ist.&lt;/p&gt;
&lt;h2&gt;Was Claude Design eigentlich macht&lt;/h2&gt;
&lt;p&gt;Die Kurzversion: Du beschreibst, was du brauchst, und Claude erstellt eine erste Version. Dann verfeinerst du sie durch Konversation, Inline-Kommentare, direkte Bearbeitungen oder benutzerdefinierte Schieberegler, die Claude für dich erstellt. Claude basiert auf [Opus 4.7] (https://www.anthropic.com/news/claude-opus-4-7) und ist erstaunlich gut darin, die visuelle Konsistenz zu wahren.&lt;/p&gt;
&lt;p&gt;Die Funktion, die meine Aufmerksamkeit erregt hat, ist das Onboarding. Während der Einrichtung liest Claude deine Codebasis und die vorhandenen Designdateien, um ein Designsystem für dein Team zu erstellen. Farben, Typografie, Komponenten. Danach folgt jedes Projekt automatisch deiner Marke. Du kannst Bilder und Dokumente (DOCX, PPTX, XLSX) importieren oder direkt auf deine Codebase verweisen. Es gibt ein Web-Capture-Tool, das Elemente von deiner Live-Website aufnimmt, damit die Prototypen wie das echte Produkt aussehen.&lt;/p&gt;
&lt;p&gt;Du hast ein Figma-Mockup, das du überarbeiten möchtest? Exportiere es, füge es in Claude Design ein und beginne eine Diskussion darüber, was du ändern möchtest. Oder du nimmst einfach deine bestehende Website und sagst: &amp;quot;Vergrößere den Heldenbereich und füge ein Karussell mit Erfahrungsberichten hinzu.&amp;quot; So etwas in der Art.&lt;/p&gt;
&lt;p&gt;Die Aussagen in der Ankündigung sind aufschlussreich. Der leitende Produktdesigner von Brilliant sagte, dass seine komplexesten Seiten, die in anderen Tools mehr als 20 Eingabeaufforderungen benötigten, in Claude Design nur 2 Eingabeaufforderungen erforderten (https://www.anthropic.com/news/claude-design-anthropic-labs). Der Produktmanager von Datadog beschrieb, wie er von einer groben Idee zu einem funktionierenden Prototyp kommt, bevor jemand den Raum verlässt, und sagte, dass das, was früher eine Woche mit Briefings, Mockups und Review-Runden gedauert hat, jetzt in einem einzigen Gespräch passiert.&lt;/p&gt;
&lt;p&gt;Eine Woche des Hin und Her wurde in einem einzigen Gespräch zusammengefasst. Denk mal eine Sekunde darüber nach.&lt;/p&gt;
&lt;h2&gt;Der Stapel, der alles verändert&lt;/h2&gt;
&lt;p&gt;An dieser Stelle wird es interessant. Claude Design existiert nicht für sich allein. Anthropic hat jetzt drei Produkte, die zusammen eine absurde Menge abdecken:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;: Schreiben, Prüfen und Ausliefern von Software. [Das Unternehmen hat im Februar 2,5 Milliarden Dollar Umsatz gemacht (https://www.anthropic.com/news/anthropic-raises-30-billion-series-g-funding-380-billion-post-money-valuation) und ist für schätzungsweise 4 % aller öffentlichen GitHub Commits weltweit verantwortlich.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Cowork&lt;/strong&gt;: Automatisiere Wissensarbeit. Recherche, Analyse, Dokumentenbearbeitung, wiederkehrende Aufgaben von deinem Desktop aus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Design&lt;/strong&gt;: Erstelle visuelle Arbeiten. Prototypen, Präsentationen, Marketingmaterial, markenkonsistente Assets.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Und sie geben sich gegenseitig die Hand. Wenn ein Entwurf fertig ist, packt Claude alles in ein Übergabepaket, das du mit einer einzigen Anweisung an Claude Code weitergeben kannst. Design und Produktion in einem Arbeitsgang. Kein Jira-Ticket. Kein Übergabe-Meeting. Kein &amp;quot;Kannst du mir die Spezifikationen in Slack schicken&amp;quot;.&lt;/p&gt;
&lt;p&gt;Ich muss immer wieder an Sam Altmans Vorhersage von Anfang 2024 über [das Ein-Mann-Milliarden-Dollar-Unternehmen] (https://every.to/napkin-math/the-one-person-billion-dollar-company) denken. Damals klang das sehr ehrgeizig, vielleicht sogar ein bisschen übertrieben. Die Werkzeuge waren noch nicht da. Man konnte zwar Texte und Bilder erstellen, aber die Kluft zwischen der Erstellung von Dingen und dem Versand echter Produkte war enorm.&lt;/p&gt;
&lt;p&gt;Diese Kluft schrumpft schnell.&lt;/p&gt;
&lt;h2&gt;Was ich vor zwei Monaten dafür gegeben hätte&lt;/h2&gt;
&lt;p&gt;Als ich Rasepi aufbaute, war die Marketingseite einer der mühsamsten Teile. Nicht der Code. Der Code war in Ordnung, Claude beherrscht HTML und CSS wie ein Meister. Aber die visuellen Designentscheidungen? Das Layout der Helden, die Preiskarten, die Vergleichstabellen der Funktionen? Ich beschrieb die Dinge in Worten, Claude produzierte etwas und dann verbrachte ich Stunden damit, Abstände, Farben und Typografie anzupassen. Alles mit Hilfe von Textanweisungen. Keine visuelle Feedbackschleife.&lt;/p&gt;
&lt;p&gt;Mit Claude Design wird dieser Arbeitsablauf zu einem: &amp;quot;Hier ist meine Website&amp;quot; (Web-Capture), &amp;quot;Gestalte den Preisteil neu, um den Teamplan zu betonen&amp;quot; (Konversation), passe die grüne Akzentfarbe mit einem Schieberegler an, genehmige sie und übergebe sie an Claude Code zur Umsetzung. Ich schätze, das hätte mir ein ganzes Wochenende erspart.&lt;/p&gt;
&lt;p&gt;(Ehrlich gesagt ärgere ich mich ein bisschen, dass es nicht schon zwei Monate früher gestartet ist).&lt;/p&gt;
&lt;p&gt;Und der Canva-Export ist clever. [Canva hat 220 Millionen aktive Nutzer (https://backlinko.com/canva-users) und einen Jahresumsatz von 3 Milliarden Dollar. Anthropic versucht nicht, Canva zu ersetzen. Anthropic versucht, der Ort zu sein, an dem Ideen beginnen, bevor sie in Canva landen, um dort den letzten Schliff zu bekommen und verbreitet zu werden. Das ist ein kluger Schachzug zur Positionierung. Du erstellst deine Entwürfe in Claude Design und exportierst sie dann nach Canva, wo sie von deinem Marketingteam übernommen werden. Oder du exportierst es als PPTX für dein Investorendeck. Oder exportiere es als eigenständiges HTML für eine Landing Page.&lt;/p&gt;
&lt;h2&gt;Der Multiplikator &amp;quot;Einfach Tools hinzufügen&amp;quot;&lt;/h2&gt;
&lt;p&gt;Das ist das Muster, das ich in der KI-Branche im Jahr 2026 immer wieder sehe. Das Basismodell wird zwar intelligenter, aber der eigentliche Produktivitätssprung entsteht durch die Verknüpfung von Werkzeugen. Claude ist für sich genommen ein sehr intelligenter Textgenerator. Claude mit Code ist ein Softwareentwickler. Claude mit Cowork ist ein Forschungsanalyst. Claude mit Design ist ein Kreativdirektor. Claude mit allen dreien? Das ist eine kleine Agentur.&lt;/p&gt;
&lt;p&gt;Und die Verbindungen werden immer mehr. Anthropic hat angekündigt, dass in den nächsten Wochen weitere Integrationen hinzukommen werden. Mit den MCP-Servern kannst du Claude bereits mit externen Tools und Datenquellen verbinden. Das Ökosystem baut sich selbst auf.&lt;/p&gt;
&lt;p&gt;Für Einzelgründer/innen, Freiberufler/innen und kleine Teams ändert sich dadurch die Kalkulation komplett. Du brauchst keinen Designer mehr, um professionell aussehende Decks und Prototypen zu erstellen. Du brauchst keinen separaten Frontend-Entwickler, der Mockups in Code umwandelt. Du brauchst keinen Projektmanager, der die Übergabe zwischen Design und Technik koordiniert, denn es gibt keine Übergabe. Es ist eine kontinuierliche Konversation.&lt;/p&gt;
&lt;p&gt;Ich sage nicht, dass Designer überflüssig sind. Weit gefehlt. Sowohl Brilliant als auch Datadog beschreiben, dass ihre &lt;em&gt;Designer&lt;/em&gt; Claude Design verwenden. Das Tool macht gute Designer schneller und gibt allen anderen Zugang zu kompetenten visuellen Ergebnissen. Das ist etwas anderes, als Menschen zu ersetzen.&lt;/p&gt;
&lt;h2&gt;Was das für Dokumentationsprodukte bedeutet&lt;/h2&gt;
&lt;p&gt;Diese Entwicklung beobachte ich genau. Bei Rasepi bauen wir eine Dokumentationsplattform auf, bei der die visuelle Qualität wichtig ist. Einstiegsseiten müssen gut aussehen. Schnelleinstiegsanleitungen brauchen klare Diagramme. Marketingdokumente müssen in allen Sprachen und Teams einheitlich aussehen.&lt;/p&gt;
&lt;p&gt;Eine Welt, in der jedes Teammitglied eine markenkonforme visuelle Dokumentation erstellen, sie an die Übersetzungsmaschine weitergeben und in sieben Sprachen verteilen kann, ohne Figma, Photoshop oder InDesign anfassen zu müssen? Das ist genau das Problem, das wir aus einem anderen Blickwinkel lösen. (Und ja, das ist genau die Art von Workflow, für die Rasepi entwickelt wurde).&lt;/p&gt;
&lt;h2&gt;Der Teil, in dem es seltsam teuer wird&lt;/h2&gt;
&lt;p&gt;Jetzt kommt der Teil, über den noch niemand gesprochen hat. Ich habe ein brandneues Anthropic-Konto erstellt, um Claude Design auszuprobieren. Ein neues Konto, keine Historie, keine vorherige Nutzung. Ich habe eine kleine Figma-Datei importiert und ein einziges Asset erstellt. Das war alles. Zwei Vorgänge. Und ich hatte kein Guthaben mehr.&lt;/p&gt;
&lt;p&gt;Auf einem brandneuen Konto. Mit einer neuen Zuteilung.&lt;/p&gt;
&lt;p&gt;Ich weiß nicht, wie die Berechnung auf Anthropics Seite aussieht, wenn Opus 4.7 die visuelle Generierung übernimmt, aber was auch immer es ist, es verbrennt die Credits in einem Tempo, das das Angebot &amp;quot;Ein-Personen-Kreativagentur&amp;quot; viel teurer erscheinen lässt als erwartet. Wenn das Importieren eines kleinen Figma-Mockups und das Erstellen eines Bildes dein gesamtes Budget auffrisst, ist es noch nicht wirtschaftlich, dies als tägliches Design-Tool zu nutzen.&lt;/p&gt;
&lt;p&gt;Fairerweise muss man sagen, dass es sich hier um eine Forschungsvorschau handelt und sich die Preise wahrscheinlich noch ändern werden. Aber im Moment klafft eine große Lücke zwischen dem Versprechen (deinen Design-Workflow zu ersetzen) und der Realität (dein Guthaben könnte vor dem Mittagessen aufgebraucht sein). Die Produktivitätsgewinne sind real. Ob das Verhältnis von Credits zu Output es für den regelmäßigen Gebrauch praktisch macht, ist eine ganz andere Frage.&lt;/p&gt;
&lt;h2&gt;Der ehrliche Vorbehalt&lt;/h2&gt;
&lt;p&gt;Claude Design befindet sich in der Forschungsvorschau. Es wird raue Kanten haben. Die Erfahrungsberichte stammen von Design-Teams in gut finanzierten Unternehmen mit etablierten Design-Systemen. Das kann sich ändern, vor allem, wenn du bei Null anfängst und keine Markenrichtlinien hast.&lt;/p&gt;
&lt;p&gt;Aber die Richtung ist klar. Vor achtzehn Monaten brauchte man einen Designer, einen Entwickler und einen Projektmanager, um vom Konzept zur fertigen Landing Page zu kommen. Heute kann eine einzelne Person mit einem Claude-Abonnement eine erstaunlich glaubwürdige Version desselben Workflows an einem Nachmittag erstellen.&lt;/p&gt;
&lt;p&gt;Wir sind noch nicht bei der Ein-Personen-Milliarden-Dollar-Firma angekommen. Aber die Ein-Personen-Kreativagentur? Ich glaube, wir sind gerade angekommen.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="developer-experience" />
    <category term="collaboration" />
  </entry>
  <entry>
    <title>Ein API-Schlüssel, viele Mieter: Wie wir DeepL Übersetzungen kundenübergreifend isolieren</title>
    <link href="https://www.tcdev.de/de/blog/one-api-key-many-tenants-deepl-isolation/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/one-api-key-many-tenants-deepl-isolation/</id>
    <updated>2026-04-18T00:00:00Z</updated>
    <summary>Rasepi verwendet einen einzigen DeepL API-Schlüssel für alle Tenants. So handhaben wir Glossare pro Kunde, Stilregeln, zwischengespeicherte Übersetzungen und Isolierung auf Blockebene, ohne dass etwas durchsickert.</summary>
    <content type="html">&lt;p&gt;Jedes Mal, wenn ich einem anderen Entwickler die Übersetzungsarchitektur von Rasepi erkläre, taucht eine Frage auf: &amp;quot;Moment mal, alle deine Mieter teilen sich einen DeepL API-Schlüssel? Wie verhinderst du, dass ihre Glossare und Stilregeln ineinander übergehen?&amp;quot;&lt;/p&gt;
&lt;p&gt;Das ist eine berechtigte Frage. Und die Antwort erfordert mehr Designarbeit, als du erwarten würdest.&lt;/p&gt;
&lt;p&gt;Wir haben die &lt;a href=&quot;https://www.tcdev.de/de/blog/inside-the-translation-engine-glossaries-style-rules-and-smart-retranslation/&quot;&gt;vollständige Übersetzungspipeline&lt;/a&gt; in einem früheren Beitrag behandelt, das Hashing auf Blockebene, den Orchestrator, den gesamten Fluss vom Speichern des Dokuments bis zur übersetzten Ausgabe. Dieser Beitrag befasst sich mit dem speziellen Problem der Mandantenfähigkeit. Wie man eine API eines Drittanbieters nimmt, die kein Konzept für Mandanten hat, und darauf eine Mandantenisolierung aufbaut.&lt;/p&gt;
&lt;h2&gt;Das Problem: DeepL weiß nichts über deine Kunden&lt;/h2&gt;
&lt;p&gt;Die API von DeepL authentifiziert sich mit einem einzigen API-Schlüssel. Alles, was unter diesem Schlüssel erstellt wird - Glossare, Stilregel-Listen, Übersetzungshistorie - gehört zu demselben Konto. Auf DeepL gibt es kein Konzept, das besagt: &amp;quot;Dieses Glossar gehört zu Mieter A&amp;quot;.&lt;/p&gt;
&lt;p&gt;Wenn du &lt;code&gt;GET /v2/glossaries&lt;/code&gt; aufrufst, erhältst du &lt;em&gt;alle&lt;/em&gt; Glossare von &lt;em&gt;allen&lt;/em&gt; Mietern. Wenn du eine Stilregel-Liste erstellst, befindet sie sich im gleichen Namensraum wie die Stilregeln aller anderen Tenants. Die API ist flach.&lt;/p&gt;
&lt;p&gt;Für ein selbst gehostetes Produkt, bei dem jeder Kunde seine eigene Instanz mit seinem eigenen DeepL Schlüssel betreibt, ist das in Ordnung. Für ein SaaS mit mehreren Mandanten, bei dem wir die Infrastruktur verwalten? Du brauchst eine Isolationsschicht.&lt;/p&gt;
&lt;h2&gt;Die Datenbank ist die Quelle der Wahrheit&lt;/h2&gt;
&lt;p&gt;Unsere zentrale Designentscheidung: &lt;strong&gt;Die Datenbank ist Eigentümerin aller Glossarinhalte und der Konfiguration der Stilregeln. DeepL ist ein Ausführungsziel für die Laufzeit, nichts weiter.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Jede &lt;code&gt;TenantGlossary&lt;/code&gt; und &lt;code&gt;TenantStyleRuleList&lt;/code&gt; Entität implementiert &lt;code&gt;ITenantScoped&lt;/code&gt;, was bedeutet, dass die globalen Abfragefilter von EF Core alle Lesevorgänge automatisch auf den aktuellen Tenant beschränken. Eine Abfrage nach Glossaren im Anfragekontext von Tenant A wird niemals die Einträge von Tenant B zurückgeben. Dies ist das gleiche Isolationsmuster, das wir überall in Rasepi verwenden und das auf ORM-Ebene durchgesetzt wird.&lt;/p&gt;
&lt;p&gt;Das macht die Sache interessant. Wenn ein Tenant einen Glossarbegriff bearbeitet, rufen wir nicht sofort DeepL auf. Wir aktualisieren die Datenbankzeile und setzen &lt;code&gt;IsDirty = true&lt;/code&gt;. Das war&#39;s. Das eigentliche DeepL Glossar wird in aller Ruhe erstellt (oder neu erstellt), bevor die nächste Übersetzung es braucht.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;string?&amp;gt; GetOrSyncDeepLGlossaryIdAsync(
    string sourceLanguage, string targetLanguage)
{
    var glossary = await _db.TenantGlossaries
        .Include(g =&amp;gt; g.Entries)
        .FirstOrDefaultAsync(g =&amp;gt;
            g.SourceLanguage == sourceLanguage &amp;amp;&amp;amp;
            g.TargetLanguage == targetLanguage);

    if (glossary?.Entries.Count == 0) return null;

    if (!glossary.IsDirty &amp;amp;&amp;amp; glossary.DeepLGlossaryId is not null)
        return glossary.DeepLGlossaryId;

    // Dirty: delete old, create new
    if (glossary.DeepLGlossaryId is not null)
        await _deepL.DeleteGlossaryAsync(glossary.DeepLGlossaryId);

    var entries = glossary.Entries
        .ToDictionary(e =&amp;gt; e.SourceTerm, e =&amp;gt; e.TargetTerm);

    var created = await _deepL.CreateGlossaryAsync(
        $&amp;quot;rasepi-{glossary.Id}&amp;quot;,
        glossary.SourceLanguage,
        glossary.TargetLanguage,
        entries);

    glossary.DeepLGlossaryId = created.GlossaryId;
    glossary.IsDirty = false;
    glossary.LastSyncedAt = DateTime.UtcNow;
    await _db.SaveChangesAsync();

    return glossary.DeepLGlossaryId;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Der Abfragefilter auf &lt;code&gt;TenantGlossaries&lt;/code&gt; sorgt für die Isolierung. Das &lt;code&gt;IsDirty&lt;/code&gt; Flag sorgt für den lazy sync. Und die Namenskonvention (&lt;code&gt;rasepi-{glossary.Id}&lt;/code&gt;) dient nur zum Debuggen im DeepL Dashboard, sie hat keinen funktionalen Zweck.&lt;/p&gt;
&lt;p&gt;Warum lazy? Weil &lt;a href=&quot;https://developers.deepl.com/docs/api-reference/glossaries&quot;&gt;DeepL v2 Glossare unveränderlich sind&lt;/a&gt;. Du kannst sie nicht bearbeiten. Jede Änderung bedeutet löschen und neu erstellen. Wenn ein Team eine CSV-Datei mit 200 Begriffen importiert und dann einen Tippfehler in einem Eintrag korrigiert, wollen wir das Glossar DeepL nicht zweimal löschen und neu erstellen. Wir setzen einfach beide Male &lt;code&gt;IsDirty&lt;/code&gt; und die einmalige Neuerstellung erfolgt, wenn die nächste Übersetzung läuft.&lt;/p&gt;
&lt;h2&gt;Stilregeln: gleiches Muster, andere API&lt;/h2&gt;
&lt;p&gt;Die [DeepL&#39;s style rules] (https://developers.deepl.com/docs/api-reference/translate/openapi-spec-for-text-translation) sind neuer (v3 API) und tatsächlich veränderbar, was schöner ist. Du kannst konfigurierte Regeln mit &lt;code&gt;PUT /v3/style_rules/{style_id}/configured_rules&lt;/code&gt; aktualisieren, und benutzerdefinierte Anweisungen können individuell hinzugefügt oder entfernt werden.&lt;/p&gt;
&lt;p&gt;Wir verwenden aber immer noch das gleiche &lt;code&gt;IsDirty&lt;/code&gt; Muster. Ein &lt;code&gt;TenantStyleRuleList&lt;/code&gt; hat einen &lt;code&gt;DeepLStyleId&lt;/code&gt;, der dem Laufzeitbezeichner von DeepL entspricht, sowie &lt;code&gt;ConfiguredRulesJson&lt;/code&gt; für die Formatierungsregeln und eine Sammlung von &lt;code&gt;TenantCustomInstruction&lt;/code&gt; Einträgen für Freitext-Übersetzungsanweisungen.&lt;/p&gt;
&lt;p&gt;Die eigentliche Stärke liegt in diesen benutzerdefinierten Anweisungen. Jede dieser Anweisungen ist eine Klartextanweisung mit bis zu 300 Zeichen, die bestimmt, wie DeepL übersetzt. Echte Beispiele von unseren Mietern:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Verwende immer die Form &#39;Sie&#39;, niemals &#39;du&#39;&amp;quot;&lt;/em&gt; für eine deutsche Anwaltskanzlei&lt;/li&gt;
&lt;li&gt;&amp;quot;Übersetze &#39;deployment&#39; als &#39;Bereitstellung&#39;, niemals &#39;Deployment&#39;&amp;quot;_ für kontextabhängige Begriffe, die über einfache Glossarzuordnungen hinausgehen&lt;/li&gt;
&lt;li&gt;&amp;quot;Verwende die britische Schreibweise (Farbe, Organisation, Lizenz)&amp;quot;_ für ein britisches Unternehmen, das zwischen verschiedenen englischen Varianten übersetzt&lt;/li&gt;
&lt;li&gt;&amp;quot;Setze Währungssymbole hinter den numerischen Betrag&amp;quot;_ für europäische Konventionen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jeder Tenant kann völlig unterschiedliche Anweisungen pro Zielsprache haben, die alle hinter demselben API-Schlüssel stehen. Die Isolierung ergibt sich aus der Tatsache, dass jeder Übersetzungsaufruf nur die &lt;code&gt;glossary_id&lt;/code&gt; und &lt;code&gt;style_id&lt;/code&gt; des anfragenden Tenants enthält. Die DeepL Ressourcen anderer Tenants werden nie referenziert.&lt;/p&gt;
&lt;h2&gt;Der Übersetzungsaufruf: alles setzt sich zusammen&lt;/h2&gt;
&lt;p&gt;Wenn der Orchestrator einen Block übersetzt, fügt er alle Tenant-spezifischen Einstellungen in einer einzigen Anfrage zusammen:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var glossaryId = await _glossaryService
    .GetOrSyncDeepLGlossaryIdAsync(sourceLang, targetLang);
var styleId = await _styleRuleService
    .GetOrSyncStyleIdAsync(targetLang);
var formality = langConfig.Formality ?? &amp;quot;default&amp;quot;;

var options = new TranslationOptions
{
    GlossaryId = glossaryId,
    StyleId = styleId,
    Formality = formality,
    Context = documentContext,
    ModelType = styleId != null ? &amp;quot;quality_optimized&amp;quot; : null
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jeder Parameter hier ist mandantenspezifisch. Der &lt;code&gt;glossaryId&lt;/code&gt; wurde durch eine Tenant-gefilterte Abfrage aufgelöst. Der &lt;code&gt;styleId&lt;/code&gt; wurde auf die gleiche Weise aufgelöst. Die &lt;code&gt;formality&lt;/code&gt; stammt von der &lt;code&gt;TenantLanguageConfig&lt;/code&gt;, die ebenfalls tenant-scoped ist. Auch die &lt;code&gt;context&lt;/code&gt; (umgebende Absätze, die zur Verbesserung der Übersetzungsqualität gesendet und nicht in Rechnung gestellt wurden) stammt aus dem eigenen Dokument des Mieters.&lt;/p&gt;
&lt;p&gt;Eine Sache, die ich hervorheben möchte: Wenn &lt;code&gt;style_id&lt;/code&gt; gesetzt ist, verwendet DeepL automatisch ihr &lt;code&gt;quality_optimized&lt;/code&gt; Modell. Du kannst keine Stilregeln mit &lt;code&gt;latency_optimized&lt;/code&gt; kombinieren. Das ist eine DeepL Einschränkung, aber ehrlich gesagt eine vernünftige Einschränkung. Wenn du in benutzerdefinierte Stilregeln investierst, willst du wahrscheinlich die beste Qualität erreichen.&lt;/p&gt;
&lt;h2&gt;Caching auf Blockebene: die Datenbank als Translation Memory&lt;/h2&gt;
&lt;p&gt;Wir rufen DeepL nicht für Blöcke auf, die sich nicht geändert haben. Der Caching-Mechanismus ist die &lt;code&gt;TranslationBlock&lt;/code&gt; Tabelle selbst.&lt;/p&gt;
&lt;p&gt;Jeder &lt;code&gt;EntryBlock&lt;/code&gt; hat einen &lt;code&gt;ContentHash&lt;/code&gt;, einen SHA256 seines semantischen Inhalts (wobei Metadatenattribute wie &lt;code&gt;blockId&lt;/code&gt; und &lt;code&gt;deleted&lt;/code&gt; entfernt werden). Jeder &lt;code&gt;TranslationBlock&lt;/code&gt; speichert den &lt;code&gt;SourceContentHash&lt;/code&gt;, der zum Zeitpunkt der Übersetzung aktuell war. Wenn sich der Quellblock ändert, ändert sich auch sein Hash. Der Orchestrator vergleicht die Hashes und stellt nur Blöcke in die Warteschlange, die nicht übereinstimmen.&lt;/p&gt;
&lt;p&gt;Der Entscheidungsbaum für jeden Block sieht wie folgt aus:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hash stimmt überein, Übersetzung existiert&lt;/strong&gt; = überspringen (gecached, aktuell)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hash geändert, maschinell übersetzt, nicht gesperrt&lt;/strong&gt; = automatisch neu übersetzen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hash geändert, von Menschen bearbeitet oder gesperrt&lt;/strong&gt; = als veraltet markieren, nicht überschreiben&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Der dritte Fall ist entscheidend. Wenn dein deutscher Übersetzer einen Absatz manuell überarbeitet hat, löschen wir ihn nicht, nur weil sich die englische Quelle geändert hat. Wir kennzeichnen ihn als veraltet, damit er weiß, dass er überarbeitet werden muss, aber der übersetzte Text bleibt intakt.&lt;/p&gt;
&lt;p&gt;Das praktische Ergebnis: Die Bearbeitung eines Absatzes in einem Dokument mit 30 Absätzen löst genau einen DeepL API-Aufruf aus (na ja, einen Stapel, der einen Block enthält). Die anderen 29 Absätze in allen Sprachen sind bereits zwischengespeichert und kosten nichts.&lt;/p&gt;
&lt;h2&gt;Warum nicht einen eigenen Schlüssel pro Tenant verwenden?&lt;/h2&gt;
&lt;p&gt;Ich habe das ernsthaft in Erwägung gezogen. Gib jedem Tenant seinen eigenen DeepL API-Schlüssel und das Problem der Isolierung ist gelöst.&lt;/p&gt;
&lt;p&gt;Drei Gründe, warum wir es nicht getan haben:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Komplexität der Abrechnung&lt;/strong&gt; Jeder Mieter bräuchte sein eigenes DeepL Abonnement oder eine Möglichkeit, Unterkonten einzurichten. DeepL bietet von Haus aus keine mandantenfähige Schlüsselverwaltung.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kosteneffizienz.&lt;/strong&gt; Gemeinsame Infrastruktur bedeutet gemeinsame Tarifgrenzen und Mengenrabatte. Unsere Gesamtnutzung führt zu besseren Preisen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Einfacher Betrieb.&lt;/strong&gt; Ein Schlüssel zum Drehen, ein Kontingent zum Überwachen, eine Integration zum Pflegen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Der Nachteil ist, dass wir die beschriebene Isolationsebene brauchen. Da wir aber bereits für alles andere im System mieterspezifische EF Core-Abfragen haben, war es ein Leichtes, diese in Glossare und Stilregeln einzubauen. Das Muster war bereits vorhanden.&lt;/p&gt;
&lt;h2&gt;Was dich wirklich schützt&lt;/h2&gt;
&lt;p&gt;Um die Isolationsgarantien zusammenzufassen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Glossareinträge&lt;/strong&gt; werden in &lt;code&gt;TenantGlossary&lt;/code&gt; (implementiert &lt;code&gt;ITenantScoped&lt;/code&gt;) gespeichert, gefiltert durch globale EF Core Abfragefilter. DeepL Glossar-IDs sind undurchsichtige Referenzen, die nur im Kontext des Tenants aufgelöst werden.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stilregeln und benutzerdefinierte Anweisungen&lt;/strong&gt; folgen dem gleichen Muster durch &lt;code&gt;TenantStyleRuleList&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Übersetzte Inhalte&lt;/strong&gt; befinden sich im &lt;code&gt;TranslationBlock&lt;/code&gt;, der über seine übergeordnete &lt;code&gt;Entry&lt;/code&gt; → &lt;code&gt;Hub&lt;/code&gt;-Kette skaliert wird, die ebenfalls tenant-skaliert ist.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Der &lt;code&gt;SaveChanges&lt;/code&gt; guard&lt;/strong&gt; setzt &lt;code&gt;TenantId&lt;/code&gt; automatisch bei neuen Entitäten und wird bei mandantenübergreifenden Schreibvorgängen geworfen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kein &lt;code&gt;IgnoreQueryFilters()&lt;/code&gt;&lt;/strong&gt; im Produktionscode. Immer.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Das Designprinzip ist einfach: DeepL sieht Ressourcen-IDs. Rasepi sieht tenant-scoped Entities. Die Zuordnung zwischen ihnen überschreitet niemals Tenant-Grenzen, da die Abfrage, die die Zuordnung auflöst, physisch nicht in der Lage ist, die Daten eines anderen Tenants zurückzugeben.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wenn du ein mandantenfähiges SaaS aufbaust, das mit APIs von Drittanbietern ohne native Tenant-Unterstützung integriert wird, funktioniert dieses Muster gut. Behandle die externe API als zustandslose Ausführungsmaschine, speichere alle Konfigurationen in deiner eigenen Tenant-Datenbank, synchronisiere sie nachlässig und verlasse dich bei der Isolierung niemals auf externe Ressourcenauflistungen.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="architecture" />
    <category term="translations" />
    <category term="multilingual" />
  </entry>
  <entry>
    <title>Tokens Burned ist der neue Lines of Code</title>
    <link href="https://www.tcdev.de/de/blog/tokens-burned-is-the-new-lines-of-code/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/tokens-burned-is-the-new-lines-of-code/</id>
    <updated>2026-04-13T00:00:00Z</updated>
    <summary>Die KI-Einführung anhand der Ausgaben für Token zu messen, ist der gleiche Fehler, den wir in den 90er Jahren mit Codezeilen gemacht haben. Derselbe Fehler, neues Dashboard, viel höhere Einsätze.</summary>
    <content type="html">&lt;p&gt;Mein LinkedIn-Feed ist schon seit Wochen voll davon. Meine X-Timeline auch. Leute posten Screenshots von Token-Ausgaben, als wären es Fortschrittsberichte. Startup-Gründer prahlen damit, dass sie letzten Monat 16.000 Dollar für Claude Code ausgegeben haben und im nächsten Monat 60.000 Dollar erreichen wollen. Bestenlisten. Ranglisten. Titel wie &amp;quot;Token-Legende&amp;quot; und &amp;quot;KI-Gott&amp;quot;.&lt;/p&gt;
&lt;p&gt;Und dann, letzte Woche, erreichte es die kritische Masse. Forbes &lt;a href=&quot;https://www.forbes.com/sites/richardnieva/2026/03/31/the-ai-gods-spending-as-much-as-they-can-on-ai-tokens/&quot;&gt;berichtete über die &amp;quot;Tokenmaxxing&amp;quot;-Bewegung&lt;/a&gt; im Silicon Valley, bei der Unternehmen darum wetteifern, wer die meisten KI-Token verbrennt. Jensen Huang sagte im All-In-Podcast: &lt;em&gt;&amp;quot;Diesen 500.000-Dollar-Ingenieur werde ich am Ende des Jahres fragen: &#39;Wie viel hast du in Token ausgegeben? Wenn er sagt: &#39;5.000 Dollar&#39;, werde ich etwas anderes machen. Wenn dieser 500.000-Dollar-Ingenieur nicht mindestens Token im Wert von 250.000 Dollar verbraucht hat, werde ich zutiefst beunruhigt sein.&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Dann berichtete [Fortune] (https://fortune.com/2026/04/09/meta-killed-employee-ai-token-dashboard/), dass ein Meta-Mitarbeiter eine interne Rangliste namens &amp;quot;Claudeonomics&amp;quot; erstellt hatte, in der der Token-Verbrauch der über 85.000 Mitarbeiter des Unternehmens erfasst wurde. Die Top-Nutzer bekamen Titel. In einem 30-Tage-Fenster erreichte die Gesamtnutzung 60 Billionen Token. Der Spitzenbenutzer verbrauchte im Durchschnitt 281 Milliarden. Mark Zuckerberg schaffte es nicht einmal unter die Top 250. Der CTO von Meta, Andrew Bosworth, sagte unterdessen öffentlich, dass sein bester Ingenieur sein Gehalt in Token ausgibt, aber &amp;quot;5- bis 10-mal produktiver&amp;quot; arbeitet. &amp;quot;Das ist einfaches Geld&amp;quot;, sagte Bosworth. &amp;quot;No limit.&amp;quot;&lt;/p&gt;
&lt;p&gt;Ich bin lange genug in der Softwarebranche, um zu wissen, was hier passiert. Es handelt sich um &amp;quot;Codezeilen&amp;quot; mit einem viel höheren Preisschild.&lt;/p&gt;
&lt;h2&gt;Wir waren schon mal hier&lt;/h2&gt;
&lt;p&gt;Im Jahr 2003 schrieb Martin Fowler [eine kurze Abhandlung darüber, warum Softwareproduktivität nicht messbar ist] (https://martinfowler.com/bliki/CannotMeasureProductivity.html), die wahrscheinlich zur Pflichtlektüre für jede technische Führungskraft gehören sollte. Sein Argument zu den Codezeilen war präzise:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Eines meiner größten Ärgernisse sind Produktivitätsstudien, die auf Codezeilen basieren. Jeder gute Entwickler weiß, dass er den gleichen Stoff mit riesigen Unterschieden in den Codezeilen programmieren kann.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das Problem ist offensichtlich, wenn du es laut aussprichst. LOC misst die Aktivität, nicht den Output. Zwei Entwickler können das gleiche Feature bauen: Der eine schreibt 1.200 Zeilen, der andere 80. Der prägnante Entwickler hat wahrscheinlich ein besseres System gebaut. Unter dem LOC-Regime sieht der ausführliche Entwickler produktiver aus.&lt;/p&gt;
&lt;p&gt;Teams, die nach LOC bewertet wurden, reagierten vernünftig. Sie schrieben mehr Zeilen. Sie kopierten, anstatt zu abstrahieren. Sie vermieden Refactoring, weil das Löschen von Code ihren Zahlen schaden würde. Die Kennzahl beeinflusste ihr Verhalten, aber nicht in Richtung besserer Software. Mehr Code. Schlechtere Systeme.&lt;/p&gt;
&lt;p&gt;Im Jahr 2023 veröffentlichte McKinsey einen Artikel, in dem behauptet wurde, die objektive Messung der Entwicklerproduktivität geknackt zu haben. [Die ausführliche Antwort von Gergely Orosz und Kent Beck (https://newsletter.pragmaticengineer.com/p/measuring-developer-productivity) wies auf den gleichen Fehler hin: Fast alle McKinsey-Kennzahlen maßen Aufwand und Output, nicht aber das Ergebnis. Kent Beck hat beobachtet, wie Facebooks interne Umfragen zur Stimmung der Entwickler von nützlichem Feedback zu Verhandlungen zwischen Managern und Ingenieuren über höhere Punktzahlen wurden. Das passiert, wenn man Anreize für eine stellvertretende Kennzahl schafft. Die Zahl verbessert sich. Die Sache, um die du dich eigentlich kümmerst, nicht.&lt;/p&gt;
&lt;p&gt;Man sollte meinen, wir hätten daraus gelernt. Haben wir aber nicht.&lt;/p&gt;
&lt;h2&gt;Gleicher Fehler, andere Einheit&lt;/h2&gt;
&lt;p&gt;Die verführerische Logik des Tokenmaxxing läuft folgendermaßen ab. Tokenverbrauch = KI-Nutzung. Mehr KI-Nutzung = Teams nutzen KI. Also: hohe Tokenausgaben = hohe KI-Nutzung = gut.&lt;/p&gt;
&lt;p&gt;Das ist genauso fehlerhaft wie die Messung von Codezeilen, nur mit einem Billing-Dashboard statt einem Commit-Diagramm. Und um dem Forbes-Artikel gerecht zu werden, hat der CEO von Sendbird, John Kim, genau das gesagt: &amp;quot;Wir haben diesen Film schon einmal gesehen.&amp;quot; Er bezog sich damit auf die LOC-Kultur der 1990er und 2000er Jahre. Der eigentliche Indikator sei, wie viel KI-generierter Code es tatsächlich in die Produktion schafft. Token-Ausgaben &amp;quot;sind eher ein Gesprächsanlass&amp;quot;. Dem stimme ich zu. Problematisch wird es, wenn der Gesprächsanlass zum wichtigsten KPI wird.&lt;/p&gt;
&lt;p&gt;Die [GitHub-Entwicklerumfrage 2024] (https://github.blog/news-insights/research/survey-ai-wave-grows/) ergab, dass 97 % der Entwickler in Unternehmen schon einmal KI-Codierungstools bei der Arbeit eingesetzt haben. Für eine sinnvolle Einführung im Unternehmen sind jedoch klare Richtlinien, Arbeitsabläufe und messbare Ergebnisse erforderlich, die an tatsächliche Geschäftsergebnisse gebunden sind. Nicht nur Nutzung. Nicht nur Konsum.&lt;/p&gt;
&lt;p&gt;Boris Cherny, der Ingenieur hinter Claude Code, &lt;a href=&quot;https://x.com/bcherny/status/2004626064187031831&quot;&gt;teilte&lt;/a&gt; öffentlich mit, dass er während eines Arbeitsmonats überhaupt keine IDE geöffnet und mit Opus 4.5 etwa 200 PRs geschrieben hat. Das ist beeindruckend. Aber das Beeindruckende sind nicht die Token, die diese 200 PRs verbraucht haben. Sondern dass es sich um 200 echte Beiträge mit funktionierender Software handelte, die am anderen Ende zusammengeführt wurden.&lt;/p&gt;
&lt;p&gt;Der Wert liegt in dem Ergebnis. Token sind die Energie, die dich dorthin gebracht hat, mehr nicht.&lt;/p&gt;
&lt;h2&gt;Wenn die Metrik zum Ziel wird&lt;/h2&gt;
&lt;p&gt;Es gibt ein Prinzip namens Goodhart&#39;s Law: Wenn eine Messgröße zum Ziel wird, ist sie keine gute Messgröße mehr. Die Geschichte der Softwareentwicklung ist im Grunde ein Museum für Goodharts Gesetz in Aktion.&lt;/p&gt;
&lt;p&gt;Die Verfolgung von Token als KPI für die KI-Einführung bringt genau dieselbe Dynamik mit sich. Ingenieurteams, die am Token-Verbrauch gemessen werden, werden mehr Token verbrauchen. So funktionieren Anreize nun mal. Willst du produktiver aussehen? Führe ein paar mehr agenturische Schleifen durch. Lass das Modell lange nachdenken, bevor es eine Ausgabe erzeugt. Verpacke jede Aufgabe in eine Orchestrierungsschicht, die vier Tools aufruft, wo sonst eines reicht. Die Ausgaben für Token steigen. Der gelieferte Wert jedoch nicht.&lt;/p&gt;
&lt;p&gt;Die Geschichte von Claudeonomics hat das fast sofort bewiesen. Fortune stellte fest, dass &amp;quot;einige Mitarbeiter KI-Agenten stundenlang arbeiten lassen, um ihre Token-Nutzung zu maximieren&amp;quot;. Da haben wir es. Goodharts Gesetz in Echtzeit, und das in einem Unternehmen, das angeblich an der Spitze der KI-gesteuerten Produktivität steht. Die Bestenliste war vielleicht ein paar Wochen lang online, bevor sie abgeschaltet wurde, und die Mitarbeiter spielten bereits mit ihr, indem sie Agenten in Schleifen laufen ließen. Die Kennzahl war drei Wochen alt und hatte bereits aufgehört, das zu messen, was sie eigentlich messen sollte.&lt;/p&gt;
&lt;p&gt;Jedem Entwickler, der das hier liest, fallen wahrscheinlich fünf Möglichkeiten ein, wie man die Token-Nutzungskennzahlen aufblähen kann, ohne dass jemand davon profitiert. Ich werde sie nicht aufzählen. Aber wenn mir fünf einfallen, können das auch die Ingenieure, die hier gemessen werden.&lt;/p&gt;
&lt;p&gt;Andrej Karpathy bezeichnete [den aktuellen Moment in der Softwareentwicklung] (https://x.com/karpathy/status/2004607146781278521) als ein &amp;quot;Erdbeben der Stärke 9&amp;quot; für den Berufsstand. Da hat er Recht. Aber Erdbeben werden nicht an der verbrauchten Energie gemessen. Sie werden an dem gemessen, was sich bewegt.&lt;/p&gt;
&lt;h2&gt;Die Dokumentationsversion dieses Problems&lt;/h2&gt;
&lt;p&gt;Das ist nicht nur ein Problem für Ingenieurteams. Die gleiche Dynamik sehe ich im Wissensmanagement, das uns bei Rasepi viel näher liegt.&lt;/p&gt;
&lt;p&gt;&amp;quot;Wir haben in diesem Quartal 400 Dokumente veröffentlicht&amp;quot; ist eine Zahl, die in einem Slide Deck gut klingt. Sie sagt aber nichts darüber aus, ob diese Dokumente korrekt sind, ob sie jemand gelesen hat oder ob die darin enthaltenen Informationen sechs Monate später noch stimmen. Du kannst diese Zahl mit KI und ohne jegliches Denken erreichen. Token-gestütztes Rauschen im großen Stil veröffentlicht.&lt;/p&gt;
&lt;p&gt;Die ehrliche Kennzahl ist schwieriger zu erheben, aber viel nützlicher: Wie viel Prozent deiner Wissensbasis spiegelt tatsächlich wider, wie deine Systeme heute funktionieren? Wie viele Menschen haben mit Hilfe deiner Dokumentation eine richtige Antwort gefunden? Wie viele haben es versucht, sind gescheitert und haben stattdessen jemanden auf Slack gefragt?&lt;/p&gt;
&lt;p&gt;Für diese Fragen gibt es noch keine hübschen Dashboards. Sie erfordern konkrete Überlegungen darüber, was die Dokumentation für dein Unternehmen leisten soll. (Nicht zufällig ist das genau das Problem, für das Rasepi entwickelt wurde. Erzwungene Verfallsdaten gibt es genau deshalb, damit Teams sich Gedanken darüber machen müssen, ob Inhalte noch gültig sind, anstatt sie hinter einer hohen Seitenzahl stillschweigend verrotten zu lassen).&lt;/p&gt;
&lt;h2&gt;Was man stattdessen verfolgen sollte&lt;/h2&gt;
&lt;p&gt;Die ehrliche Antwort auf die Frage &amp;quot;Lohnt sich unsere KI-Investition?&amp;quot; lässt sich nicht an einem Dashboard ablesen.&lt;/p&gt;
&lt;p&gt;Du kannst dich ihr mit besseren Fragen nähern: Verbessern sich die Durchlaufzeiten? Entwickelt sich das Verhältnis von ausgelieferten Funktionen zu gemeldeten Fehlern in die richtige Richtung? Berichten die Ingenieure, dass sie mehr Zeit mit urteilsintensiver Arbeit und weniger mit Tippen verbringen? Bleibt deine Dokumentation auf dem neuesten Stand, anstatt sich wie Sedimente anzusammeln?&lt;/p&gt;
&lt;p&gt;Diese Fragen sind bei einer API schwieriger zu beantworten. Sie erfordern, dass du dir überlegst, was du eigentlich von deinen Teams willst, und das ist zugegebenermaßen die schwierigere Arbeit. Aber genau diese Fragen sind wichtig, denn es geht um das Ergebnis und nicht um den Input.&lt;/p&gt;
&lt;p&gt;Die Token-Ausgaben sagen dir, wie viel Rechenleistung du gekauft hast. Ob diese Rechenleistung zu etwas Nützlichem wurde, ist eine ganz andere Frage. Unternehmen, die diesen Unterschied nicht beachten, werden sehr teure Dashboards bauen, die ihnen fast nichts zeigen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wir haben Jahre damit verbracht, die falsche Metrik für die Entwicklerproduktivität zu optimieren. Wir haben vielleicht noch ein Quartal Zeit, bevor derselbe Fehler in jedem Bericht über die Einführung von KI im Unternehmen auftaucht. Das Fenster, um das zu vermeiden, ist offen, aber das wird nicht so bleiben.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="developer-experience" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Die KI-Kluft spaltet dein Team in zwei Hälften</title>
    <link href="https://www.tcdev.de/de/blog/the-ai-divide-is-splitting-your-team-in-half/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/the-ai-divide-is-splitting-your-team-in-half/</id>
    <updated>2026-04-10T00:00:00Z</updated>
    <summary>Die Hälfte deines Teams baut die Zukunft mit KI. Die andere Hälfte hält es für eine Modeerscheinung. Die Kluft zwischen ihnen wird zum größten Wettbewerbsrisiko, das die meisten Unternehmen nicht sehen.</summary>
    <content type="html">&lt;p&gt;Letzte Woche habe ich mit einem Freund telefoniert, der mir von einem seiner Kunden, einem Logistikunternehmen, erzählte. Ein Teamleiter hatte dort ein Planungstreffen, bei dem zwei seiner Mitarbeiter ein komplettes Szenariomodell mithilfe von KI erstellt hatten, bevor das Treffen überhaupt begann. Prognosen, Risikoaufschlüsselungen, drei alternative Ansätze. Die anderen vier Teammitglieder kamen mit demselben Folienformat, das sie schon seit zwei Jahren verwenden. Dieselbe Struktur, derselbe manuelle Prozess, dieselben Zeitvorgaben.&lt;/p&gt;
&lt;p&gt;Das Treffen lief schnell aus dem Ruder. Das KI-unterstützte Paar konnte nicht verstehen, warum die anderen nicht die grundlegenden Vorbereitungen getroffen hatten, die &amp;quot;jetzt fünf Minuten dauern&amp;quot;. Die anderen fühlten sich überrumpelt, als hätten sich die Spielregeln geändert und niemand hätte es ihnen gesagt. Der Teamleiter verbrachte den Rest des Tages mit Schadensbegrenzung.&lt;/p&gt;
&lt;p&gt;Diese Geschichte überrascht mich nicht mehr. Ich höre sie schon seit Monaten immer wieder.&lt;/p&gt;
&lt;h2&gt;Die Lücke ist jetzt messbar&lt;/h2&gt;
&lt;p&gt;Das ist nicht nur ein Gefühl. Microsofts [2025 Work Trend Index] (https://www.microsoft.com/en-us/worklab/work-trend-index/2025-the-year-the-frontier-firm-is-born), eine Umfrage unter 31.000 Arbeitnehmern in 31 Ländern, ergab, dass 67% der Führungskräfte mit KI-Agenten vertraut sind, verglichen mit nur 40% der Arbeitnehmer. Führungskräfte sehen KI viel eher als Karrierebeschleuniger (79 % gegenüber 67 % der Arbeitnehmer/innen) und sie sparen damit auch mehr Zeit. Fast ein Drittel der Führungskräfte sagt, dass sie durch KI jeden Tag mehr als eine Stunde Zeit sparen.&lt;/p&gt;
&lt;p&gt;Aber hier ist der Teil, der mich wirklich beeindruckt hat: Auf die Frage, wie sie KI sehen, gaben 52% der Befragten an, dass sie sie als ein kommandobasiertes Werkzeug betrachten. Gib eine Anweisung und erhalte ein Ergebnis. Nur 46 % bezeichneten sie als Denkpartner, mit dem man sich austauschen kann.&lt;/p&gt;
&lt;p&gt;Das ist kein kleiner Unterschied. Das sind zwei grundverschiedene Beziehungen zu ein und derselben Technologie. Und diese beiden Gruppen sitzen in denselben Meetings, arbeiten an denselben Projekten und bewegen sich angeblich in dieselbe Richtung.&lt;/p&gt;
&lt;h2&gt;Zwei Geschwindigkeiten, ein Team&lt;/h2&gt;
&lt;p&gt;Die praktische Folge ist, dass die Teams jetzt mit zwei völlig unterschiedlichen Geschwindigkeiten arbeiten. Diejenigen, die KI in ihre tägliche Arbeit integriert haben, produzieren nicht nur schneller. Sie denken anders. Sie gehen Probleme anders an. Sie kommen zu Besprechungen und erledigen Arbeiten, die früher eine Woche dauerten, an einem Nachmittag.&lt;/p&gt;
&lt;p&gt;Und die Leute, die keine KI einsetzen (oder die es einmal ausprobiert haben, es nicht überzeugend fanden und weitergemacht haben), leisten wirklich solide Arbeit. Das möchte ich klarstellen. Es geht nicht darum, dass sie schlecht in ihrem Job sind. Es geht darum, dass sich die Grenze des Möglichen verschoben hat und sie unter der alten Grenze arbeiten.&lt;/p&gt;
&lt;p&gt;Eine [Harvard-Studie über generative KI in Teams] (https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5188231) hat etwas Bemerkenswertes herausgefunden: Eine einzelne Person mit KI übertrifft ein ganzes Team ohne sie. Aber ein Team, in dem jeder KI einsetzt, übertrifft sie alle. Die Konsequenz ist brutal. Die gemischte Einführung bietet keinen Mittelweg. Sie führt zu Reibung.&lt;/p&gt;
&lt;p&gt;Ich habe das bei einem Workshop, den ich letzten Monat geleitet habe, aus erster Hand erfahren. Die Teilnehmer, die regelmäßig KI nutzten, beendeten die Übungen in der Hälfte der Zeit und warteten dann frustriert auf den Rest. Die Teilnehmer, die keine KI nutzten, fühlten sich gehetzt und, ehrlich gesagt, auch ein bisschen gedemütigt. Niemand hat dieses Ergebnis beabsichtigt. Es ist einfach passiert, weil der Geschwindigkeitsunterschied jetzt so groß ist.&lt;/p&gt;
&lt;h2&gt;Der Wettbewerbsvorteil, über den niemand spricht&lt;/h2&gt;
&lt;p&gt;Hier wird es wirklich folgenreich. Die McKinsey-Studie [State of AI 2025] (https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai) ergab, dass 88 % der Unternehmen KI in mindestens einer Funktion einsetzen. Klingt toll, oder? Aber fast zwei Drittel befinden sich noch in der Experimentier- und Pilotphase. Nur etwa ein Drittel hat damit begonnen, KI in ihrem Unternehmen zu verbreiten. Und die Unternehmen, die bereits skaliert haben und die McKinsey als &amp;quot;High Performer&amp;quot; bezeichnet? Sie machen etwa 6 % der Befragten aus.&lt;/p&gt;
&lt;p&gt;Diese 6 % setzen sich mit einer Geschwindigkeit von allen anderen ab, die meiner Meinung nach von den meisten Menschen unterschätzt wird.&lt;/p&gt;
&lt;p&gt;Bei den High Performern ist es dreimal wahrscheinlicher, dass sie ihre Arbeitsabläufe im Hinblick auf KI grundlegend umgestaltet haben. Sie haben dreimal häufiger Führungskräfte, die sich aktiv für den Einsatz von KI einsetzen und diese vorleben. Drei Viertel von ihnen skalieren KI in ihrem Unternehmen oder haben sie bereits skaliert, verglichen mit einem Drittel aller anderen.&lt;/p&gt;
&lt;p&gt;Die Daten von Microsoft erzählen eine ähnliche Geschichte. Unternehmen, die sie als &amp;quot;Frontier Firms&amp;quot; bezeichnen (Unternehmen mit unternehmensweitem KI-Einsatz und fortgeschrittenem Reifegrad), berichten von dramatisch anderen Ergebnissen. 71% der Führungskräfte von Frontier Firms sagen, dass ihr Unternehmen floriert, verglichen mit 39% der Beschäftigten weltweit. 55% sagen, dass sie mehr Arbeit übernehmen können, im Vergleich zu 25% weltweit. Und sie haben weniger Angst davor, dass KI ihre Jobs übernimmt, nicht mehr.&lt;/p&gt;
&lt;p&gt;Die Kluft zwischen diesen Unternehmen und allen anderen wird nicht kleiner. Er vergrößert sich vielmehr.&lt;/p&gt;
&lt;h2&gt;Dies ist ein menschliches Problem, das als technologisches Problem getarnt ist.&lt;/h2&gt;
&lt;p&gt;Die Versuchung ist groß, dieses Problem mit Tools zu lösen. Führe Copilot ein, kaufe ein paar Lizenzen und sende eine unternehmensweite E-Mail über KI-Ressourcen. Erledigt.&lt;/p&gt;
&lt;p&gt;Aber die eigentliche Herausforderung ist kultureller Natur. Es ist der Teamleiter, der versucht, eine Gruppe zusammenzuhalten, in der sich die Hälfte der Mitarbeiter/innen überfordert und die andere Hälfte zurückgelassen fühlt. Es ist der Manager, der einem 20-jährigen Veteranen erklären muss, dass sein Arbeitsablauf, den er über ein Jahrzehnt hinweg perfektioniert hat, vielleicht nicht mehr der beste Ansatz ist. Es ist der junge Mitarbeiter, der im Stillen KI einsetzt, um Arbeit auf höchster Ebene zu produzieren, und nicht weiß, ob er stolz sein soll oder sich Sorgen über die politischen Folgen machen soll.&lt;/p&gt;
&lt;p&gt;Microsoft hat herausgefunden, dass 47 % der Führungskräfte die Weiterbildung ihrer Mitarbeiter/innen als eine der wichtigsten Personalstrategien nennen. Das ist ermutigend, denke ich. Aber Qualifizierung funktioniert nur, wenn die Menschen auch wirklich lernen wollen. Und im Moment hat ein großer Teil der Belegschaft beschlossen, dass KI entweder nicht relevant für sie ist, nicht zuverlässig oder den Aufwand nicht wert ist. Einige von ihnen mögen mit bestimmten Tools Recht haben. Aber die allgemeine Entwicklung ist nicht optional (ich sage das als jemand, der im Laufe der Jahre vielen Tech-Hype-Zyklen skeptisch gegenüberstand, aber dieser ist anders).&lt;/p&gt;
&lt;h2&gt;Wohin geht die Reise?&lt;/h2&gt;
&lt;p&gt;Ich glaube nicht, dass die Kluft verschwindet. Ich glaube, dass sie sich vergrößert. Diejenigen, die KI einsetzen, werden immer schneller werden, immer mehr produzieren und die Messlatte für eine &amp;quot;normale Leistung&amp;quot; immer höher legen. Diejenigen, die das nicht tun, werden immer mehr Druck verspüren, sei es vom Management, von den Kollegen oder einfach von der Tatsache, dass ihre Kollegen Dinge tun, die sie nicht können.&lt;/p&gt;
&lt;p&gt;Unternehmen, die herausfinden, wie sie ihr gesamtes Team mitreißen können, nicht nur die Enthusiasten, haben einen echten Vorteil. Und dieser Vorteil wächst. Jeder Monat, in dem das Unternehmen KI beherrscht, ist ein Monat, in dem deine Konkurrenten darüber streiten, ob sie ChatGPT-Lizenzen kaufen sollen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Der größte Wettbewerbsvorteil in der KI-Ära wird nicht sein, welches Modell du verwendest. Es geht darum, ob dein gesamtes Team es tatsächlich nutzt.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das Logistikteam, das ich erwähnt habe? Mein Freund hat mir erzählt, dass der Teamleiter einen zweitägigen internen Workshop gebucht hat. Nicht &amp;quot;So wird geprompt&amp;quot;. Sondern eher: &amp;quot;So ändern wir unsere gemeinsame Planung.&amp;quot; Die Skeptiker mussten sehen, was im Kontext &lt;em&gt;ihrer&lt;/em&gt; Arbeit möglich war, nicht in einer allgemeinen Demo mit einem erfundenen Szenario. Und die Enthusiasten mussten Geduld lernen. Sie mussten die Leute mitnehmen, anstatt ihnen vorzurennen.&lt;/p&gt;
&lt;p&gt;Das ist genau die Aufgabe, die wir jetzt haben. Nicht nur KI einführen. Die Lücke zu schließen. Bevor sie dich einholt.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="collaboration" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Build vs. Buy Reimagined: Was es im Jahr 2026 wirklich bedeutet</title>
    <link href="https://www.tcdev.de/de/blog/build-vs-buy-reimagined-what-it-means-in-2026/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/build-vs-buy-reimagined-what-it-means-in-2026/</id>
    <updated>2026-04-07T00:00:00Z</updated>
    <summary>Die Kosten für den Aufbau sind einfach zusammengebrochen. Was bedeutet das für jedes SaaS-Unternehmen, das sein Geschäft auf &quot;Du musst es nicht selbst bauen&quot; setzt?</summary>
    <content type="html">&lt;p&gt;Letzte Woche habe ich gesehen, wie ein Nachwuchsentwickler in unserem Team innerhalb von 90 Minuten eine funktionierende CRUD-App mit Autorisierung, Datenbankmigrationen und einer halbwegs anständigen Benutzeroberfläche auf die Beine gestellt hat. Mit Copilot. Von Grund auf.&lt;/p&gt;
&lt;p&gt;Vor fünf Jahren hätte die gleiche Aufgabe noch eine Woche gedauert. Vielleicht sogar zwei, wenn man das Herumhantieren mit Einsatzkonfigurationen und OAuth-Flows mitzählt. Und dieser Wandel, die Verkürzung der Entwicklungszeit von Tagen auf Stunden, löst eine der ältesten Fragen in der Softwarebranche auf: Sollen wir bauen oder kaufen?&lt;/p&gt;
&lt;h2&gt;Das alte Framing ist tot&lt;/h2&gt;
&lt;p&gt;Jahrzehntelang war die Frage &amp;quot;bauen oder kaufen&amp;quot; eine Kostenkalkulation. Man schätzte, wie viele Entwicklermonate es dauern würde, eine Sache zu entwickeln, multiplizierte das mit dem Gehalt, fügte einen Puffer für die Wartung hinzu und verglich das Ganze mit der jährlichen Lizenzgebühr für ein SaaS-Produkt, das in etwa das Gleiche leistete. Wenn das SaaS-Produkt billiger war, hast du es gekauft. Wenn deine Anforderungen seltsam genug waren, hast du etwas gebaut.&lt;/p&gt;
&lt;p&gt;Bei dieser Vorgehensweise wurde davon ausgegangen, dass Bauen teuer sei. Und das war es auch. Aber [laut den Octoverse 2025-Daten von GitHub] (https://github.blog/ai-and-ml/generative-ai/how-ai-is-reshaping-developer-choice-and-octoverse-data-proves-it/) führt die KI-gestützte Entwicklung heute zu einer Steigerung des Durchsatzes um 20 bis 30 Prozent. Achtzig Prozent der neuen Entwickler auf GitHub nutzen Copilot innerhalb ihrer ersten Woche. Über 1,1 Millionen öffentliche Repositories integrieren bereits LLM-SDKs. Das Bauen wurde fast über Nacht drastisch billiger.&lt;/p&gt;
&lt;p&gt;Die Frage lautet also nicht mehr wirklich &amp;quot;bauen oder kaufen&amp;quot;. Sie lautet vielmehr: Wofür bezahlst du eigentlich, wenn du SaaS kaufst?&lt;/p&gt;
&lt;h2&gt;Das neue Kalkül&lt;/h2&gt;
&lt;p&gt;Ich glaube, die meisten SaaS-Gründer (mich eingeschlossen, ehrlich gesagt) wollen Folgendes nicht hören: Wenn dein gesamtes Wertversprechen lautet: &amp;quot;Wir haben dich davor bewahrt, es selbst zu entwickeln&amp;quot;, hast du ein Problem. Denn der Wassergraben ist gerade sehr viel flacher geworden.&lt;/p&gt;
&lt;p&gt;Wenn ein Team ein funktionierendes internes Tool an einem Tag entwickeln kann, liegt die Messlatte für die Rechtfertigung eines monatlichen Abonnements sehr hoch. Du musst nicht nur besser sein als das, was sie bauen können. Du musst besser sein als das, was sie &lt;em&gt;mit Hilfe von KI&lt;/em&gt; bauen könnten.&lt;/p&gt;
&lt;p&gt;[Gartner prognostizierte im April 2026 (https://www.gartner.com/en/newsroom/press-releases/2026-04-02-gartner-expects-most-enterprises-to-abandon-assistive-ai-for-outcome-focused-workflow-by-2028), dass bis zum Jahr 2028 mehr als die Hälfte aller Unternehmen nicht mehr für unterstützende Intelligenz bezahlen, sondern Plattformen bevorzugen werden, die auf Workflow-Ergebnisse setzen. Noch deutlicher: Gartner geht davon aus, dass bis 2030 die Gewinnspanne von Softwareunternehmen, die KI über bestehende Anwendungen schichten, anstatt sie für eine agentenbasierte Ausführung umzugestalten, um bis zu 80 % sinken wird.&lt;/p&gt;
&lt;p&gt;Achtzig Prozent. Das ist kein Rundungsfehler.&lt;/p&gt;
&lt;h2&gt;Was überlebt eigentlich?&lt;/h2&gt;
&lt;p&gt;Ich habe viel über diese Frage nachgedacht, auch weil wir Rasepi bauen und ich mir selbst gegenüber ehrlich sein muss, wo unser Wert liegt. Und ich glaube, die Antwort liegt in drei Dingen, die wirklich schwer in einem Wochenend-Coding-Sprint zu erreichen sind, egal wie gut dein KI-Assistent ist.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Domänentiefe kann man nicht fälschen&lt;/strong&gt; Jeder kann einen Texteditor bauen. Aber ein Übersetzungssystem zu entwickeln, das inhaltliche Änderungen auf Absatzebene verfolgt, veraltete Übersetzungen durch Content-Hashing erkennt und strukturelle Anpassungen in verschiedenen Sprachen vornimmt? Dafür braucht man jahrelanges Fachwissen, das in die Architektur einfließt. Die KI kann dir helfen, den Code schneller zu schreiben, aber sie kann dir nicht sagen, &lt;em&gt;was&lt;/em&gt; du bauen sollst.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jemand muss es immer noch ausführen und pflegen.&lt;/strong&gt; Das ist das Schöne am Bauen: Es macht Spaß. Pflegen? Macht überhaupt keinen Spaß. Der Umgang mit Grenzfällen in mandantenfähigen Berechtigungssystemen, das Aufpassen auf Browser-Macken, das Verwalten von versionsübergreifenden Datenbankmigrationen, das Patchen von CVEs um 2 Uhr morgens, der Umgang mit dem einen PDF-Exportfehler, der nur in Safari auftritt. KI macht den ersten Build schneller, klar. Aber die [Forrester-Studie vom April 2026] (https://www.forrester.com/press-newsroom/forrester-three-years-into-genai-enterprises-are-still-chasing-its-true-transformative-value/) zeigt, dass die meisten Unternehmen immer noch nicht in der Lage sind, den Einsatz von KI in messbare Erfolge umzuwandeln, was zum Teil daran liegt, dass der schwierige Teil nie das Schreiben von Code war. Die Schwierigkeit besteht darin, das Ding am Laufen zu halten, es zu aktualisieren und über Jahre hinweg korrekt zu arbeiten. Die Entwicklung ist der einfache Teil. Es sind die Betriebszeit, die Bereitschaftsdienste und die inkrementellen Korrekturen, die dich wirklich etwas kosten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vertrauen, Sicherheit und Datenschutz.&lt;/strong&gt; Dieser Punkt wird unterschätzt. Wenn du etwas selbst baust, bist &lt;em&gt;du&lt;/em&gt; für die Sicherheit verantwortlich. Du bist verantwortlich für die Verschlüsselung im Ruhezustand, die Protokollierung von Audits, Penetrationstests, die Einhaltung der GDPR, SOC 2 und die nächste Vorschrift, von der noch niemand gehört hat. Ein guter SaaS-Anbieter hat ein ganzes Team, dessen einzige Aufgabe darin besteht, dafür zu sorgen, dass deine Daten nicht irgendwo landen, wo sie nicht sein sollten. Für die meisten Unternehmen sind das keine Kosten, die sie intern tragen wollen. Und ehrlich gesagt, haben die meisten internen Tools, die ich gesehen habe, nicht einmal eine angemessene Zugangskontrolle, geschweige denn einen Sicherheits-Audit-Trail.&lt;/p&gt;
&lt;h2&gt;The Composable Middle Ground&lt;/h2&gt;
&lt;p&gt;Interessant ist, dass die Antwort zunehmend nicht &amp;quot;bauen&amp;quot; &lt;em&gt;oder&lt;/em&gt; &amp;quot;kaufen&amp;quot; lautet. Sie lautet &amp;quot;komponieren&amp;quot;. Wähle die SaaS-Tools, die schwierige Aufgaben gut erledigen, gute APIs zur Verfügung stellen und dich um sie herum bauen lassen.&lt;/p&gt;
&lt;p&gt;Deshalb sind Plugin-Architekturen im Moment so wichtig (und ja, genau darin haben wir mit dem Plugin-System von Rasepi investiert). Die SaaS-Produkte, die erfolgreich sein werden, sind diejenigen, die sagen: &amp;quot;Wir kümmern uns um die schwierigen domänenspezifischen Fragen: &amp;quot;Wir kümmern uns um den harten, domänenspezifischen Kern. Du passt alles andere an.&amp;quot; Nicht: &amp;quot;Hier ist unser Monolith, nimm ihn oder lass es&amp;quot;.&lt;/p&gt;
&lt;p&gt;[Der Forrester-Bericht vom April 2026 (https://www.forrester.com/press-newsroom/forrester-three-years-into-genai-enterprises-are-still-chasing-its-true-transformative-value/) zeigt, dass die meisten Unternehmen immer noch Schwierigkeiten haben, die Einführung von KI in messbare Geschäftseffekte umzusetzen. Diejenigen, die KI bereits eingeführt haben, arbeiten mit 47 % höherer Wahrscheinlichkeit mit Beratungspartnern zusammen, um ihre Daten und Systeme vorzubereiten. Die Botschaft ist klar: Die bloße Entwicklung von Fähigkeiten ist nicht der Engpass. Der eigentliche Engpass besteht darin, zu wissen, was man bauen will, und die Infrastruktur zu haben, um es zu unterstützen.&lt;/p&gt;
&lt;h2&gt;Was das für SaaS bedeutet&lt;/h2&gt;
&lt;p&gt;Wenn du im Jahr 2026 ein SaaS-Unternehmen leitest, gibt es ein paar unangenehme Wahrheiten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Das Argument &amp;quot;Wir sparen Ihnen Zeit&amp;quot; ist schwächer denn je.&lt;/strong&gt; Zeitersparnis war der klassische SaaS-Verkaufsgrund. Aber wenn KI die Entwicklungszeit um 20-30% verkürzt, schrumpft die Zahl &amp;quot;Zeitersparnis&amp;quot; in deiner ROI-Tabelle proportional dazu. Du brauchst eine andere Geschichte.&lt;/li&gt;
&lt;li&gt;Niemand interessiert sich dafür, dass du 47 Integrationen hast. Für sie ist es wichtig, dass ihre Dokumentation aktuell bleibt, ihre Übersetzungen korrekt sind und ihr Team das Tool tatsächlich nutzt. Was Gartner über den &amp;quot;ergebnisorientierten Workflow&amp;quot; sagt, ist nicht nur Analystenjargon. Es ist die Richtung, in die sich der Markt bewegt.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offenheit schlägt Abschottung&lt;/strong&gt; Der Instinkt, die eigene Plattform zu schließen und den Wechsel zu erschweren, ist verständlich. Gartner warnte jedoch ausdrücklich davor, dass &amp;quot;ältere SaaS-Anbieter, die versuchen, ihre Systeme zu schließen, Gefahr laufen, von Orchestrierungsebenen umgangen zu werden, denen Unternehmen mehr vertrauen.&amp;quot; Autsch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Die ehrliche Version&lt;/h2&gt;
&lt;p&gt;Ich will ganz offen sagen, wo ich in dieser Sache stehe. Beim Vergleich zwischen Bauen und Kaufen ging es nie wirklich um die Technologie. Es ging immer um Vertrauen. Vertraue ich diesem Anbieter, dass er mein Problem so gut versteht, dass seine Lösung besser ist als das, was ich selbst zusammenschustern könnte?&lt;/p&gt;
&lt;p&gt;Im Jahr 2026 wurde &amp;quot;zusammenschustern&amp;quot; massiv aufgewertet. Damit wurde auch die Vertrauenslatte höher gelegt.&lt;/p&gt;
&lt;p&gt;Für uns bei Rasepi bedeutet das, dass wir nicht nur ein Dokumentationswerkzeug sein können, das zufällig Übersetzungen unterstützt. Wir müssen so gut in den schwierigen Problemen sein, in der Nachverfolgung von Übersetzungen auf Blockebene, in der Durchsetzung der Aktualität von Inhalten und in der Komplexität mehrerer Mandanten, dass es selbst mit den besten KI-Tools der Welt sehr mühsam wäre, einen Ersatz zu entwickeln.&lt;/p&gt;
&lt;p&gt;Das ist das neue Build vs. Buy. Nicht &amp;quot;Kannst du es bauen?&amp;quot;, sondern &amp;quot;Solltest du deine Energie darauf verwenden, es zu bauen, wenn jemand anderes die schwierigen Teile bereits gelöst hat?&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Die Frage war nie wirklich eine Frage der Kosten. Es ging darum, worauf du deine Aufmerksamkeit verwenden willst. Und in einer Welt, in der Bauen billig ist, ist Aufmerksamkeit die einzige knappe Ressource, die bleibt.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="developer-experience" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>Hör auf, Leute zu feuern, weil es KI gibt</title>
    <link href="https://www.tcdev.de/de/blog/stop-firing-people-because-ai-exists/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/stop-firing-people-because-ai-exists/</id>
    <updated>2026-04-04T00:00:00Z</updated>
    <summary>Eine Person mit KI kann die Arbeit von zehn erledigen. Aber hat sich schon mal jemand gefragt, was mit dieser einen Person passiert? Oder was passiert, wenn du die zehn behältst?</summary>
    <content type="html">&lt;p&gt;Eine Freundin von mir ist für die Inhalte eines mittelgroßen SaaS-Unternehmens zuständig. Letztes Jahr bestand ihr Team aus acht Personen. Autoren, Redakteure, ein Lokalisierungsspezialist und jemand, der sich um die Wissensdatenbank kümmert. Ein gutes Team, solide Arbeit. Dann besuchte der Geschäftsführer eine Konferenz, kam begeistert von KI zurück und innerhalb von drei Monaten war das Team auf drei Personen geschrumpft. Die Begründung? _&amp;quot;Mit KI-Tools können drei Leute das schaffen, was früher acht Leute geschafft haben.&amp;quot; _&lt;/p&gt;
&lt;p&gt;Und technisch gesehen stimmt das auch. Die drei verbliebenen Mitarbeiter produzieren ungefähr das gleiche Volumen. Blogbeiträge, Hilfedokumente, Produktaktualisierungen, interne Kommunikation. Auf einem Dashboard sehen die Zahlen gut aus.&lt;/p&gt;
&lt;p&gt;Aber meine Freundin hat seit Monaten nicht mehr richtig geschlafen. Sie wechselt zwischen Schreiben, Redigieren, Prompt-Engineering, Qualitätssicherung der KI-Ausgabe, Übersetzungsmanagement und all den strategischen Aufgaben, die früher im Team verteilt waren. Ihre beiden verbleibenden Kollegen sitzen im selben Boot. Einer von ihnen ist bereits auf der Suche nach einem anderen Job.&lt;/p&gt;
&lt;p&gt;Das Unternehmen hat fünf Gehälter eingespart. Außerdem verliert es langsam die drei Leute, die wirklich wissen, wie die Dinge funktionieren.&lt;/p&gt;
&lt;h2&gt;Die Mathematik, die richtig aussieht, aber es nicht ist&lt;/h2&gt;
&lt;p&gt;Seit ChatGPT in aller Munde ist, macht das folgende Argument die Runde in den Chefetagen: Eine Person mit KI kann jetzt die Arbeit von zehn Personen erledigen. Und wenn das so ist, warum dann noch zehn?&lt;/p&gt;
&lt;p&gt;Das ist ein überzeugendes Argument. Einfach. Sauber. Passt auf eine Folie.&lt;/p&gt;
&lt;p&gt;Aber es ist auch gefährlich unvollständig.&lt;/p&gt;
&lt;p&gt;Ja, KI kann Aufgaben komprimieren. Laut [Microsofts 2024 Work Trend Index] (https://www.microsoft.com/en-us/worklab/work-trend-index/ai-at-work-is-here-now-comes-the-hard-part) sagen 90 % der KI-Nutzer am Arbeitsplatz, dass die Tools ihnen helfen, Zeit zu sparen. Die intensivsten Nutzer von Microsoft Teams haben mit Copilot in einem einzigen Monat acht Stunden an Meetings zusammengefasst. Das ist ein ganzer Arbeitstag, der allein durch die Zusammenfassungen von Meetings gewonnen wurde. Und 85% sagen, dass KI ihnen hilft, sich auf ihre wichtigste Arbeit zu konzentrieren.&lt;/p&gt;
&lt;p&gt;Das sind reale Zahlen. Die Produktivitätsgewinne sind nicht eingebildet.&lt;/p&gt;
&lt;p&gt;Aber die Leute, die &amp;quot;neun Leute feuern&amp;quot;, reden nie darüber: Die Person, die übrig bleibt, übernimmt nicht nur den Output. Sie übernimmt die kognitive Belastung, den Kontext, die Entscheidungsfindung, die Koordination, die Qualitätssicherung und jedes bisschen institutionelles Wissen, das mit den neun ehemaligen Kollegen zur Tür hinausging.&lt;/p&gt;
&lt;h2&gt;Geistige Belastung ist keine Tabellenkalkulation&lt;/h2&gt;
&lt;p&gt;In der Psychologie gibt es ein Konzept namens kognitive Belastungstheorie. Sie beschreibt die Gesamtmenge der geistigen Anstrengung, die zu einem bestimmten Zeitpunkt im Arbeitsgedächtnis verbraucht wird. Und jedes Mal, wenn du eine Person bittest, die Denkarbeit zu übernehmen, die sich früher fünf Personen geteilt haben, sparst du keine Anstrengung. Du konzentrierst sie vielmehr.&lt;/p&gt;
&lt;p&gt;Ich denke oft darüber nach, wenn mir gesagt wird, dass KI die Arbeitnehmer &amp;quot;10x produktiver&amp;quot; macht. Produktiv bei was? Mehr Wörter zu produzieren? Mehr Tickets verschicken? Mehr Foliendokumente erstellen? Sicherlich. Aber das eigentlich Schwierige an der Wissensarbeit war noch nie das Produzieren. Es ist das Denken. Die Entscheidung, was produziert werden soll. Das Verstehen von Zusammenhängen. Entscheidungen zu treffen. Zu wissen, wann etwas falsch ist, auch wenn es auf den ersten Blick richtig aussieht.&lt;/p&gt;
&lt;p&gt;KI macht das nicht für dich. Die KI liefert dir einen ersten Entwurf, und du musst klug genug sein, um ihn zu bewerten, erfahren genug, um die subtilen Fehler zu erkennen, und präsent genug, um zu bemerken, wenn das Ergebnis mit Sicherheit falsch ist. (Wenn du schon einmal beobachtet hast, wie jemand eine von der KI erstellte interne Dokumentation verschickt, ohne sie zu lesen, weißt du genau, was ich meine).&lt;/p&gt;
&lt;p&gt;[Der Gallup-Bericht &amp;quot;2025 State of the Global Workplace&amp;quot; (https://www.gallup.com/workplace/659279/global-engagement-falls-second-time-2009.aspx) hat ergeben, dass das Engagement der Mitarbeiter/innen weltweit von 23% im Vorjahr auf 21% im Jahr 2024 gesunken ist. Dieser Rückgang kostete die Weltwirtschaft schätzungsweise 438 Milliarden Dollar an verlorener Produktivität. Das Engagement von Managern sank sogar noch stärker, nämlich von 30 % auf 27 %. Bei weiblichen Managern betrug der Rückgang sieben Prozentpunkte. Bei Managern unter 35 Jahren waren es fünf Prozentpunkte.&lt;/p&gt;
&lt;p&gt;Das sind die Leute, die die Einführung von KI anführen sollen. Und sie sind ausgebrannt.&lt;/p&gt;
&lt;h2&gt;Das Argument der Verstärkung&lt;/h2&gt;
&lt;p&gt;Ich möchte dir einen anderen Weg zeigen, darüber nachzudenken.&lt;/p&gt;
&lt;p&gt;Wenn eine Person mit KI die Arbeit von zehn erledigen kann, dann können zehn Menschen mit KI die Arbeit von hundert erledigen.&lt;/p&gt;
&lt;p&gt;Lies das noch einmal. Denn das ist der Teil, über den fast niemand spricht und der jeden CEO nachts wach halten sollte. Nicht, weil es beängstigend ist, sondern weil es eine riesige Chance ist, die die meisten Unternehmen verschenken.&lt;/p&gt;
&lt;p&gt;Die Unternehmen, die die Hälfte ihrer Belegschaft entlassen, weil &amp;quot;KI das schon schafft&amp;quot;, sind nicht effizient. Sie sind kurzsichtig. Sie optimieren für eine vierteljährliche Mitarbeiterzahl, während ihre Konkurrenten herausfinden, was passiert, wenn man einem ganzen Team motivierter, erfahrener Leute mächtige Werkzeuge in die Hand gibt.&lt;/p&gt;
&lt;p&gt;Das habe ich letzten Monat bei einem Startup-Event in Zürich gesehen. Zwei Unternehmen in der gleichen Branche. Ungefähr die gleiche Größe, der gleiche Markt. Unternehmen A hatte sein Content-Team von zwölf auf vier reduziert. Unternehmen B behielt alle zwölf und gab ihnen KI-Tools und Schulungen. Rate mal, welches Unternehmen mehrsprachige Inhalte in sechs Sprachen produzierte, mit neuen Formaten experimentierte und wöchentliche Produktaktualisierungen für seine Wissensdatenbank lieferte? (Es war nicht Unternehmen A.)&lt;/p&gt;
&lt;h2&gt;Was passiert eigentlich, wenn du die&lt;/h2&gt;
&lt;p&gt;Lass mich dir erklären, was in der Praxis passiert, wenn du ein zehnköpfiges Team durch ein oder zwei &amp;quot;KI-gestützte&amp;quot; Superarbeiter ersetzt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Woche eins fühlt sich großartig an.&lt;/strong&gt; Die verbleibenden Leute sind voller Energie. Sie haben neue Werkzeuge. Sie produzieren eine Menge. Die Führung ist begeistert. Die Zahlen auf dem Dashboard sehen im Verhältnis zur Mitarbeiterzahl unglaublich aus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Im zweiten Monat zeigen sich die Risse.&lt;/strong&gt; Die eine Person, die für die Dokumentation verantwortlich ist, entdeckt, dass die von der KI erstellten Inhalte ernsthaft überprüft werden müssen. Keine leichte Bearbeitung. Eine gründliche Überprüfung. Denn die KI kennt weder die Feinheiten deines Produkts noch den Kontext deiner Kunden oder die drei Dinge, die du letzte Woche geändert hast und die die Hälfte des Geschriebenen ungültig machen. Allein die Überarbeitung frisst die Zeit auf, die durch die schnellere Erstellung von Inhalten &amp;quot;gespart&amp;quot; wurde.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vierter Monat, institutionelle Wissenslücken tauchen auf&lt;/strong&gt; Erinnerst du dich an die acht Leute, die du entlassen hast? Sie haben nicht nur Inhalte geschrieben. Sie hatten Beziehungen zu den Produktmanagern. Sie kannten die Probleme der Kunden, weil sie jahrelang Support-Tickets bearbeitet hatten. Sie wussten, welche Dokumentationsthemen die meisten Fragen aufwerfen. Dieses Wissen ist nun weg. Die KI hat es ganz sicher nicht.&lt;/p&gt;
&lt;p&gt;**Im sechsten Monat stellst du Fremdfirmen ein, weil die verbliebenen Mitarbeiter überfordert sind, die Qualität gesunken ist und jemandem endlich aufgefallen ist, dass die Wissensdatenbank seit Wochen nicht mehr richtig aktualisiert wurde. Aber die Auftragnehmer haben auch keinen Kontext, also zahlst du mehr pro Stunde für schlechtere Ergebnisse.&lt;/p&gt;
&lt;p&gt;Ich denke mir das nicht aus. Allein im letzten Jahr habe ich beobachtet, wie sich dieses Muster bei drei verschiedenen Unternehmen wiederholt hat.&lt;/p&gt;
&lt;h2&gt;Die Daten sagen: Behalte deine Leute (und bilde sie aus)&lt;/h2&gt;
&lt;p&gt;Der [World Economic Forum&#39;s Future of Jobs Report 2025] (https://www.weforum.org/publications/the-future-of-jobs-report-2025/digest/) hat über 1.000 Arbeitgeber weltweit zu ihren Personalplänen befragt. Die Zahlen erzählen eine interessante Geschichte. Ja, 40 % der Arbeitgeber planen, Personal abzubauen, wenn KI Aufgaben automatisiert. Aber 85% planen, ihre bestehenden Mitarbeiter/innen weiterzubilden. Und 70 % erwarten, dass sie neue Mitarbeiter/innen mit neuen Fähigkeiten einstellen, nicht weniger.&lt;/p&gt;
&lt;p&gt;Der Bericht prognostiziert einen Nettozuwachs von 78 Millionen Arbeitsplätzen bis 2030. Darin sind die 92 Millionen verdrängten Stellen bereits berücksichtigt. Die Welt entwickelt sich nicht in Richtung weniger Arbeitskräfte. Es geht um anders qualifizierte Arbeitskräfte.&lt;/p&gt;
&lt;p&gt;Und hier ist noch etwas, das jeden &amp;quot;Lasst uns Personal abbauen&amp;quot;-CEO aufhorchen lassen sollte: 64% der Arbeitgeber gaben an, dass die Förderung der Gesundheit und des Wohlbefindens der Mitarbeiter eine Schlüsselstrategie für die Verfügbarkeit von Talenten ist. Nicht &amp;quot;Kosten senken&amp;quot;. Nicht &amp;quot;alles automatisieren&amp;quot;. &lt;strong&gt;Wohlbefinden fördern.&lt;/strong&gt; Denn Unternehmen, die ihre Mitarbeiter verheizen, können die guten Mitarbeiter später nicht mehr einstellen.&lt;/p&gt;
&lt;p&gt;Eine Studie [von BCG und der Harvard Business School] (https://www.bcg.com/publications/2023/how-people-create-and-destroy-value-with-gen-ai) hat herausgefunden, dass Teams, die KI für kreative Aufgaben einsetzten, zu 90 % ihre Leistung verbesserten und die Qualität der Ergebnisse um 40 % höher war als bei den Kontrollgruppen. Die Studie fand aber auch etwas heraus, das jeder Führungskraft Unbehagen bereiten sollte: Die Vielfalt der Ideen in den KI-unterstützten Gruppen ging um 41 % zurück.&lt;/p&gt;
&lt;p&gt;Überleg mal, was das bedeutet. Du feuerst sieben Leute aus deinem zehnköpfigen Team. Die drei, die übrig bleiben, nutzen KI, um das gleiche Volumen zu produzieren. Aber die Bandbreite der Ideen, Perspektiven und Ansätze schrumpft um fast die Hälfte. Dein Output sieht produktiv aus, wird aber allmählich homogen. Und niemand merkt es, bis ein Konkurrent etwas wirklich Kreatives auf den Markt bringt und du dir nicht erklären kannst, warum dein Team nicht das Gleiche tut.&lt;/p&gt;
&lt;h2&gt;Die mentale Belastung, für die niemand ein Budget hat&lt;/h2&gt;
&lt;p&gt;Microsofts Umfrage ergab, dass 68 % der Mitarbeiter/innen mit dem Tempo und dem Umfang der Arbeit zu kämpfen haben und 46 % sich ausgebrannt fühlen. Und das war der Stand der Dinge, &lt;em&gt;bevor&lt;/em&gt; du ihnen gesagt hast, dass sie jetzt die Arbeit ihrer drei ehemaligen Teamkollegen machen.&lt;/p&gt;
&lt;p&gt;Das ist etwas, das in den Produktivitätsübersichten nicht auftaucht: die kognitiven Kosten, die entstehen, wenn du die letzte Verteidigungslinie bist. Wenn du die einzige Person bist, die den KI-Output überprüft, darfst du keinen freien Tag haben. Wenn du der einzige Besitzer der Wissensdatenbank bist, landet jede Supportanfrage auf deinem Schreibtisch. Wenn es niemanden gibt, mit dem du Ideen austauschen kannst, weil das Team &amp;quot;richtig dimensioniert&amp;quot; wurde, musst du jede Entscheidung allein treffen.&lt;/p&gt;
&lt;p&gt;Ich habe Rasepi auch deshalb entwickelt, weil ich dieses Problem aus nächster Nähe gesehen habe. Wenn Dokumentationsteams schrumpfen, schrumpft das Wissen nicht mit ihnen. Die Menge an Inhalten, die vorhanden, aktuell und sprachübergreifend korrekt sein müssen, nimmt nicht ab, nur weil es weniger Leute gibt, die sie pflegen. Im Gegenteil, sie wächst sogar noch (das ist übrigens genau das Problem, für das wir Rasepi entwickeln, mit Funktionen wie erzwungenen Verfallsdaten und Übersetzungen auf Blockebene, die dafür sorgen, dass kleinere Teams wirklich effektiver arbeiten können, statt überfordert zu sein).&lt;/p&gt;
&lt;p&gt;Aber selbst die besten Tools können eine grundsätzlich falsche Personalentscheidung nicht ändern. Das menschliche Urteilsvermögen, der Kontext und die Sorgfalt lassen sich nicht automatisieren. Du kannst diese Menschen nur effektiver machen.&lt;/p&gt;
&lt;h2&gt;Was kluge Unternehmen tatsächlich tun&lt;/h2&gt;
&lt;p&gt;Das Beeindruckendste an den Microsoft-Daten ist, wie die &amp;quot;KI-Poweruser&amp;quot; aussehen. Das sind Menschen, die KI mehrmals am Tag nutzen und mehr als 30 Minuten einsparen. Bei ihnen ist die Wahrscheinlichkeit, dass sie mit verschiedenen Arten der KI-Nutzung experimentieren, um 68 % höher. Sie erzeugen nicht nur mehr Leistung. Sie gestalten die Art und Weise, wie Arbeit geschieht, neu.&lt;/p&gt;
&lt;p&gt;Und jetzt kommt der Clou: Sie existieren in Unternehmen, die in sie investieren. Bei KI-Power-Usern ist es 61 % wahrscheinlicher, dass sie von ihrem CEO hören, wie wichtig KI bei der Arbeit ist. Es ist 53 % wahrscheinlicher, dass sie von ihren Führungskräften dazu ermutigt werden, ihre gesamte Funktion zu überdenken. Sie erhalten ein maßgeschneidertes Training, nicht nur einen ChatGPT-Login.&lt;/p&gt;
&lt;p&gt;Mit anderen Worten: Die produktivsten KI-Mitarbeiter sind keine einsamen Überlebenden einer Entlassung. Sie sind Mitglieder von Teams, die unterstützt werden und in die investiert wird.&lt;/p&gt;
&lt;p&gt;Ich möchte das mit dem vergleichen, was ich bei Unternehmen sehe, die den Weg des &amp;quot;Personalabbaus&amp;quot; gewählt haben. Die verbleibenden Mitarbeiter sind keine Power-User. Sie sind überforderte Generalisten, die verzweifelt versuchen, alles am Laufen zu halten. Sie haben keine Zeit, mit KI zu experimentieren, weil sie zu sehr damit beschäftigt sind, sie zum Überleben zu nutzen. Es gibt kein Umdenken in der Funktion, denn die Funktion ist einfach... sie allein, die alles macht.&lt;/p&gt;
&lt;h2&gt;Das Wissensproblem, das niemand erwähnt&lt;/h2&gt;
&lt;p&gt;Es gibt noch eine weitere Sache. Und ich höre niemanden darüber reden, was merkwürdig ist, weil es eigentlich offensichtlich sein sollte.&lt;/p&gt;
&lt;p&gt;Wenn du erfahrene Wissensarbeiter feuerst, geht das Wissen mit ihnen. Es bleibt nicht im Gebäude. Es ist nicht im Wiki. Es ist nicht in der KI. Es ist in den Köpfen der Menschen, die die Prozesse entwickelt haben, die die Grenzfälle verstanden haben und die wussten, welche Kunden sich für welche Details interessieren.&lt;/p&gt;
&lt;p&gt;Weißt du, was passiert, wenn du großartige KI-Tools und kein institutionelles Wissen hast? Du bekommst wunderschön formatierte, selbstbewusst übermittelte, völlig falsche Informationen. In großem Maßstab.&lt;/p&gt;
&lt;p&gt;Letzten Monat habe ich mit der Leiterin der Dokumentationsabteilung eines Fintech-Unternehmens gesprochen (sie wollte nicht namentlich genannt werden, was dir einiges sagt). Nachdem ihr Team von sechs auf zwei Mitarbeiter/innen reduziert wurde, verließen sie sich bei der Pflege ihrer Entwicklerdokumente weitgehend auf KI. Innerhalb von vier Monaten bemerkten sie einen sprunghaften Anstieg der Support-Tickets. Die Dokumentationen sahen gut aus. Sie waren gut geschrieben und oberflächlich betrachtet auf dem neuesten Stand. Aber sie enthielten subtile Fehler, die nur jemandem mit fundierten Produktkenntnissen aufgefallen wären. Eine Beschreibung der API-Parameter, die technisch korrekt, aber praktisch irreführend war. Eine Migrationsanleitung, die einen Schritt übersah, den jeder im alten Team kannte. Kleine Dinge, die KI nicht wissen kann, weil KI nicht an deinen Standups teilnimmt, deine Slack-Threads nicht liest und nicht das frustrierte &amp;quot;Oh, die Doku ist schon wieder falsch&amp;quot; des Support-Ingenieurs am Kaffeeautomaten hört.&lt;/p&gt;
&lt;h2&gt;Die eigentliche Frage&lt;/h2&gt;
&lt;p&gt;Meiner Meinung nach sollte sich das Gespräch eigentlich um Folgendes drehen.&lt;/p&gt;
&lt;p&gt;Nicht: &lt;em&gt;&amp;quot;Wie viele Menschen können wir jetzt, wo wir KI haben, abbauen?&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sondern: &lt;em&gt;&amp;quot;Was wird möglich, wenn wir allen, die wir bereits haben, KI geben?&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Dein zehnköpfiges Dokumentationsteam mit KI-Tools wird nicht überflüssig. Es wird zu einem Team, das Inhalte in zwölf statt in zwei Sprachen pflegen kann. Es kann jeden Inhalt mit automatischen Aktualitätsprüfungen auf dem neuesten Stand halten. Es kann mit neuen Formaten experimentieren, A/B-Tests für Hilfeinhalte durchführen, interaktive Anleitungen erstellen und hat trotzdem noch Zeit, strategisch darüber nachzudenken, was die Kunden tatsächlich brauchen.&lt;/p&gt;
&lt;p&gt;Dein zehnköpfiges Marketingteam mit KI wird nicht zu fünf Personen, die die gleiche Arbeit mit mehr Stress erledigen. Es werden zehn Leute, die Kampagnen in einem Umfang personalisieren können, der vorher unmöglich war, mehr kreative Varianten testen, schneller auf Marktveränderungen reagieren und immer noch die kognitive Bandbreite haben, um wirklich originelle Ideen zu entwickeln, die die KI nie hervorgebracht hätte.&lt;/p&gt;
&lt;p&gt;Das sind keine Kosten. Das ist eine Investition, die sich immer mehr auszahlt.&lt;/p&gt;
&lt;h2&gt;Wo das hinführt&lt;/h2&gt;
&lt;p&gt;Die Unternehmen, die in den nächsten fünf Jahren gewinnen, werden nicht diejenigen sein, die die meisten Köpfe abschneiden. Sie werden diejenigen sein, die herausgefunden haben, wie sie ihre bestehenden Teams wirklich leistungsfähiger machen können.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Die Frage ist nicht, ob eine Person die Arbeit von zehn erledigen kann. Die Frage ist, was passiert, wenn alle zehn die Arbeit von hundert erledigen können.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wenn du eine Führungskraft bist und das hier liest, möchte ich dich um eines bitten. Bevor du die nächste Runde der &amp;quot;KI-gestützten Umstrukturierung&amp;quot; genehmigst, sprich mit den Leuten, die nach der letzten Runde geblieben sind. Frag sie, wie es ihnen geht. Frag sie, was sie nicht mehr machen, weil sie keine Zeit mehr haben. Frag sie, was durch die Maschen fällt.&lt;/p&gt;
&lt;p&gt;Und dann stell dir vor, was sie erreichen könnten, wenn sie die Last nicht allein tragen müssten, sondern ein volles Team und die besten verfügbaren Werkzeuge hätten.&lt;/p&gt;
&lt;p&gt;Das ist kein Hirngespinst. Für die Unternehmen, die bereit sind, in ihre Mitarbeiter zu investieren, anstatt sie zu ersetzen, sind das die nächsten zwölf Monate.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="knowledge-management" />
    <category term="collaboration" />
  </entry>
  <entry>
    <title>Leser und Schreiber befinden sich in unterschiedlichen Denkmodi. Warum bietet ihnen jedes Tool die gleiche Benutzeroberfläche?</title>
    <link href="https://www.tcdev.de/de/blog/readers-and-writers-need-different-interfaces/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/readers-and-writers-need-different-interfaces/</id>
    <updated>2026-04-03T00:00:00Z</updated>
    <summary>Dokumentationsplattformen zwingen Leser/innen, Autor/innen und KI in eine Schnittstelle. Aber Wissen zu konsumieren und es zu erstellen sind kognitiv unterschiedliche Aufgaben. Rasepi trennt sie.</summary>
    <content type="html">&lt;p&gt;Öffne jetzt Confluence und suche ein Dokument, das du lesen musst. Was siehst du?&lt;/p&gt;
&lt;p&gt;Eine Symbolleiste. Schaltflächen zum Bearbeiten. Kommentarfelder. Links zum Seitenverlauf. Eine Seitenleiste voller Navigation, die du nicht brauchst. Brotkrümel. Metadatenfelder. Genehmigungsanzeigen. Eine komplette Autorenoberfläche, die sich um den Text dreht, den du lesen willst.&lt;/p&gt;
&lt;p&gt;Überlege dir jetzt, was du eigentlich wolltest: die Antwort auf eine Frage, die nächsten drei Schritte in einem Prozess oder eine Richtlinie, die du vor einem Meeting in zehn Minuten nachschlagen musst.&lt;/p&gt;
&lt;p&gt;Du bist gekommen, um zu konsumieren. Die Benutzeroberfläche geht davon aus, dass du gekommen bist, um zu erstellen.&lt;/p&gt;
&lt;p&gt;Das ist der Standard bei fast allen Dokumentationsplattformen. Confluence, Notion, SharePoint, GitBook, Nuclino, Slite. Sie alle bieten Lesern und Schreibern die gleiche Umgebung. Die Seite ist die Seite. Jeder erhält die gleiche Ansicht, abgesehen von ein paar Schaltflächen mit Berechtigungen.&lt;/p&gt;
&lt;p&gt;Es fühlt sich normal an, weil wir noch nie etwas anderes hatten. Aber es ist eine Designentscheidung, kein Naturgesetz. Und es ist die falsche Entscheidung.&lt;/p&gt;
&lt;p&gt;Die gleiche Schnittstelle für Lesen und Schreiben schafft kognitiven Overhead](/de/blog/img/readers-writers-ui.svg)&lt;/p&gt;
&lt;h2&gt;Lesen und Schreiben sind nicht dieselbe kognitive Aufgabe&lt;/h2&gt;
&lt;p&gt;Das ist keine Vorliebe für die Benutzeroberfläche. Es ist ein grundlegender Unterschied in der Arbeitsweise des Gehirns.&lt;/p&gt;
&lt;p&gt;Wenn du schreibst, befindest du dich im generativen Modus. Du konstruierst, organisierst, entscheidest, was du einfügst und was du weglässt. Du brauchst Werkzeuge: Formatierungsoptionen, Strukturkontrollen, Medieneinbettung, Metadatenfelder, Versionsgeschichte, Funktionen zur Zusammenarbeit. Die Schnittstelle sollte dir Macht und Flexibilität geben.&lt;/p&gt;
&lt;p&gt;Wenn du liest, bist du im rezeptiven Modus. Du scannst, filterst, nimmst das Relevante heraus und versuchst, weiterzulesen. Du brauchst Klarheit: saubere Typografie, konzentriertes Layout, minimale Ablenkung. Die Benutzeroberfläche sollte dir nicht im Weg sein.&lt;/p&gt;
&lt;p&gt;Die Kognitionspsychologie hat dafür einen klaren Rahmen. Die [Cognitive Load Theory] (https://www.instructionaldesign.org/theories/cognitive-load/), die von John Sweller in den späten 1980er Jahren entwickelt wurde, unterscheidet zwischen intrinsischer Belastung (die Schwierigkeit des Stoffes selbst), germane Belastung (die Anstrengung des Lernens und der Integration) und extraneaner Belastung (alles, was die Umgebung hinzufügt und nicht hilfreich ist). Jede Symbolleiste, jede Seitenleiste und jede Bearbeitungsschaltfläche, die ein Leser sieht, ist überflüssig. Sie helfen dem Leser nicht, den Inhalt zu verstehen. Sie konkurrieren aktiv um die Aufmerksamkeit.&lt;/p&gt;
&lt;p&gt;Eine Studie von &lt;a href=&quot;https://doi.org/10.1207/S15326985EP3801_6&quot;&gt;Mayer und Moreno (2003)&lt;/a&gt; über multimediales Lernen hat gezeigt, dass die Reduzierung überflüssiger Elemente sowohl das Verständnis als auch das Behalten verbessert. Ihr Kohärenzprinzip ist direkt: &lt;em&gt;Menschen lernen besser, wenn überflüssiges Material ausgeschlossen und nicht hinzugefügt wird.&lt;/em&gt; Eine Dokumentationsoberfläche, die dem Leser bei jedem Seitenaufruf die Steuerelemente des Autors zeigt, verstößt gegen dieses Prinzip.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Der Leser muss die Werkzeuge des Autors nicht sehen. Sie trotzdem zu zeigen, ist nicht neutral. Es ist aktiv schädlich für das Verstehen.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Wie aktuelle Plattformen dies handhaben (meistens nicht)&lt;/h2&gt;
&lt;p&gt;Schauen wir uns an, was es gibt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Confluence&lt;/strong&gt; hat einen Lesemodus und einen Bearbeitungsmodus, aber der Lesemodus ist immer noch von der Navigation, den Metadaten und dem Seitenbaum der Plattform umgeben. Die Bearbeitungssymbolleiste verschwindet, wenn du nicht bearbeitest, aber der mentale Rahmen &amp;quot;dies ist eine bearbeitbare Wikiseite&amp;quot; verschwindet nie ganz. Jeder Leser sieht die Schaltfläche &amp;quot;Bearbeiten&amp;quot;. Die Seite flüstert: &lt;em&gt;Du könntest das ändern.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notion&lt;/strong&gt; ist in dieser Hinsicht noch schlimmer. Der Kern der Designphilosophie ist, dass alles immer bearbeitbar ist. Klicke irgendwo und du tippst. Das ist genial für Autoren. Für Leserinnen und Leser, die den Inhalt einfach nur aufnehmen wollen, ohne Angst haben zu müssen, dass sie aus Versehen etwas ändern, ist es schrecklich. Die [Vorlagengalerie] (https://www.notion.com/templates) von Notion zeigt das: Jede Vorlage ist ein Arbeitsbereich, keine Veröffentlichung.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SharePoint&lt;/strong&gt; unterstützt technisch gesehen verschiedene Seitenlayouts für die Anzeige und Bearbeitung, aber das Gesamterlebnis ist immer noch ein Unternehmensintranet. Die Leserinnen und Leser haben das Gefühl, dass sie sich in einem Unternehmenstool befinden und nicht in einem für das Verständnis optimierten Dokument.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitBook&lt;/strong&gt; kommt mit seiner sauberen, dokumentationsähnlichen Ausgabe einem Leseerlebnis am nächsten. Aber auch hier wird davon ausgegangen, dass der Leser ein Entwickler ist, der sich technische Dokumente ansieht. Es ist nicht für den allgemeinen Wissenskonsumenten gedacht.&lt;/p&gt;
&lt;p&gt;Keine dieser Plattformen behandelt das Lesen als eine grundlegend andere Aktivität als das Schreiben. Sie behandeln es als Schreiben mit ausgeblendeter Symbolleiste.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/de/blog/img/leser-schreiber-aktuelle-tools.svg&quot; alt=&quot;Aktuelle Tools: eine Oberfläche, alle Zielgruppen&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Die Kosten einer einzigen Schnittstelle&lt;/h2&gt;
&lt;p&gt;Das ist nicht nur ein Problem der Ästhetik. Es hat messbare Konsequenzen.&lt;/p&gt;
&lt;h2&gt;Die Informationsflut verringert das Verstehen&lt;/h2&gt;
&lt;p&gt;Eine &lt;a href=&quot;https://doi.org/10.1086/209336&quot;&gt;im Journal of Consumer Research&lt;/a&gt; veröffentlichte Studie fand heraus, dass Informationsüberlastung zu einer schlechteren Entscheidungsqualität führt, wobei der Effekt mit dem Verhältnis von irrelevanten zu relevanten Informationen zunimmt. Eine Dokumentationsseite mit sichtbaren Steuerelementen, Navigationsbäumen und Metadatenfeldern erhöht dieses Verhältnis für jeden Leser, der nicht zum Schreiben da ist.&lt;/p&gt;
&lt;h3&gt;Context Switching hat einen echten Preis&lt;/h3&gt;
&lt;p&gt;Wenn ein Interface signalisiert: &amp;quot;Du kannst das bearbeiten&amp;quot;, aktiviert es einen anderen kognitiven Rahmen als &amp;quot;Lies das.&amp;quot; [Gloria Marks Forschung an der UC Irvine (https://www.ics.uci.edu/~gmark/) über Aufmerksamkeit und Multitasking hat ergeben, dass es durchschnittlich 23 Minuten und 15 Sekunden dauert, bis man sich nach einem Kontextwechsel wieder voll konzentriert. Ein Leser, der kurz darüber nachdenkt, etwas zu bearbeiten (selbst um einen Tippfehler zu korrigieren), wurde aus dem Lesemodus gerissen. Das ist keine hypothetische Annahme. Jeder, der Notion benutzt hat, kennt die Erfahrung, wenn man auf einen Text klickt, um ihn auszuwählen, und dann versehentlich anfängt zu tippen.&lt;/p&gt;
&lt;h3&gt;Leser und Schreiber haben unterschiedliche Bedürfnisse an denselben Inhalt&lt;/h3&gt;
&lt;p&gt;Ein Autor muss die Struktur, Formatierungsmarkierungen, Blocktypen, Metadaten und Signale für die Zusammenarbeit sehen. Sie brauchen die ganze Maschinerie.&lt;/p&gt;
&lt;p&gt;Ein Leser braucht sauberen Text, eine klare Hierarchie und den schnellsten Weg zu den gesuchten Informationen. Sie brauchen den Inhalt, nicht die Maschinerie.&lt;/p&gt;
&lt;p&gt;Werden beide über dieselbe Schnittstelle bedient, bedeutet das, dass keiner von ihnen ein für seine eigentliche Tätigkeit optimiertes Erlebnis hat.&lt;/p&gt;
&lt;h2&gt;Und dann ist da noch die dritte Zielgruppe: KI&lt;/h2&gt;
&lt;p&gt;Hier wird es kompliziert, und die bestehenden Plattformen sind völlig unvorbereitet.&lt;/p&gt;
&lt;p&gt;Die Dokumentation im Jahr 2026 hat drei verschiedene Verbraucher, nicht zwei:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Autoren&lt;/strong&gt;, die Inhalte erstellen und pflegen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Leser&lt;/strong&gt;, die Inhalte visuell konsumieren&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KI-Systeme&lt;/strong&gt;, die Inhalte programmgesteuert abrufen, analysieren und zusammenstellen&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jedes dieser Zielgruppen braucht eine grundsätzlich andere Schnittstelle zu denselben zugrunde liegenden Inhalten.&lt;/p&gt;
&lt;p&gt;Autoren brauchen umfangreiche Bearbeitungswerkzeuge, Funktionen zur Zusammenarbeit und strukturelle Kontrollen. Leser brauchen eine übersichtliche, konzentrierte Darstellung mit minimaler Ablenkung. KI braucht eine strukturierte, maschinenlesbare Ausgabe mit expliziten Metadaten: Aktualitätssignale, Klassifizierungskennzeichen, Adressierung auf Blockebene und saubere semantische Markups.&lt;/p&gt;
&lt;p&gt;Wie wir in &lt;a href=&quot;https://www.tcdev.de/de/blog/builders-not-developers-how-claude-changed-devrel/&quot;&gt;Builders, Not Developers&lt;/a&gt; erörtert haben, sind KI-Vermittler bereits der dominierende Konsument von Dokumentation für einen wachsenden Teil der Wissensarbeiter. Die [GitHub-Entwicklerumfrage 2024] (https://github.blog/news-insights/research/survey-ai-wave-grows/) ergab, dass 97 % der Entwickler in Unternehmen KI-Codierwerkzeuge verwenden. Bis 2026 werden &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;84% der Entwickler regelmäßig KI-Tools nutzen&lt;/a&gt;, wobei 41% des gesamten Codes durch KI generiert werden.&lt;/p&gt;
&lt;p&gt;Diese KI-Systeme interessieren sich nicht für deine Seitenleiste oder deine Symbolleiste. Sie brauchen saubere Daten. Und eine Plattform, die die Lesersicht mit der Autorensicht verwechselt, verwechselt auch die von der KI konsumierbare Oberfläche mit der Oberfläche des menschlichen Verfassers. Das sind drei Unstimmigkeiten in einer Schnittstelle.&lt;/p&gt;
&lt;p&gt;Drei Zielgruppen, drei unterschiedliche Bedürfnisse](/de/blog/img/readers-writers-three-audiences.svg)&lt;/p&gt;
&lt;h2&gt;Wie Rasepi die Erfahrungen trennt&lt;/h2&gt;
&lt;p&gt;Rasepi basiert auf dem Prinzip, dass das Erstellen von Inhalten und das Konsumieren von Inhalten unterschiedliche Aktivitäten sind, die unterschiedliche Schnittstellen verdienen.&lt;/p&gt;
&lt;h3&gt;Die Umgebung des Autors&lt;/h3&gt;
&lt;p&gt;Wenn du in Rasepi schreibst, bekommst du eine vollständige Autorenumgebung. Rich-Text-Editing mit TipTap, Steuerelemente auf Blockebene, Übersetzungsstatusanzeigen, Ablaufmanagement, Tools für die Zusammenarbeit, Ansichten für die Inhaltsstruktur und alles andere, was ein Autor braucht, um qualitativ hochwertige Dokumentation zu erstellen und zu pflegen.&lt;/p&gt;
&lt;p&gt;Der Autor sieht die Maschinerie, weil er die Maschinerie braucht.&lt;/p&gt;
&lt;!-- Screenshot: Rasepi Schreibumgebung --&gt;
&lt;h3&gt;Die Umgebung des Lesers&lt;/h3&gt;
&lt;p&gt;Wenn jemand ein Rasepi-Dokument konsumiert, sieht er ein sauberes, konzentriertes Leseerlebnis. Kein Bearbeitungs-Chrome. Keine Symbolleisten. Keine &amp;quot;Du kannst das ändern&amp;quot;-Signale. Nur der Inhalt, der in einem Layout präsentiert wird, das für das Verstehen und Überfliegen optimiert ist.&lt;/p&gt;
&lt;p&gt;Der Leser sieht die Schaltfläche &amp;quot;Bearbeiten&amp;quot; nicht, denn er ist nicht hier, um zu bearbeiten. Er ist hier, um etwas zu lernen, einen Prozess zu verfolgen oder eine Antwort zu finden. Die Benutzeroberfläche respektiert diese Absicht.&lt;/p&gt;
&lt;!-- Screenshot: Rasepi Leseerlebnis --&gt;
&lt;h3&gt;Die KI-Oberfläche&lt;/h3&gt;
&lt;p&gt;Für KI-Konsumenten stellt Rasepi Inhalte über strukturierte APIs mit vollständigen Metadaten zur Verfügung. Jeder Block enthält einen Freshness Score, einen Übersetzungsstatus, einen Content Hash und Klassifizierungskennzeichen. KI-Systeme können Inhalte auf Blockebene abfragen, nach Aktualität filtern, veraltetes Material oder Entwürfe ausschließen und genau die strukturierten Daten abrufen, die sie benötigen.&lt;/p&gt;
&lt;p&gt;Kein Scraping einer Wikiseite und Hoffen auf das Beste. Die KI erhält eine speziell entwickelte Schnittstelle, genau wie der Leser und der Autor.&lt;/p&gt;
&lt;!-- Screenshot: Rasepi AI Oberfläche / API --&gt;
&lt;h2&gt;Eine Inhaltsebene, drei Schnittstellen&lt;/h2&gt;
&lt;p&gt;Das Wichtigste ist, dass wir nicht drei Kopien des Inhalts verwalten. Das ist nicht das Problem der fünf Kopien des Onboardings, das wir in &lt;a href=&quot;https://www.tcdev.de/de/blog/stop-maintaining-five-copies-of-the-same-document/&quot;&gt;Stop Maintaining Five Copies of the Same Document&lt;/a&gt; besprochen haben.&lt;/p&gt;
&lt;p&gt;Es handelt sich um eine Inhaltsebene, die in strukturierten Blöcken gespeichert ist und über drei verschiedene Ansichten für drei verschiedene Zielgruppen optimiert wird.&lt;/p&gt;
&lt;p&gt;Der Autor bearbeitet die Blöcke. Der Leser sieht zusammengestellte, gestylte Inhalte. Die KI fragt strukturierte Daten mit Metadaten ab. Dieselben Blöcke. Dieselbe Quelle der Wahrheit. Unterschiedliche Präsentationsschicht für jeden Verbraucher.&lt;/p&gt;
&lt;p&gt;Dies ist nur aufgrund der Architektur auf Blockebene möglich. Jeder Inhalt ist eine individuell adressierbare Einheit mit eigenen Metadaten. Du kannst diese Blöcke unterschiedlich präsentieren, je nachdem, wer nach ihnen fragt:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Zielgruppe&lt;/th&gt;
&lt;th&gt;Bedürfnisse&lt;/th&gt;
&lt;th&gt;Gets&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Writer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Formatierung, Struktur, Zusammenarbeit, Metadaten&lt;/td&gt;
&lt;td&gt;Vollständige Authoring-Umgebung mit Kontrollen auf Blockebene&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Leser&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sauberer Text, klare Hierarchie, schnelles Scannen&lt;/td&gt;
&lt;td&gt;Fokussierte Leseansicht, kein Bearbeitungs-Chrome&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strukturierte Daten, Freshness Scores, Klassifizierung&lt;/td&gt;
&lt;td&gt;Block-Level-API mit vollständigen Metadaten&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Warum das wichtiger ist, als es aussieht&lt;/h2&gt;
&lt;p&gt;Du liest das vielleicht und denkst: &amp;quot;Das ist nur UI. Verschiedene Ansichten der gleichen Sache. Wie wichtig kann das schon sein?&amp;quot;&lt;/p&gt;
&lt;p&gt;Sehr wichtig, wie sich herausstellt.&lt;/p&gt;
&lt;h3&gt;Leservertrauen&lt;/h3&gt;
&lt;p&gt;Menschen vertrauen Inhalten, die veröffentlicht aussehen. Wenn eine Seite wie ein Wiki aussieht, das jeder bearbeiten kann, wird sie von den Lesern unbewusst abgelehnt. Wenn derselbe Inhalt in einer sauberen, veröffentlichungsreifen Ansicht präsentiert wird, hat er mehr Autorität. Das ist nicht irrational. Es ist ein Zeichen dafür, dass jemand die Präsentation ernst genommen hat, was bedeutet, dass er auch den Inhalt ernst genommen hat.&lt;/p&gt;
&lt;p&gt;Die Nielsen Norman Group hat dies eingehend untersucht. Ihre [Studie zur Glaubwürdigkeit von Inhalten] (https://www.nngroup.com/articles/trust-signals-content/) zeigt, dass die Qualität des Designs und der Präsentation zu den stärksten Signalen gehören, anhand derer die Nutzer die Vertrauenswürdigkeit von Inhalten beurteilen. Eine unübersichtliche Editoransicht untergräbt aktiv die Glaubwürdigkeit der angezeigten Inhalte.&lt;/p&gt;
&lt;h3&gt;Produktivität des Autors&lt;/h3&gt;
&lt;p&gt;Autoren, die in einer speziellen Autorenumgebung arbeiten, müssen nicht zwischen den Kontexten &amp;quot;lese ich oder schreibe ich?&amp;quot; hin und her wechseln. Die Werkzeuge sind da, weil sie da sein sollen, und nicht, weil die Benutzeroberfläche nicht entscheiden konnte, wer auf sie schaut.&lt;/p&gt;
&lt;h3&gt;KI-Zuverlässigkeit&lt;/h3&gt;
&lt;p&gt;Wenn KI-Systeme über eine speziell entwickelte Oberfläche mit strukturierten Metadaten verfügen, können sie besser entscheiden, was sie abrufen und was sie ausschließen. Sie können Freshness-Scores überprüfen, bevor sie einen Block in eine Antwort aufnehmen. Sie können Klassifizierungskennzeichen beachten. Sie können nach Sprache, Status oder Zielgruppe filtern. All das ist nicht möglich, wenn die KI dieselbe HTML-Seite ausliest, die für menschliche Leser konzipiert wurde.&lt;/p&gt;
&lt;h2&gt;Der Wechsel des mentalen Modells&lt;/h2&gt;
&lt;p&gt;Die Grundannahme der meisten Dokumentationsplattformen ist: &lt;em&gt;die Seite ist die Einheit, und jeder interagiert mit der Seite.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Rasepi geht von einer anderen Annahme aus: &lt;em&gt;Der Block ist die Einheit, und verschiedene Zielgruppen interagieren mit den Blöcken durch speziell entwickelte Oberflächen.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Das klingt wie ein kleiner architektonischer Unterschied. Ist es aber nicht. Es ist der Unterschied zwischen einem Werkzeug, das KI-Systemen zufällig Inhalte zeigt, und einem, das sie absichtlich bedient. Zwischen einer Schreibumgebung, die zufällig lesbar ist, und einem Leseerlebnis, das von Grund auf neu entwickelt wurde. Zwischen einer guten Schnittstelle und drei großartigen.&lt;/p&gt;
&lt;p&gt;Dokumentation wird nicht mehr nur geschrieben und gelesen. Sie wird geschrieben, gelesen, abgefragt, übersetzt, bewertet, klassifiziert und in großem Umfang an KI-Systeme weitergegeben. Wenn wir so tun, als ob wir das könnten, haben wir Wikis, die niemand lesen will, und KI-Assistenten, die Antworten von Seiten abrufen, die nie dafür gedacht waren, maschinell verarbeitet zu werden.&lt;/p&gt;
&lt;p&gt;Leser und Schreiber befinden sich in unterschiedlichen Denkmodi. Die KI ist in einem ganz anderen Modus. Die Benutzeroberfläche sollte das widerspiegeln.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ux" />
    <category term="documentation" />
    <category term="knowledge-management" />
  </entry>
  <entry>
    <title>The State of Docs in 2026: Fünf Trends, die die nächste Ära bestimmen werden</title>
    <link href="https://www.tcdev.de/de/blog/the-state-of-docs-in-2026/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/the-state-of-docs-in-2026/</id>
    <updated>2026-04-03T00:00:00Z</updated>
    <summary>Die KI-Leserschaft ist um 500% gestiegen. Notion hat 21.000 Agenten ausgeliefert. Confluence hat Rovo bekommen. GitBook veröffentlichte den State of Docs. Fünf Trends aus der gesamten Branche, die uns zeigen, wohin sich die Dokumentation entwickelt.</summary>
    <content type="html">&lt;p&gt;Alle paar Monate nehme ich mir einen Vormittag Zeit, um einfach nur zu lesen. Nicht Rasepi-Code, nicht GitHub-Probleme. Blogs von Mitbewerbern, Branchenberichte, Ankündigungen von Keynotes, Umfragen unter Entwicklern. Alles, was im letzten Quartal veröffentlicht wurde und mit Dokumentation, Wissensmanagement oder KI-gestützten Workflows zu tun hat.&lt;/p&gt;
&lt;p&gt;Das habe ich letzte Woche getan, und das Bild, das sich dabei ergab, war schärfer als erwartet. Nicht, weil eine einzelne Ankündigung bahnbrechend war, sondern weil fünf verschiedene Trends zusammenlaufen, die zusammengenommen ein klares Bild davon zeichnen, was Dokumentationsplattformen in den nächsten zwei Jahren leisten müssen.&lt;/p&gt;
&lt;p&gt;Hier ist, was ich gefunden habe.&lt;/p&gt;
&lt;h2&gt;1. KI ist jetzt der wichtigste Leser. Nicht der Mensch.&lt;/h2&gt;
&lt;p&gt;GitBook hat in seinem [AI docs data report] (https://www.gitbook.com/blog/ai-docs-data-2025) eine beeindruckende Zahl veröffentlicht: Die KI-Leserschaft von Dokumentationen stieg 2025 um über 500%. Fünfhundert Prozent. Das ist kein Rundungsfehler.&lt;/p&gt;
&lt;p&gt;Die &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;2024 Developer Survey&lt;/a&gt; von Stack Overflow zeigt, dass 61% der Entwickler/innen mehr als 30 Minuten pro Tag mit der Suche nach Antworten verbringen. Aber die Art und Weise, wie sie suchen, hat sich verändert. GitHubs eigene Umfrage ergab, dass &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;97% der Unternehmensentwickler&lt;/a&gt; KI-Coding-Tools verwenden. Im Jahr 2026 werden &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;84% der Entwickler&lt;/a&gt; täglich KI-Tools verwenden, wobei 41% des Codes inzwischen von KI generiert wird. Diese Leute navigieren nicht durch die Seitenleiste deines Wikis. Sie fragen Claude oder Copilot, und die KI liest deine Dokumente in ihrem Namen.&lt;/p&gt;
&lt;p&gt;Die Auswirkungen sind kaum zu überschätzen. Dein häufigster Dokumentationskonsument ist nicht mehr eine Person, die einen Browser-Tab geöffnet hat. Es ist ein Sprachmodell, das Suchanfragen stellt. Und dieses Modell ist nicht in der Lage, auf eine Seite zu schielen und zu denken: &amp;quot;Hm, das sieht veraltet aus.&amp;quot;&lt;/p&gt;
&lt;p&gt;GitBook hat das früh erkannt und mit seinem [State of Docs 2026 report] (https://www.gitbook.com/blog/state-of-docs-2026) und einem Vorstoß in Richtung maschinenlesbare Formate reagiert. Außerdem haben sie [skill.md] (https://www.gitbook.com/blog/skill-md) veröffentlicht, eine Konvention zur Strukturierung von Produktinformationen speziell für KI-Agenten. Google ging mit seinem &lt;a href=&quot;https://blog.google/innovation-and-ai/technology/developers-tools/gemini-api-docsmcp-agent-skills/&quot;&gt;Gemini API Docs MCP&lt;/a&gt; noch weiter, das Kodieragenten über das Model Context Protocol mit der aktuellen Dokumentation verbindet. Die Argumentation war eindeutig: Agenten erzeugen veralteten Code, weil ihre Trainingsdaten ein Stichtag sind. Mit der MCP-Lösung stieg die Erfolgsquote auf 96,3 %.&lt;/p&gt;
&lt;p&gt;Der erste Trend ist also bestätigt. KI ist der wichtigste Leser. Die Plattformen, die dies als eine zentrale Designvorgabe behandeln und nicht als eine Funktion, die später hinzugefügt werden kann, werden einen strukturellen Vorteil haben.&lt;/p&gt;
&lt;h2&gt;2. Frische und vertrauenswürdige Metadaten werden zur Pflicht&lt;/h2&gt;
&lt;p&gt;Anthropic befragte [81.000 Claude-Nutzer] (https://www.anthropic.com/81k-interviews) im Dezember 2025 und veröffentlichte die Ergebnisse im März 2026. Es ist die größte qualitative Studie über KI-Nutzer, die jemals durchgeführt wurde (159 Länder, 70 Sprachen). Die meistgenannte Sorge? Die Unzuverlässigkeit. 27% der Befragten nannten sie als ihre größte Sorge und 79% dieser Menschen haben sie am eigenen Leib erfahren.&lt;/p&gt;
&lt;p&gt;Diese Zahl sollte jedes Dokumentationsteam nachts wach halten.&lt;/p&gt;
&lt;p&gt;Wenn KI-Antworten unzuverlässig sind, liegt das Problem nicht immer am Modell. Oft gibt das Modell getreu wieder, was es in einem veralteten Dokument gefunden hat. Das Modell hat nicht halluziniert. Deine Dokumente waren einfach falsch, und niemand hat sie gemeldet.&lt;/p&gt;
&lt;p&gt;Die Daten von Stack Overflow untermauern dies aus einem anderen Blickwinkel: &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;81% der Entwickler&lt;/a&gt; erwarten, dass KI im kommenden Jahr stärker in die Art und Weise, wie sie Code dokumentieren, integriert wird. Wenn 81 % deiner Nutzer/innen die KI mit Dokumenten füttern und 27 % der KI-Nutzer/innen die Unzuverlässigkeit als größtes Problem bezeichnen, hast du ein Vertrauensproblem, das keine noch so prompte Entwicklung beheben kann. Die Lösung liegt an der Quelle.&lt;/p&gt;
&lt;p&gt;Deshalb sind Metadaten zur Aktualität so wichtig. Nicht der Zeitstempel &amp;quot;zuletzt bearbeitet&amp;quot; (er sagt aus, wann jemand die Datei angefasst hat, und nicht, ob der Inhalt noch aktuell ist). Echte Aktualität: Überprüfungsstatus, Linkstatus, Übersetzungsabgleich, Lesersignale, Erkennung von Inhaltsabweichungen. Metadaten, die eine Maschine lesen und nutzen kann, um zu entscheiden, ob ein Dokument sicher zitiert werden kann.&lt;/p&gt;
&lt;p&gt;Ich komme immer wieder auf eine einfache Formulierung zurück. Deine Dokumentation braucht einen Credit Score. Nicht einen Zeitstempel. Eine Kreditwürdigkeit. (Wir haben genau das mit dem &lt;a href=&quot;https://www.tcdev.de/features/freshness&quot;&gt;Frische-Scoring-System&lt;/a&gt; von Rasepi entwickelt, und wenn ich mir die Daten aus der Branche ansehe, bin ich noch mehr davon überzeugt, dass es die richtige Entscheidung ist).&lt;/p&gt;
&lt;h2&gt;3. Die Übersetzung wird von &amp;quot;Projekt&amp;quot; auf &amp;quot;Pipeline&amp;quot; umgestellt&lt;/h2&gt;
&lt;p&gt;DeepL veröffentlichte im Februar einen Artikel mit dem Titel [&amp;quot;The 6 Translation Transformations Global Businesses Can&#39;t Afford to Miss&amp;quot;] (https://www.deepl.com/en/blog/six-translation-transformations). Ihr Argument: Übersetzung wird zu einer kontinuierlichen betrieblichen Herausforderung, nicht zu einem vierteljährlichen Stapelprojekt.&lt;/p&gt;
&lt;p&gt;Das deckt sich mit allem, was ich sehe.&lt;/p&gt;
&lt;p&gt;Das alte Modell war ganz einfach. Schreibe auf Englisch. Wenn du ein gewisses Budget hast, engagiere einen Übersetzer oder beauftrage einen Übersetzungsdienst. Erhalte die Übersetzungen zurück. Lade sie hoch. Erledigt bis zum nächsten Mal. Das Problem ist, dass das &amp;quot;nächste Mal&amp;quot; immer schneller kommt, wenn dein Produkt wöchentlich ausgeliefert wird und deine Dokumente ständig aktualisiert werden. Bis die deutsche Version von der Überprüfung zurück ist, hat sich der englische Quelltext bereits zweimal geändert.&lt;/p&gt;
&lt;p&gt;Der [Customization Hub] (https://www.deepl.com/customization-hub) von DeepL bietet jetzt Glossare, Stilregeln und Formalitätseinstellungen, was großartig ist. Aber wenn diese Tools außerhalb deiner Dokumentationsplattform liegen, musst du eine ganze Übersetzungs-Toolchain verwalten: Editor, Export, Übersetzung, Überprüfung, Reimport, Wiederholung. Jeder Schritt birgt die Gefahr, dass du abweichst.&lt;/p&gt;
&lt;p&gt;Notion hat keine native mehrsprachige Unterstützung. Confluence bietet sie über Marketplace-Plugins an. GitBook [fügte die automatische Übersetzung im August 2025 hinzu] (https://www.gitbook.com/blog/new-in-gitbook-august-2025), das ist ein Schritt, aber er funktioniert auf Seitenebene.&lt;/p&gt;
&lt;p&gt;Die wirkliche Veränderung ist der Wechsel von der Seitenebene zur Blockebene. Wenn du die Übersetzungen auf der Absatzebene verfolgst, übersetzst du nur das, was sich tatsächlich geändert hat. Bei einer typischen Bearbeitung werden vielleicht zwei von vierzig Absätzen geändert. Das sind 94 % weniger Übersetzungsarbeit. (Das ist der Kern von Rasepis Übersetzungsarchitektur und ehrlich gesagt das, worauf ich bei dem Produkt am meisten stolz bin. Aber selbst wenn man uns beiseite lässt, ist die Richtung klar: Kontinuierliche, inkrementelle, eingebettete Übersetzung ist die Richtung, in die es geht).&lt;/p&gt;
&lt;h2&gt;4. KI-Agenten brauchen strukturierte Inhalte, keine Wikiseiten&lt;/h2&gt;
&lt;p&gt;Das hat sich für mich herauskristallisiert, als Notion im Februar [Custom Agents] (https://www.notion.com/blog/introducing-custom-agents) ankündigte. 21.000 Agenten wurden während des frühen Zugangs gebaut. Agenten, die Fragen aus Wissensdatenbanken beantworten, Aufgaben weiterleiten und Statusberichte erstellen. Allein Ramp hat über 300 Agenten.&lt;/p&gt;
&lt;p&gt;Atlassian ging in eine ähnliche Richtung. [Rovo AI in Confluence] (https://www.atlassian.com/blog/confluence/create-and-edit-with-rovo) zieht Kontext aus allen Anwendungen von Atlassian und Drittanbietern, um Inhalte zu erstellen. Ihr Argument: &amp;quot;Kontextreiche, qualitativ hochwertige Inhalte, die auf der bestehenden Arbeit deines Teams basieren&amp;quot;.&lt;/p&gt;
&lt;p&gt;Und dann hat Anthropic &lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-6&quot;&gt;Agententeams in Claude Code&lt;/a&gt; entwickelt, bei dem mehrere KI-Agenten komplexe Aufgaben selbstständig koordinieren. Opus 4.6 erreicht 76 % beim 8-Nadel 1M MRCR Benchmark (gegenüber 18,5 % beim Vorgängermodell), d. h. es kann tatsächlich Informationen aus riesigen Dokumentenmengen abrufen, ohne den Überblick zu verlieren.&lt;/p&gt;
&lt;p&gt;Alle drei Unternehmen entwickeln Agenten, die Dokumente auswerten. Keines von ihnen hat das Problem der Quellenqualität gelöst.&lt;/p&gt;
&lt;p&gt;In der Dokumentation der Custom Agents von Notion wird ausdrücklich auf das &lt;a href=&quot;https://www.notion.com/blog/introducing-custom-agents&quot;&gt;Prompt Injection Risk&lt;/a&gt; hingewiesen, wenn Agenten nicht vertrauenswürdige Inhalte lesen. Rovo von Atlassian liest alles, was es in deinem Confluence findet. Wenn dieser Inhalt drei Monate alt ist, weiß Rovo das nicht. Er baut trotzdem darauf auf.&lt;/p&gt;
&lt;p&gt;Damit Agenten zuverlässig arbeiten können, brauchen sie mehr als nur Textseiten. Sie brauchen strukturierte Inhalte mit stabilen Bezeichnern, eindeutigen Aktualitätssignalen, klaren Klassifizierungsmetadaten und der Möglichkeit, zwischen &amp;quot;das ist aktuell und geprüft&amp;quot; und &amp;quot;das gibt es, aber niemand hat es seit einem Jahr angefasst&amp;quot; zu unterscheiden. Wiki-Seiten bieten das nicht. Strukturierte Inhalte auf Blockebene mit vertrauenswürdigen Metadaten schon.&lt;/p&gt;
&lt;h2&gt;5. Open Source und Self-Hosting erleben ein Comeback&lt;/h2&gt;
&lt;p&gt;Der letzte Punkt ist eher ein Bauchgefühl, das durch Daten gestützt wird, als eine einzelne Ankündigung.&lt;/p&gt;
&lt;p&gt;GitBook [hat seine veröffentlichte Dokumentation] (https://www.gitbook.com/blog/free-open-source-documentation) Ende 2024 als Open Source veröffentlicht und einen OSS-Fonds eingerichtet. Die Begründung: Open-Source-Projekte verdienen kostenlose, hochwertige Dokumentationswerkzeuge. Aber der Schritt ist auch ein Zeichen für etwas Größeres.&lt;/p&gt;
&lt;p&gt;Notion ist ein reines Cloud-Angebot. Es gibt keine selbstgehostete Option. Das Confluence Data Center ist zwar vorhanden, erfordert aber eine Lizenz. Wenn deine Dokumentationsplattform dein sensibelstes betriebliches Wissen enthält (Playbooks für Vorfälle, Compliance-Verfahren, Architekturentscheidungen), ist die Frage, wer diese Daten kontrolliert, nicht abstrakt.&lt;/p&gt;
&lt;p&gt;Der Beitrag von Anthropic [&amp;quot;Claude is a space to think&amp;quot;] (https://www.anthropic.com/news/claude-is-a-space-to-think) vom Februar enthält ein interessantes Argument über Vertrauen und Geschäftsmodelle. Ihre Kernaussage: Werbeanreize sind unvereinbar mit einem wirklich hilfreichen KI-Assistenten. Sie haben sich dafür entschieden, werbefrei zu bleiben, damit die Nutzer dem Tool vertrauen können.&lt;/p&gt;
&lt;p&gt;Ich denke, es gibt eine Parallele für Dokumentationsplattformen. Wenn dein Dokumentsystem ein Closed-Source-System ist und nur in der Cloud läuft, kannst du nicht überprüfen, was es an die KI weitergibt. Du kannst die Berechnung der Aktualität nicht überprüfen. Du kannst nicht sicherstellen, dass deine Daten unter deiner Kontrolle bleiben. Für Teams, die KI-Assistenten auf ihre Wissensdatenbank aufsetzen (und das tun zunehmend alle), ist die Überprüfbarkeit wichtig.&lt;/p&gt;
&lt;p&gt;Dies ist keine Polemik darüber, dass Open Source moralisch überlegen ist. Closed-Source-Produkte können durchaus vertrauenswürdig sein. Aber wenn du KI-gestützte Workflows auf deiner internen Dokumentation aufbaust, ist die Möglichkeit, das System zu prüfen und zu verifizieren, ein praktischer Vorteil. Für uns war die MIT-Lizenzierung von Rasepi kein nachträglicher Einfall. Es war eine Designentscheidung, die auf derselben Logik beruht: Die Dokumentationsinfrastruktur sollte überprüfbar sein.&lt;/p&gt;
&lt;h2&gt;Was diese fünf Trends zusammen bedeuten&lt;/h2&gt;
&lt;p&gt;Für sich genommen ist jeder dieser Trends überschaubar. KI liest deine Dokumente? Okay, füge ein paar maschinenlesbare Metadaten hinzu. Frische ist wichtig? Gut, füge Überprüfungsdaten hinzu. Die Übersetzung muss kontinuierlich erfolgen? Klar, integriere DeepL. Agenten brauchen Struktur? Gut, verbessere dein Inhaltsmodell. Souveränität ist wichtig? Gut, biete eine selbst gehostete Option an.&lt;/p&gt;
&lt;p&gt;Aber zusammengenommen beschreiben sie eine Plattform, die sich grundlegend von dem unterscheidet, was die meisten Teams heute nutzen.&lt;/p&gt;
&lt;p&gt;Der Unterschied liegt in der Architektur. Es handelt sich nicht um fünf Funktionen, die man anbauen kann. Es sind fünf Annahmen, die in das Fundament eingebaut werden müssen. Wie die Inhalte gespeichert werden (auf Blockebene, nicht auf Seitenebene). Wie das Vertrauen modelliert wird (Freshness Scores, nicht Zeitstempel). Wie die Übersetzung funktioniert (inkrementell, eingebettet, pro Absatz). Wie KI-Agenten auf Inhalte zugreifen (strukturierte APIs mit Metadaten, keine Seitenabfragen). Wie die Daten kontrolliert werden (offen, überprüfbar, selbst-hostbar).&lt;/p&gt;
&lt;p&gt;Keine etablierte Plattform wurde für alle fünf Punkte gleichzeitig entwickelt. Einige fügen sie Stück für Stück hinzu. GitBook ist bei der KI-Lesbarkeit am weitesten fortgeschritten. Notion baut eine Agenteninfrastruktur auf. Atlassian hat eine Enterprise Distribution.&lt;/p&gt;
&lt;p&gt;Aber vom ersten Tag an für alle fünf entwickeln? Das ist der Vorteil, wenn man ganz neu anfängt, wenn sich das Terrain verschiebt.&lt;/p&gt;
&lt;p&gt;Ich weiß, dass ich hier voreingenommen bin. Wir haben Rasepi entwickelt, weil wir sahen, dass diese Trends zusammenlaufen und wir wollten eine Plattform, die von Anfang an alle diese Trends berücksichtigt. Übersetzung auf Blockebene, erzwungenes Verfallsdatum, Freshness Scoring, strukturierte KI-kompatible Inhalte, Open Source. Das ist die These des ganzen Projekts.&lt;/p&gt;
&lt;p&gt;Aber selbst wenn es uns nicht gäbe, denke ich, dass jede ehrliche Betrachtung dessen, was im ersten Quartal 2026 passiert, in dieselbe Richtung weist. Die Dokumentation wird zur Infrastruktur. Und Infrastruktur hat andere Anforderungen als Wikiseiten.&lt;/p&gt;
&lt;p&gt;Die Teams, die das zuerst herausfinden, werden nicht nur bessere Dokumentationen haben. Sie werden zuverlässigere KI-Agenten, niedrigere Übersetzungskosten, weniger Überraschungen bei der Einhaltung von Vorschriften und Wissensdatenbanken haben, die auch im Laufe der Zeit vertrauenswürdig bleiben.&lt;/p&gt;
&lt;p&gt;Das ist der Zustand der Dokumente im Jahr 2026. Die Frage ist nicht, ob diese Trends real sind. Die Frage ist, ob deine Plattform für sie entwickelt wurde.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fünf Trends. Eine architektonische Frage: Wurde deine Dokumentationsplattform für das Jahr 2026 entwickelt oder bedient sie immer noch Annahmen aus dem Jahr 2016?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Quellen: &lt;a href=&quot;https://www.gitbook.com/blog/ai-docs-data-2025&quot;&gt;GitBook AI docs data report&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/state-of-docs-2026&quot;&gt;GitBook State of Docs 2026&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/skill-md&quot;&gt;GitBook skill.md&lt;/a&gt;, &lt;a href=&quot;https://blog.google/innovation-and-ai/technology/developers-tools/gemini-api-docsmcp-agent-skills/&quot;&gt;Google Gemini API Docs MCP&lt;/a&gt;, &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;Stack Overflow 2024 Developer Survey&lt;/a&gt;, &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;GitHub 2024 developer survey&lt;/a&gt;, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;Index.dev developer productivity statistics&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/81k-interviews&quot;&gt;Anthropic &amp;quot;What 81,000 People Want from AI&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/news/claude-is-a-space-to-think&quot;&gt;Anthropic &amp;quot;Claude is a space to think&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.anthropic.com/news/claude-opus-4-6&quot;&gt;Claude Opus 4.6&lt;/a&gt;, &lt;a href=&quot;https://www.notion.com/blog/introducing-custom-agents&quot;&gt;Notion Custom Agents&lt;/a&gt;, &lt;a href=&quot;https://www.atlassian.com/blog/confluence/create-and-edit-with-rovo&quot;&gt;Atlassian Rovo in Confluence&lt;/a&gt;, &lt;a href=&quot;https://www.deepl.com/en/blog/six-translation-transformations&quot;&gt;DeepL &amp;quot;6 Translation Transformations&amp;quot;&lt;/a&gt;, &lt;a href=&quot;https://www.deepl.com/customization-hub&quot;&gt;DeepL Customization Hub&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/free-open-source-documentation&quot;&gt;GitBook open source documentation&lt;/a&gt;, &lt;a href=&quot;https://www.gitbook.com/blog/new-in-gitbook-august-2025&quot;&gt;GitBook auto-translate&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="documentation" />
    <category term="platforms" />
  </entry>
  <entry>
    <title>Erbauer, nicht Entwickler: Wie Claude verändert hat, für wen deine Docs bestimmt sind</title>
    <link href="https://www.tcdev.de/de/blog/builders-not-developers-how-claude-changed-devrel/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/builders-not-developers-how-claude-changed-devrel/</id>
    <updated>2026-04-02T00:00:00Z</updated>
    <summary>Die Person, die deine API integriert, liest deine Dokumente nicht mehr. Sie sitzen in Claude und beschreiben, was sie wollen. Die Beziehungen zu den Entwicklern, die API-Dokumentation und der gesamte &quot;Getting-Started Funnel&quot; müssen für diese neue Realität überdacht werden.</summary>
    <content type="html">&lt;p&gt;Irgendwo in diesem Moment gibt es eine Person, die deine API integriert. Sie sind nicht auf deiner Dokumentationsseite. Sie hat deinen Leitfaden für die ersten Schritte nicht geöffnet. Sie haben noch nie deine interaktive Spielwiese oder deine sorgfältig gestaltete Seitennavigation gesehen.&lt;/p&gt;
&lt;p&gt;Sie sitzen in Claude. Oder Copilot. Oder Cursor. Sie tippen etwas ein wie &lt;em&gt;&amp;quot;integriere die Stripe Billing API mit meiner Next.js App unter Verwendung des App-Routers&amp;quot;&lt;/em&gt; und warten darauf, dass funktionierender Code zurückkommt. Die KI hat deine Dokumente für dich gelesen. Sie fand die relevanten Endpunkte, verstand den Authentifizierungsfluss, wählte die richtigen SDK-Methoden und erstellte eine Implementierung.&lt;/p&gt;
&lt;p&gt;Vor zwei Wochen, beim Start Summit Hackathon in St. Gallen, konnte ich dies in Echtzeit beobachten. Ich unterhielt mich mit einer Gruppe von CS-Studenten und ein paar Startup-Gründern darüber, wie sie an neue APIs herangehen, und jeder von ihnen beschrieb denselben Arbeitsablauf: Das Problem in eine KI einfügen, Code zurückbekommen, von dort aus iterieren. Eine der Studentinnen lachte, als ich sie fragte, ob sie die Dokumente gelesen hätte. &amp;quot;Warum sollte ich? Claude liest sie für mich.&amp;quot;&lt;/p&gt;
&lt;p&gt;Die Person hat deine Website nie besucht. Sie wird deine Seite vielleicht nie besuchen. Und genau so wird Software zunehmend entwickelt.&lt;/p&gt;
&lt;h2&gt;Die Kernverschiebung&lt;/h2&gt;
&lt;p&gt;Die Dokumentation hat heute zwei grundverschiedene Abnehmer: Menschen, die sie lesen, und KI-Assistenten, die sie im Auftrag von Entwicklern lesen. Die meisten Dokumentationen sind ausschließlich für Menschen optimiert. Die KI ist bereits der dominierende Leser.&lt;/p&gt;
&lt;p&gt;Das verändert alles nachgelagerte Bereiche:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frische Inhalte sind jetzt eine Frage der Zuverlässigkeit.&lt;/strong&gt; Wenn eine KI veraltete Inhalte serviert, hat der Ersteller keine Möglichkeit, das Problem zu erkennen. Der Schaden wächst stillschweigend mit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;quot;Entwickler&amp;quot; ist ein zu eng gefasster Begriff.&lt;/strong&gt; Produktmanager, Designer und Analysten liefern Software über KI-Assistenten aus, oft ohne jemals selbst eine Zeile der Dokumentation gelesen zu haben.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maschinenlesbare Struktur ist wichtiger als visuelles Design.&lt;/strong&gt; Sauberes Markdown, in sich geschlossene Blöcke und explizite Metadaten ermöglichen es der KI, dein Produkt korrekt darzustellen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Die Anforderungen an das Format haben sich aufgeteilt.&lt;/strong&gt; Menschliche Leser brauchen Erzählungen. KI-Vermittler brauchen strukturierte, analysierbare Spezifikationen. Du musst beide bedienen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der Rest dieses Beitrags erklärt, wie es dazu kam, was das für DevRel bedeutet und was du jetzt tun kannst.&lt;/p&gt;
&lt;h2&gt;Die Reise, die niemand geplant hat&lt;/h2&gt;
&lt;p&gt;Lange Zeit folgten die Beziehungen zwischen Entwicklern einem wohlverstandenen Weg. Du hast umfassende Dokumentationen geschrieben. Du hast Schnellstartanleitungen veröffentlicht. Du hast auf Konferenzen Vorträge gehalten. Du hast eine Präsenz auf Stack Overflow unterhalten. Du hast deine API-Referenz durchsuchbar gemacht, deine SDKs idiomatisch und deine Fehlermeldungen hilfreich.&lt;/p&gt;
&lt;p&gt;Dieser Weg setzt voraus, dass die Entwickler deine Inhalte lesen. Navigiere durch deine Struktur. Folge deinen Schritten.&lt;/p&gt;
&lt;p&gt;[Die GitHub-Entwicklerumfrage 2024 (https://github.blog/news-insights/research/survey-ai-wave-grows/) ergab, dass 97 % der Entwickler in Unternehmen schon einmal KI-Tools verwendet haben. [Die jährliche Umfrage von Stack Overflow (https://survey.stackoverflow.co/2024/) ergab, dass 76 % aller Entwickler/innen KI-Tools nutzen oder planen, sie zu nutzen, wobei 62 % der Fachleute sie aktiv im Alltag einsetzen. Bis 2026 steigt diese Zahl &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;auf 84 %&lt;/a&gt;, wobei 41 % des gesamten Codes inzwischen von KI generiert werden und 51 % der professionellen Entwickler/innen KI-Tools täglich nutzen. Diese Zahlen werden sich nicht abschwächen.&lt;/p&gt;
&lt;p&gt;Die neue Reise sieht anders aus. Jemand beschreibt in natürlicher Sprache, was er will. Ein KI-Assistent liest die Dokumentation, findet die relevanten Abschnitte und erstellt die Integration. Der Builder prüft die Ergebnisse, verfeinert vielleicht die Eingabeaufforderung oder fragt nach. Das dauert nur Minuten, nicht Stunden.&lt;/p&gt;
&lt;p&gt;Der Einstiegstrichter, an dem DevRel-Teams jahrelang gefeilt haben? Er wird übersprungen. Nicht, weil er schlecht war. Der Einstiegspunkt hat sich einfach verschoben.&lt;/p&gt;
&lt;h2&gt;Zwei Verbraucher, ein Satz Dokumente&lt;/h2&gt;
&lt;p&gt;Die Dokumentation hat jetzt zwei grundlegend verschiedene Zielgruppen.&lt;/p&gt;
&lt;p&gt;Das erste ist der menschliche Leser. Diese Person gibt es immer noch. Sie tauchen auf, wenn es um Architekturentscheidungen, das Debuggen von Grenzfällen, die Überprüfung der Einhaltung von Vorschriften und das Verständnis von Konzepten geht. Sie wollen erzählende Erklärungen, gut organisiertes Referenzmaterial und klare Argumente für Kompromisse.&lt;/p&gt;
&lt;p&gt;Der zweite ist der KI-Vermittler. Er liest deine Dokumentation im Auftrag des Bauherrn. Sie kümmert sich nicht um deine Seitenleiste. Sie schätzt dein visuelles Design nicht. Sie braucht strukturierte, maschinenlesbare Inhalte: saubere Markdowns, konsistente Formatierungen, eindeutige Spezifikationen, über die sie ohne Mehrdeutigkeit nachdenken kann.&lt;/p&gt;
&lt;p&gt;Fast jede Dokumentationsseite ist heute ausschließlich für die erste Zielgruppe optimiert. Die zweite Zielgruppe ist bereits der dominierende Verbraucher.&lt;/p&gt;
&lt;p&gt;Jeremy Howard erkannte dieses Spannungsverhältnis, als er 2024 &lt;a href=&quot;https://llmstxt.org/&quot;&gt;den /llms.txt-Standard&lt;/a&gt; vorschlug. Seine Beobachtung war präzise: &lt;em&gt;&amp;quot;Große Sprachmodelle stützen sich zunehmend auf Website-Informationen, stoßen aber auf eine entscheidende Einschränkung: Die Kontextfenster sind zu klein, um die meisten Websites in ihrer Gesamtheit zu erfassen.&amp;quot;&lt;/em&gt; Der Vorschlag ist einfach. Eine kuratierte Markdown-Datei unter &lt;code&gt;/llms.txt&lt;/code&gt;, die den KI-Modellen einen strukturierten Überblick über dein Produkt und Links zu den wichtigsten Ressourcen gibt. FastHTML, Anthropics eigene Dokumente und ein [wachsendes Verzeichnis von Projekten] (https://llmstxt.site/) liefern jetzt eine solche Datei aus.&lt;/p&gt;
&lt;p&gt;Das ist eine nützliche Konvention. Aber sie ist auch ein Symptom für ein tieferes Problem. Das eigentliche Problem ist nicht das Format. Das Problem ist, dass die meisten Dokumentationen nie mit Blick auf die Nutzung durch Maschinen entwickelt wurden.&lt;/p&gt;
&lt;h2&gt;Der Erbauer spart nicht am falschen Ende.&lt;/h2&gt;
&lt;p&gt;Die Versuchung ist groß, die Person, die Claude auffordert, statt die Dokumentation zu lesen, zu betrachten und daraus zu schließen, dass sie Abkürzungen nimmt. Dass sie nicht wirklich verstehen, was im Code passiert. Dass sie irgendwie eine minderwertige Art von Entwickler sind.&lt;/p&gt;
&lt;p&gt;Ich habe dieses Gespräch schon oft genug geführt, um zu wissen, dass das meistens falsch ist.&lt;/p&gt;
&lt;p&gt;Viele dieser Entwickler sind erfahrene Ingenieure, die sich bewusst für Effizienz entscheiden. Sie verstehen den Code, aber sie wollen nicht vier Seiten Dokumentation wälzen, um die drei Zeilen zu finden, die sie wirklich brauchen. Sie haben gelernt, dass ein KI-Assistent diese Zeilen schneller extrahieren kann, als sie sie suchen können, also delegieren sie das Lesen. (Ehrlich gesagt, mache ich das auch. Ich kann mich nicht erinnern, wann ich das letzte Mal eine Anleitung für den Einstieg von vorne bis hinten gelesen habe).&lt;/p&gt;
&lt;p&gt;Anthropic hat dieses Muster erkannt, als sie das &lt;a href=&quot;https://modelcontextprotocol.io/introduction&quot;&gt;Model Context Protocol&lt;/a&gt; entwickelt haben. MCP wird inzwischen von Claude, ChatGPT, VS Code, Cursor und anderen unterstützt. Es ist explizit so konzipiert, dass KI-Assistenten auf externe Systeme zugreifen, Kontext abrufen und darauf reagieren können. In der Spezifikation heißt es, dass es _&amp;quot;Zugang zu einem Ökosystem von Datenquellen, Tools und Apps bietet, das die Fähigkeiten und die Erfahrung des Endnutzers verbessert&amp;quot;.&lt;/p&gt;
&lt;p&gt;Lies das genau. Das ist die Sprache der Infrastruktur, nicht die Sprache der Bequemlichkeit. Die Entwickler/innen, die diese Tools nutzen, vermeiden keine Arbeit. Sie arbeiten sich durch eine neue Ebene, und deine Dokumentation ist Teil dieser Ebene, ob du sie nun dafür vorgesehen hast oder nicht.&lt;/p&gt;
&lt;p&gt;Die Zahlen belegen dies. Allein Claude verarbeitet heute [25 Milliarden API-Aufrufe pro Monat] (https://www.incremys.com/en/resources/blog/claude-statistics), mit 30 Millionen monatlich aktiven Nutzern in 159 Ländern. &lt;a href=&quot;https://www.incremys.com/en/resources/blog/claude-statistics&quot;&gt;70% der Fortune 100 Unternehmen&lt;/a&gt; nutzen Claude. Laut einer Umfrage von Menlo Ventures hält Anthropic &lt;a href=&quot;https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/&quot;&gt;32 % des KI-Marktanteils in Unternehmen, gemessen an der Modellnutzung&lt;/a&gt;, vor OpenAI mit 25 %. Ein HSBC-Forschungsbericht beziffert den Anteil sogar noch höher: 40 % der gesamten KI-Ausgaben. Das sind keine experimentellen Tools. Sie sind die primäre Infrastruktur.&lt;/p&gt;
&lt;h2&gt;Die Beziehungen zwischen Entwicklern wurden für eine andere Zeit geschaffen.&lt;/h2&gt;
&lt;p&gt;Wenn deine DevRel-Strategie vor 2023 entwickelt wurde, war sie für eine Welt gedacht, in der Entwickler die Dokumente direkt lesen. Diese Welt ist nicht verschwunden, aber sie ist nicht mehr das vorherrschende Interaktionsmuster für einen wachsenden Anteil von Entwicklern.&lt;/p&gt;
&lt;p&gt;Das verändert die Kalkulation einiger langjähriger DevRel-Aktivitäten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Konferenzvorträge.&lt;/strong&gt; Eine 45-minütige Präsentation auf einer Entwicklerkonferenz erreicht einen Raum mit ein paar hundert Leuten. Eine gut strukturierte &lt;code&gt;/llms.txt&lt;/code&gt;-Datei und eine saubere, maschinenlesbare Dokumentation erreichen jeden Builder, der einen KI-Assistenten über dein Produkt befragt, kontinuierlich und zu jeder Zeit. Das Gespräch ist ein einmaliges Ereignis. Die maschinenlesbare Dokumentation bleibt bestehen. Ich will damit nicht sagen, dass Konferenzen wertlos sind (ich komme gerade von einer zurück), aber das Verhältnis der Hebelwirkung hat sich verschoben.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anleitungen für den Einstieg&lt;/strong&gt; Die klassische Schnellstart-Anleitung in fünf Schritten wird immer mehr zu einer Formalität. Die Bauherren folgen den Schritten nicht. Er beschreibt, was er will, und erwartet, dass die KI die Integration vornimmt. Wenn die API in einem maschinenfreundlichen Format gut dokumentiert ist, bewältigt die KI den Einstieg effizienter, als es ein Tutorial könnte. Tutorien sollten stattdessen konzeptionelles Material sein: Sie sollten erklären, warum du Ansatz A gegenüber Ansatz B wählst. Bei der Erklärung von Kompromissen ist sie viel weniger zuverlässig.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stack Overflow.&lt;/strong&gt; Ihre eigenen Umfragedaten haben gezeigt, dass &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;84% der Entwickler&lt;/a&gt; die technische Dokumentation direkt nutzen, wobei 90% von ihnen sich auf die Dokumentation in API- und SDK-Paketen verlassen. Aber die Art und Weise, wie sie auf diese Dokumente &lt;em&gt;zugreifen&lt;/em&gt;, erfolgt zunehmend über eine KI-Ebene und nicht über einen Browser-Tab. Die Fragen, die Stack Overflow noch erreichen, sind meist die schwierigen. Grenzfälle, Debugging in der Produktion, Dinge, die Feinheiten erfordern. Wertvoll, sicher. Aber das Volumen ist nicht mehr da.&lt;/p&gt;
&lt;h2&gt;Wenn die KI deine Dokumente liest, wird die Aktualität entscheidend&lt;/h2&gt;
&lt;p&gt;Hier ist der Teil, den die meisten Teams nicht bedacht haben.&lt;/p&gt;
&lt;p&gt;Wenn ein Mensch eine Dokumentationsseite liest, kann er sich ein Urteil bilden. Ihm könnte auffallen, dass die Screenshots alt aussehen oder dass ein Kommentar am Ende der Seite besagt, dass der Prozess geändert wurde. Er kann darauf blinzeln und denken: &amp;quot;Das scheint veraltet zu sein&amp;quot;.&lt;/p&gt;
&lt;p&gt;Ein KI-Assistent kann das alles nicht tun. Er liest den Text, verarbeitet ihn als Tatsache und gibt mit vollem Vertrauen eine Antwort. Wenn in der Dokumentation ein veralteter Endpunkt beschrieben wird, wird die KI fröhlich empfehlen, ihn zu integrieren. Wenn in der Dokumentation auf eine Infrastruktur verwiesen wird, die vor sechs Monaten ersetzt wurde, wird die KI die alte Konfiguration als aktuell beschreiben. Ohne zu zögern.&lt;/p&gt;
&lt;p&gt;Und das macht die Sache noch schlimmer, als sie klingt: &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;66% der Entwickler&lt;/a&gt; sagen bereits, dass das größte Problem mit KI-Tools darin besteht, dass sie Ergebnisse liefern, die &amp;quot;fast richtig, aber nicht ganz richtig&amp;quot; sind. Eine veraltete Dokumentation trägt direkt zu diesem Problem bei. Die KI halluziniert nicht. Sie gibt veraltete Inhalte originalgetreu wieder, und es gibt keine Möglichkeit für den Erbauer, den Unterschied zu erkennen.&lt;/p&gt;
&lt;p&gt;Der Bauherr verlässt sich auf die KI. Die KI verlässt sich auf die Dokumentation. Wenn die Dokumentation veraltet ist, liefert diese Vertrauenskette mit Sicherheit eine falsche Antwort.&lt;/p&gt;
&lt;p&gt;Das war natürlich schon immer ein Problem. Veraltete Inhalte haben die Menschen schon immer verwirrt. Aber der Schaden wurde eingedämmt, weil menschliche Leser es manchmal erkennen konnten. KI-Vermittler können das nicht. Sie verstärken veraltete Inhalte, indem sie sie in großem Umfang und mit Autorität an Menschen weitergeben, die keinen Grund haben, sie anzuzweifeln.&lt;/p&gt;
&lt;p&gt;Frische ist nicht mehr nur eine Frage der Qualität der Inhalte. Es ist eine Frage der Zuverlässigkeit für jeden KI-gesteuerten Workflow, der deine Dokumente berührt.&lt;/p&gt;
&lt;h2&gt;Das Wort &amp;quot;Entwickler&amp;quot; ist zu eng gefasst&lt;/h2&gt;
&lt;p&gt;Die Menschen, die im Jahr 2026 Software entwickeln, bezeichnen sich nicht alle als Entwickler. Manche sind Designer, die Claude auffordern, einen funktionierenden Prototyp zu bauen. Einige sind Produktmanager, die Cursor benutzen, um interne Tools zu entwickeln. Andere sind Datenanalysten, die eine Datenpipeline in natürlicher Sprache beschreiben und sie von einem Agenten zusammenstellen lassen. Beim Start Summit hatte die Hälfte der Hackathon-Teams Mitglieder, die keinerlei Programmierkenntnisse hatten und am Ende des Wochenendes eine funktionierende Software lieferten.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ramp.com/&quot;&gt;Ramp&lt;/a&gt; ist ein gutes Beispiel. Das Finanzunternehmen stieg von einer Bewertung von 5,8 Mrd. USD im Jahr 2023 auf &lt;a href=&quot;https://techcrunch.com/2025/11/17/ramp-hits-32b-valuation-just-three-months-after-hitting-22-5b/&quot;&gt;32 Mrd. USD Ende 2025&lt;/a&gt; und überschritt dabei einen Jahresumsatz von 1 Mrd. USD. Es ist eines der am schnellsten wachsenden Startups der Geschichte. Ein viel diskutierter Teil ihres Ansatzes: Produktmanager bauen Funktionen direkt mit KI-Tools, anstatt in einem Engineering Backlog zu warten. PMs bei Ramp schreiben nicht nur Spezifikationen. Sie liefern den Code. Die KI kümmert sich um die Implementierung. Der PM kümmert sich um die Absicht.&lt;/p&gt;
&lt;p&gt;Das ist keine Abkürzung. Ein neues Betriebsmodell, das in einem Umfang funktioniert, der es wirklich schwer macht, es als Experiment abzutun.&lt;/p&gt;
&lt;p&gt;Die interne Studie von Anthropic ist hier aufschlussreich. Bei einer Befragung von 132 Ingenieuren (https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/) über die Nutzung von Claude gaben die Ingenieure an, dass sie Claude für etwa 60 % ihrer Arbeitsaufgaben nutzen. Die häufigsten Anwendungen? Das Debuggen von bestehendem Code, das Verstehen, was Teile der Codebasis tun, und die Implementierung neuer Funktionen. Die Ingenieure gaben an, dass sie Claude eher mit Aufgaben betrauen, die &amp;quot;nicht komplex sind, sich wiederholen und bei denen die Codequalität nicht entscheidend ist&amp;quot;. Und 27 % der Arbeit, die sie jetzt mit Claude erledigen, hätten sie vorher gar nicht gemacht.&lt;/p&gt;
&lt;p&gt;Das ist das eigene Team von Anthropic. Die Leute, die das Modell entwickelt haben, nutzen es als Dokumentationsleser, als Codebase-Navigator und als Generator für erste Entwürfe. Alle anderen machen das Gleiche, nur mit ihren Dokumenten statt mit ihren.&lt;/p&gt;
&lt;p&gt;Anthropic hat diese Persona bewusst als &amp;quot;Builder&amp;quot; bezeichnet. Ihre Werkzeuge sind nicht nur für professionelle Softwareentwickler gedacht, sondern für jeden, der beschreiben kann, was er bauen will. Wenn Claude mit MCP aus einem Figma-Entwurf eine vollständige Anwendung erstellen kann, löst sich die traditionelle Grenze zwischen &amp;quot;Entwickler&amp;quot; und &amp;quot;Nicht-Entwickler&amp;quot; auf.&lt;/p&gt;
&lt;p&gt;Das hat echte Auswirkungen auf jeden, der Dokumentationen pflegt oder sich um die Erfahrung von Entwicklern kümmert. Deine Zielgruppe ist nicht mehr auf Menschen beschränkt, die wissen, was ein REST-Endpunkt ist. Sie umfasst jeden, dessen KI-Assistent mit deinem Produkt interagieren könnte. Der PM bei Ramp, der eine Funktion mit deiner API ausliefert? Wahrscheinlich liest er deine Dokumentation nie direkt. Ihr KI-Agent wird es aber auf jeden Fall tun.&lt;/p&gt;
&lt;h2&gt;Was das für die Dokumentation bedeutet&lt;/h2&gt;
&lt;p&gt;Wenn die Dokumentation jetzt zwei Zielgruppen bedient, nämlich menschliche Leser und KI-Vermittler, muss sie für beide funktionieren. Das klingt offensichtlich. In der Praxis macht das aber fast niemand.&lt;/p&gt;
&lt;p&gt;Hier ist, was meiner Meinung nach wirklich wichtig ist:&lt;/p&gt;
&lt;p&gt;**Maschinenlesbare Formate neben menschenlesbaren Formaten ** Wenn deine API-Dokumente eine schön gerenderte HTML-Seite sind, die ein LLM auslesen und parsen muss, arbeitet die KI härter als sie sollte. Biete die unbearbeitete OpenAPI-Spezifikation zusammen mit der gerenderten Version an. Liefern Sie saubere Markdowns. Mach die Spezifikationen zugänglich, ohne dass die KI das Seitenlayout interpretieren muss.&lt;/p&gt;
&lt;p&gt;**Struktur auf Blockebene statt Erzählung auf Seitenebene ** KI-Assistenten konsumieren die Dokumentation nicht Seite für Seite. Sie extrahieren relevante Abschnitte. Ein Dokument mit klaren Überschriften, in sich abgeschlossenen Absätzen und expliziter Semantik auf Blockebene ist für eine KI wesentlich nützlicher als eine fließende Erzählung, bei der man die ganze Seite lesen muss, um den Kontext zu verstehen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vertrauere auf Signale, dass Maschinen lesen können.&lt;/strong&gt; Wann wurde dieses Dokument zuletzt überprüft? Ist es noch aktuell? Wurde der Inhalt mit einer Kennzeichnung versehen? Diese Signale müssen in einer Form vorliegen, auf die die KI zugreifen kann, nicht nur als visuelle Hinweise auf einer Webseite. Ein Freshness Score, ein Verfallsstatus, ein Überprüfungsdatum - das sind die Metadaten, anhand derer eine KI entscheiden kann, ob ein Dokument als Quelle sicher ist.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Frische als Voraussetzung, nicht als Merkmal.&lt;/strong&gt; Wenn ein KI-Assistent einem Builder eine sichere Antwort auf der Grundlage eines veralteten Endpunkts gibt, ist der Schaden schlimmer als eine 404. Der Builder baut darauf auf. Liefert sie aus. Dann geht sie in der Produktion kaputt, und niemand weiß, warum, bis jemand die Ursache auf die Dokumentation zurückführt, die schon vor Monaten hätte aktualisiert werden müssen. Jedes Dokument, auf das sich eine KI beziehen könnte, braucht einen Mechanismus, um zu beweisen, dass es noch aktuell ist. (Das ist genau das Problem, das wir mit Rasepi lösen wollen, um ganz offen zu sein. Erzwungenes Verfallsdatum für Dokumentationsblöcke, damit sich veraltete Inhalte nicht verstecken können.)&lt;/p&gt;
&lt;h2&gt;Erste Schritte: Überprüfe deine aktuellen Dokumentationen&lt;/h2&gt;
&lt;p&gt;Wenn du bis hierher gelesen hast und denkst: &amp;quot;Okay, aber was mache ich eigentlich am Montag?&amp;quot;, hier sind vier konkrete Dinge, die du diese Woche überprüfen kannst.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Teste deine Dokumente durch eine KI.&lt;/strong&gt; Öffne Claude oder ChatGPT und bitte sie, dein Produkt in ein realistisches Szenario zu integrieren. Nutze nicht dein internes Wissen. Schau dir einfach an, was die KI produziert. Ist es korrekt? Ist es aktuell? Verwendet sie die richtigen Endpunkte, die richtige SDK-Version, den richtigen Authentifizierungsfluss? Wenn die KI etwas falsch macht, ist es das, was die Bauherren jetzt bekommen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Überprüfe, ob die Inhalte veraltet sind.&lt;/strong&gt; Nimm deine fünf meistbesuchten Dokumentationsseiten und frage: Wann wurde diese Seite zuletzt überarbeitet? Beschreiben sie immer noch den aktuellen Stand des Produkts? Wenn du diese Frage nicht sicher beantworten kannst, kann das auch eine KI nicht. Das ist die wichtigste Maßnahme für die meisten Teams.&lt;/p&gt;
&lt;p&gt;**3. Liefern Sie maschinenlesbare Formate ** Wenn Sie keine &lt;code&gt;/llms.txt&lt;/code&gt;-Datei haben, erstellen Sie eine. Wenn deine API-Referenz nur als gerendertes HTML vorliegt, exportiere die OpenAPI-Rohdaten und mache sie zugänglich. Wenn deine Dokumente in einem CMS sind, das keine sauberen Markdown-Dateien ausgibt, ist das ein Problem, das du jetzt lösen solltest.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Füge Überprüfungsdaten und Freshness-Metadaten hinzu.&lt;/strong&gt; Selbst etwas Einfaches wie ein &lt;code&gt;last-reviewed&lt;/code&gt;-Feld in deinem Content Management System, ein obligatorischer Überprüfungszyklus für stark frequentierte Seiten. Das gibt sowohl den Menschen als auch der KI ein Signal, ob die Inhalte vertrauenswürdig sind. Tools wie Rasepi können dies &lt;a href=&quot;https://www.tcdev.de/features/freshness&quot;&gt;mit einem erzwungenen Ablauf auf Blockebene&lt;/a&gt; automatisieren, aber auch ein manueller Prozess ist besser als nichts.&lt;/p&gt;
&lt;h2&gt;Der stille Wandel in der Darstellung von Produkten&lt;/h2&gt;
&lt;p&gt;Es gibt noch eine weitere Konsequenz, die es wert ist, direkt angesprochen zu werden.&lt;/p&gt;
&lt;p&gt;Deine Dokumentation ist nicht mehr nur ein Referenzhandbuch für Entwickler. Sie ist das Ausgangsmaterial, das KI-Assistenten nutzen, um dein Produkt in der Welt zu repräsentieren. Wenn ein Entwickler Claude fragt, wie er dein Produkt nutzen kann, wird Claudes Antwort von dem geprägt, was er in deinen Unterlagen finden und analysieren kann.&lt;/p&gt;
&lt;p&gt;Gute Dokumente, gute Antwort. Veraltet, mehrdeutig, in HTML eingeschlossen, das für ein Modell schwer zu analysieren ist? Schlechte Antwort oder eine falsche Antwort. So einfach ist das.&lt;/p&gt;
&lt;p&gt;Die Qualität der KI-Antwort zu deinem Produkt ist jetzt ein direkter Indikator für die Erfahrung deiner Entwickler. Die meisten Unternehmen behandeln das noch nicht so.&lt;/p&gt;
&lt;p&gt;Stripe, Vercel, Cloudflare und Anthropic sind die Vorreiter in diesem Bereich und behandeln die Lesbarkeit der KI als ein erstklassiges Anliegen. Eine grundlegende Anforderung, die bestimmt, wie die Dokumentation geschrieben, strukturiert und gepflegt wird. Das ist kein Thema für das nächste Quartal.&lt;/p&gt;
&lt;p&gt;Der Entwickler, der gerade in Claude sitzt, beschreibt, was er bauen will, und erwartet, dass der Code innerhalb von Minuten funktioniert. Er wird vielleicht nie wieder eine Dokumentationsseite besuchen. Aber die KI, die sie bedient, wird es tun. Ständig.&lt;/p&gt;
&lt;p&gt;Diese KI ist jetzt dein häufigster Leser. Die Frage ist nur, ob deine Dokumente darauf vorbereitet sind.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Die beste Strategie für das Entwicklererlebnis im Jahr 2026 ist kein Konferenzvortrag oder eine Schnellstartanleitung. Sie muss sicherstellen, dass die KI es richtig macht.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;*Dieser Beitrag bezieht sich auf öffentlich zugängliche Forschungsergebnisse und Produktdokumentationen. Die Statistiken stammen aus &lt;a href=&quot;https://github.blog/news-insights/research/survey-ai-wave-grows/&quot;&gt;GitHub&#39;s 2024 developer survey&lt;/a&gt;, der &lt;a href=&quot;https://survey.stackoverflow.co/2024/&quot;&gt;Stack Overflow 2024 Developer Survey&lt;/a&gt;, &lt;a href=&quot;https://www.index.dev/blog/developer-productivity-statistics-with-ai-tools&quot;&gt;Index.dev&#39;s 2026 developer productivity report&lt;/a&gt;, &lt;a href=&quot;https://www.incremys.com/en/resources/blog/claude-statistics&quot;&gt;Incremys Claude statistics&lt;/a&gt; und &lt;a href=&quot;https://fortune.com/2025/12/02/how-anthropics-safety-first-approach-won-over-big-business-and-how-its-own-engineers-are-using-its-claude-ai/&quot;&gt;Fortune&#39;s reporting on Anthropic&lt;/a&gt;. Die /llms.txt-Spezifikation wird auf &lt;a href=&quot;https://llmstxt.org/&quot;&gt;llmstxt.org&lt;/a&gt; gepflegt. Das Model Context Protocol ist unter &lt;a href=&quot;https://modelcontextprotocol.io/&quot;&gt;modelcontextprotocol.io&lt;/a&gt; dokumentiert.&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="documentation" />
    <category term="developer-experience" />
  </entry>
  <entry>
    <title>Im Inneren der Translation Engine: Glossare, Stilregeln und intelligente Rückübersetzung</title>
    <link href="https://www.tcdev.de/de/blog/inside-the-translation-engine-glossaries-style-rules-and-smart-retranslation/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/inside-the-translation-engine-glossaries-style-rules-and-smart-retranslation/</id>
    <updated>2026-03-31T00:00:00Z</updated>
    <summary>Ein detaillierter technischer Überblick über die Funktionsweise der Übersetzungspipeline von Rasepi: Glossarauflösung, DeepL Stilregeln und benutzerdefinierte Anweisungen, Hashing von Inhalten und die Integration, die alles miteinander verbindet.</summary>
    <content type="html">&lt;p&gt;Unser &lt;a href=&quot;https://www.tcdev.de/de/blog/how-plugin-guardrail-and-pipeline-systemss-work/&quot;&gt;vorheriger Architektur-Beitrag&lt;/a&gt; behandelte Plugins, Action Guards und das Pipeline-System. In diesem Beitrag gehen wir näher auf die Übersetzungs-Engine ein, die Rasepi meiner Meinung nach grundlegend von allen anderen Dokumentationsplattformen unterscheidet.&lt;/p&gt;
&lt;p&gt;Es geht nicht um das Marketing, dass Absätze statt Seiten übersetzt werden. Der eigentliche Code. Wie Glossare pro Tenant aufgelöst werden, wie die Stilregeln und benutzerdefinierten Anweisungen von DeepL jede Übersetzung beeinflussen, wie Content Hashing die Erkennung von veralteten Inhalten steuert und wie der Orchestrator entscheidet, welche Blöcke neu übersetzt werden.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/de/blog/img/translation-engine-deep-dive.svg&quot; alt=&quot;Translation Engine: Glossare, Stilregeln und intelligente Neuübersetzung&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Die Übersetzungspipeline&lt;/h2&gt;
&lt;p&gt;Wenn ein Benutzer ein Dokument speichert, übersetzt das System nicht einfach alles neu. Es führt eine ganz bestimmte Sequenz durch:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Es zerlegt das TipTap JSON in einzelne Blöcke&lt;/li&gt;
&lt;li&gt;Inhalts-Hashes vergleichen, um festzustellen, welche Blöcke sich tatsächlich geändert haben&lt;/li&gt;
&lt;li&gt;Löse für geänderte Blöcke das Glossar und die Stilregel-Liste des Tenants für das Sprachpaar auf&lt;/li&gt;
&lt;li&gt;Wende Stilregeln, benutzerdefinierte Anweisungen und Formalitäten aus der Tenant-Konfiguration an&lt;/li&gt;
&lt;li&gt;Sende nur geänderte Blöcke an DeepL&lt;/li&gt;
&lt;li&gt;Übersetzungsblöcke aktualisieren und Inhaltshashes synchronisieren&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jeder Schritt ist ein eigener Dienst mit einer eigenen Schnittstelle. Das ist wichtig, weil jeder Schritt gegen einen anderen ausgetauscht werden kann: einen anderen Übersetzungsanbieter, einen anderen Hash-Algorithmus oder eine andere Glossarquelle.&lt;/p&gt;
&lt;h2&gt;Glossarauflösung: mieterübergreifend, DeepL-synchronisiert&lt;/h2&gt;
&lt;p&gt;DeepL Glossare haben eine Einschränkung, von der die meisten Menschen nichts wissen: **Sie sind unveränderlich. ** Du kannst ein DeepL Glossar nicht bearbeiten. Jede Änderung bedeutet, dass das alte Glossar gelöscht und ein neues erstellt wird.&lt;/p&gt;
&lt;p&gt;Rasepi behandelt dies, indem es die Datenbank als Quelle der Wahrheit und DeepL Glossare als Wegwerf-Artefakte zur Laufzeit behandelt. Die Entität &lt;code&gt;TenantGlossary&lt;/code&gt; speichert alles lokal:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantGlossary : ITenantScoped
{
    public Guid Id { get; set; }
    public Guid TenantId { get; set; }
    public string Name { get; set; }
    public string SourceLanguage { get; set; }     // e.g. &amp;quot;en&amp;quot;
    public string TargetLanguage { get; set; }     // e.g. &amp;quot;de&amp;quot;
    public string? DeepLGlossaryId { get; set; }   // Runtime DeepL ID
    public DateTime? LastSyncedAt { get; set; }
    public bool IsDirty { get; set; } = true;      // Triggers re-sync
    public ICollection&amp;lt;TenantGlossaryEntry&amp;gt; Entries { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wenn ein Benutzer einen Glossareintrag hinzufügt, z.B. die Zuordnung von &amp;quot;Sprint Review&amp;quot; zu &amp;quot;Sprint-Überprüfung&amp;quot; für EN→DE, wird der Datenbankeintrag sofort aktualisiert und &lt;code&gt;IsDirty&lt;/code&gt; wird auf &lt;code&gt;true&lt;/code&gt; gesetzt. Das Glossar DeepL wird nicht sofort neu erstellt. Es wird erst nach und nach neu erstellt, wenn es das nächste Mal für eine Übersetzung benötigt wird.&lt;/p&gt;
&lt;h3&gt;Der Sync-Fluss&lt;/h3&gt;
&lt;p&gt;Vor jedem Übersetzungsaufruf löst das System das Glossar auf:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;string?&amp;gt; GetOrSyncDeepLGlossaryIdAsync(
    string sourceLanguage, string targetLanguage,
    CancellationToken ct = default)
{
    var glossary = await _db.TenantGlossaries
        .Include(g =&amp;gt; g.Entries)
        .FirstOrDefaultAsync(g =&amp;gt;
            g.SourceLanguage == sourceLanguage &amp;amp;&amp;amp;
            g.TargetLanguage == targetLanguage, ct);

    if (glossary is null || glossary.Entries.Count == 0)
        return null;

    if (!glossary.IsDirty &amp;amp;&amp;amp; glossary.DeepLGlossaryId is not null)
        return glossary.DeepLGlossaryId;

    // Dirty - delete old, create new
    if (glossary.DeepLGlossaryId is not null)
        await _deepL.DeleteGlossaryAsync(glossary.DeepLGlossaryId);

    var entries = glossary.Entries
        .ToDictionary(e =&amp;gt; e.SourceTerm, e =&amp;gt; e.TargetTerm);

    var deepLGlossary = await _deepL.CreateGlossaryAsync(
        $&amp;quot;rasepi-{glossary.Id}&amp;quot;,
        glossary.SourceLanguage,
        glossary.TargetLanguage,
        entries);

    glossary.DeepLGlossaryId = deepLGlossary.GlossaryId;
    glossary.IsDirty = false;
    glossary.LastSyncedAt = DateTime.UtcNow;
    await _db.SaveChangesAsync(ct);

    return glossary.DeepLGlossaryId;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Drei Dinge sind hier erwähnenswert:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lazy sync.&lt;/strong&gt; Wir rufen die DeepL API nur auf, wenn tatsächlich eine Übersetzung benötigt wird. Die Bearbeitung von Glossareinträgen löst nicht Dutzende von API-Aufrufen aus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mieterisolierung.&lt;/strong&gt; Die Abfrage durchläuft die globalen EF-Abfragefilter, sodass &lt;code&gt;TenantGlossaries&lt;/code&gt; automatisch gescannt wird. Die Glossareinträge von Tenant A gelangen nicht in die Übersetzungen von Tenant B.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ein Glossar pro Sprachenpaar.&lt;/strong&gt; DeepL erzwingt dies ohnehin. Ein EN→DE-Glossar, ein EN→FR-Glossar, und so weiter. Das &lt;code&gt;(SourceLanguage, TargetLanguage)&lt;/code&gt;-Paar ist pro Tenant eindeutig.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Glossar-Einträge&lt;/h3&gt;
&lt;p&gt;Einzelne Einträge sind nur Begriffszuordnungen:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantGlossaryEntry
{
    public Guid Id { get; set; }
    public Guid GlossaryId { get; set; }
    public string SourceTerm { get; set; }   // e.g. &amp;quot;Sprint Review&amp;quot;
    public string TargetTerm { get; set; }   // e.g. &amp;quot;Sprint-Überprüfung&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die API bietet dir vollständiges CRUD sowie CSV-Import/Export für die Massenverwaltung:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;POST   /admin/glossaries                       Create glossary
POST   /admin/glossaries/{id}/entries           Add term
PUT    /admin/glossaries/{id}/entries/{entryId}  Update term
DELETE /admin/glossaries/{id}/entries/{entryId}  Remove term
POST   /admin/glossaries/{id}/import            Import CSV
GET    /admin/glossaries/{id}/export            Export CSV
POST   /admin/glossaries/{id}/sync              Force DeepL sync
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Der CSV-Import ist besonders nützlich für Teams, die von bestehenden Translation-Memory-Systemen migrieren. Exportiere deine Begriffe, bereinige sie, importiere sie in Rasepi, und der nächste Übersetzungslauf verwendet das neue Glossar automatisch.&lt;/p&gt;
&lt;h2&gt;Stilregeln, benutzerdefinierte Anweisungen und Formalitäten&lt;/h2&gt;
&lt;p&gt;Glossare kümmern sich um die Terminologie. Aber Terminologie ist nur die halbe Miete. Eine Übersetzung kann alle richtigen Wörter verwenden und trotzdem falsch klingen. Falscher Ton, falsches Datumsformat, falsche Zeichensetzungskonventionen.&lt;/p&gt;
&lt;p&gt;Die &lt;strong&gt;Style Rules API&lt;/strong&gt; (v3) von DeepL schafft hier Abhilfe. Du kannst wiederverwendbare Stilregel-Listen erstellen, die zwei Arten von Steuerelementen kombinieren:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Konfigurierte Regeln&lt;/strong&gt;, vordefinierte Formatierungskonventionen für Daten, Zeiten, Satzzeichen, Zahlen und mehr&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Benutzerdefinierte Anweisungen&lt;/strong&gt;, Freitextanweisungen, die den Ton, die Formulierung und bereichsspezifische Konventionen bestimmen&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Rasepi erstellt und verwaltet diese pro Tenant und pro Zielsprache. Die Entität &lt;code&gt;TenantStyleRuleList&lt;/code&gt; speichert die DeepL &lt;code&gt;style_id&lt;/code&gt; neben den konfigurierten Regeln und benutzerdefinierten Anweisungen des Tenants:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantStyleRuleList : ITenantScoped
{
    public Guid Id { get; set; }
    public Guid TenantId { get; set; }
    public string Name { get; set; }
    public string TargetLanguage { get; set; }      // e.g. &amp;quot;de&amp;quot;
    public string? DeepLStyleId { get; set; }       // Runtime DeepL style_id
    public string ConfiguredRulesJson { get; set; }  // Serialized configured rules
    public bool IsDirty { get; set; } = true;
    public DateTime? LastSyncedAt { get; set; }
    public ICollection&amp;lt;TenantCustomInstruction&amp;gt; CustomInstructions { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Erstellen von Stilregel-Listen&lt;/h3&gt;
&lt;p&gt;Wenn ein Admin Übersetzungsregeln für Deutsch einrichtet, ruft Rasepi die v3 API von DeepL auf, um die Stilregel-Liste zu erstellen. So sieht das aus:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;string&amp;gt; CreateOrSyncStyleRuleListAsync(
    TenantStyleRuleList ruleList, CancellationToken ct = default)
{
    if (!ruleList.IsDirty &amp;amp;&amp;amp; ruleList.DeepLStyleId is not null)
        return ruleList.DeepLStyleId;

    // DeepL style rule lists are mutable - we can update in place
    if (ruleList.DeepLStyleId is not null)
    {
        // Replace configured rules on existing list
        await _httpClient.PutAsJsonAsync(
            $&amp;quot;v3/style_rules/{ruleList.DeepLStyleId}/configured_rules&amp;quot;,
            JsonSerializer.Deserialize&amp;lt;JsonElement&amp;gt;(ruleList.ConfiguredRulesJson),
            ct);

        // Sync custom instructions
        await SyncCustomInstructionsAsync(ruleList, ct);

        ruleList.IsDirty = false;
        ruleList.LastSyncedAt = DateTime.UtcNow;
        return ruleList.DeepLStyleId;
    }

    // Create new style rule list
    var payload = new
    {
        name = $&amp;quot;rasepi-{ruleList.TenantId}-{ruleList.TargetLanguage}&amp;quot;,
        language = ruleList.TargetLanguage,
        configured_rules = JsonSerializer.Deserialize&amp;lt;JsonElement&amp;gt;(
            ruleList.ConfiguredRulesJson),
        custom_instructions = ruleList.CustomInstructions.Select(ci =&amp;gt; new
        {
            label = ci.Label,
            prompt = ci.Prompt,
            source_language = ci.SourceLanguage
        })
    };

    var response = await _httpClient.PostAsJsonAsync(&amp;quot;v3/style_rules&amp;quot;, payload, ct);
    var result = await response.Content.ReadFromJsonAsync&amp;lt;StyleRuleResponse&amp;gt;(ct);

    ruleList.DeepLStyleId = result.StyleId;
    ruleList.IsDirty = false;
    ruleList.LastSyncedAt = DateTime.UtcNow;
    await _db.SaveChangesAsync(ct);

    return ruleList.DeepLStyleId;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Anders als Glossare sind DeepL Stilregel-Listen &lt;strong&gt;veränderbar&lt;/strong&gt;. Du kannst konfigurierte Regeln mit &lt;code&gt;PUT /v3/style_rules/{style_id}/configured_rules&lt;/code&gt; ersetzen, und benutzerdefinierte Anweisungen können individuell hinzugefügt, aktualisiert oder gelöscht werden. Das ist viel besser für die iterative Verfeinerung geeignet.&lt;/p&gt;
&lt;h3&gt;Wie konfigurierte Regeln aussehen&lt;/h3&gt;
&lt;p&gt;Konfigurierte Regeln decken Formatierungskonventionen ab, die je nach Sprache oder Firmenpräferenz variieren. Dinge wie:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;dates_and_times&amp;quot;: {
    &amp;quot;time_format&amp;quot;: &amp;quot;use_24_hour_clock&amp;quot;,
    &amp;quot;calendar_era&amp;quot;: &amp;quot;use_bc_and_ad&amp;quot;
  },
  &amp;quot;punctuation&amp;quot;: {
    &amp;quot;periods_in_academic_degrees&amp;quot;: &amp;quot;do_not_use&amp;quot;
  },
  &amp;quot;numbers&amp;quot;: {
    &amp;quot;decimal_separator&amp;quot;: &amp;quot;use_comma&amp;quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das hört sich trivial an, aber es wird schnell kompliziert. Ein deutsches Dokument, das das AM/PM-Zeitformat und durch Punkte getrennte Dezimalzahlen verwendet, liest sich für einen deutschen Leser einfach als &amp;quot;aus dem Englischen übersetzt&amp;quot;. Wenn du &lt;code&gt;use_24_hour_clock&lt;/code&gt; und &lt;code&gt;use_comma&lt;/code&gt; für Dezimaltrennzeichen in allen deutschen Übersetzungen einstellst, wird das sofort behoben.&lt;/p&gt;
&lt;h3&gt;Benutzerdefinierte Anweisungen: Das ist die wahre Macht&lt;/h3&gt;
&lt;p&gt;Benutzerdefinierte Anweisungen sind Freitextanweisungen, bis zu 200 pro Stilregel-Liste, jede mit bis zu 300 Zeichen. Damit sagst du DeepL, wie die Übersetzung aussehen soll, und zwar in einfacher Sprache:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantCustomInstruction
{
    public Guid Id { get; set; }
    public Guid StyleRuleListId { get; set; }
    public string Label { get; set; }              // e.g. &amp;quot;Tone instruction&amp;quot;
    public string Prompt { get; set; }             // e.g. &amp;quot;Use a friendly, diplomatic tone&amp;quot;
    public string? SourceLanguage { get; set; }    // Optional source lang filter
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Echte Beispiele von unseren Mietern:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Use a friendly, diplomatic tone&amp;quot;&lt;/code&gt; für ein Startup, das ansprechende Dokumente braucht&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Always use &#39;Sie&#39; form, never &#39;du&#39;&amp;quot;&lt;/code&gt; für eine deutsche Anwaltskanzlei&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Translate &#39;deployment&#39; as &#39;Bereitstellung&#39;, never &#39;Deployment&#39;&amp;quot;&lt;/code&gt; für Begriffe, die eine kontextabhängige Handhabung benötigen, die über eine einfache Glossarzuordnung hinausgeht&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Use British English spelling (colour, organisation, licence)&amp;quot;&lt;/code&gt; für britische Unternehmen, die zwischen englischen Varianten übersetzen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;Put currency symbols after the numeric amount&amp;quot;&lt;/code&gt; zur Anpassung an europäische Konventionen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Benutzerdefinierte Anweisungen sind sehr hilfreich, wenn es um domänenspezifische Konventionen geht, die nicht in Glossareinträge passen. Ein Glossar ordnet einen Begriff einem anderen zu. In einer benutzerdefinierten Anweisung kann stehen: &amp;quot;Wenn du API-Dokumente übersetzst, verwende den Imperativ statt des Passivs. Das ist eine ganz andere Art der Kontrolle.&lt;/p&gt;
&lt;h3&gt;Formalität&lt;/h3&gt;
&lt;p&gt;DeepL&#39;s &lt;code&gt;formality&lt;/code&gt; Parameter (&lt;code&gt;default&lt;/code&gt;, &lt;code&gt;more&lt;/code&gt;, &lt;code&gt;less&lt;/code&gt;, &lt;code&gt;prefer_more&lt;/code&gt;, &lt;code&gt;prefer_less&lt;/code&gt;) ist immer noch als separates Steuerelement neben Stilregeln verfügbar. Deutsch &amp;quot;du&amp;quot; versus &amp;quot;Sie&amp;quot;, Französisch &amp;quot;tu&amp;quot; versus &amp;quot;vous&amp;quot;, japanische Höflichkeitsstufen. Diese werden pro Mietersprache über &lt;code&gt;TenantLanguageConfig&lt;/code&gt; eingestellt:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public class TenantLanguageConfig : ITenantScoped
{
    public string LanguageCode { get; set; }
    public string DisplayName { get; set; }
    public bool IsEnabled { get; set; }
    public TranslationTrigger Trigger { get; set; }
    public string? Formality { get; set; }         // &amp;quot;more&amp;quot;, &amp;quot;less&amp;quot;, &amp;quot;prefer_more&amp;quot;, etc.
    public string? StyleRuleListId { get; set; }   // Links to TenantStyleRuleList
    public string? TranslationProvider { get; set; }
    public int SortOrder { get; set; }
    public bool IsDefault { get; set; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Formalitäten, Stilregeln und Glossare setzen sich zusammen. Ein einziger Übersetzungsaufruf kann alle drei enthalten:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var glossaryId = await GetOrSyncDeepLGlossaryIdAsync(sourceLang, targetLang, ct);
var styleId = await GetOrSyncStyleRuleListAsync(targetLang, ct);
var formality = tenantLanguageConfig.Formality ?? &amp;quot;default&amp;quot;;

// Build the v2/translate request payload
var payload = new
{
    text = new[] { blockContent },
    source_lang = NormalizeLanguageCode(sourceLang),
    target_lang = NormalizeLanguageCode(targetLang),
    glossary_id = glossaryId,
    style_id = styleId,
    formality = formality,
    preserve_formatting = true,
    context = surroundingContext,  // Adjacent blocks, not billed
    model_type = &amp;quot;quality_optimized&amp;quot;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Zwei Dinge sind hier erwähnenswert:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Der &lt;code&gt;context&lt;/code&gt; Parameter.&lt;/strong&gt; Wir übergeben benachbarte Blöcke als Kontext, um die Übersetzungsqualität zu verbessern. DeepL nutzt dies, um Mehrdeutigkeiten aufzulösen, übersetzt oder berechnet sie aber nicht. Ein Absatz über &amp;quot;Zellen&amp;quot; wird anders übersetzt, wenn der umgebende Kontext ein Biologiedokument und eine Tabellenkalkulationsanleitung ist.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modellauswahl.&lt;/strong&gt; Jede Anfrage mit &lt;code&gt;style_id&lt;/code&gt; oder &lt;code&gt;custom_instructions&lt;/code&gt; verwendet automatisch das &lt;code&gt;quality_optimized&lt;/code&gt; Modell von DeepL. Dies ist die höchste Qualitätsstufe. Du kannst sie nicht mit &lt;code&gt;latency_optimized&lt;/code&gt; kombinieren, und das ist eine bewusste Einschränkung von DeepL. Für die Stilanpassung brauchst du das komplette Modell.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Warum das wichtiger ist, als du denkst&lt;/h3&gt;
&lt;p&gt;Stell dir vor, ein Unternehmen schreibt interne Dokumente auf Deutsch mit dem formlosen &amp;quot;du&amp;quot; und wechselt in einem übersetzten Abschnitt plötzlich zum formellen &amp;quot;Sie&amp;quot;. Das sieht bestenfalls inkonsequent und schlimmstenfalls unprofessionell aus. Die Formalität regelt das. Aber die Formalität allein reicht nicht aus, um ein Dokument zu erkennen, das AM/PM-Zeitstempel verwendet, obwohl dein deutsches Büro das 24-Stunden-Format benutzt, oder das Währungssymbol vor die Zahl setzt, statt danach.&lt;/p&gt;
&lt;p&gt;Alles zusammen (Stilregeln, benutzerdefinierte Anweisungen, Formalitäten, Glossare) ergibt Übersetzungen, die sich so lesen, als hätte sie jemand aus deinem Team geschrieben. Nicht wie die Ausgabe einer Maschine, die nicht weiß, dass dein Unternehmen existiert.&lt;/p&gt;
&lt;h2&gt;Die DeepL Service-Schicht&lt;/h2&gt;
&lt;p&gt;Die gesamte DeepL Kommunikation läuft über &lt;code&gt;IDeepLService&lt;/code&gt;. Sie umhüllt das offizielle DeepL .NET SDK und verarbeitet v3 API-Aufrufe für Stilregeln:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IDeepLService
{
    // Text translation (v2)
    Task&amp;lt;TextResult&amp;gt; TranslateTextAsync(
        string text, string sourceLanguage, string targetLanguage,
        string? options = null);

    Task&amp;lt;TextResult[]&amp;gt; TranslateTextBatchAsync(
        IEnumerable&amp;lt;string&amp;gt; texts, string sourceLanguage,
        string targetLanguage, string? options = null);

    // Glossary management (v2)
    Task&amp;lt;GlossaryInfo&amp;gt; CreateGlossaryAsync(
        string name, string sourceLang, string targetLang,
        Dictionary&amp;lt;string, string&amp;gt; entries);
    Task DeleteGlossaryAsync(string glossaryId);
    Task&amp;lt;GlossaryInfo&amp;gt; GetGlossaryAsync(string glossaryId);
    Task&amp;lt;GlossaryInfo[]&amp;gt; ListGlossariesAsync();
    Task&amp;lt;Dictionary&amp;lt;string, string&amp;gt;&amp;gt; GetGlossaryEntriesAsync(
        string glossaryId);

    // Style rules (v3)
    Task&amp;lt;StyleRuleResponse&amp;gt; CreateStyleRuleListAsync(
        string name, string language,
        JsonElement configuredRules,
        IEnumerable&amp;lt;CustomInstructionRequest&amp;gt; customInstructions);
    Task ReplaceConfiguredRulesAsync(
        string styleId, JsonElement configuredRules);
    Task&amp;lt;CustomInstructionResponse&amp;gt; AddCustomInstructionAsync(
        string styleId, string label, string prompt,
        string? sourceLanguage = null);
    Task DeleteCustomInstructionAsync(
        string styleId, string instructionId);
    Task DeleteStyleRuleListAsync(string styleId);

    // Usage tracking
    Task&amp;lt;Usage&amp;gt; GetUsageAsync();
    Task&amp;lt;Language[]&amp;gt; GetSourceLanguagesAsync();
    Task&amp;lt;Language[]&amp;gt; GetTargetLanguagesAsync();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Implementierung kümmert sich um die Normalisierung des Sprachcodes. DeepL erfordert &lt;code&gt;EN-US&lt;/code&gt; oder &lt;code&gt;EN-GB&lt;/code&gt; anstelle des bloßen &lt;code&gt;en&lt;/code&gt; und &lt;code&gt;PT-PT&lt;/code&gt; oder &lt;code&gt;PT-BR&lt;/code&gt; anstelle von &lt;code&gt;pt&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;private static string NormalizeLanguageCode(string code)
    =&amp;gt; code.ToLower() switch
    {
        &amp;quot;en&amp;quot; =&amp;gt; &amp;quot;EN-US&amp;quot;,
        &amp;quot;pt&amp;quot; =&amp;gt; &amp;quot;PT-PT&amp;quot;,
        _ =&amp;gt; code.ToUpper()
    };
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Batch-Übersetzung verwendet 50-Elemente-Chunking, um die API-Grenzen von DeepL einzuhalten und gleichzeitig den Durchsatz zu maximieren:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;TranslationBatchResult&amp;gt; TranslateBatchAsync(
    Dictionary&amp;lt;string, string&amp;gt; texts,
    string sourceLanguage, string targetLanguage)
{
    var translations = new Dictionary&amp;lt;string, string&amp;gt;();
    long totalChars = 0;

    foreach (var chunk in texts.Chunk(50))
    {
        var results = await _deepL.TranslateTextBatchAsync(
            chunk.Select(kv =&amp;gt; kv.Value),
            sourceLanguage, targetLanguage);

        for (int i = 0; i &amp;lt; chunk.Length; i++)
        {
            translations[chunk[i].Key] = results[i].Text;
            totalChars += chunk[i].Value.Length;
        }
    }

    return new TranslationBatchResult
    {
        Translations = translations,
        BilledCharacters = totalChars
    };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Da wir nur veraltete Blöcke und nicht ganze Dokumente senden, enthält ein typischer Übersetzungsstapel für eine einzelne Bearbeitung 1-3 Blöcke statt 40+. Daher kommt die Kostenreduzierung von 94 %.&lt;/p&gt;
&lt;h2&gt;Der Übersetzungs-Orchestrator&lt;/h2&gt;
&lt;p&gt;Der &lt;code&gt;TranslationOrchestrator&lt;/code&gt; entscheidet, was mit den einzelnen Blöcken geschehen soll, wenn sich das Quelldokument ändert. Schauen wir uns den Entscheidungsbaum an:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task OrchestrateTranslationAsync(
    Guid entryId, List&amp;lt;Guid&amp;gt; changedBlockIds,
    CancellationToken ct = default)
{
    var entry = await _db.Entries
        .FirstOrDefaultAsync(e =&amp;gt; e.Id == entryId, ct);

    var translations = await _db.EntryTranslations
        .Where(t =&amp;gt; t.EntryId == entryId)
        .ToListAsync(ct);

    foreach (var translation in translations)
    {
        var langConfig = await GetLanguageConfigAsync(
            translation.Language, ct);

        var translationBlocks = await _db.TranslationBlocks
            .Where(tb =&amp;gt; changedBlockIds.Contains(tb.SourceBlockId)
                      &amp;amp;&amp;amp; tb.Language == translation.Language)
            .ToListAsync(ct);

        foreach (var block in translationBlocks)
        {
            if (block.IsLocked || block.TranslatedById is not null)
            {
                // Human-edited or locked - mark stale, don&#39;t overwrite
                block.Status = TranslationStatus.Stale;
            }
            else if (langConfig.Trigger == TranslationTrigger.AlwaysTranslate)
            {
                // Machine-translated, auto mode - retranslate now
                await RetranslateBlockAsync(block, translation.Language, ct);
            }
            else
            {
                // TranslateOnFirstVisit - mark stale, translate later
                block.Status = TranslationStatus.Stale;
            }
        }
    }

    await _db.SaveChangesAsync(ct);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Der wichtigste Punkt: &lt;strong&gt;Von Menschen bearbeitete Blöcke werden niemals automatisch überschrieben.&lt;/strong&gt; Wenn ein Übersetzer einen Block manuell angepasst hat, z. B. durch Hinzufügen von kulturellem Kontext oder eine klarere Formulierung, respektiert das System diese Arbeit. Es markiert den Block als veraltet, damit der Übersetzer weiß, dass sich die Quelle geändert hat, aber es ersetzt seine Änderungen nicht stillschweigend.&lt;/p&gt;
&lt;p&gt;Maschinell übersetzte Blöcke, bei denen &lt;code&gt;AlwaysTranslate&lt;/code&gt; aktiviert ist, werden sofort neu übersetzt. Maschinell übersetzte Blöcke mit &lt;code&gt;TranslateOnFirstVisit&lt;/code&gt; werden als veraltet markiert und übersetzt, wenn jemand das Dokument in dieser Sprache öffnet.&lt;/p&gt;
&lt;h2&gt;Übersetzungsauslöser: wann Übersetzungen stattfinden&lt;/h2&gt;
&lt;p&gt;Jede Sprache hat einen &lt;code&gt;TranslationTrigger&lt;/code&gt;, der das Timing steuert:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public enum TranslationTrigger
{
    AlwaysTranslate,         // Translate on every save
    TranslateOnFirstVisit    // Translate when first opened in that language
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;AlwaysTranslate&lt;/code&gt; ist nützlich für Sprachen mit hoher Priorität, bei denen du möchtest, dass die Übersetzungen sofort aktuell sind. Französisch für ein Unternehmen mit einer großen Niederlassung in Paris. Deutsch für ein Unternehmen mit Hauptsitz in München.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TranslateOnFirstVisit&lt;/code&gt; ist nützlich für Sprachen, die gelegentlich benötigt werden, aber nicht die API-Kosten wert sind, um sie immer auf dem neuesten Stand zu halten. Wenn jemand das Dokument in dieser Sprache öffnet, werden veraltete Blöcke sofort übersetzt.&lt;/p&gt;
&lt;p&gt;Beide Modi verwenden die gleiche Glossarauflösung, die gleichen Formalitätseinstellungen und das gleiche Content-Hashing. Der einzige Unterschied ist das Timing.&lt;/p&gt;
&lt;h2&gt;Einzigartige Anpassung von Inhalt und Struktur&lt;/h2&gt;
&lt;p&gt;Hier zahlt sich die Architektur über die reine Übersetzung hinaus wirklich aus.&lt;/p&gt;
&lt;p&gt;Wenn ein deutscher Übersetzer einen Abschnitt zur Einhaltung der DSGVO hinzufügt, den es im Englischen nicht gibt, fügt er ihn in der deutschen Version als neuen Block hinzu. Dieser Block hat keinen &lt;code&gt;SourceBlockId&lt;/code&gt;, er ist als einzigartiger Inhalt gekennzeichnet. Das System schickt ihn nie zur Neuübersetzung, weil es keine Quelle gibt, aus der er übersetzt werden kann. Er existiert nur auf Deutsch.&lt;/p&gt;
&lt;p&gt;Wenn ein japanischer Übersetzer eine Aufzählung in eine nummerierte Liste umwandelt (eine gängige Konvention in der japanischen Fachliteratur), bleibt das &lt;code&gt;IsStructureAdapted&lt;/code&gt;-Kennzeichen des Blocks auch in zukünftigen Übersetzungszyklen erhalten:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var translation = new TranslationBlock
{
    SourceBlockId = sourceBlockId,
    Language = targetLanguage,
    BlockType = translatedBlockType,
    SourceBlockType = sourceBlock.BlockType,
    IsStructureAdapted = translatedBlockType != sourceBlock.BlockType,
    StructureAdaptationNotes = &amp;quot;Numbered list preferred in JP technical docs&amp;quot;,
    SourceContentHash = sourceBlock.ContentHash,
    Status = TranslationStatus.UpToDate,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das &lt;code&gt;IsNoTranslate&lt;/code&gt; Flag behandelt Inhalte, die wortwörtlich kopiert werden sollen: Codeblöcke, URLs, Produktnamen, mathematische Notationen. Der Übersetzungsanbieter überspringt diese komplett.&lt;/p&gt;
&lt;h2&gt;Alles zusammenfügen&lt;/h2&gt;
&lt;p&gt;Gehen wir den gesamten Ablauf durch. Ein Benutzer in London bearbeitet einen Absatz im englischen Quelldokument, und dein Münchner Büro hat Deutsch auf &lt;code&gt;AlwaysTranslate&lt;/code&gt; eingestellt:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Benutzer speichert.&lt;/strong&gt; TipTap sendet JSON an die API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blockextraktion und Änderungserkennung.&lt;/strong&gt; &lt;code&gt;CreateBlocksFromDocumentAsync&lt;/code&gt; analysiert JSON, berechnet die Hashes der Inhalte neu und vergleicht die alten und neuen Hashes, um festzustellen, welche Blöcke sich tatsächlich geändert haben.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orchestrator läuft.&lt;/strong&gt; Findet den deutschen &lt;code&gt;EntryTranslation&lt;/code&gt;, überprüft den deutschen Block. Er ist maschinell übersetzt, nicht gesperrt und nicht von Menschenhand bearbeitet, also kann er neu übersetzt werden.&lt;/li&gt;
&lt;li&gt;**Übersetzungskonfiguration geladen ** Glossar-ID über &lt;code&gt;GetOrSyncDeepLGlossaryIdAsync(&amp;quot;en&amp;quot;, &amp;quot;de&amp;quot;)&lt;/code&gt; aufgelöst, Stilregeln über &lt;code&gt;GetOrSyncStyleRuleListAsync(&amp;quot;de&amp;quot;)&lt;/code&gt;, Formalität auf &amp;quot;mehr&amp;quot; (formal &amp;quot;Sie&amp;quot;) gesetzt, benachbarte Blöcke als Kontext für die Disambiguierung übergeben.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeepL Aufruf.&lt;/strong&gt; Ein einzelner Block wird mit Glossar-ID, Stil-ID, Formalität und Kontext gesendet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Block aktualisiert.&lt;/strong&gt; Übersetzter Inhalt gespeichert, &lt;code&gt;SourceContentHash&lt;/code&gt; synchronisiert, Status auf &lt;code&gt;UpToDate&lt;/code&gt; gesetzt. Ein Block anstelle von 40+ übersetzt. Die restlichen 39 Blöcke? Unangetastet.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In deinem Büro in Tokio ist Japanisch auf &lt;code&gt;TranslateOnFirstVisit&lt;/code&gt; gesetzt. Die gleiche Bearbeitung markiert den japanischen Übersetzungsblock als &lt;code&gt;Stale&lt;/code&gt;. Wenn jemand in Tokio das Dokument öffnet, werden die Schritte 5-9 im Handumdrehen ausgeführt. Ihre Strukturanpassung (nummerierte Liste) bleibt erhalten. Ihre einzigartigen Blöcke bleiben genau dort, wo sie sind.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Meiner Meinung nach ist die Übersetzungsmaschine der Teil von Rasepi, der den größten sichtbaren Nutzen bringt. Übersetzungen, die deine Terminologie verwenden, deine Formatierungskonventionen befolgen, deine eigenen Anweisungen befolgen, deinen Tonfall treffen, die Arbeit deiner Übersetzer respektieren und nur einen Bruchteil dessen kosten, was eine vollständige Neuübersetzung kosten würde. Die Architektur sorgt dafür, dass all das automatisch abläuft, und hält sich aus dem Weg, wenn Menschen die Arbeit übernehmen wollen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dieselbe DeepL Engine, die die schriftlichen Übersetzungen antreibt, treibt auch Talk to Docs an, unsere dialogorientierte Dokumentationsoberfläche, bei der DeepL Voice die gesprochene Interaktion übernimmt. Dieselben Glossare, dieselben Stilregeln, dieselbe Formalität, dieselbe Konsistenz. Ob dein Team die Dokumentation liest oder mit ihr spricht, die Sprachqualität ist identisch.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.rasepi.com/&quot;&gt;Erkunde die Übersetzungs-API →&lt;/a&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="architecture" />
    <category term="translation" />
    <category term="deepl" />
  </entry>
  <entry>
    <title>Es ist besser, mit Dokumenten zu sprechen, als sie zu lesen</title>
    <link href="https://www.tcdev.de/de/blog/why-talking-to-documents-feels-better-than-reading/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/why-talking-to-documents-feels-better-than-reading/</id>
    <updated>2026-03-10T00:00:00Z</updated>
    <summary>Lesen ist mächtig, aber anstrengend. Konversation ist älter, schneller und natürlicher. Wenn du zu Informationen sprichst, fühlt es sich oft leichter an, als wenn du Seiten von Text liest.</summary>
    <content type="html">&lt;p&gt;Es gibt einen Grund, warum die Leute sagen: &amp;quot;Lass uns darüber reden&amp;quot;, wenn etwas komplex ist.&lt;/p&gt;
&lt;p&gt;Wenn wir versuchen, eine neue Idee zu verstehen, ein Problem zu lösen oder uns unter Druck an einen Prozess zu erinnern, ist ein Gespräch oft einfacher als Lesen. Nicht, weil Lesen schlecht ist. Lesen ist eines der mächtigsten Werkzeuge, die der Mensch je entwickelt hat. Aber Lesen ist eine erlernte Fähigkeit, die auf etwas viel Älterem aufbaut: dem Sprechen.&lt;/p&gt;
&lt;p&gt;Wir sprechen, lange bevor wir lesen.&lt;/p&gt;
&lt;p&gt;Das ist wichtiger, als man denkt, vor allem jetzt, wo ein Großteil des weltweiten Wissens in Dokumenten, Wikis, PDFs und langen internen Seiten steckt, die niemand öffnen will, wenn er nicht unbedingt muss.&lt;/p&gt;
&lt;h2&gt;Lesen wird gelernt. Konversation ist angeboren.&lt;/h2&gt;
&lt;p&gt;Die Menschen haben sehr lange gesprochen, bevor sie etwas aufgeschrieben haben. Kinder lernen auf natürliche Weise, gesprochene Sprache zu verstehen. Zum Lesen braucht man ausdrückliche Anweisungen, Wiederholungen und jahrelange Übung.&lt;/p&gt;
&lt;p&gt;Selbst für sehr gebildete Erwachsene ist Lesen immer noch ein bewussterer Akt als Zuhören oder Sprechen. Es erfordert visuelle Konzentration, kontinuierliche Aufmerksamkeit, ein Arbeitsgedächtnis und die Interpretation von Strukturen auf der Seite. Du entschlüsselst Symbole, zerlegst Sätze, stellst Zusammenhänge her und entscheidest, was wichtig ist.&lt;/p&gt;
&lt;p&gt;Konversation funktioniert anders. Wenn Informationen in gesprochener, interaktiver Form übermittelt werden, macht das Gehirn eine andere Erfahrung:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es fühlt sich sequentiell und nicht visuell überwältigend an&lt;/li&gt;
&lt;li&gt;Es gibt sofortiges Feedback und Klarheit&lt;/li&gt;
&lt;li&gt;Es reduziert die Notwendigkeit, große Textblöcke zu scannen und zu filtern&lt;/li&gt;
&lt;li&gt;Es spiegelt die Art und Weise wider, wie Menschen bereits im echten Leben um Hilfe bitten&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dieser letzte Punkt ist sehr wichtig. Unter Unsicherheit wollen die meisten Menschen nicht instinktiv 1.500 Wörter lesen. Sie wollen fragen: &lt;em&gt;&amp;quot;Was mache ich als Nächstes?&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Reden senkt die kognitive Reibung&lt;/h2&gt;
&lt;p&gt;Ein Dokument ist statisch. Es enthält alles auf einmal.&lt;/p&gt;
&lt;p&gt;Das klingt nützlich, und oft ist es das auch. Aber es schafft auch Reibung. Eine Seite voller Überschriften, Aufrufe, Links, Notizen, Beispiele und Sonderfälle zwingt den Leser zu entscheiden, was er ignorieren soll. Das ist kognitiv teuer.&lt;/p&gt;
&lt;p&gt;Wenn du mit einem Informationssystem sprichst, machst du in der Regel die gegenteilige Erfahrung: Erst die Relevanz, dann die Details.&lt;/p&gt;
&lt;p&gt;Du stellst eine Frage. Du bekommst eine Antwort. Dann stellst du eine Folgefrage.&lt;/p&gt;
&lt;p&gt;Dieses Interaktionsmuster reduziert den mentalen Aufwand auf mehrere wichtige Arten:&lt;/p&gt;
&lt;h3&gt;1. Es grenzt den Problemraum ein&lt;/h3&gt;
&lt;p&gt;Ein vollständiges Dokument zeigt die gesamte Landschaft. Ein Gespräch zeigt den nächsten nützlichen Schritt.&lt;/p&gt;
&lt;p&gt;Wenn jemand fragt: &lt;em&gt;&amp;quot;Wie bringe ich einen neuen Ingenieur an Bord?&amp;quot;&lt;/em&gt; will er in der Regel nicht gleich das ganze Handbuch. Sie wollen eine Orientierung. Mit einem Gespräch können sie klein anfangen und nur bei Bedarf erweitern.&lt;/p&gt;
&lt;h3&gt;2. Es schont das Arbeitsgedächtnis&lt;/h3&gt;
&lt;p&gt;Beim Lesen musst du mehrere Dinge im Kopf behalten, während du nach der relevanten Stelle suchst. Gesprochene oder konversationelle Interaktion macht diese Anstrengung überflüssig. Das System übernimmt einen Großteil des Filterns für dich.&lt;/p&gt;
&lt;h3&gt;3. Es fühlt sich sozial vertraut an&lt;/h3&gt;
&lt;p&gt;Wir Menschen sind an den gegenseitigen Austausch gewöhnt. Wir fragen. Jemand antwortet. Wir verfeinern. Sie klären. Diese Schleife ist eine der ältesten Formen des Lernens, die wir kennen.&lt;/p&gt;
&lt;p&gt;Selbst wenn der &amp;quot;Jemand&amp;quot; ein System ist, fühlt sich die Struktur immer noch natürlich an.&lt;/p&gt;
&lt;h2&gt;Lesen ist nicht passiv. Das ist genau der Punkt.&lt;/h2&gt;
&lt;p&gt;Ein Grund, warum sich Reden leichter anfühlen kann, ist, dass Lesen nicht so mühelos ist, wie die Leute annehmen. Geübte Leser/innen lassen es mühelos aussehen, aber der Prozess ist sehr aktiv.&lt;/p&gt;
&lt;p&gt;Um gut zu lesen, musst du das tun:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eine Struktur erkennen&lt;/li&gt;
&lt;li&gt;auf die Bedeutung schließen&lt;/li&gt;
&lt;li&gt;Zweideutigkeiten auflösen&lt;/li&gt;
&lt;li&gt;den Kontext im Gedächtnis behalten&lt;/li&gt;
&lt;li&gt;einen Abschnitt mit einem anderen zu verbinden&lt;/li&gt;
&lt;li&gt;entscheiden, wann man überfliegt und wann man langsamer wird&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das ist echte kognitive Arbeit.&lt;/p&gt;
&lt;p&gt;In vielen Situationen lohnt sich diese Arbeit. Tiefgehendes Lesen hilft bei Nuancen, Präzision und langfristigem Verständnis. Aber in anderen Situationen, vor allem wenn jemand müde, gestresst oder überlastet ist oder einfach nur versucht, sich zu befreien, ist Reden oft die geistig leichtere Option.&lt;/p&gt;
&lt;p&gt;Das gilt besonders am Arbeitsplatz, wo die Menschen normalerweise nicht unter idealen Bedingungen an die Dokumentation herangehen. Sie sind es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mitten in der Arbeit&lt;/li&gt;
&lt;li&gt;unterbrochen&lt;/li&gt;
&lt;li&gt;im Kontext wechselnd&lt;/li&gt;
&lt;li&gt;versuchen, etwas schnell zu lösen&lt;/li&gt;
&lt;li&gt;oft schon leicht frustriert&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In diesem Zustand kann sich der &lt;em&gt;konversationelle Zugang&lt;/em&gt; zu Informationen dramatisch besser anfühlen als der Zugriff auf eine Seite.&lt;/p&gt;
&lt;h2&gt;Sprechen verändert die Beziehung zu Informationen&lt;/h2&gt;
&lt;p&gt;Es gibt hier auch eine emotionale Dimension.&lt;/p&gt;
&lt;p&gt;Dokumente können sich formell und distanziert anfühlen. Sie implizieren: &lt;em&gt;Lies das alles, verstehe es richtig und übersehe nichts Wichtiges.&lt;/em&gt; Das kann als Nachschlagewerk nützlich sein, aber es kann auch zum Zögern anregen.&lt;/p&gt;
&lt;p&gt;Konversation fühlt sich freizügig an. Du kannst vage sein. Du kannst schlecht fragen. Du kannst Verwirrung zugeben. Du kannst sagen: &lt;em&gt;&amp;quot;Ich weiß nicht wirklich, wonach ich suche, aber ich brauche die Sache mit den Zugangsanfragen.&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Das ist wichtig, denn die Leute meiden Unterlagen oft nicht, weil sie Informationen nicht mögen, sondern weil sie den Aufwand und die Ungewissheit scheuen, die damit verbunden sind, den richtigen Teil der Unterlagen zu finden.&lt;/p&gt;
&lt;p&gt;Reden baut diese Barriere ab.&lt;/p&gt;
&lt;h2&gt;Warum das jetzt wichtig ist&lt;/h2&gt;
&lt;p&gt;Lange Zeit mussten Dokumente gelesen werden, weil es keine praktische Alternative gab. Die Suche erleichterte das Auffinden von Seiten, aber sie änderte das Interaktionsmodell nicht. Du musstest die Seite immer noch öffnen, sie einscannen und das herausziehen, was du brauchst.&lt;/p&gt;
&lt;p&gt;Das ändert sich jetzt.&lt;/p&gt;
&lt;p&gt;Da die Benutzeroberflächen immer dialogorientierter werden, erwarten die Menschen zunehmend, dass sie auf Informationen reagieren, anstatt einfach nur zu existieren. Sie wollen in einfacher Sprache nach dem fragen, was sie brauchen, und etwas erhalten, das auf den jeweiligen Moment zugeschnitten ist.&lt;/p&gt;
&lt;p&gt;Das macht das Lesen nicht überflüssig. Es verändert nur seine Rolle.&lt;/p&gt;
&lt;p&gt;Das Lesen wird zur Tiefenschicht. Die Konversation wird zur Zugangsebene.&lt;/p&gt;
&lt;p&gt;Die besten Systeme werden beides unterstützen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sprechen, wenn du Orientierung oder Geschwindigkeit brauchst&lt;/li&gt;
&lt;li&gt;Lesen, wenn du Tiefe, Überprüfung oder vollen Kontext brauchst&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Das Risiko einer zu starken Vereinfachung&lt;/h2&gt;
&lt;p&gt;Es gibt einen wichtigen Vorbehalt: Mit Informationen zu sprechen fühlt sich nur dann besser an, wenn die Antworten zuverlässig sind.&lt;/p&gt;
&lt;p&gt;Wenn eine Dialogschnittstelle nur unvollständige, irreführende oder zu selbstsichere Antworten gibt, ist das Erlebnis schlechter als das Lesen, weil es dem Nutzer die Möglichkeit nimmt, das Quellmaterial direkt zu prüfen.&lt;/p&gt;
&lt;p&gt;Die Zukunft liegt also nicht darin, &amp;quot;alle Dokumente durch Sprache zu ersetzen&amp;quot;. Die Zukunft liegt darin, den Menschen einen menschlicheren Zugang zu Dokumenten zu ermöglichen, ohne die Tiefe und Präzision zu verlieren, die schriftliches Wissen bietet.&lt;/p&gt;
&lt;p&gt;Dieses Gleichgewicht ist wichtig. Gespräche sind einfacher, aber Dokumente haben immer noch die dauerhafte Struktur, die Details und die Verantwortlichkeit, die Organisationen brauchen.&lt;/p&gt;
&lt;h2&gt;Eine menschlichere Schnittstelle zum Wissen&lt;/h2&gt;
&lt;p&gt;Der tiefere Punkt ist einfach: Menschen denken nicht von Natur aus in Seiten. Sie denken in Fragen, Geschichten, Fragmenten und Dialogen.&lt;/p&gt;
&lt;p&gt;Wir fragen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Was bedeutet das?&lt;/li&gt;
&lt;li&gt;Was muss ich zuerst tun?&lt;/li&gt;
&lt;li&gt;Was ist das Wichtigste?&lt;/li&gt;
&lt;li&gt;Kannst du das anders erklären?&lt;/li&gt;
&lt;li&gt;Was hat sich geändert?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das sind Gesprächsmanöver, keine Lesemanöver.&lt;/p&gt;
&lt;p&gt;Wenn es sich also leichter anfühlt, mit Informationen zu sprechen als sie zu lesen, ist das kein Zeichen von Denkfaulheit. Es ist in der Regel ein Zeichen dafür, dass die Schnittstelle der Art und Weise entspricht, wie das Gehirn Ungewissheit am liebsten angeht.&lt;/p&gt;
&lt;p&gt;Lesen bleibt wichtig. Aber als Einstieg in das Wissen fühlt sich das Gespräch oft besser an, weil es dem entspricht, was wir von Natur aus sind.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wir sind nicht in erster Linie Leser. Wir sind in erster Linie Redner. Die intuitivsten Wissenssysteme werden sich das merken.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="voice" />
    <category term="knowledge" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>Dokumentationsplattformen für eine andere Ära</title>
    <link href="https://www.tcdev.de/de/blog/why-confluence-and-notion-are-struggling-in-the-ai-era/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/why-confluence-and-notion-are-struggling-in-the-ai-era/</id>
    <updated>2026-03-08T00:00:00Z</updated>
    <summary>Confluence und Notion wurden für eine Dokumentation aus der Zeit vor der künstlichen Intelligenz entwickelt. Sie können sich weiterentwickeln, aber etablierte Plattformen sind strukturell belastet. Neuere Systeme können vom ersten Tag an für KI entwickelt werden.</summary>
    <content type="html">&lt;p&gt;Confluence und Notion sind keine schlechten Produkte. Das muss gleich zu Beginn klar gesagt werden.&lt;/p&gt;
&lt;p&gt;Sie waren aus guten Gründen erfolgreich. Confluence wurde in vielen Unternehmen zur &lt;a href=&quot;https://www.atlassian.com/software/confluence&quot;&gt;Standard-Heimat für interne Dokumentation&lt;/a&gt;, weil es Teams einen zentralen Ort zum Schreiben, Organisieren und Teilen von Wissen bot. Notion &lt;a href=&quot;https://www.notion.com/about&quot;&gt;überzeugte&lt;/a&gt; durch seine Flexibilität, die übersichtlichere Schreibweise und eine modernere Produktoberfläche.&lt;/p&gt;
&lt;p&gt;Beide Plattformen lösten echte Probleme in der Zeit, für die sie entwickelt wurden.&lt;/p&gt;
&lt;p&gt;Das Problem ist nun, dass sich die Welt um sie herum schneller verändert hat als ihre Grundlagen.&lt;/p&gt;
&lt;p&gt;Wir leben nicht mehr in einer Welt, in der Dokumentation nur geschrieben, gespeichert und durchsucht werden muss. Wir befinden uns in einer Welt, in der zunehmend erwartet wird, dass Dokumentation vorhanden ist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;maschinenlesbar&lt;/li&gt;
&lt;li&gt;auf Aktualität bedacht&lt;/li&gt;
&lt;li&gt;sicher für KI-Abfragen&lt;/li&gt;
&lt;li&gt;strukturiert genug für die Automatisierung&lt;/li&gt;
&lt;li&gt;dynamisch über Sprachen und Zielgruppen hinweg&lt;/li&gt;
&lt;li&gt;kontinuierlich vertrauenswürdig, nicht nur verfügbar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das ist eine andere Messlatte.&lt;/p&gt;
&lt;h2&gt;Sie wurden für ein Vor-AI-Modell des Wissens entwickelt.&lt;/h2&gt;
&lt;p&gt;Traditionelle Dokumentationsplattformen wurden auf der Grundlage einer einfachen Annahme entwickelt: Wenn die Seite existiert und durchsuchbar ist, ist das Problem weitgehend gelöst.&lt;/p&gt;
&lt;p&gt;Das war gut genug, als der Hauptnutzer noch ein Mensch war, der ein Wiki öffnete, die Seite überflog und ein Urteil abgab. In diesem Modell bestand die Aufgabe der Plattform darin, das Verfassen und Navigieren zu erleichtern.&lt;/p&gt;
&lt;p&gt;KI ändert die Aufgabenbeschreibung.&lt;/p&gt;
&lt;p&gt;Jetzt speichert die Plattform nicht nur Wissen für Menschen. Sie produziert Quellenmaterial für Systeme, die das Wissen automatisch abrufen, einordnen, zusammenfassen und Fragen beantworten.&lt;/p&gt;
&lt;p&gt;Das bringt neue Anforderungen mit sich, denen ältere Architekturen keine Priorität einräumten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Welche Inhalte sind im Moment vertrauenswürdig?&lt;/li&gt;
&lt;li&gt;Welche Seiten sind veraltet, aber noch durchsuchbar?&lt;/li&gt;
&lt;li&gt;Welche Abschnitte wurden kürzlich geändert?&lt;/li&gt;
&lt;li&gt;Welche Sprachversion ist aktuell?&lt;/li&gt;
&lt;li&gt;Welcher Inhalt ist ein Entwurf, archiviert, regionsspezifisch oder wenig vertrauenswürdig?&lt;/li&gt;
&lt;li&gt;Welche Dokumente sollten ganz von den KI-Antworten ausgeschlossen werden?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eine Plattform, die nicht für diese Fragen entwickelt wurde, muss sie nachrüsten. Das ist immer schwieriger, als sie von Anfang an zu entwickeln.&lt;/p&gt;
&lt;h2&gt;Die Stärke des Erbes wird zum Nachteil des Erbes&lt;/h2&gt;
&lt;p&gt;Etablierte Produkte haben Vorteile: Vertrieb, Ökosystem, Marke, Vertrautheit mit den Kunden, Integrationen und Teams, die wissen, wie man liefert. Aber genau diese Stärken können den Strukturwandel verlangsamen.&lt;/p&gt;
&lt;p&gt;Warum? Weil ausgereifte Plattformen Verpflichtungen mit sich bringen.&lt;/p&gt;
&lt;p&gt;Sie haben:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jahrelang angesammelte Produktentscheidungen&lt;/li&gt;
&lt;li&gt;eine große installierte Basis mit bestehenden Arbeitsabläufen&lt;/li&gt;
&lt;li&gt;Erwartungen an die Abwärtskompatibilität&lt;/li&gt;
&lt;li&gt;Plugins und Erweiterungen, die auf altem Verhalten basieren&lt;/li&gt;
&lt;li&gt;Datenmodelle, die für die Anwendungsfälle von gestern optimiert sind&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wenn eine Plattform wie Confluence oder Notion eine wirklich neue Funktion hinzufügen will, muss sie diese Funktion oft um das bestehende System herum und nicht durch dieses hindurch integrieren.&lt;/p&gt;
&lt;p&gt;Das ist die Herausforderung, die sich aus dem Bestehenden ergibt: Du baust nicht nur die Zukunft, sondern nimmst auch die Vergangenheit mit.&lt;/p&gt;
&lt;h2&gt;Das Hinzufügen von KI-Funktionen ist nicht das Gleiche wie KI-nativ zu werden.&lt;/h2&gt;
&lt;p&gt;Viele etablierte Plattformen legen jetzt KI oben drauf. Zusammenfassungen. Schreibhilfe. Verbesserte Suche. Q&amp;amp;A-Schnittstellen. Confluence verfügt über [Atlassian Intelligence] (https://www.atlassian.com/platform/intelligence), Notion über [Notion AI] (https://www.notion.com/product/ai) und GitBook über eine [KI-gestützte Suche] (https://docs.gitbook.com/product-tour/searching-your-content/gitbook-ai). Das sind nützliche Funktionen. Einige von ihnen sind gut.&lt;/p&gt;
&lt;p&gt;Aber es gibt einen bedeutenden Unterschied zwischen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dem Hinzufügen von KI-Funktionen zu einem Dokumentationsprodukt&lt;/li&gt;
&lt;li&gt;der Entwicklung eines Dokumentationsprodukts, dessen Kernarchitektur von Anfang an auf KI ausgerichtet ist&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der erste Ansatz führt oft zu unterstützenden Funktionen am Rande. Der zweite Ansatz verändert die Grundlage.&lt;/p&gt;
&lt;p&gt;Eine KI-native Wissensplattform stellt von Anfang an andere Designfragen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wie sollten Dokumente strukturiert sein, damit Systeme sicher auf sie zugreifen können?&lt;/li&gt;
&lt;li&gt;Wie soll Vertrauen dargestellt werden?&lt;/li&gt;
&lt;li&gt;Welche Metadaten müssen erstklassig und nicht optional sein?&lt;/li&gt;
&lt;li&gt;Wie sollte die Sichtbarkeit veralteter Inhalte verringert werden?&lt;/li&gt;
&lt;li&gt;Wie sollten Antworten eingeschränkt werden, wenn die zugrunde liegenden Quellen schwach sind?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das sind architektonische Fragen, keine Funktionsfragen.&lt;/p&gt;
&lt;h2&gt;Frische Plattformen haben einen vorübergehenden Vorteil&lt;/h2&gt;
&lt;p&gt;Hier können neuere Plattformen gewinnen, zumindest für eine gewisse Zeit.&lt;/p&gt;
&lt;p&gt;Eine neue Plattform hat die Freiheit, sich an den Zwängen von heute und nicht an den Gewohnheiten von gestern zu orientieren. Sie muss nicht ein Jahrzehnt an Annahmen darüber festhalten, was ein Dokument ist oder wie sich ein Wiki verhalten sollte. Sie kann frühzeitig andere Entscheidungen treffen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frische als ein Konzept erster Klasse behandeln&lt;/li&gt;
&lt;li&gt;Quellensicherheit für Menschen und Maschinen sichtbar machen&lt;/li&gt;
&lt;li&gt;umfangreichere Metadaten über den Zustand der Inhalte zu speichern&lt;/li&gt;
&lt;li&gt;Mehrsprachige Workflows in das Kernmodell einbauen, anstatt sie aufzuschrauben&lt;/li&gt;
&lt;li&gt;die Entscheidung, dass Suche und KI-Retrieval nach Vertrauen und nicht nur nach Relevanz bewertet werden sollten&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Diese Freiheit ist wichtig.&lt;/p&gt;
&lt;p&gt;In der Technologiebranche sind die etablierten Unternehmen oft in stabilen Zeiten am stärksten. Neue Marktteilnehmer sind oft am stärksten, wenn sich das Modell selbst verändert.&lt;/p&gt;
&lt;p&gt;Die KI-Ära ist eine dieser Veränderungen.&lt;/p&gt;
&lt;h2&gt;Warum dies für Confluence besonders schwer ist&lt;/h2&gt;
&lt;p&gt;Confluence ist leistungsstark, aber es stammt aus einer älteren Weltanschauung. Es wurde um [Teambereiche, Seiten, hierarchische Navigation] (https://support.atlassian.com/confluence-cloud/docs/use-spaces-to-organize-your-work/) und ein [Plugin-reiches Unternehmensmodell] (https://marketplace.atlassian.com/) herum aufgebaut. Diese Entscheidungen waren sinnvoll. Für viele Organisationen sind sie immer noch sinnvoll.&lt;/p&gt;
&lt;p&gt;Aber sie bedeuten auch, dass das Produkt eine Menge Komplexität mit sich bringt. Unternehmensplattformen können sich selten einfach neu erfinden. Sie müssen sich mit ihrer eigenen Geschichte auseinandersetzen.&lt;/p&gt;
&lt;p&gt;Das macht die Modernisierung langsamer. Nicht unmöglich. Nur langsamer.&lt;/p&gt;
&lt;p&gt;Wenn die Anforderungen der KI-Ära sauberere Metadaten, eine explizitere Vertrauensmodellierung oder eine stärker meinungsgeprägte Content Governance erfordern, kann ein System, das durch jahrelange Erweiterungen auf maximale Flexibilität ausgelegt ist, Schwierigkeiten haben, zusammenhängend zu funktionieren.&lt;/p&gt;
&lt;h2&gt;Warum dies für Notion besonders schwierig ist&lt;/h2&gt;
&lt;p&gt;Notion hat ein anderes Problem. Es fühlt sich neuer, leichter und flexibler an. Aber die Flexibilität kann auch gegen ihn arbeiten.&lt;/p&gt;
&lt;p&gt;Die Stärke von Notion ist, dass [fast alles zu einer Seite, einer Datenbank, einer Notiz, einem leichtgewichtigen Dokument oder einem Raum für die Zusammenarbeit werden kann] (https://www.notion.com/product). Diese Flexibilität ist großartig für Teams. Weniger gut ist sie, wenn du starke Garantien darüber brauchst, was der Inhalt bedeutet, in welchem Zustand er sich befindet und ob er von einem KI-System als vertrauenswürdige Quelle verwendet werden sollte.&lt;/p&gt;
&lt;p&gt;Je freier eine Plattform ist, desto schwieriger ist es, später eine verlässliche Semantik durchzusetzen.&lt;/p&gt;
&lt;p&gt;KI-Systeme leben von Strukturen, expliziten Metadaten und Vertrauenssignalen. Flexible, universell einsetzbare Arbeitsbereiche benötigen oft viel Interpretation, bevor ihre Inhalte für diese Art der Nutzung sicher sind.&lt;/p&gt;
&lt;h2&gt;All das bedeutet nicht, dass sie dem Untergang geweiht sind.&lt;/h2&gt;
&lt;p&gt;Es wäre eine faule Analyse zu sagen, dass Confluence und Notion sich nicht anpassen können. Natürlich können sie das.&lt;/p&gt;
&lt;p&gt;Sie haben kluge Teams, große Ressourcen und starke Anreize. Sie werden mehr KI-Funktionen anbieten. Sie werden die Abfrage, die Autorenunterstützung, die Zusammenfassungen, die Governance und die strukturierten Workflows verbessern. Mit der Zeit werden sie einen Großteil der Lücke schließen.&lt;/p&gt;
&lt;p&gt;Aber das Timing ist wichtig.&lt;/p&gt;
&lt;p&gt;Bei einem solchen Wandel ist oft derjenige im Vorteil, der am schnellsten neue Annahmen aufstellt. Neuere Plattformen können sich kohärenter bewegen, weil sie nicht so viel nachrüsten müssen. Das verschafft ihnen ein Zeitfenster.&lt;/p&gt;
&lt;p&gt;Es ist vielleicht kein dauerhaftes Fenster. Aber es ist real.&lt;/p&gt;
&lt;h2&gt;Die nächste Phase der Dokumentationsplattformen&lt;/h2&gt;
&lt;p&gt;Die nächste Generation von Dokumentationswerkzeugen wird wahrscheinlich weniger danach beurteilt werden, wie gut sie Menschen Seiten schreiben lassen, sondern eher danach, wie gut sie Wissen als vertrauenswürdiges System verwalten.&lt;/p&gt;
&lt;p&gt;Das bedeutet, dass die Gewinner wahrscheinlich fünf Dinge gut machen werden:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sie werden Vertrauen explizit modellieren.&lt;/li&gt;
&lt;li&gt;Sie unterscheiden aktuelles Wissen von veraltetem Wissen.&lt;/li&gt;
&lt;li&gt;Sie behandeln die KI-Abfrage als eine zentrale Produktoberfläche, nicht als Zusatz.&lt;/li&gt;
&lt;li&gt;Sie unterstützen mehrsprachiges und zielgruppenspezifisches Wissen ohne Fragmentierung.&lt;/li&gt;
&lt;li&gt;Sie geben den Teams mehr Kontrolle darüber, welche Informationen für wen und unter welchen Bedingungen zugänglich sind.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Das ist eine andere Kategorie als das klassische Wiki.&lt;/p&gt;
&lt;h2&gt;Warum Neustarts wichtig sind&lt;/h2&gt;
&lt;p&gt;Es gibt Momente in der Softwarebranche, in denen ein neues Produkt einen Vorteil hat, nicht weil die etablierten Unternehmen inkompetent sind, sondern weil die Vergangenheit teuer ist.&lt;/p&gt;
&lt;p&gt;Dies ist einer dieser Momente.&lt;/p&gt;
&lt;p&gt;Eine neue Plattform kann vom ersten Tag an entscheiden, dass Dokumente nicht nur Seiten sind. Sie sind aktive Quellen für Menschen, Agenten, Suchsysteme und KI-Assistenten. Diese Annahme verändert alles, was danach kommt.&lt;/p&gt;
&lt;p&gt;Confluence und Notion können diesen Weg gehen. Aber der Weg dorthin ist länger, weil sie Systeme umwandeln müssen, die für eine andere Ära optimiert waren.&lt;/p&gt;
&lt;p&gt;Diese Umwandlung braucht Zeit. In der Zwischenzeit haben neuere Plattformen die Möglichkeit zu definieren, wie eine moderne Wissensinfrastruktur aussehen sollte.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Der größte Vorteil einer neuen Plattform ist nicht die Neuheit. Es ist die Freiheit von alten Annahmen, und zwar genau dann, wenn diese Annahmen nicht mehr funktionieren.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Dies ist ein perspektivischer Beitrag. Behauptungen über Konkurrenzprodukte basieren auf öffentlich zugänglichen Produktdokumentationen und Ankündigungen vom März 2026. Wir haben großen Respekt vor Confluence und Notion - sie sind hervorragende Produkte, die Millionen von Teams gute Dienste leisten.&lt;/em&gt;&lt;/p&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="ai" />
    <category term="platforms" />
    <category term="documentation" />
  </entry>
  <entry>
    <title>Einblick in die Rasepi-Architektur: Plugins, Action Guards und Pipelines</title>
    <link href="https://www.tcdev.de/de/blog/how-plugin-guardrail-and-pipeline-systems-work/" rel="alternate" type="text/html" />
    <id>https://www.tcdev.de/de/blog/how-plugin-guardrail-and-pipeline-systems-work/</id>
    <updated>2026-03-06T00:00:00Z</updated>
    <summary>Eine ausführliche technische Erklärung, wie das Plugin-System, die Action Guard Pipeline und die Block-Level Translation Engine von Rasepi tatsächlich funktionieren, mit echtem Code aus der Codebasis.</summary>
    <content type="html">&lt;p&gt;Die meisten Dokumentationsplattformen sprechen über &amp;quot;Erweiterbarkeit&amp;quot; wie Fluggesellschaften über &amp;quot;Beinfreiheit&amp;quot;. Technisch vorhanden, praktisch enttäuschend. Ich wollte, dass die Architektur von Rasepi wirklich erweiterbar ist, ohne unvorhersehbar zu werden, also haben wir drei ineinandergreifende Systeme entwickelt: &lt;strong&gt;Plugins&lt;/strong&gt; für Fähigkeiten, &lt;strong&gt;Action Guards&lt;/strong&gt; für die Kontrolle und &lt;strong&gt;Pipelines&lt;/strong&gt; für die deterministische Ausführung.&lt;/p&gt;
&lt;p&gt;In diesem Beitrag erfährst du, wie jedes dieser Systeme in unserer aktuellen Codebasis funktioniert.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/de/blog/img/architecture-pipeline.svg&quot; alt=&quot;Rasepi-Architektur: Plugins, Wachen und Pipelines arbeiten zusammen&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Das Plugin-System: modular aufgebaut&lt;/h2&gt;
&lt;p&gt;Jedes Plugin in Rasepi implementiert &lt;code&gt;IPluginModule&lt;/code&gt;, eine einzelne Schnittstelle, die erklärt, was das Plugin ist, welche Dienste es braucht und welche Routen es offenlegt:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IPluginModule
{
    PluginManifest Manifest { get; }
    void RegisterServices(IServiceCollection services);
    void MapRoutes(IEndpointRouteBuilder routes);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Der &lt;code&gt;PluginManifest&lt;/code&gt; ist ein reiner Datenblock. Er beschreibt das Plugin, ohne etwas auszuführen:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class PluginManifest
{
    public required string Id { get; init; }
    public required string Name { get; init; }
    public required string Version { get; init; }
    public string Description { get; init; }
    public string Category { get; init; }
    public IReadOnlyDictionary&amp;lt;string, string&amp;gt; UiContributions { get; init; }
    public bool HasSettings { get; init; }
    public bool HasEndpoints { get; init; }
    public IReadOnlyList&amp;lt;string&amp;gt; Dependencies { get; init; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Beachte &lt;code&gt;UiContributions&lt;/code&gt;. Dieses Wörterbuch ordnet Frontend-Erweiterungspunkte den Komponentennamen zu, damit das Vue-Frontend weiß, welche UI-Komponenten jedes Plugin beisteuert (eine Schaltfläche in der Symbolleiste, ein Seitenleisten-Panel, eine Einstellungsseite).&lt;/p&gt;
&lt;h3&gt;Die Registrierung erfolgt in einer Zeile pro Plugin.&lt;/h3&gt;
&lt;p&gt;Beim Start registrieren wir Plugins über eine fließende API:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var pluginRegistry = new PluginRegistry();

pluginRegistry
    .AddPlugin&amp;lt;WorkflowPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;RulesPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;RetentionPluginModule&amp;gt;(builder.Services)
    .AddPlugin&amp;lt;ClassificationPluginModule&amp;gt;(builder.Services);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jeder Aufruf instanziiert das Modul, speichert es in der Registry und ruft &lt;code&gt;RegisterServices()&lt;/code&gt; auf, um seine Abhängigkeiten zu verdrahten. Nachdem die App gebaut wurde, werden in einer einzigen Zeile alle Plugin-Routen zugeordnet:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;app.MapPluginRoutes(pluginRegistry);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Unter der Haube erhält jedes Plugin unter &lt;code&gt;/plugins/{pluginId}/&lt;/code&gt; eine skalierte Routengruppe, auf die automatisch eine Autorisierung angewendet wird.&lt;/p&gt;
&lt;h3&gt;Reales Beispiel: das Workflow-Plugin&lt;/h3&gt;
&lt;p&gt;Hier siehst du, wie ein echtes Plugin aussieht, das Modul Workflow &amp;amp; Genehmigungen:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class WorkflowPluginModule : IPluginModule
{
    public const string PluginId = &amp;quot;workflow&amp;quot;;

    public PluginManifest Manifest { get; } = new()
    {
        Id = PluginId,
        Name = &amp;quot;Workflow &amp;amp; Approvals&amp;quot;,
        Version = &amp;quot;1.0.0&amp;quot;,
        Description = &amp;quot;Adds approval workflows to entry publishing.&amp;quot;,
        Category = &amp;quot;Workflow&amp;quot;,
        HasSettings = true,
        HasEndpoints = true,
        UiContributions = new Dictionary&amp;lt;string, string&amp;gt;
        {
            [&amp;quot;entry.toolbar.publish&amp;quot;] = &amp;quot;WorkflowPublishButton&amp;quot;,
            [&amp;quot;entry.sidebar.status&amp;quot;]  = &amp;quot;WorkflowStatusPanel&amp;quot;,
            [&amp;quot;hub.admin.settings&amp;quot;]    = &amp;quot;WorkflowHubSettings&amp;quot;,
        }
    };

    public void RegisterServices(IServiceCollection services)
    {
        services.AddScoped&amp;lt;IWorkflowService, WorkflowService&amp;gt;();
        services.AddScoped&amp;lt;IActionGuard, WorkflowPublishGuard&amp;gt;();
    }

    public void MapRoutes(IEndpointRouteBuilder routes)
    {
        WorkflowEndpoints.Map(routes);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Kernplattform verweist niemals direkt auf &lt;code&gt;WorkflowService&lt;/code&gt; oder &lt;code&gt;WorkflowPublishGuard&lt;/code&gt;. Sie findet sie über den DI-Container. Das ist der Schlüssel zur Null-Kopplung. Die Kernapplikation berührt nie den Plugin-Code.&lt;/p&gt;
&lt;h2&gt;Action Guards: die Kontrollschicht&lt;/h2&gt;
&lt;p&gt;Plugins fügen Fähigkeiten hinzu. Action Guards entscheiden, ob diese Fähigkeit oder eine Kernaktion ausgeführt werden darf. Sie sind synchrone Prüfer, die Operationen vor der Ausführung abfangen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.tcdev.de/de/blog/img/action-guard-flow.svg&quot;&gt;Aktionswächter-Bewertungsablauf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Die Schnittstelle ist absichtlich minimal:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IActionGuard
{
    string PluginId { get; }
    string? ActionName { get; }  // null means guard ALL actions

    Task&amp;lt;ActionGuardResult&amp;gt; EvaluateAsync(
        ActionGuardContext context,
        IServiceProvider services,
        CancellationToken ct = default);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wenn &lt;code&gt;ActionName&lt;/code&gt; auf &lt;code&gt;null&lt;/code&gt; steht, läuft die Wache für jede Aktion. Wenn sie auf etwas wie &lt;code&gt;&amp;quot;Entry.Publish&amp;quot;&lt;/code&gt; gesetzt ist, fängt sie nur diese spezielle Aktion ab.&lt;/p&gt;
&lt;h3&gt;Die Kontext- und Ergebnisverträge&lt;/h3&gt;
&lt;p&gt;Jeder Guard erhält einen typisierten Kontext mit dem Aktionsnamen, dem Tenant, dem User, der Entität und einer Property Bag:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed record ActionGuardContext(
    string ActionName,
    Guid TenantId,
    Guid UserId,
    Guid EntityId,
    IReadOnlyDictionary&amp;lt;string, object?&amp;gt; Properties)
{
    public T? Get&amp;lt;T&amp;gt;(string key) =&amp;gt;
        Properties.TryGetValue(key, out var v) &amp;amp;&amp;amp; v is T typed
            ? typed : default;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Und jeder Guard liefert ein vorhersehbares Ergebnis: allow, deny oder allow-with-modifications:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed record ActionGuardResult
{
    public bool IsAllowed { get; init; }
    public string? ReasonCode { get; init; }
    public string? Message { get; init; }
    public IReadOnlyDictionary&amp;lt;string, object?&amp;gt;? Modifications { get; init; }

    public static ActionGuardResult Allow() =&amp;gt;
        new() { IsAllowed = true };

    public static ActionGuardResult Deny(
        string reasonCode, string message) =&amp;gt;
        new() { IsAllowed = false, ReasonCode = reasonCode, Message = message };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das Feld &lt;code&gt;Modifications&lt;/code&gt; ist wichtig. Ein Guard kann eine Aktion genehmigen, aber einen Teil des Inhalts umschreiben (zum Beispiel Geheimnisse vor der Veröffentlichung löschen).&lt;/p&gt;
&lt;h3&gt;Kanonische Aktionsnamen&lt;/h3&gt;
&lt;p&gt;Wir definieren alle abfangbaren Aktionen als String-Konstanten, damit es keine Unklarheiten darüber gibt, worauf ein Guard abzielen kann:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public static class ActionNames
{
    public static class Entry
    {
        public const string Create  = &amp;quot;Entry.Create&amp;quot;;
        public const string Save    = &amp;quot;Entry.Save&amp;quot;;
        public const string Publish = &amp;quot;Entry.Publish&amp;quot;;
        public const string Delete  = &amp;quot;Entry.Delete&amp;quot;;
        public const string Archive = &amp;quot;Entry.Archive&amp;quot;;
        public const string Renew   = &amp;quot;Entry.Renew&amp;quot;;
    }

    public static class Hub
    {
        public const string Create = &amp;quot;Hub.Create&amp;quot;;
        public const string Delete = &amp;quot;Hub.Delete&amp;quot;;
        public const string TransferOwnership = &amp;quot;Hub.TransferOwnership&amp;quot;;
    }

    public static class Translation
    {
        public const string Create  = &amp;quot;Translation.Create&amp;quot;;
        public const string Publish = &amp;quot;Translation.Publish&amp;quot;;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Reales Beispiel: Veröffentlichen ohne Genehmigung blockieren&lt;/h3&gt;
&lt;p&gt;Das Workflow-Plugin registriert einen Guard, der &lt;code&gt;Entry.Publish&lt;/code&gt; abfängt:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class WorkflowPublishGuard : IActionGuard
{
    public string PluginId =&amp;gt; WorkflowPluginModule.PluginId;
    public string? ActionName =&amp;gt; ActionNames.Entry.Publish;

    public async Task&amp;lt;ActionGuardResult&amp;gt; EvaluateAsync(
        ActionGuardContext context,
        IServiceProvider services,
        CancellationToken ct = default)
    {
        var db = services.GetRequiredService&amp;lt;RasepiDbContext&amp;gt;();
        var entry = await db.Entries
            .AsNoTracking()
            .FirstOrDefaultAsync(e =&amp;gt; e.Id == context.EntityId, ct);

        if (entry is null)
            return ActionGuardResult.Allow();

        var workflowService = services.GetRequiredService&amp;lt;IWorkflowService&amp;gt;();
        var check = await workflowService
            .CheckPublishAllowedAsync(entry.Id, entry.HubId);

        if (check.IsAllowed)
            return ActionGuardResult.Allow();

        return ActionGuardResult.Deny(
            &amp;quot;workflow.approval_required&amp;quot;,
            check.Message ?? &amp;quot;Approval required before publishing.&amp;quot;);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Kernplattform weiß nichts über Genehmigungsworkflows. Sie ruft lediglich &lt;code&gt;Entry.Publish&lt;/code&gt; über die Pipeline auf, und der Guard blockiert ihn, wenn der Workflow noch nicht abgeschlossen ist.&lt;/p&gt;
&lt;h2&gt;Die Aktionspipeline: wo alles zusammenläuft&lt;/h2&gt;
&lt;p&gt;Der &lt;code&gt;ActionPipeline&lt;/code&gt; ist der einzige Ausführungspfad für alle bewachten Vorgänge. Sie entscheidet, welche Guards gelten, wertet sie aus und führt die Aktion entweder aus oder blockiert sie.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class ActionPipeline : IActionPipeline
{
    public async Task&amp;lt;ActionPipelineResult&amp;gt; ExecuteAsync(
        string actionName,
        ActionGuardContext context,
        Func&amp;lt;Task&amp;gt; action,
        CancellationToken ct = default)
    {
        var result = await EvaluateAsync(actionName, context, ct);
        if (!result.IsAllowed) return result;

        await action();  // All guards passed — execute

        return result;   // Return modifications for caller
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die &lt;code&gt;EvaluateAsync&lt;/code&gt;-Methode erledigt die schwere Arbeit:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;ActionPipelineResult&amp;gt; EvaluateAsync(
    string actionName,
    ActionGuardContext context,
    CancellationToken ct = default)
{
    // 1. Which plugins are enabled for this tenant?
    var enabledPlugins = await _resolver.GetEnabledPluginIdsAsync();

    // 2. Which guards match this action?
    var applicable = _guards
        .Where(g =&amp;gt; enabledPlugins.Contains(g.PluginId))
        .Where(g =&amp;gt; g.ActionName == null || g.ActionName == actionName)
        .ToList();

    // 3. Evaluate each guard
    var denials = new List&amp;lt;ActionGuardResult&amp;gt;();
    var modifications = new List&amp;lt;ActionGuardResult&amp;gt;();

    foreach (var guard in applicable)
    {
        try
        {
            var guardResult = await guard.EvaluateAsync(context, _services, ct);
            if (!guardResult.IsAllowed)
                denials.Add(guardResult);
            else if (guardResult.Modifications?.Count &amp;gt; 0)
                modifications.Add(guardResult);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, &amp;quot;Guard threw. Treating as Allow.&amp;quot;);
        }
    }

    // 4. Any denial blocks the whole action
    if (denials.Count &amp;gt; 0)
        return ActionPipelineResult.Blocked(denials);

    return modifications.Count &amp;gt; 0
        ? ActionPipelineResult.Allowed(modifications)
        : ActionPipelineResult.Allowed();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hier gibt es drei wichtige Designentscheidungen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Per-Tenant-Auflösung.&lt;/strong&gt; Der &lt;code&gt;TenantPluginResolver&lt;/code&gt; überprüft, welche Plugins jeder Tenant installiert und aktiviert hat. Ein Guard für ein deaktiviertes Plugin wird nie ausgeführt.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alle müssen passieren.&lt;/strong&gt; Wenn ein Guard verweigert, wird die Aktion blockiert. Dies ist eine bewusste Sicherheitsmaßnahme.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wächterfehler scheitern offen.&lt;/strong&gt; Wenn ein Wächter eine Ausnahme auslöst, wird sie protokolliert und als &lt;code&gt;Allow()&lt;/code&gt; behandelt. Dadurch wird verhindert, dass ein fehlerhaftes Plugin die gesamte Plattform sperrt.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Pro-Tenant-Plugin-Auflösung&lt;/h3&gt;
&lt;p&gt;Der Resolver fragt die Tabelle &lt;code&gt;TenantPluginInstallations&lt;/code&gt; ab (die durch die globalen Abfragefilter von EF automatisch auf den aktuellen Tenant beschränkt wird):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public sealed class TenantPluginResolver : ITenantPluginResolver
{
    public async Task&amp;lt;IReadOnlySet&amp;lt;string&amp;gt;&amp;gt; GetEnabledPluginIdsAsync(
        CancellationToken ct = default)
    {
        if (_cache is not null) return _cache;

        var ids = await _db.TenantPluginInstallations
            .Where(i =&amp;gt; i.IsEnabled)
            .Select(i =&amp;gt; i.PluginId)
            .ToListAsync(ct);

        _cache = ids.ToHashSet();
        return _cache;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Ereignisgesteuerte Seiteneffekte&lt;/h2&gt;
&lt;p&gt;Aktionen sind synchron. Seiteneffekte sind es nicht. Nachdem eine Aktion abgeschlossen ist, veröffentlicht der Dienst ein Domänenereignis:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;await _eventPublisher.PublishAsync(
    EventNames.Entry.Created, entry.Id, new { entry.OriginalLanguage });
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Ereignisse werden in einen In-Memory-Kanal eingereiht und von einem &lt;code&gt;EventConsumerWorker&lt;/code&gt; im Hintergrund verarbeitet. Der Worker leitet die Ereignisse an mehrere Systeme weiter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aktivitätsverfolgung.&lt;/strong&gt; Protokolliert, wer was wann getan hat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Übersetzungsabrechnung.&lt;/strong&gt; Verfolgt die Kosten pro Anbieter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plugin-Event-Handler.&lt;/strong&gt; Jedes Plugin kann Domain-Events abonnieren&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plugin-Ereignishandler implementieren &lt;code&gt;IPluginEventHandler&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface IPluginEventHandler
{
    string PluginId { get; }
    IReadOnlyList&amp;lt;string&amp;gt; SubscribedEvents { get; }

    Task HandleAsync(
        string eventName, Guid entityId,
        Guid? tenantId, Guid? userId,
        string payloadJson, IServiceProvider services,
        CancellationToken ct = default);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Der Worker ruft nur Handler auf, deren Plugin für den Tenant aktiviert ist. Das bedeutet, dass die Nebeneffekte von Plugin A niemals in einen Tenant gelangen, in dem nur Plugin B installiert ist.&lt;/p&gt;
&lt;h2&gt;Die Übersetzungsmaschine auf Blockebene&lt;/h2&gt;
&lt;p&gt;Hier macht sich die Architektur am deutlichsten bemerkbar.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.tcdev.de/de/blog/img/block-translation.svg&quot; alt=&quot;Übersetzung auf Blockebene: nur geänderte Blöcke werden neu übersetzt&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Herkömmliche Plattformen übersetzen ganze Dokumente. Wir übersetzen einzelne &lt;strong&gt;Blöcke&lt;/strong&gt;: Absätze, Überschriften, Listenelemente. Wenn ein Benutzer einen Absatz in einem Dokument mit 50 Blöcken bearbeitet, muss nur dieser Absatz neu übersetzt werden. Das ist der Grund für unsere 94%ige Kostenersparnis.&lt;/p&gt;
&lt;h3&gt;Wie Blöcke aus TipTap JSON erstellt werden&lt;/h3&gt;
&lt;p&gt;Wenn ein Benutzer ein Dokument speichert, sendet der TipTap-Editor JSON wie folgt:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;type&amp;quot;: &amp;quot;doc&amp;quot;,
  &amp;quot;content&amp;quot;: [
    {
      &amp;quot;type&amp;quot;: &amp;quot;paragraph&amp;quot;,
      &amp;quot;attrs&amp;quot;: { &amp;quot;blockId&amp;quot;: &amp;quot;a1b2c3d4-...&amp;quot; },
      &amp;quot;content&amp;quot;: [{ &amp;quot;type&amp;quot;: &amp;quot;text&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Hello world&amp;quot; }]
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Der &lt;code&gt;BlockTranslationService&lt;/code&gt; parst dieses JSON und erstellt einzelne &lt;code&gt;EntryBlock&lt;/code&gt; Datensätze:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task&amp;lt;List&amp;lt;EntryBlock&amp;gt;&amp;gt; CreateBlocksFromDocumentAsync(
    Guid entryId, string language, string contentJson,
    int version, Guid userId)
{
    var doc = JsonDocument.Parse(contentJson);
    var content = doc.RootElement.GetProperty(&amp;quot;content&amp;quot;);

    int position = 0;
    foreach (var node in content.EnumerateArray())
    {
        var blockType = node.GetProperty(&amp;quot;type&amp;quot;).GetString();
        var blockJson = JsonSerializer.Serialize(node);

        // Strip metadata attrs before hashing
        var hashInput = StripBlockMetaAttrs(blockJson);

        var block = new EntryBlock
        {
            Id = ExtractOrGenerateBlockId(node),
            EntryId = entryId,
            Language = language,
            Position = position++,
            BlockType = blockType,
            ContentJson = blockJson,
            ContentHash = CalculateContentHash(hashInput),
            IsNoTranslate = ExtractNoTranslateFlag(node),
            Version = version,
        };

        _context.EntryBlocks.Add(block);
    }

    await _context.SaveChangesAsync();
    return blocks;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;SHA256 Hashing für Stale-Erkennung&lt;/h3&gt;
&lt;p&gt;Der Inhalts-Hash ist das Herzstück der Stale Detection. Wir hashen den Blockinhalt (nachdem wir Metadatenattribute wie &lt;code&gt;blockId&lt;/code&gt; und &lt;code&gt;deleted&lt;/code&gt; entfernt haben) mit SHA256:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;private string CalculateContentHash(string content)
{
    using var sha256 = SHA256.Create();
    var hashBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(content));
    return Convert.ToHexString(hashBytes);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wenn sich ein Quellblock ändert, ändert sich auch sein Hash. Das System vergleicht dann den &lt;code&gt;SourceContentHash&lt;/code&gt; jedes Übersetzungsblocks mit dem aktuellen Quell-Hash und markiert Unstimmigkeiten als &lt;code&gt;Stale&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task MarkTranslationsAsStaleAsync(List&amp;lt;Guid&amp;gt; changedBlockIds)
{
    var affected = await _context.TranslationBlocks
        .Where(t =&amp;gt; changedBlockIds.Contains(t.SourceBlockId))
        .ToListAsync();

    foreach (var translation in affected)
    {
        translation.Status = TranslationStatus.Stale;
        translation.UpdatedAt = DateTime.UtcNow;
    }

    await _context.SaveChangesAsync();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Strukturanpassung&lt;/h3&gt;
&lt;p&gt;Übersetzer können die Blocktypen in verschiedenen Sprachen ändern. Eine englische Aufzählungsliste kann zu einer deutschen nummerierten Liste werden, eine kulturelle Präferenz. Das System verfolgt dies:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;var translation = new TranslationBlock
{
    SourceBlockId = sourceBlockId,
    Language = targetLanguage,
    BlockType = translatedBlockType,
    SourceBlockType = sourceBlock.BlockType,
    IsStructureAdapted = translatedBlockType != sourceBlock.BlockType,
    SourceContentHash = sourceBlock.ContentHash,
    Status = TranslationStatus.UpToDate,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Übersetzungsanbieter als Plugins&lt;/h3&gt;
&lt;p&gt;Externe Übersetzungsdienste (DeepL, Google Translate, etc.) werden über &lt;code&gt;ITranslationProviderPlugin&lt;/code&gt; eingebunden:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public interface ITranslationProviderPlugin : IRasepiPlugin
{
    string[] GetSupportedLanguages();

    Task&amp;lt;string&amp;gt; TranslateAsync(
        string text, string sourceLanguage, string targetLanguage);

    Task&amp;lt;TranslationBatchResult&amp;gt; TranslateBatchAsync(
        Dictionary&amp;lt;string, string&amp;gt; texts,
        string sourceLanguage, string targetLanguage);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Batch-Methode erhält ein Wörterbuch mit den Block-IDs zum Inhalt, übersetzt sie alle und gibt die Übersetzungen mit einer abgerechneten Zeichenanzahl zurück. Da wir nur veraltete Blöcke und nicht das gesamte Dokument versenden, bleiben die Kosten minimal.&lt;/p&gt;
&lt;h2&gt;Mieterisolierung: das unsichtbare Sicherheitsnetz&lt;/h2&gt;
&lt;p&gt;Jedes der oben beschriebenen Systeme läuft innerhalb einer strengen Tenant Isolation.&lt;/p&gt;
&lt;p&gt;Der &lt;code&gt;TenantContextMiddleware&lt;/code&gt; löst bei jeder Anfrage den Tenant aus dem JWT auf und verifiziert die Mitgliedschaft:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;public async Task InvokeAsync(
    HttpContext context, TenantContext tenantContext, RasepiDbContext db)
{
    var tenantIdClaim = context.User.FindFirstValue(&amp;quot;tenant_id&amp;quot;);
    var userIdClaim = context.User.FindFirstValue(ClaimTypes.NameIdentifier);

    // Populate scoped context
    tenantContext.TenantId = Guid.Parse(tenantIdClaim);
    tenantContext.UserId = Guid.Parse(userIdClaim);

    // Verify membership — fail closed
    var membership = await db.TenantMemberships
        .Where(m =&amp;gt; m.TenantId == tenantContext.TenantId
                  &amp;amp;&amp;amp; m.UserId == tenantContext.UserId)
        .FirstOrDefaultAsync();

    if (membership == null)
    {
        context.Response.StatusCode = 401;
        return;  // No membership = no access
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die globalen Abfragefilter von Entity Framework stellen sicher, dass die Datenbankschicht die Filterung nach Tenant automatisch vornimmt, selbst wenn ein Entwickler sie vergisst:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-csharp&quot;&gt;modelBuilder.Entity&amp;lt;Hub&amp;gt;()
    .HasQueryFilter(h =&amp;gt; h.TenantId == _tenantContext.TenantId);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das Ergebnis: &lt;code&gt;db.Hubs.ToListAsync()&lt;/code&gt; gibt immer nur die Hubs des aktuellen Tenants zurück. Für Datenlecks muss der Abfragefilter aktiv umgangen werden, was in unserer Codebasis verboten ist.&lt;/p&gt;
&lt;h2&gt;Das vollständige Bild&lt;/h2&gt;
&lt;p&gt;Wenn ein Nutzer bei einem Eintrag auf &amp;quot;Veröffentlichen&amp;quot; klickt, passiert folgendes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Die Anfrage wird eingegeben&lt;/strong&gt; Die Authentifizierung validiert den JWT, &lt;code&gt;TenantContextMiddleware&lt;/code&gt; löst auf und verifiziert den Tenant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controller ruft die Pipeline auf.&lt;/strong&gt; &lt;code&gt;IActionPipeline.ExecuteAsync(&amp;quot;Entry.Publish&amp;quot;, context, action)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipeline löst Wachen auf.&lt;/strong&gt; Fragt ab, welche Plugins der Tenant aktiviert hat, und wählt die entsprechenden Wachen aus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Guards bewerten.&lt;/strong&gt; Der Workflow-Guard prüft auf Genehmigungen, der Retention-Guard auf Richtlinien, der Rules-Guard validiert den Inhalt. Alle bestanden? Der Eintrag wird veröffentlicht.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ereignisse werden ausgelöst.&lt;/strong&gt; Das Ereignis &lt;code&gt;Entry.Published&lt;/code&gt; wird in die Warteschlange gestellt. Ein Hintergrundworker protokolliert die Aktivitäten, aktualisiert die Übersetzungsabrechnung und ruft die Plugin-Event-Handler auf.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Übersetzungen von Blöcken werden überprüft.&lt;/strong&gt; Veraltete Blöcke werden zur Neuübersetzung identifiziert.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jede Ebene erledigt ihre Arbeit. Keine Schicht greift in eine andere ein. Das ist die Architektur.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wir haben sie nicht gebaut, weil Erweiterbarkeit gerade in Mode ist. Wir haben sie gebaut, weil eine Dokumentationsplattform, die sich nicht an die Arbeitsabläufe der einzelnen Teams anpassen kann, irgendwann durch eine ersetzt wird, die das kann. Und eine Plattform, die sich ohne Leitplanken anpasst, wird irgendwann etwas kaputt machen, das wichtig ist.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author><name>Tim Cadenbach</name></author>
    <category term="architecture" />
    <category term="plugins" />
    <category term="ai" />
  </entry>
</feed>
