[{"data":1,"prerenderedAt":1185},["ShallowReactive",2],{"/de-de/blog/building-an-ai-dev-workflow":3,"navigation-de-de":428,"banner-de-de":864,"footer-de-de":871,"blog-post-authors-de-de-Gregory Havenga":1127,"blog-related-posts-de-de-building-an-ai-dev-workflow":1141,"blog-share-wrapper-de-de":1165,"next-steps-de-de":1175},{"id":4,"title":5,"authors":6,"body":8,"category":409,"date":410,"description":411,"extension":412,"externalUrl":413,"faq":413,"featured":414,"heroImage":415,"meta":416,"navigation":417,"path":418,"seo":419,"slug":422,"stem":423,"tags":424,"template":426,"updatedDate":413,"__hash__":427},"blogPosts/de-de/blog/building-an-ai-dev-workflow.md","Vom Durcheinander zum Kontext: Wie man einen KI-Workflow aufbaut",[7],"Gregory Havenga",{"type":9,"value":10,"toc":397},"minimark",[11,15,18,34,54,57,62,65,72,78,84,90,120,126,130,136,144,147,153,156,162,171,180,184,187,206,209,215,224,227,236,239,242,246,255,258,261,268,271,275,278,284,290,293,296,300,303,309,312,315,318,322,325,328,345,348,352,358,367,370,373,376,379,382],[12,13,14],"p",{},"Es gibt eine ganz eigene Art von Frust: dieselbe Korrektur mehrfach in einer einzigen Session an eine KI-Assistenz zu richten. Die Wunder moderner großer Sprachmodelle (LLMs) sorgen dafür, dass man mit dem begeisterungsfähigsten Lehrling arbeitet, den man je haben wird. Nur hat dieser Lehrling zufällig auch Amnesie. \"Doch, ich will meine Commit-Nachrichten wirklich so formatiert haben, wir hatten dieses Gespräch schon dreimal.\"",[12,16,17],{},"Oder man kennt die Mühe, mehrere parallele KI-Sessions zu koordinieren, und sieht dann zu, wie sie unabhängig voneinander dieselben Probleme lösen und sich gegenseitig die Arbeit löschen.",[12,19,20,21,27,28,33],{},"Dieser Frust hat mich auf einen Weg des Ausprobierens gebracht. Ich habe an frühen Fassungen zweier GitLab-KI-Funktionen mitgearbeitet: ",[22,23,26],"a",{"href":24,"rel":25},"https://docs.gitlab.com/ee/user/application_security/analyze/duo/",[],"Explain this vulnerability"," und ",[22,29,32],{"href":30,"rel":31},"https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#vulnerability-resolution",[],"Resolve this vulnerability",". Damals wirkten sie naiv, und ich wollte mehr von ihnen.",[12,35,36,41,42,47,48,53],{},[22,37,40],{"href":38,"rel":39},"https://about.gitlab.com/de-de/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai/",[],"Agentische KI"," hat das geliefert. Statt Einzelvorschlägen, die ich anfordern und zurückkopieren musste, konnte ein Agent die Codebasis lesen, die Änderung vornehmen und die Tests selbst laufen lassen. Er erledigte die Arbeit, statt nur dazu zu raten. Von da an ging es über ",[22,43,46],{"href":44,"rel":45},"https://about.gitlab.com/de-de/blog/gitlab-duo-agent-platform-complete-getting-started-guide/",[],"GitLab Duo Custom Agents"," und VS-Code-Integrationen weiter bis zu ",[22,49,52],{"href":50,"rel":51},"https://opencode.ai",[],"OpenCode",", einem quelloffenen Agenten, der sich selbst so beschreibt: Er hilft dabei, \"Code im Terminal, in der IDE oder auf dem Desktop zu schreiben\".",[12,55,56],{},"Unterwegs habe ich zusammengetragen, was für mich funktioniert. KI-Assistenz beim Programmieren verändert die Arbeit spürbar, aber sie braucht das ingenieurmäßige Gespür der Menschen, die sie führen. Sie verstärkt gute wie schlechte Entscheidungen, deshalb kommt es auf die Richtung an. Die Werkzeuge werden sich weiter ändern, doch das Folgende hat meiner täglichen Arbeit bisher geholfen.",[58,59,61],"h2",{"id":60},"ein-eingespielter-ki-workflow","Ein eingespielter KI-Workflow",[12,63,64],{},"Bevor es zu den Prinzipien geht, lohnt ein Blick darauf, wie ein eingespielter KI-Workflow in der Praxis aussieht.",[12,66,67,71],{},[68,69,70],"strong",{},"Die Prioritäten kommen zu mir."," Starte ich eine Session, lädt die KI meine aktiven Sessions, ungelösten Blocker, geltenden Direktiven und jüngsten Entscheidungen. Dann holt sie meine GitLab-Todos, offenen MRs und beobachteten Epics und legt sie in meiner festgelegten Reihenfolge vor: zuerst Liegengebliebenes (was durchzurutschen droht), dann Review-Anfragen anderer (niemanden blockieren), dann Fragen, die eine Antwort von mir brauchen, dann meine eigenen blockierten MRs und schließlich alles Übrige. Ich muss nicht mehr herausfinden, woran ich arbeiten sollte. Der Kontext kommt zu mir.",[12,73,74,77],{},[68,75,76],{},"Konzentration funktioniert heute anders."," Softwareentwicklung verlangte üblicherweise Stunden ununterbrochener Konzentration, damit etwas Nennenswertes entstand. Das hat sich geändert. In einem Fenster von 15 oder 30 Minuten kann ich fragen, was oben in der Warteschlange liegt, die KI den Kontext dazu laden lassen (frühere Entscheidungen, Blocker, einschlägige Abläufe) und mit dem Delegieren von Programmier- und Testarbeit beginnen. Die KI bringt mich fast unmittelbar auf Stand, statt dass ich den Zusammenhang im Kopf neu aufbauen muss.",[12,79,80,83],{},[68,81,82],{},"Mehrere Merge Requests laufen parallel."," Ich nutze Git-Worktrees mit eigenen Testdatenbanken, damit KI-Sessions gleichzeitig an mehreren Merge Requests arbeiten. Jeder Worktree bekommt seine eigene Session und seine eigene Datenbank, und ein Claiming-System verhindert, dass Sessions sich in die Quere kommen. Die KI lässt die Tests laufen und stellt sicher, dass der Code funktioniert. Ich prüfe auf Richtigkeit.",[12,85,86,89],{},[68,87,88],{},"Wiederkehrende Aufgaben werden zu Abläufen."," Für ein Epic, das ich mit Priorität verfolge, übernimmt die KI die wöchentliche Statusmeldung: Sie holt den aktuellen Stand aus GitLab, vergleicht ihn mit dem der Vorwoche, um die Veränderungen zu ermitteln, und entwirft die Meldung samt Fortschrittskennzahlen. Der Ablauf ist in meinen Direktiven dokumentiert, sodass ihn jede Session gleich ausführen kann.",[12,91,92,95,96,101,102,107,108,113,114,119],{},[68,93,94],{},"Token-Effizienz zählt."," Ich habe Verbesserungen an GitLabs ",[22,97,100],{"href":98,"rel":99},"https://docs.gitlab.com/api/rest/",[],"REST- und GraphQL-API"," und am ",[22,103,106],{"href":104,"rel":105},"https://gitlab.com/vglafirov/opencode-gitlab-plugin",[],"OpenCode-GitLab-Plugin"," beigesteuert, um den Kontext-Overhead zu senken, und einen lokalen Workflow-Server für das Model Context Protocol (",[22,109,112],{"href":110,"rel":111},"https://about.gitlab.com/de-de/topics/ai/model-context-protocol/",[],"MCP",") gebaut, der gängige Muster festhält. Statt sich jedes Mal neu zusammenzusuchen, wie etwas geht, ruft die KI ein zugeschnittenes Werkzeug auf, das die Datenbeschaffung übernimmt und das Denken dem ",[22,115,118],{"href":116,"rel":117},"https://about.gitlab.com/de-de/blog/what-is-a-large-language-model-llm/",[],"LLM"," überlässt. Das hält die Antwortzeiten kurz und den Token-Verbrauch im Rahmen.",[12,121,122,125],{},[68,123,124],{},"Aktives Delegieren ist das Muster darunter."," Ich halte den übergeordneten Kontext und die Richtung, während die KI die einzelnen Aufgaben ausführt. Bevor an einem Merge Request gearbeitet wird, beansprucht die KI ihn für sich, um Konflikte zu vermeiden, lädt seine Vorgeschichte aus dem Gedächtnis und prüft, welche Direktiven gelten. Ich behalte die Aufsicht über die Richtung. Die KI hält das Tempo der Ausführung.",[58,127,129],{"id":128},"präzise-direktiven-statt-vager-anweisungen-schreiben","Präzise Direktiven statt vager Anweisungen schreiben",[12,131,132,135],{},[68,133,134],{},"Jede Session beginnt bei null."," Ohne Zutun erklärt man dieselben Vorlieben, dieselben Konventionen, dieselben Eigenheiten der Codebasis immer wieder neu.",[12,137,138,139,143],{},"Die Lösung sind ausdrückliche, dauerhafte Direktiven. Agentische KI-Werkzeuge haben begonnen, sich auf ",[140,141,142],"code",{},"AGENTS.md","-Konfigurationsdateien zu verständigen, die als Startkontext geladen werden. Die entscheidende Einsicht ist aber nicht, dass es Direktiven braucht, sondern dass sie konkret sein müssen.",[12,145,146],{},"Eine vage Anweisung wie \"sei vorsichtig mit Kommentaren\" bringt nichts. Die KI nimmt sie zur Kenntnis und macht dann ohnehin, was sie vorhatte. Was wirkt, ist konkret:",[148,149,150],"blockquote",{},[12,151,152],{},"\"ALWAYS verify user IDs exist before posting comments under their name. STOP and ask if unsure.\"",[12,154,155],{},"Die Großbuchstaben dienen nicht nur der Betonung. Sie scheinen dafür zu sorgen, dass die KI verlässlicher auf die Anweisung reagiert.",[12,157,158,161],{},[68,159,160],{},"Anzuwendendes Muster:"," Macht das KI-Werkzeug einen Fehler, sollte man ihn nicht nur korrigieren. Besser ist die Frage, welche Direktive diesen Fehler künftig verhindern würde. Dieses Gespräch führen und die KI dann bitten, das Ergebnis für das nächste Mal festzuhalten. Mit der Zeit entsteht so ein Satz Anweisungen, der auf den eigenen Arbeitsablauf zugeschnitten ist statt auf hypothetische Best Practices.",[12,163,164,165,170],{},"Mein ",[22,166,169],{"href":167,"rel":168},"https://gitlab.com/ghavenga/agents-config",[],"Repository agents-config"," enthielt früher über ein Dutzend spezialisierter Konfigurationsdateien, die auf diesem Weg entstanden sind: Leitlinien für Code-Reviews, Abläufe für Merge Requests, Vorgehen bei Datenbank-Reviews, Standards für das Schreiben von Kommentaren. Jede einzelne gibt es, weil ich die Sache oft genug gemacht habe, dass es sinnvoll wurde, sie zu einem Ablauf zu machen und die KI ihn gleichmäßig ausführen zu lassen.",[12,172,173,174,179],{},"Das Gedächtnissystem, das ich weiter unten beschreibe, hat diesen Ansatz entlastet: Jene Direktiven liegen jetzt im durchsuchbaren Gedächtnis statt in statischen Dateien. Das Repository enthält inzwischen praktische Beispiele und eine ",[22,175,178],{"href":176,"rel":177},"https://gitlab.com/ghavenga/agents-config/-/blob/master/USAGE-GUIDE.md",[],"Anleitung"," dazu, wie ich im Alltag arbeite.",[58,181,183],{"id":182},"parallele-sessions-brauchen-koordinationsmittel","Parallele Sessions brauchen Koordinationsmittel",[12,185,186],{},"Mehrere KI-Sessions gleichzeitig laufen zu lassen, kann sich lohnen, wenn man sie im Griff behält. Drei Terminals, drei Assistenzen, drei parallele Arbeitsstränge. Ohne Koordination stellen sich allerdings vertraute Probleme ein:",[188,189,190,194,197,200,203],"ul",{},[191,192,193],"li",{},"Sessions bearbeiten dieselben Dateien, ohne voneinander zu wissen",[191,195,196],{},"Mehrere Sessions arbeiten am selben Vorgang (sofern es überhaupt eine Möglichkeit gibt, Arbeit zu beanspruchen, was vermutlich noch nicht der Fall ist)",[191,198,199],{},"Widersprüchliche Entscheidungen entstehen isoliert",[191,201,202],{},"Sessions löschen die Arbeit der anderen oder committen sie unbekümmert mitsamt eigenen Änderungen in fremde MRs",[191,204,205],{},"Doppelte Arbeit, weil keine Session weiß, was die andere getan hat",[12,207,208],{},"Wer schon nebenläufig programmiert hat, erkennt darin die klassischen Koordinationsprobleme. Die Lösungen ähneln sich ebenfalls: Es braucht Mittel, um Arbeit zu beanspruchen, Zustand zu verfolgen und Kontext zu teilen.",[12,210,211,214],{},[68,212,213],{},"Meine erste Lösung waren dateibasierte Arbeitsnotizen."," Sie funktionierten, ließen sich aber nicht durchsuchen, waren nicht mit der beschriebenen Arbeit verknüpft und überdauerten mehrere Tage schlecht. Ich brauchte etwas, das relevanten Kontext von selbst nach oben spült.",[12,216,217,218,223],{},"So entstand ",[22,219,222],{"href":220,"rel":221},"https://gitlab.com/ghavenga/opencode-memory",[],"opencode-memory",", ein dauerhaftes semantisches Gedächtnis. Seine Architektur spiegelt die Lösungen für Probleme, die ich zuvor immer wieder per Direktive gelöst hatte: hybride Suche (Stichworte für exakte Begriffe, Semantik für unscharfes Erinnern), Session-Koordination über Beanspruchen und Freigeben, und ein Startkontext, der die entscheidenden Direktiven von selbst sichtbar macht.",[12,225,226],{},"Seit der ersten Fassung ist das System erheblich gewachsen. Es ist inzwischen ein vollständiger Wissensgraph mit über 760.000 indexierten Code-Entitäten, mehr als 15.000 Memories einschließlich Gesprächszusammenfassungen und 27.000 Verknüpfungen dazwischen.",[12,228,229,230,235],{},"Als GitLab ",[22,231,234],{"href":232,"rel":233},"https://docs.gitlab.com/orbit/",[],"Orbit"," vorstellte, einen Wissensgraphen über den gesamten Software-Lebenszyklus (SDLC), passte das fast genau zu der Richtung, die ich lokal eingeschlagen hatte. Orbit beantwortet Fragen über den ganzen Lebenszyklus hinweg, etwa \"was bricht, wenn ich diesen Dienst ändere?\", indem es Code, Merge Requests und Pipelines verbindet.",[12,237,238],{},"Mein Gedächtnismodul indexierte meine Codebasis bereits lokal für schnelles Erinnern, also habe ich die weitere Sicht nicht neu erfunden, sondern Orbit angebunden. Das lokale Gedächtnis hält den Kontext der Session, also Entscheidungen, Blocker und Abläufe, und Orbit legt GitLabs größeren SDLC-Graphen darüber. Eines der schönsten Ergebnisse: Erwähne ich eine Funktion im Gespräch, weiß die KI genau, wo sie liegt, ohne dass ich nachsehen muss.",[12,240,241],{},"Auch frühere Entscheidungen tauchen von selbst auf, sobald die Arbeit an einem Merge Request beginnt. Blocker bleiben bestehen, bis sie ausdrücklich aufgelöst werden. Einmal festgelegte Abläufe stehen dauerhaft bereit. Erinnerungen melden sich dort, wo sie zählen. Und der gemeinsame Graph aus meinem lokalen Gedächtnis und Orbits SDLC-Daten beantwortet solche Fragen weit treffsicherer, als eine reine Textsuche es je konnte.",[58,243,245],{"id":244},"erst-nachsehen-dann-bauen","Erst nachsehen, dann bauen",[12,247,248,251,252,254],{},[68,249,250],{},"Keine Idee ist einzigartig."," Wer nach Gedächtnissystemen für KI-Programmierassistenz sucht, findet Dutzende Ansätze. Vermutlich hat jemand genau das, woran man denkt, schon drei Wochen vorher in einem koffeingetriebenen KI-Rausch gebaut. Es gibt sogar ein PyPI-Paket namens ",[140,253,222],{},", das dem, was ich gebaut habe, sehr nahekommt, nur mit einer anderen Vektordatenbank darunter.",[12,256,257],{},"Die Hürde, sich selbst zu bauen, was man braucht, ist so dramatisch gesunken, dass viele unabhängig voneinander auf ähnliche Lösungen kommen. Von der Idee zum lauffähigen Prototyp vergeht eine Woche.",[12,259,260],{},"Ich würde empfehlen, vor einem neuen Projekt nachzusehen, ob es das schon gibt. Löst etwas das eigene Problem beinahe, ist ein Beitrag dazu womöglich sinnvoller als eine weitere Variante. Dieser Rat ist so alt wie die Softwareentwicklung selbst, KI verschärft ihn nur hundertfach.",[12,262,263,264,267],{},"Mein Gedächtnissystem bot anfangs kaum mehr als bestehende Lösungen. Erst nach Monaten des Nachschärfens und der tiefen GitLab-Anbindung finde ich es einigermaßen gerechtfertigt. Immerhin habe ich Verbesserungen an das ",[22,265,106],{"href":104,"rel":266},[]," zurückgegeben, statt es zu forken, weil meine Änderungen dort den meisten Menschen nützen.",[12,269,270],{},"Die Frage, die man sich stellen sollte: Habe ich überhaupt nachgesehen, ob es dafür schon etwas gibt, oder hat KI das Programmieren so leicht gemacht, dass ich jede Form von Sorgfalt übersprungen habe?",[58,272,274],{"id":273},"vom-aktiven-abrufen-zum-beiläufigen-kontext","Vom aktiven Abrufen zum beiläufigen Kontext",[12,276,277],{},"Die vektorisierte Gedächtnissuche war sofort ein Gewinn. Ich habe sie noch am Tag ihrer Fertigstellung in Betrieb genommen. Nützliche Einzelheiten wiederzufinden, wurde mühelos. Die nächste Hürde war, dass die KI von selbst merken sollte, wann es etwas zu merken gibt, ohne dass ich jedes Mal danach frage.",[12,279,280,281,283],{},"Ich war vorangekommen: token-sparsames Gedächtnis für bestimmte Abläufe, ein wachsender Bestand an Erinnerungen, die von allein abrufbar sind. Es fühlte sich aber an, als baute ich nur ",[140,282,142],{}," mit Verzierungen nach. Es brauchte etwas Klügeres.",[12,285,286,289],{},[68,287,288],{},"Die Lösung war das vorausschauende Einspielen von Kontext."," Statt dass die KI Abruf-Werkzeuge eigens aufruft, sucht das System vor jeder Interaktion selbst nach passenden Erinnerungen. Erwähne ich die Nummer eines Merge Requests, stehen frühere Entscheidungen dazu im Kontext, ohne dass ich danach frage. Setze ich zu einem Kommentar an, tauchen die Leitlinien fürs Kommentieren von selbst auf. Meistens jedenfalls. Fertig ist es nicht, aber ich schleife täglich ein Stück daran.",[12,291,292],{},"Dieser Wechsel vom aktiven zum beiläufigen Abrufen hat einen echten Unterschied gemacht. Über 30 Tage erreichte das System rund 91 % Treffsicherheit dabei, passenden Kontext von selbst bereitzustellen. Sessions mit vorausschauendem Einspielen kamen im Schnitt ohne einen einzigen ausdrücklichen Abruf aus, gegenüber 17 ohne diese Funktion. Perfekt ist es nicht, es gibt weiterhin Momente, in denen ich der KI sagen muss, dass sie sich etwas merken oder etwas besser machen soll. Aber es ist ein schrittweiser Prozess, und er wird besser.",[12,294,295],{},"Die verbleibenden Fehlgriffe waren aufschlussreich. Viele traten auf, während ich am Laden des Startkontexts arbeitete. Die Abhilfe war ein Boot-Gate: ein minimaler Auslöser im Startkontext, der die KI anweist, innezuhalten und die Direktiven zu laden, bevor sie irgendetwas anderes tut. Selbst mit vorausschauendem Einspielen muss man der KI manchmal sagen, dass sie erst stehen bleiben und nachdenken soll.",[58,297,299],{"id":298},"was-ki-weiterhin-nicht-kann","Was KI weiterhin nicht kann",[12,301,302],{},"KI kann Abläufe einigermaßen gleichmäßig ausführen, sofern diese Abläufe im Kontext stehen. Sie kann ihre eigenen Anweisungen verbessern, sofern man sie dazu anhält. Sie kann sich über Sessions hinweg abstimmen, sofern sie die Mittel dafür bekommt.",[12,304,305,308],{},[68,306,307],{},"Aber KI bemerkt nichts von selbst."," Sie spürt nicht, dass ein Ablauf umständlich ist. Sie erkennt nicht, dass man diese Woche zum dritten Mal auf dasselbe Problem gestoßen ist. Ihr fehlt die Mustererkennung, die aus Jahren des Debuggens von Produktionssystemen um zwei Uhr nachts erwächst, während man sich fragt, ob Tischlerei nicht doch die bessere Berufswahl gewesen wäre. Zumindest bislang.",[12,310,311],{},"Der günstigste Punkt scheint zu sein, KI die stumpfe Arbeit abnehmen zu lassen, ihr zur rechten Zeit den richtigen Kontext zu geben und darauf zu achten, was sie übersieht. Von der menschlichen Seite kommen strategische Aufsicht und Mustererkennung. Von der KI kommen unermüdliche Ausführung und Begeisterung für Aufgaben, die wir früher zäh und langwierig fanden. Das ist befreiend.",[12,313,314],{},"Ich habe zugesehen, wie KI begeistert Funktionen baute und dabei Nebenläufigkeitsfehler in ihr eigenes Werkzeug einzog, weil sie sich mit synchronen Operationen selbst blockierte. Sie hatte keine Ahnung davon. Im Rückblick war das ein Ausrichtungsproblem. Ich hätte früher mit ihr planen können, um ein sauberes asynchrones Muster sicherzustellen. Ich hatte gehofft, sie würde von sich aus ein besseres Muster bauen, war damit aber zu optimistisch. Ein Hinweis von mir auf den Architekturfehler, und er war in Minuten behoben.",[12,316,317],{},"Das ist das Muster: Der Mensch erkennt das Problem, die KI setzt die Behebung zügig um. Ich hätte es auch selbst machen können, nur nicht so rasch. Meta-Ineffizienzen erkennt KI noch nicht, obwohl sicher gerade jemand einen eigenen Agenten dafür schreibt.",[58,319,321],{"id":320},"in-die-eigenen-werkzeuge-investieren","In die eigenen Werkzeuge investieren",[12,323,324],{},"So zu arbeiten heißt, ständige Veränderung hinzunehmen. Meine tägliche Arbeit hat sich binnen Monaten vollständig verschoben, und das mehrfach. Früher in meiner Laufbahn änderten sich Arbeitsabläufe über Jahre hinweg langsam.",[12,326,327],{},"Man sollte nicht versuchen, sich in einer \"neuen Normalität\" einzurichten. Sie wird sich ändern. Was heute hilft, kann bei diesem Tempo nächste Woche überholt sein.",[12,329,330,333,334,27,339,344],{},[68,331,332],{},"Besser ist es, an den Werkzeugen selbst zu arbeiten."," Der Arbeitsablauf, der einem weiterhilft, wird selbst zum Gegenstand der Verbesserung. Ich habe neue API-Endpunkte zu GitLab beigesteuert, darunter ",[22,335,338],{"href":336,"rel":337},"https://gitlab.com/gitlab-org/gitlab/-/merge_requests/230537",[],"Group-Uploads",[22,340,343],{"href":341,"rel":342},"https://gitlab.com/gitlab-org/gitlab/-/merge_requests/220801",[],"GraphQL-Mutationen für MR-Abläufe",", eigens weil ich sie für die KI-gestützte Entwicklung brauchte.",[12,346,347],{},"Es ist eine Meta-Schleife: bessere Werkzeuge bringen mehr Produktivität, was wiederum Raum schafft, die Werkzeuge zu verbessern. Ein alter Spruch lautet: \"Gebt mir sechs Stunden, um einen Baum zu fällen, und ich werde die ersten vier damit verbringen, die Axt zu schärfen.\" Ich verbringe dieser Tage einiges damit, meine Axt zu schärfen. Einen besseren Schleifstein hatte ich nie.",[58,349,351],{"id":350},"was-bleibt","Was bleibt",[12,353,354,357],{},[68,355,356],{},"Code ist heute ein Massengut."," Wir werden nicht mehr in erster Linie fürs Tippen bezahlt. Wir werden dafür bezahlt zu wissen, welcher Code entstehen sollte. Zu erkennen, wann ein Ansatz grundsätzlich verfehlt ist. Ineffizienzen zu bemerken, bevor sie zu Problemen werden. Die Richtung vorzugeben, die aus roher Fähigkeit brauchbare Ergebnisse macht.",[12,359,360,361,366],{},"Ich hatte an einer Handreichung gearbeitet, wie sich GitLabs CREDIT-Werte auf den KI-Einsatz übertragen lassen, und dann hat ",[22,362,365],{"href":363,"rel":364},"https://about.gitlab.com/blog/gitlab-act-2/",[],"GitLab Act 2"," CREDIT vollständig abgelöst und durch neue Leitprinzipien für die agentische Zeit ersetzt. Ein gutes Beispiel dafür, wie rasch sich dieses Feld verschiebt: Meine eigene Handreichung war überholt, bevor sie ankam. Die Kernaussage bleibt aber: Diese Balance richtig hinzubekommen, zählt auf Ebene der Organisation und nicht nur für den Einzelnen. KI sollte menschliche Arbeit erweitern, nicht ersetzen.",[12,368,369],{},"Die Werkzeuge werden sich weiterentwickeln. Die Einzelheiten werden sich ändern. Diese grundlegende Einsicht bleibt: KI verstärkt menschliches Urteilsvermögen. Ersetzen sollte sie es nicht, auch wenn sie es versucht, sobald man sie lässt, meist auf Kosten von Codequalität und Stabilität. Mit Vibe Coding kommt man weit, doch selbst bei den gründlichsten KI-Reviews gibt es ein Maß an Qualitätssicherung und sorgfältiger Abwägung im Entwurf, das ich bei KI allein noch nicht gesehen habe.",[12,371,372],{},"Mehrere Kolleginnen und Kollegen bei GitLab haben angefangen, Abwandlungen dieses Ablaufs zu nutzen, und ihnen bei denselben Aha-Momenten zuzusehen, hat mich bestätigt. Kürzlich schrieb mir jemand: \"Seit ich das Plugin nutze, merke ich definitiv eine Verbesserung in meinen Sessions.\" Gemeint war das Modul opencode-memory. Ich will nicht so tun, als hätte mir das nicht den ganzen Tag gerettet.",[12,374,375],{},"Die Fragen verschieben sich von \"wie bringe ich die KI dazu, X zu tun\" zu \"wie gebe ich der KI den Kontext, den sie braucht, um X gut zu tun\". Das ist der eigentliche Schlüssel: nicht die Werkzeuge selbst, sondern die Erkenntnis, dass der Kontext der Engpass ist.",[12,377,378],{},"Bemerkenswerterweise merkt man mit zunehmender Übung, dass man selbst der Engpass sein könnte. Manchmal ist das aber auch ein Hinweis darauf, dass sich die eigenen Abläufe noch weiter verbessern lassen. Ein Maximum habe ich noch nicht erreicht, bei Weitem nicht. Unterschiedliche Aufgaben profitieren von unterschiedlichen Herangehensweisen, auch mit KI, und es bleibt reichlich zu erproben.",[12,380,381],{},"Noch eine Anmerkung zum Tempo: Das Gedächtnissystem hat in weniger als einem Monat 143 Commits gesehen. Es setzt auf MCP auf, funktioniert also mit jedem Agenten, der das Protokoll spricht: nicht nur mit OpenCode, sondern auch mit Claude CLI, Cursor und anderen. Wenn dieser Text gelesen wird, habe ich vermutlich Funktionen ergänzt, an die ich heute noch nicht gedacht habe. So ist das derzeit in diesem Feld. Die Werkzeuge entwickeln sich schneller als die Dokumentation.",[12,383,384],{},[385,386,387,388,392,393,396],"em",{},"Die in diesem Beitrag genannten Werkzeuge sind quelloffen: ",[22,389,391],{"href":167,"rel":390},[],"agents-config"," für die Konfiguration von KI-Direktiven und ",[22,394,222],{"href":220,"rel":395},[]," für dauerhaftes Session-Gedächtnis.",{"title":398,"searchDepth":399,"depth":399,"links":400},"",2,[401,402,403,404,405,406,407,408],{"id":60,"depth":399,"text":61},{"id":128,"depth":399,"text":129},{"id":182,"depth":399,"text":183},{"id":244,"depth":399,"text":245},{"id":273,"depth":399,"text":274},{"id":298,"depth":399,"text":299},{"id":320,"depth":399,"text":321},{"id":350,"depth":399,"text":351},"engineering","2026-08-19","Erfahrungen mit KI-Direktiven, einem Gedächtnissystem für Sessions und der Frage, was sich in der Softwareentwicklung weiterhin nicht ersetzen lässt.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png",{},true,"/de-de/blog/building-an-ai-dev-workflow",{"config":420,"title":421,"description":411},{"noIndex":414},"Vom Durcheinander zum Kontext: einen KI-Workflow aufbauen","building-an-ai-dev-workflow","de-de/blog/building-an-ai-dev-workflow",[425],"AI","BlogPost","sPYUprPk6f7OykOGw1GaZqAfFqJuQRny47Tl3nRmR5o",{"logo":429,"freeTrial":434,"sales":439,"login":444,"items":449,"search":780,"minimal":815,"duo":834,"switchNav":843,"pricingDeployment":854},{"config":430},{"href":431,"dataGaName":432,"dataGaLocation":433},"/de-de/","gitlab logo","header",{"text":435,"config":436},"Kostenlose Testversion anfordern",{"href":437,"dataGaName":438,"dataGaLocation":433},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":440,"config":441},"Demo anfordern",{"href":442,"dataGaName":443,"dataGaLocation":433},"/request-a-demo/","sales",{"text":445,"config":446},"Anmelden",{"href":447,"dataGaName":448,"dataGaLocation":433},"https://gitlab.com/users/sign_in/","sign in",[450,536,624,629,704,758],{"text":451,"left":417,"config":452,"menu":454},"Plattform",{"dataNavLevelOne":453},"platform",{"type":455,"link":456,"columns":460,"feature":525},"lists",{"text":457,"config":458},"Die Plattform erkunden",{"href":459,"dataGaName":453,"dataGaLocation":433},"/de-de/platform/",[461,484,507],{"title":462,"items":463},"Ausführung und Workflows",[464,469,474,479],{"text":465,"config":466},"CI/CD",{"href":467,"dataGaLocation":433,"dataGaName":468},"/de-de/solutions/continuous-integration/","ci/cd",{"text":470,"config":471},"Quellcodeverwaltung",{"href":472,"dataGaLocation":433,"dataGaName":473},"/de-de/solutions/source-code-management/","source code management",{"text":475,"config":476},"Agile Delivery",{"href":477,"dataGaLocation":433,"dataGaName":478},"/de-de/solutions/agile-delivery/","agile delivery",{"text":480,"config":481},"Artefaktverwaltung",{"href":482,"dataGaLocation":433,"dataGaName":483},"/de-de/artifact-central/","artifact management",{"title":485,"items":486},"Sicherheit und Governance",[487,492,497,502],{"text":488,"config":489},"Anwendungssicherheitstests",{"href":490,"dataGaLocation":433,"dataGaName":491},"/de-de/solutions/application-security-testing/","application security testing",{"text":493,"config":494},"Governance und Compliance",{"href":495,"dataGaLocation":433,"dataGaName":496},"/de-de/solutions/software-compliance/","governance and compliance",{"text":498,"config":499},"Secrets-Management",{"href":500,"dataGaLocation":433,"dataGaName":501},"/de-de/gitlab-secrets-manager/","secrets management",{"text":503,"config":504},"Lieferkettensicherheit",{"href":505,"dataGaLocation":433,"dataGaName":506},"/de-de/solutions/supply-chain/","supply chain security",{"title":508,"items":509},"Kontext und KI",[510,515,520],{"text":511,"config":512},"Agentische Orchestrierung",{"href":513,"dataGaLocation":433,"dataGaName":514},"/de-de/gitlab-duo-agent-platform/","agentic orchestration",{"text":516,"config":517},"Kontextgraph",{"href":518,"dataGaLocation":433,"dataGaName":519},"/de-de/gitlab-orbit/","context graph",{"text":521,"config":522},"Sichtbarkeit und Messung",{"href":523,"dataGaLocation":433,"dataGaName":524},"/de-de/solutions/visibility-measurement/","visibility and measurement",{"config":526,"title":529,"text":530,"link":531},{"background":527,"textColor":528},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","Warum GitLab","Eine Plattform für Schnelligkeit und Kontrolle im gesamten Software-Lebenszyklus.",{"text":532,"config":533},"Mehr erfahren",{"href":534,"dataGaName":535,"dataGaLocation":433},"/de-de/why-gitlab/","why gitlab",{"text":537,"left":417,"config":538,"menu":540},"Lösungen",{"dataNavLevelOne":539},"solutions",{"type":455,"link":541,"columns":545,"feature":615},{"text":542,"config":543},"Alle Lösungen anzeigen",{"href":544,"dataGaName":539,"dataGaLocation":433},"/de-de/solutions/",[546,564,582],{"title":547,"items":548},"Ergebnisse",[549,554,559],{"text":550,"config":551},"DevOps-Modernisierung",{"href":552,"dataGaLocation":433,"dataGaName":553},"/de-de/assessments/devops-modernization-assessment/","devops modernization",{"text":555,"config":556},"Sicherheitsmodernisierung",{"href":557,"dataGaLocation":433,"dataGaName":558},"/de-de/assessments/security-modernization-assessment/","security modernization",{"text":560,"config":561},"KI-Modernisierung",{"href":562,"dataGaLocation":433,"dataGaName":563},"/de-de/assessments/ai-modernization-assessment/","ai modernization",{"title":565,"items":566},"Nach Größe",[567,572,577],{"text":568,"config":569},"Große Unternehmen",{"href":570,"dataGaLocation":433,"dataGaName":571},"/de-de/enterprise/","enterprise",{"text":573,"config":574},"Kleine Unternehmen",{"href":575,"dataGaLocation":433,"dataGaName":576},"/de-de/small-business/","small business",{"text":578,"config":579},"Start-ups",{"href":580,"dataGaLocation":433,"dataGaName":581},"/de-de/solutions/startups/","startups",{"title":583,"items":584},"Branchen",[585,590,595,600,605,610],{"text":586,"config":587},"Finanzdienstleistungen",{"href":588,"dataGaLocation":433,"dataGaName":589},"/de-de/solutions/finance/","financial services",{"text":591,"config":592},"Öffentlicher Sektor",{"href":593,"dataGaLocation":433,"dataGaName":594},"/de-de/solutions/public-sector/","public sector",{"text":596,"config":597},"Telekommunikation",{"href":598,"dataGaLocation":433,"dataGaName":599},"/de-de/solutions/telecommunications/","telecommunications",{"text":601,"config":602},"Automobilindustrie",{"href":603,"dataGaLocation":433,"dataGaName":604},"/de-de/solutions/automotive/","automotive",{"text":606,"config":607},"Bildungswesen",{"href":608,"dataGaLocation":433,"dataGaName":609},"/de-de/solutions/education/","education",{"text":611,"config":612},"Luft- und Raumfahrt",{"href":613,"dataGaLocation":433,"dataGaName":614},"/de-de/solutions/aerospace/","aerospace",{"config":616,"title":617,"text":618,"link":619},{"background":527,"textColor":528},"GitLab-Sicherheitsstandard","Mehr dazu, wie du deine Software Factory stärkst und KI-Agenten Autonomie gewinnen lässt, ohne an Sicherheit einzubüßen.",{"text":620,"config":621},"Standard entdecken",{"href":622,"dataGaName":623,"dataGaLocation":433},"/gitlab-security-standard/","gitlab security standard",{"text":625,"config":626},"Preise",{"href":627,"dataGaName":628,"dataGaLocation":433,"dataNavLevelOne":628},"/de-de/pricing/","pricing",{"text":630,"config":631,"menu":633},"Ressourcen",{"dataNavLevelOne":632},"resources",{"type":455,"link":634,"columns":638,"feature":695},{"text":635,"config":636},"Alle Ressourcen anzeigen",{"href":637,"dataGaName":632,"dataGaLocation":433},"/de-de/resources/",[639,667],{"title":640,"items":641},"Entdecken",[642,647,652,657,662],{"text":643,"config":644},"Dokumentation",{"href":645,"dataGaName":646,"dataGaLocation":433},"https://docs.gitlab.com/","docs",{"text":648,"config":649},"GitLab University",{"href":650,"dataGaName":651,"dataGaLocation":433},"https://university.gitlab.com/","university",{"text":653,"config":654},"Demo-Reihe",{"href":655,"dataGaName":656,"dataGaLocation":433},"/de-de/gitlab-technical-demo-series/","demo series",{"text":658,"config":659},"Demo-Hub",{"href":660,"dataGaName":661,"dataGaLocation":433},"/de-de/demo-hub/","demo hub",{"text":663,"config":664},"Dienste",{"href":665,"dataGaName":666,"dataGaLocation":433},"/de-de/services/","services",{"title":668,"items":669},"Vernetzen",[670,675,680,685,690],{"text":671,"config":672},"Blog",{"href":673,"dataGaName":674,"dataGaLocation":433},"/de-de/blog/","blog",{"text":676,"config":677},"Community",{"href":678,"dataGaName":679,"dataGaLocation":433},"/community/","community",{"text":681,"config":682},"Kunden",{"href":683,"dataGaName":684,"dataGaLocation":433},"/de-de/customers/","customers",{"text":686,"config":687},"Partner",{"href":688,"dataGaName":689,"dataGaLocation":433},"/de-de/partners/","partners",{"text":691,"config":692},"Veranstaltungen",{"href":693,"dataGaName":694,"dataGaLocation":433},"/events/","events",{"config":696,"title":697,"text":698,"link":699},{"background":527,"textColor":528},"Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":700,"config":701},"Aktuelle Nachrichten",{"href":702,"dataGaName":703,"dataGaLocation":433},"/de-de/whats-new/","whats new",{"text":705,"config":706,"menu":708},"Unternehmen",{"dataNavLevelOne":707},"company",{"type":455,"columns":709},[710],{"items":711},[712,717,723,728,733,738,743,748,753],{"text":713,"config":714},"Über",{"href":715,"dataGaName":716,"dataGaLocation":433},"/de-de/company/","about",{"text":718,"config":719,"footerGa":722},"Karriere",{"href":720,"dataGaName":721,"dataGaLocation":433},"/jobs/","jobs",{"dataGaName":721},{"text":724,"config":725},"Presse",{"href":726,"dataGaName":727,"dataGaLocation":433},"/press/","press",{"text":729,"config":730},"Handbuch",{"href":731,"dataGaName":732,"dataGaLocation":433},"https://handbook.gitlab.com/","handbook",{"text":734,"config":735},"Geschäftsführung",{"href":736,"dataGaName":737,"dataGaLocation":433},"/company/team/e-group/","leadership",{"text":739,"config":740},"Investor Relations",{"href":741,"dataGaName":742,"dataGaLocation":433},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":744,"config":745},"Trust Center",{"href":746,"dataGaName":747,"dataGaLocation":433},"/de-de/security/","trust center",{"text":749,"config":750},"AI Transparency Center",{"href":751,"dataGaName":752,"dataGaLocation":433},"/de-de/ai-transparency-center/","ai transparency center",{"text":754,"config":755},"Newsletter",{"href":756,"dataGaName":757,"dataGaLocation":433},"/company/contact/#contact-forms","newsletter",{"text":759,"config":760,"menu":761},"Kontakt",{"dataNavLevelOne":707},{"type":455,"columns":762},[763],{"items":764},[765,770,775],{"text":766,"config":767},"Vertrieb kontaktieren",{"href":768,"dataGaName":769,"dataGaLocation":433},"/de-de/sales/","talk to sales",{"text":771,"config":772},"Support-Portal",{"href":773,"dataGaName":774,"dataGaLocation":433},"https://support.gitlab.com/hc/en-us","support portal",{"text":776,"config":777},"Kundenportal",{"href":778,"dataGaName":779,"dataGaLocation":433},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":781,"login":782,"suggestions":789},"Schließen",{"text":783,"link":784},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":785,"config":786},"gitlab.com",{"href":447,"dataGaName":787,"dataGaLocation":788},"search login","search",{"text":790,"default":791},"Vorschläge",[792,795,799,801,806,811],{"text":793,"config":794},"GitLab Duo Agent Platform",{"href":513,"dataGaName":793,"dataGaLocation":788},{"text":796,"config":797},"Codevorschläge (KI)",{"href":513,"dataGaName":798,"dataGaLocation":788},"Code Suggestions (AI)",{"text":465,"config":800},{"href":467,"dataGaName":465,"dataGaLocation":788},{"text":802,"config":803},"GitLab auf AWS",{"href":804,"dataGaName":805,"dataGaLocation":788},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":807,"config":808},"GitLab auf Google Cloud",{"href":809,"dataGaName":810,"dataGaLocation":788},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":812,"config":813},"Warum GitLab?",{"href":534,"dataGaName":814,"dataGaLocation":788},"Why GitLab?",{"freeTrial":816,"mobileIcon":821,"desktopIcon":826,"secondaryButton":829},{"text":817,"config":818},"Kostenlos testen",{"href":819,"dataGaName":438,"dataGaLocation":820},"https://gitlab.com/-/trials/new/","nav",{"altText":822,"config":823},"GitLab-Symbol",{"src":824,"dataGaName":825,"dataGaLocation":820},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":822,"config":827},{"src":828,"dataGaName":825,"dataGaLocation":820},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":830,"config":831},"Erste Schritte",{"href":832,"dataGaName":833,"dataGaLocation":820},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":835,"mobileIcon":839,"desktopIcon":841},{"text":836,"config":837},"Mehr über GitLab Duo erfahren",{"href":513,"dataGaName":838,"dataGaLocation":820},"gitlab duo",{"altText":822,"config":840},{"src":824,"dataGaName":825,"dataGaLocation":820},{"altText":822,"config":842},{"src":828,"dataGaName":825,"dataGaLocation":820},{"button":844,"mobileIcon":849,"desktopIcon":851},{"text":845,"config":846},"/Option",{"href":847,"dataGaName":848,"dataGaLocation":820},"#contact","switch",{"altText":822,"config":850},{"src":824,"dataGaName":825,"dataGaLocation":820},{"altText":822,"config":852},{"src":853,"dataGaName":825,"dataGaLocation":820},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":855,"mobileIcon":860,"desktopIcon":862},{"text":856,"config":857},"Zurück zur Preisübersicht",{"href":627,"dataGaName":858,"dataGaLocation":820,"icon":859},"back to pricing","GoBack",{"altText":822,"config":861},{"src":824,"dataGaName":825,"dataGaLocation":820},{"altText":822,"config":863},{"src":828,"dataGaName":825,"dataGaLocation":820},{"title":865,"button":866,"config":869},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":532,"config":867},{"href":518,"dataGaName":868,"dataGaLocation":433},"orbit",{"layout":870,"disabled":414},"release",{"data":872},{"text":873,"source":874,"edit":880,"contribute":885,"config":890,"items":895,"minimal":1116},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":875,"config":876},"Quelltext der Seite anzeigen",{"href":877,"dataGaName":878,"dataGaLocation":879},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":881,"config":882},"Diese Seite bearbeiten",{"href":883,"dataGaName":884,"dataGaLocation":879},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":886,"config":887},"Beteilige dich",{"href":888,"dataGaName":889,"dataGaLocation":879},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":891,"facebook":892,"youtube":893,"linkedin":894},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[896,941,998,1041,1083],{"title":625,"links":897,"subMenu":912},[898,902,907],{"text":899,"config":900},"Tarife anzeigen",{"href":627,"dataGaName":901,"dataGaLocation":879},"view plans",{"text":903,"config":904},"Vorteile von Premium",{"href":905,"dataGaName":906,"dataGaLocation":879},"/de-de/pricing/premium/","why premium",{"text":908,"config":909},"Vorteile von Ultimate",{"href":910,"dataGaName":911,"dataGaLocation":879},"/de-de/pricing/ultimate/","why ultimate",[913],{"title":759,"links":914},[915,917,919,921,926,931,936],{"text":766,"config":916},{"href":768,"dataGaName":443,"dataGaLocation":879},{"text":771,"config":918},{"href":773,"dataGaName":774,"dataGaLocation":879},{"text":776,"config":920},{"href":778,"dataGaName":779,"dataGaLocation":879},{"text":922,"config":923},"Status",{"href":924,"dataGaName":925,"dataGaLocation":879},"https://status.gitlab.com/","status",{"text":927,"config":928},"Nutzungsbedingungen",{"href":929,"dataGaName":930,"dataGaLocation":879},"/terms/","terms of use",{"text":932,"config":933},"Datenschutzerklärung",{"href":934,"dataGaName":935,"dataGaLocation":879},"/de-de/privacy/","privacy statement",{"text":937,"config":938},"Cookie-Einstellungen",{"dataGaName":939,"dataGaLocation":879,"id":940,"isOneTrustButton":417},"cookie preferences","ot-sdk-btn",{"title":451,"links":942,"subMenu":956},[943,946,948,950,952,954],{"text":944,"config":945},"Plattform entdecken",{"href":459,"dataGaName":453,"dataGaLocation":879},{"text":511,"config":947},{"href":513,"dataGaName":514,"dataGaLocation":879},{"text":465,"config":949},{"href":467,"dataGaName":468,"dataGaLocation":879},{"text":516,"config":951},{"href":518,"dataGaName":519,"dataGaLocation":879},{"text":498,"config":953},{"href":500,"dataGaName":501,"dataGaLocation":879},{"text":529,"config":955},{"href":534,"dataGaName":535,"dataGaLocation":879},[957],{"title":958,"links":959},"Themen",[960,964,969,974,979,984,989,994],{"text":465,"config":961},{"href":962,"dataGaName":963,"dataGaLocation":879},"/de-de/topics/ci-cd/","cicd",{"text":965,"config":966},"GitOps",{"href":967,"dataGaName":968,"dataGaLocation":879},"/de-de/topics/gitops/","gitops",{"text":970,"config":971},"DevOps",{"href":972,"dataGaName":973,"dataGaLocation":879},"/de-de/topics/devops/","devops",{"text":975,"config":976},"Versionskontrolle",{"href":977,"dataGaName":978,"dataGaLocation":879},"/de-de/topics/version-control/","version control",{"text":980,"config":981},"DevSecOps",{"href":982,"dataGaName":983,"dataGaLocation":879},"/de-de/topics/devsecops/","devsecops",{"text":985,"config":986},"Cloud-nativ",{"href":987,"dataGaName":988,"dataGaLocation":879},"/de-de/topics/cloud-native/","cloud native",{"text":990,"config":991},"KI für das Programmieren",{"href":992,"dataGaName":993,"dataGaLocation":879},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":40,"config":995},{"href":996,"dataGaName":997,"dataGaLocation":879},"/de-de/topics/agentic-ai/","agentic ai",{"title":537,"links":999},[1000,1002,1004,1006,1008,1010,1012,1014,1016,1018,1021,1024,1026,1029,1033,1037],{"text":550,"config":1001},{"href":552,"dataGaName":553,"dataGaLocation":879},{"text":555,"config":1003},{"href":557,"dataGaName":558,"dataGaLocation":879},{"text":560,"config":1005},{"href":562,"dataGaName":563,"dataGaLocation":879},{"text":586,"config":1007},{"href":588,"dataGaName":589,"dataGaLocation":879},{"text":591,"config":1009},{"href":593,"dataGaName":594,"dataGaLocation":879},{"text":596,"config":1011},{"href":598,"dataGaName":599,"dataGaLocation":879},{"text":601,"config":1013},{"href":603,"dataGaName":604,"dataGaLocation":879},{"text":606,"config":1015},{"href":608,"dataGaName":609,"dataGaLocation":879},{"text":611,"config":1017},{"href":613,"dataGaName":614,"dataGaLocation":879},{"text":1019,"config":1020},"Enterprise",{"href":570,"dataGaName":571,"dataGaLocation":879},{"text":1022,"config":1023},"Kleinunternehmen",{"href":575,"dataGaName":576,"dataGaLocation":879},{"text":578,"config":1025},{"href":580,"dataGaName":581,"dataGaLocation":879},{"text":965,"config":1027},{"href":1028,"dataGaName":968,"dataGaLocation":879},"/de-de/solutions/gitops/",{"text":1030,"config":1031},"Analyse der Softwarezusammensetzung (SCA)",{"href":505,"dataGaName":1032,"dataGaLocation":879},"software composition analysis",{"text":1034,"config":1035},"Wertstrommanagement",{"href":523,"dataGaName":1036,"dataGaLocation":879},"value stream management",{"text":1038,"config":1039},"Alle Lösungen",{"href":544,"dataGaName":1040,"dataGaLocation":879},"all solutions",{"title":630,"links":1042},[1043,1048,1053,1055,1057,1059,1061,1063,1065,1067,1070,1072,1074,1076,1079],{"text":1044,"config":1045},"Installieren",{"href":1046,"dataGaName":1047,"dataGaLocation":879},"/de-de/install/","install",{"text":1049,"config":1050},"Kurzanleitungen",{"href":1051,"dataGaName":1052,"dataGaLocation":879},"/de-de/get-started/","quick setup checklists",{"text":643,"config":1054},{"href":645,"dataGaName":646,"dataGaLocation":879},{"text":648,"config":1056},{"href":650,"dataGaName":651,"dataGaLocation":879},{"text":653,"config":1058},{"href":655,"dataGaName":656,"dataGaLocation":879},{"text":658,"config":1060},{"href":660,"dataGaName":661,"dataGaLocation":879},{"text":663,"config":1062},{"href":665,"dataGaName":666,"dataGaLocation":879},{"text":671,"config":1064},{"href":673,"dataGaName":674,"dataGaLocation":879},{"text":676,"config":1066},{"href":678,"dataGaName":679,"dataGaLocation":879},{"text":1068,"config":1069},"Kund(inn)en",{"href":683,"dataGaName":684,"dataGaLocation":879},{"text":686,"config":1071},{"href":688,"dataGaName":689,"dataGaLocation":879},{"text":691,"config":1073},{"href":693,"dataGaName":694,"dataGaLocation":879},{"text":754,"config":1075},{"href":756,"dataGaName":757,"dataGaLocation":879},{"text":1077,"config":1078},"Neuerungen",{"href":702,"dataGaName":703,"dataGaLocation":879},{"text":1080,"config":1081},"Alle Ressourcen",{"href":637,"dataGaName":1082,"dataGaLocation":879},"all resources",{"title":705,"links":1084},[1085,1087,1089,1091,1093,1095,1097,1099,1101,1106,1111],{"text":713,"config":1086},{"href":715,"dataGaName":707,"dataGaLocation":879},{"text":718,"config":1088},{"href":720,"dataGaName":721,"dataGaLocation":879},{"text":724,"config":1090},{"href":726,"dataGaName":727,"dataGaLocation":879},{"text":729,"config":1092},{"href":731,"dataGaName":732,"dataGaLocation":879},{"text":734,"config":1094},{"href":736,"dataGaName":737,"dataGaLocation":879},{"text":739,"config":1096},{"href":741,"dataGaName":742,"dataGaLocation":879},{"text":744,"config":1098},{"href":746,"dataGaName":747,"dataGaLocation":879},{"text":749,"config":1100},{"href":751,"dataGaName":752,"dataGaLocation":879},{"text":1102,"config":1103},"Nachhaltigkeit",{"href":1104,"dataGaName":1105,"dataGaLocation":879},"/sustainability/","Sustainability",{"text":1107,"config":1108},"Vielfalt, Inklusion und Zugehörigkeit",{"href":1109,"dataGaName":1110,"dataGaLocation":879},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1112,"config":1113},"Transparenzerklärung zu moderner Sklaverei",{"href":1114,"dataGaName":1115,"dataGaLocation":879},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1117},[1118,1121,1124],{"text":1119,"config":1120},"Terms",{"href":929,"dataGaName":930,"dataGaLocation":879},{"text":1122,"config":1123},"Cookies",{"dataGaName":939,"dataGaLocation":879,"id":940,"isOneTrustButton":417},{"text":1125,"config":1126},"Datenschutz",{"href":934,"dataGaName":935,"dataGaLocation":879},[1128],{"id":1129,"title":7,"body":413,"config":1130,"content":1132,"description":413,"extension":1135,"meta":1136,"navigation":417,"path":1137,"seo":1138,"stem":1139,"__hash__":1140},"blogAuthors/en-us/blog/authors/gregory-havenga.yml",{"template":1131},"BlogAuthor",{"name":7,"config":1133},{"headshot":1134},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1787156087/b14eliqrawxplb7bepnc.jpg","yml",{},"/en-us/blog/authors/gregory-havenga",{},"en-us/blog/authors/gregory-havenga","6r7Ew670dHi53monDFdtH8Ltf5eFfXQ9CYDGHwmQZDI",[1142,1150,1158],{"title":1143,"description":1144,"heroImage":1145,"category":409,"date":1146,"authors":1147,"slug":1149,"externalUrl":413},"Zwei Eingangstüren: Zugriffskontrolle auf Modulebene in Django","Angemeldet heißt nicht berechtigt – wie sich Zugriffsrechte in einer Django-App pro Modul durchsetzen lassen, statt nur den Login zu prüfen.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097663/Blog/Hero%20Images/Blog/Hero%20Images/Workflow%201800x945_2gQoQIbY9NvjLFpXtsxtXy_1750097663612.png","2026-10-05",[1148],"Donovan Felton","module-level-access-in-a-django-grc-app",{"title":1151,"description":1152,"heroImage":1153,"category":409,"date":1154,"authors":1155,"slug":1157,"externalUrl":413},"Wie GitLab den Code pro agentischem Flow um 45 % senkte","Wie die Flow Registry aus YAML-Konfigurationen voll funktionsfähige LangGraph-Flows kompiliert – und so die Skalierbarkeit verbessert.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-09-22",[1156],"Mikolaj Wawrzyniak","how-gitlab-reduced-code-per-agentic-flow-ratio",{"title":1159,"description":1160,"heroImage":415,"category":409,"date":1161,"authors":1162,"slug":1164,"externalUrl":413},"Co-Create: GitLab gemeinsam mit unseren Nutzer(inne)n bauen","Wie GitLab-Nutzer(innen) mit uns zusammengearbeitet haben, um in der ersten Jahreshälfte 2026 praktische Produktverbesserungen zu entwickeln.","2026-09-10",[1163],"Isa Huerga","co-create-h1-2026",{"header":1166,"text":1167,"button":1171,"disclaimer":1174},"Kostenlose 30-tägige\n\nGitLab-Testversion starten\n",[1168,1169,1170],"GitLab Duo Agent Platform nutzen","Unsere fortschrittlichsten Funktionen ausprobieren","Komplexe Aufgaben mit KI automatisieren",{"text":817,"config":1172},{"href":1173,"dataGaName":438,"dataGaLocation":674},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/blog/","Keine Kreditkarte erforderlich.",{"header":1176,"blurb":1177,"button":1178,"secondaryButton":1183},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":1179,"config":1180},"Kostenlosen Test starten",{"href":1181,"dataGaName":438,"dataGaLocation":1182},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":766,"config":1184},{"href":768,"dataGaName":443,"dataGaLocation":1182},1791952241317]