<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Maguyva-Blog</title><description>Technische Deep-Dives zu MCP-Code-Intelligence, KI-Agent-Architektur und Erkenntnissen aus dem Aufbau einer mehrsprachigen Code-Suchplattform.</description><link>https://maguyva.ai/de/blog</link><language>de</language><atom:link href="https://maguyva.ai/de/rss.xml" rel="self" type="application/rss+xml"/><item><title>Kontext, der mitreist</title><link>https://maguyva.ai/de/blog/context-that-travels</link><guid isPermaLink="true">https://maguyva.ai/de/blog/context-that-travels</guid><description>Cursors Indexer ist hervorragend – innerhalb von Cursor. Maguyva ist die gehostete MCP-Karte, die derselbe Agent aus anderen Editoren, CLIs und CI heraus abfragen kann.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cursors Indexer ist hervorragend – innerhalb von Cursor. Tab-Vervollständigung, Inline-Edit, Chat und der Agent in diesem Fenster sitzen bereits auf einem Projektindex, den Cursor für den geöffneten Workspace betreibt. Wenn Cursor die einzige Oberfläche ist, in der du schreibst, und dieser Index bereits die richtigen Dateien findet, bleib dort. Das ist der ehrliche Bleib-wo-du-bist-Fall, und er gehört zu Recht in den ersten Satz dieser Seite.&lt;/p&gt;
&lt;p&gt;Dieser Beitrag handelt von der anderen Hälfte einer gewöhnlichen Woche. Dasselbe Repository wird auch in Claude Code geöffnet, von Codex CLI befragt, auf einer zweiten Maschine geprüft oder von einem Agenten in CI abgefragt. Die Frage ist nicht „welcher Indexer ist besser“. Die Frage ist, ob die Karte, der der Agent in einem Fenster vertraut, dieselbe ist wie die im nächsten.&lt;/p&gt;
&lt;p&gt;Maguyva ist diese mitreisende Karte. Es ist eine entfernte MCP-Codebase-Context-Schicht. Der Agent fragt sie genauso ab wie jedes andere MCP-Tool. Ergebnisse kommen als gerankte Pfade mit Zeilennummern zurück. Cursor bleibt der Editor. Der Kontext ist das, was sich bewegt.&lt;/p&gt;
&lt;h2 id=&quot;wofür-cursors-indexer-da-ist&quot;&gt;Wofür Cursors Indexer da ist&lt;/h2&gt;
&lt;p&gt;Cursors eingebaute Indexierung existiert, damit Chat, Agent und Suche im Editor relevanten Code abrufen können, statt sich nur auf das zu verlassen, was ins rohe Kontextfenster des Modells passt. Das ist das richtige Design für eine IDE. Der Index ist nativ zu Cursor. Er ist kein MCP-Server und von keinem anderen Client aus erreichbar.&lt;/p&gt;
&lt;p&gt;So funktioniert es, wie in Cursors öffentlicher Dokumentation und Cursors eigener Darstellung zum Zeitpunkt dieses Textes beschrieben: Der primäre Suchpfad ist keine Cloud-Embedding-Index mehr. Cursors Team erklärte in seinem Community-Forum, dass die dedizierte semantische/Embedding-basierte Suche zugunsten grep-basierten Retrievals zurückgefahren wird, weil aktuelle Modelle einen lebenden Baum von sich aus gut genug durchsuchen. An ihrer Stelle steht Instant Grep, ein lokaler Suchindex aus n-Grammen, invertierten Listen und Bloomfiltern, gehalten in einer memory-gemappten Lookup-Tabelle, sodass Abfragen auf der eigenen Maschine des Entwicklers aufgelöst werden statt auf einem Server.&lt;/p&gt;
&lt;p&gt;Der Index selbst liegt im eigenen &lt;code&gt;.git/cursor/&lt;/code&gt;-Verzeichnis des Repositorys, verankert an einem bestimmten Git-Commit; Änderungen seit diesem Commit legen sich als Schicht darüber, statt einen erneuten Scan auszulösen, und der Index baut sich nur neu auf, wenn der lokale Zustand weit von dem abgewichen ist, wogegen er gebaut wurde. Weil er in &lt;code&gt;.git&lt;/code&gt; liegt, wird er nie versioniert und nie gepusht – lösche den Ordner, und der Index ist weg. &lt;code&gt;.gitignore&lt;/code&gt; wird konstruktionsbedingt respektiert, da nur git-verfolgter Inhalt infrage kommt, und &lt;code&gt;.cursorignore&lt;/code&gt; wird auf dem Lesepfad durchgesetzt. Es gibt in diesem Pfad keinen serverseitigen Embedding-Schritt und keine entfernte Vektordatenbank mehr. Frühere Dokumentation beschrieb ein Cloud-unterstütztes Design – Chunk-Verschlüsselung, einen Merkle-Tree-Abgleich, teamübergreifende Indexwiederverwendung – und Cursors eigenes Team hat inzwischen gesagt, dass dieses Design zurückgefahren wird, weshalb dieser Beitrag es nicht mehr als aktuell beschreibt.&lt;/p&gt;
&lt;p&gt;Eine Besonderheit im Editor ist Cursors Explore-Subagent. Er kann mehrere parallele Suchen in seinem eigenen Kontextfenster auf einem schnelleren Modell starten und nur die relevanten Funde zurückgeben, sodass sich das Hauptgespräch nicht mit Suchtreffern aufbläht. Das ist eine echte Stärke innerhalb des Editors. Behalte sie.&lt;/p&gt;
&lt;p&gt;Multi-Root-Workspaces werden unterstützt: Der Kontext jedes geöffneten Ordners steht dem Agent zur Verfügung. Manche git-abhängigen Funktionen wie Worktrees sind in Multi-Root-Setups deaktiviert, und Cloud Agents unterstützen Multi-Root-Workspaces überhaupt nicht.&lt;/p&gt;
&lt;p&gt;Nichts davon ist ein Grund, Cursor zu verlassen. Es ist eine präzise Beschreibung einer Karte, die dort hervorragend ist, wo sie lebt.&lt;/p&gt;
&lt;h2 id=&quot;was-mitreisen-wirklich-bedeutet&quot;&gt;Was „mitreisen“ wirklich bedeutet&lt;/h2&gt;
&lt;p&gt;Eine Karte reist mit, wenn dieselben Fragen aus mehr als einem Client dieselbe Art von Antwort liefern, mit Zitaten, die du öffnen kannst.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Cursor: „Wo ist &lt;code&gt;parseConfig&lt;/code&gt; definiert, und wer ruft es auf?“&lt;/li&gt;
&lt;li&gt;In Claude Code, im selben Repo: dieselbe Frage.&lt;/li&gt;
&lt;li&gt;In Codex CLI, auf einer Review-Maschine, die das Cursor-Fenster nie geöffnet hat: dieselbe Frage.&lt;/li&gt;
&lt;li&gt;In einem CI-Agenten, der MCP spricht: dieselbe Frage, gegen denselben gehosteten Snapshot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wenn jede Oberfläche ihren eigenen privaten Index baut, hast du keine eine Karte. Du hast mehrere Caches, die auseinanderdriften. Der Editor-Index kann aktuell für den Baum auf der Festplatte sein. Die CLI-Sitzung kann einen Tag hinterherhängen. Der CI-Job kann auf einen anderen Checkout blicken. Der Agent klingt trotzdem weiterhin überzeugt.&lt;/p&gt;
&lt;p&gt;Cursors Indexer soll das nicht lösen. Weil er im Editor lebt, ist der Kontext, den er baut, für diesen Editor. Ein Leser, der auch eine CLI, eine CI-Pipeline oder einen anderen Editor braucht, braucht ein separates Werkzeug für diese Oberflächen. Das ist eine Frage des Geltungsbereichs, kein Mangel. Maguyva ist dieses separate Werkzeug.&lt;/p&gt;
&lt;p&gt;Eine veröffentlichte Sprachanzahl für Cursors Indexer ist in den Notizen, die dieser Entwurf verwenden darf, nicht angegeben. Maguyva veröffentlicht 279+ Sprachen und textbasierte Technologien. Preise für Cursor werden hier ebenfalls nicht übernommen; siehe deren Preisseite. Maguyva berechnet pro Workspace, nicht pro Sitzplatz, mit veröffentlichten Plänen bei $0, $19, $49 und $149, je nach indiziertem Umfang und Workspace-Größe.&lt;/p&gt;
&lt;h2 id=&quot;eine-gehostete-karte-jeder-mcp-client&quot;&gt;Eine gehostete Karte, jeder MCP-Client&lt;/h2&gt;
&lt;p&gt;Maguyva ist ein entfernter MCP-Server. Du verbindest GitHub, wählst die Repositories, und die Cloud-Pipeline baut Symbole, Graphkanten und eine gerankte Karte. Du fügst einen API-Schlüssel zur MCP-Konfiguration des Clients hinzu, den du bereits nutzt. Maguyva hat Einrichtungsanleitungen für 24 dokumentierte MCP-Clients – Cursor eingeschlossen – und kann sich mit anderen MCP-kompatiblen Clients verbinden, die die Standard-MCP-Konfiguration unterstützen.&lt;/p&gt;
&lt;p&gt;Die &lt;a href=&quot;https://maguyva.ai/de/for-cursor&quot;&gt;Cursor-Einrichtungsseite&lt;/a&gt; ist der editor-spezifische Weg, falls du dort arbeitest. Derselbe Server bedient Claude Code, VS Code, Windsurf, Codex CLI und den Rest. Du wechselst den Editor nicht. Du gibst jedem Agenten dieselbe Werkzeugoberfläche: 11 kundenseitige MCP-Tools über Suche, Symbole, Abhängigkeitsanalyse, Dateiabruf, Repository-Kontext und deterministische Utility-Workflows. Semantisches, strukturelles, Graph- und Textretrieval werden zu gerankten Ergebnissen fusioniert.&lt;/p&gt;
&lt;p&gt;Das ist der Portabilitätsvorteil. Die Zitate, die du heute Morgen in Cursor geprüft hast, haben dieselbe Form wie die Zitate, die Codex CLI heute Abend liefert. Dateipfad und Zeilennummer. Öffne sie. Wenn sie falsch sind, siehst du es. Wenn sie richtig sind, hat die nächste Änderung einen Platz zum Landen. Das freigegebene Versprechen sind weniger halluzinierte Änderungen, nicht das Versprechen, dass jede Änderung korrekt ist.&lt;/p&gt;
&lt;p&gt;Aktualität ist veröffentlicht. Snapshots sind zeitgestempelt, sodass der Agent weiß, welche Version des Baums er liest. Der Rebuild-Rhythmus ist täglich im kostenlosen Plan und stündlich in bezahlten Plänen. Die ehrliche Grenze ist unsynchronisierte lokale Arbeit: Eine Änderung, die nur im Arbeitsverzeichnis existiert, ist noch nicht in der gehosteten Karte. Diese Grenze ist dieselbe, egal aus welchem Client du abfragst, und genau das ist der Punkt. Drift zwischen Clients ist keine zweite, versteckte Grenze mehr.&lt;/p&gt;
&lt;p&gt;Die &lt;a href=&quot;https://maguyva.ai/de/docs&quot;&gt;Docs&lt;/a&gt; geben die Aktivierungsschleife an, die für jeden Client gilt: ein Repo indizieren, das du schon kennst, den Client verbinden, eine Frage stellen, die du prüfen kannst. Mach das einmal in Cursor. Mach es noch einmal von der CLI, die du an Review-Tagen tatsächlich nutzt. Wenn beide Antworten denselben Handler zitieren, ist die Karte mitgereist.&lt;/p&gt;
&lt;h2 id=&quot;wie-die-beiden-karten-nebeneinander-bestehen&quot;&gt;Wie die beiden Karten nebeneinander bestehen&lt;/h2&gt;
&lt;p&gt;Nutze beide. Sie sind keine Alternativen im Sinne einer Vergleichsseite.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lass Cursors Indexer für das Projekt auf der Festplatte an. Lass Explore, Instant Grep und den Agenten im Editor ihn nutzen. Diese Schleife ist nativ und schnell.&lt;/li&gt;
&lt;li&gt;Füge Maguyva als MCP-Server in Cursor hinzu, sodass dieselbe Sitzung auch die gehostete Workspace-Karte abfragen kann. Cursor ist ein dokumentierter Maguyva-Client. Du wählst nicht einen Index und löschst den anderen.&lt;/li&gt;
&lt;li&gt;Füge denselben Maguyva-Server zu Claude Code, Codex CLI oder jedem anderen MCP-Client hinzu, der das Repo berührt. Eine API-Schlüsselform. Ein Workspace.&lt;/li&gt;
&lt;li&gt;Wenn ein CI-Agent MCP-kompatibel ist, richte ihn auf denselben Server. Er liest denselben zeitgestempelten Snapshot, den auch der Laptop las.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Der Editor-Index bleibt das beste Werkzeug für „was liegt gerade auf der Festplatte in diesem Fenster“. Die gehostete Karte ist das beste Werkzeug für „wie sieht dieser Workspace für jeden Agenten aus, der ihn heute berührt“. Diese Sätze stehen nicht in Konkurrenz.&lt;/p&gt;
&lt;p&gt;Workspace-Kontingente sind auf der &lt;a href=&quot;https://maguyva.ai/de/pricing&quot;&gt;Preisseite&lt;/a&gt; veröffentlicht: Repos, indizierte Zeilen und Nutzer, abgerechnet pro Workspace. Agenten und Menschen teilen sich dieselbe Nutzerzahl. Starte kostenlos mit einem Repo, das du schon beurteilen kannst. Erhöhe den Workspace erst, nachdem die Zitate den Kontakt mit dem Baum überstanden haben.&lt;/p&gt;
&lt;h2 id=&quot;was-diese-seite-nicht-behauptet&quot;&gt;Was diese Seite nicht behauptet&lt;/h2&gt;
&lt;p&gt;Sie behauptet nicht, dass Cursors Indexer schwach, unvollständig oder ein Grund zum Editorwechsel ist. Der erste Satz dieses Entwurfs ist das Gegenteil.&lt;/p&gt;
&lt;p&gt;Sie behauptet nicht, dass Maguyva Instant Grep oder den Explore-Subagenten ersetzt. Das sind Cursor-Funktionen. Sie bleiben in Cursor.&lt;/p&gt;
&lt;p&gt;Sie erfindet keine Sprachanzahl, keine Latenzzahl und keine Token-Ersparnis für eines der beiden Produkte. Unbekannte Zahlen bleiben unveröffentlicht.&lt;/p&gt;
&lt;p&gt;Sie tut nicht so, als sei ungepushte lokale Arbeit in der gehosteten Karte. Zeitgestempelte Snapshots machen diese Grenze sichtbar. Sie beseitigen sie nicht.&lt;/p&gt;
&lt;p&gt;Der Test ist gewöhnlich. Indiziere ein Repo, das du schon kennst. Stelle eine Frage, die du prüfen kannst, zuerst in Cursor, dann in einem zweiten MCP-Client. Kontext, der mitreist, ist an beiden Orten dasselbe Zitat.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// same map, wherever you opened it.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Ecosystem</category><category>MCP</category><category>Portability</category></item><item><title>Erst die Karte, dann das Review</title><link>https://maguyva.ai/de/blog/map-first-review-second</link><guid isPermaLink="true">https://maguyva.ai/de/blog/map-first-review-second</guid><description>Verankere den Coding-Agenten in einer Repo-Karte, bevor er schreibt. Lass danach Greptile den Pull Request reviewen. Ein komplementäres Paar, kein Ersatz.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Zwei verschiedene Aufgaben stehen auf beiden Seiten eines Pull Requests. Bevor der Agent schreibt, braucht er eine Karte des Baums, den er gleich ändert. Nachdem der Agent einen PR eröffnet hat, sollte etwas diese Änderung gegen den Rest des Systems lesen und Kommentare hinterlassen, nach denen ein Mensch handeln kann.&lt;/p&gt;
&lt;p&gt;Diese Aufgaben sehen aus der Ferne ähnlich aus, weil beide „das Codebase verstehen“ beinhalten. Sie sind nicht dasselbe Produkt. Die eine beantwortet „wo sollte diese Änderung landen?“. Die andere beantwortet „was hat dieser Diff kaputtgemacht, das ein zeilenweiser Linter übersehen wird?“. Sie zu vermischen ergibt einen schlechteren ersten Entwurf und ein lauteres Review.&lt;/p&gt;
&lt;p&gt;Dieser Beitrag ist ein Guide für ein gemeinsames Workflow. Maguyva ist die Karte, die der Agent zuerst abfragt. Greptile ist der Review-Agent, der danach den PR kommentiert. Das Paar ist von Natur aus komplementär: Maguyva reviewt keine Pull Requests, und Greptile ersetzt nicht die Context-Schicht, die der Agent zum Schreiben genutzt hat.&lt;/p&gt;
&lt;h2 id=&quot;warum-die-aufteilung-nützlich-ist&quot;&gt;Warum die Aufteilung nützlich ist&lt;/h2&gt;
&lt;p&gt;Ein Coding-Agent, der von Trainingspriors plus ein paar eingefügten Dateien ausgeht, erfindet einen plausiblen Pfad und editiert ihn. Das ist das Falsche-Datei-Versagen, und es ist ein Retrieval-Problem. Maguyva ist eine entfernte MCP-Codebase-Context-Schicht: Semantisches, strukturelles (AST), Graph-/Abhängigkeits- und Textretrieval, fusioniert zu gerankten Ergebnissen, plus Symbol-Lookup und Dateiabruf. Fundierte Antworten kommen als &lt;code&gt;path/file.ext:line&lt;/code&gt; zurück, sodass du einen Fehltreffer ablehnen kannst, bevor ein Patch existiert. Das Versprechen bleibt bescheiden: weniger halluzinierte Änderungen. Das Modell kann trotzdem raten. Der erste Schritt hört nur auf, ein Raten zu sein.&lt;/p&gt;
&lt;p&gt;Greptile ist ein KI-Code-Review-Agent. In ihren eigenen Worten reviewt es automatisch jeden Pull Request mit vollständigem Verständnis der Codebase, und es positioniert das gegen traditionelle Linter, die Dateien isoliert statt das ganze System prüfen. Die Einrichtung besteht darin, die GitHub- oder GitLab-App zu installieren und Repositories auszuwählen. Es gibt keinen lokalen Index, den du betreiben musst. Gehostet wird auf Greptile Cloud (sie geben SOC-2-Typ-II-Konformität an, mit einem Bericht auf Anfrage), mit einer Self-Hosted-Option für Unternehmen.&lt;/p&gt;
&lt;p&gt;Ihr eigener nummerierter Ablauf ist: verbinden und einen Dependency-Graphen jeder Funktion, Klasse und Abhängigkeit bauen; bei jedem Pull Request die Änderung anhand dieses Gesamt-Repo-Graphen analysieren und Befunde als PR-Kommentare mit Änderungsvorschlägen posten, in etwa drei Minuten; jeder Kommentar kann das Problem an einen Coding-Agenten übergeben, den das Team bereits nutzt. Sie geben außerdem an, frühere menschliche PR-Kommentare über die Zeit zu lesen, um die Coding-Standards eines Teams zu lernen und störende Vorschläge zu reduzieren. Ihr Lernsystem soll laut eigener Angabe 2–3 Wochen zum Anpassen brauchen.&lt;/p&gt;
&lt;p&gt;Das ist Review, kein Entwurf. Greptiles Stärke ist der Gesamt-Repo-Graph-Kontext auf die Änderung, die bereits in einem PR gelandet ist, dann eine geschlossene Schleife, die den Befund an Claude Code, Codex, Conductor, Cursor oder Devin sendet. Maguyvas Stärke ist die gerankte Karte, die der Agent abgefragt hat, bevor diese Änderung geschrieben wurde. Nutze beide. Verlang von keinem der beiden, den Job des anderen zu machen.&lt;/p&gt;
&lt;p&gt;Eine Erstanbieter-Integration Maguyva–Greptile ist nicht angegeben. Du brauchst auch keine. Maguyva spricht über MCP mit dem Agenten. Greptile spricht über deren App mit GitHub oder GitLab. Sie treffen sich beim Pull Request. Kein Glue-Script, kein Cron, der das eine Werkzeug ins andere leitet. Das Paar kommt ohne Bash aus, weil jedes Produkt bereits auf der Oberfläche sitzt, die ihm gehört.&lt;/p&gt;
&lt;h2 id=&quot;was-das-hier-nicht-ist&quot;&gt;Was das hier nicht ist&lt;/h2&gt;
&lt;p&gt;Das ist kein Verriss von Greptile. Es ist keine „Wechsle deinen Reviewer“-Seite. Greptile startete am 5. März 2024 auf Hacker News als Y-Combinator-W24-Unternehmen, und dieser Thread ist, wie viele Leute das Produkt zuerst kennengelernt haben. Wenn du sie so gefunden hast, behalte sie. Diese Seite ist die fehlende vordere Hälfte dieser Schleife: den Agenten so verankern, dass der PR, den Greptile sieht, schon auf die richtigen Dateien zielt.&lt;/p&gt;
&lt;p&gt;Greptiles Marketingmaterial führt mit Review-Geschwindigkeits- und Bug-Fang-Behauptungen. Behandle diese als Greptiles eigene Behauptungen, nicht als unabhängig verifizierte Zahlen. Dieser Entwurf gibt sie nicht als Fakten wieder.&lt;/p&gt;
&lt;p&gt;Sprachabdeckung ist dieselbe Art von Ehrlichkeit. Greptile rahmt Unterstützung als Abdeckung aller Programmiersprachen statt einer aufgezählten Liste; eine genaue Zahl ist nicht angegeben. Maguyva veröffentlicht 279+ Sprachen und textbasierte Technologien, mit einer technischen Aufteilung (parser-gestütztes AST versus reiner Text) auf der Seite, wenn die Frage technisch ist. Das sind unterschiedliche Produkte mit unterschiedlichen Behauptungen. Vermisch sie nicht.&lt;/p&gt;
&lt;p&gt;Preise für Greptile sind in den Notizen, die dieser Entwurf verwenden darf, nicht angegeben. Bezahlte Pläne existieren; siehe deren Preisseite. Maguyva berechnet pro Workspace, nicht pro Sitzplatz. Pläne starten kostenlos. Die &lt;a href=&quot;https://maguyva.ai/de/pricing&quot;&gt;Preisseite&lt;/a&gt; listet die veröffentlichten Stufen, falls du die Workspace-Zahlen brauchst.&lt;/p&gt;
&lt;h2 id=&quot;workflow&quot;&gt;Workflow&lt;/h2&gt;
&lt;p&gt;Drei benannte Stufen. Führe sie in dieser Reihenfolge aus. Überspring beim ersten Versuch dieser Paarung keine davon.&lt;/p&gt;
&lt;h3 id=&quot;1-maguyva-kontext&quot;&gt;1. Maguyva-Kontext&lt;/h3&gt;
&lt;p&gt;Indiziere ein Repository, das du schon kennst. Verbinde den MCP-Client, in dem du schon schreibst – Claude Code, Cursor, Codex CLI, VS Code, Windsurf oder einen anderen MCP-kompatiblen Client. Maguyva hat Einrichtungsanleitungen für 24 dokumentierte MCP-Clients und kann sich mit anderen Clients verbinden, die die Standard-MCP-Konfiguration unterstützen.&lt;/p&gt;
&lt;p&gt;Stell eine Frage, die du beurteilen kannst, bevor irgendjemand eine Zeile schreibt. „Wo wird der Ablauf der Sitzung behandelt, und was ruft das auf?“ ist ein besserer erster Zug als „repariere die Auth“. Verlange Zitate. Öffne die &lt;code&gt;file.ext:line&lt;/code&gt;-Ergebnisse. Folge dem Symbol. Bestätige die Abhängigkeit, die du gleich anfasst.&lt;/p&gt;
&lt;p&gt;Maguyva stellt 11 kundenseitige MCP-Tools über Suche, Symbole, Abhängigkeitsanalyse, Dateiabruf, Repository-Kontext und deterministische Utility-Workflows bereit. Vier Retrieval-Modi werden zu gerankten Ergebnissen fusioniert; &lt;code&gt;find_symbol&lt;/code&gt; ist ein separates Tool, wenn du den Namen schon kennst. Die &lt;a href=&quot;https://maguyva.ai/de/docs&quot;&gt;Docs&lt;/a&gt; beschreiben den kürzesten Weg: kostenlos starten, ein Repo indizieren, das du schon kennst, den Client verbinden, dann eine Frage stellen, die du prüfen kannst.&lt;/p&gt;
&lt;p&gt;Snapshots sind zeitgestempelt, sodass der Agent erkennen kann, welche Version des Baums er liest. Die ehrliche Grenze ist unsynchronisierte lokale Arbeit. Wenn die Änderung nur in einem Arbeitsverzeichnis existiert und nicht gepusht wurde, enthält die gehostete Karte sie noch nicht. Instruktionsdateien (&lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;) gehören auch weiterhin hierher, für Konventionen und was nicht angefasst werden soll. Sie sind keine lebendige Karte. Nutze sie für Verhalten. Nutze Maguyva für Fakten.&lt;/p&gt;
&lt;p&gt;Lass den Agenten keinen PR eröffnen, bevor die Zitate den Kontakt mit dem Repo überstanden haben. Dieses Gate ist der ganze Sinn dieser Stufe.&lt;/p&gt;
&lt;h3 id=&quot;2-agent-pr&quot;&gt;2. Agent-PR&lt;/h3&gt;
&lt;p&gt;Derselbe Agent schreibt die Änderung nun in dem Client, für den du bereits bezahlst. Maguyva ist kein Editor und kein Reviewer. Der Agent produziert weiterhin den Diff. Du eröffnest den Pull Request weiterhin auf GitHub oder GitLab, so wie du es schon tust.&lt;/p&gt;
&lt;p&gt;Was anders sein sollte, ist die erste Datei. Der PR sollte den Handler benennen, der das Verhalten tatsächlich implementiert, den Aufrufer, der brechen wird, und den Test, der fehlschlagen wird, wenn die Änderung falsch ist. Wenn Stufe 1 übersprungen wurde, verbringt Stufe 3 ihre Kommentare mit einer Änderung, die im falschen Paket gelandet ist. Greptile kann trotzdem systemische Probleme finden. Es sollte sich nicht auch noch von einem halluzinierten Pfad erholen müssen.&lt;/p&gt;
&lt;p&gt;Halte den PR eng gefasst. Eine fundierte erste Datei ist keine Lizenz, das Modul umzuschreiben. Das komplementäre Paar funktioniert, wenn der Agent einen Job mit einer Karte erledigt hat und dann einen Reviewer gebeten hat, einen anderen Job an einem begrenzten Diff zu machen.&lt;/p&gt;
&lt;h3 id=&quot;3-greptile-review&quot;&gt;3. Greptile-Review&lt;/h3&gt;
&lt;p&gt;Greptile ist bereits über die GitHub- oder GitLab-App mit dem Repository verbunden. Beim neuen Pull Request analysiert es die Änderung anhand des gebauten Gesamt-Repo-Graphen und postet Befunde als Kommentare mit Änderungsvorschlägen. Ihr eigenes Material setzt diesen Durchgang bei etwa drei Minuten an.&lt;/p&gt;
&lt;p&gt;Lies die Kommentare so, wie du einen sorgfältigen Teamkollegen lesen würdest: die zitierte Stelle öffnen, entscheiden, ob der Befund echt ist, dann handeln. Wo Greptile „Fix with your Agent“ anbietet, sendet es das Problem – Dateipfade, Zeilennummern, vorgeschlagenen Code – an Claude Code, Codex, Conductor, Cursor oder Devin. „Fix All“ sendet alle Probleme im Review auf einmal. Sie liefern außerdem einen Greptile-MCP und ein Claude-Code-Plugin für diese Übergabe. Maguyva steht nicht auf dieser benannten Zielliste; diese Abwesenheit ist kein Problem. Maguyva hat seine Arbeit schon in Stufe 1 erledigt. Der Coding-Agent, der den PR geschrieben hat, ist derjenige, der die Fix-Payload erhalten sollte.&lt;/p&gt;
&lt;p&gt;Erwarte in den ersten 2–3 Wochen Rauschen, während sich Greptiles Lernsystem an die Kommentare anpasst, die dein Team tatsächlich hinterlässt. Das ist ihr angegebener Zeitrahmen, kein Mangel in der Paarung. Menschliches Review bleibt Teil der Schleife. Greptile ist der automatisierte erste Durchgang, nicht der Merge-Button.&lt;/p&gt;
&lt;p&gt;Wenn ein Greptile-Kommentar auf eine Datei zeigt, die der Agent in Stufe 1 nie abgefragt hat, ist das ein nützliches Signal. Entweder hat die Karte einen Aufrufer verpasst, oder der Agent hat ein Zitat übersprungen. Repariere den Entwurf gegen den Kommentar. Deaktiviere nicht den Reviewer.&lt;/p&gt;
&lt;h2 id=&quot;wie-man-das-zusammenspiel-ehrlich-hält&quot;&gt;Wie man das Zusammenspiel ehrlich hält&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Maguyva zuerst, immer. Ein Review eines Falsche-Datei-PRs ist immer noch ein Review der falschen Datei.&lt;/li&gt;
&lt;li&gt;Greptile danach, immer. Ein gut zitierter Entwurf braucht trotzdem eine Gesamtsystem-Lesung des Diffs.&lt;/li&gt;
&lt;li&gt;Bitte Maguyva nicht, PR-Kommentare zu posten. Das tut es nicht.&lt;/li&gt;
&lt;li&gt;Bitte Greptile nicht, die erste Retrieval-Schicht des Agenten zu sein, während der noch einen Pfad wählt. Das ist nicht der Job, für den deren GitHub- oder GitLab-App gebaut ist.&lt;/li&gt;
&lt;li&gt;Erfinde keine Bash-Pipeline, die die beiden „synchronisiert“. Der PR ist die Schnittstelle.&lt;/li&gt;
&lt;li&gt;Prüfe beide Seiten unabhängig. Indiziere ein Repo, das du schon kennst. Stelle eine Frage, die du prüfen kannst. Öffne dann einen kleinen PR und lies, was Greptile tatsächlich kommentiert.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Schleife ist gewöhnlich, sobald man sie benennt. Erst die Karte. Dann der Agent-PR. Dann das Review. Jedes Produkt bleibt auf der Seite des Pull Requests, in der es gut ist.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// map first. review second. in that order.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Ecosystem</category><category>Workflow</category><category>Code Review</category></item><item><title>Einem KI-Agenten Kontext eines großen Repos geben, ohne lokalen Indexer</title><link>https://maguyva.ai/de/blog/large-repo-context-without-a-local-indexer</link><guid isPermaLink="true">https://maguyva.ai/de/blog/large-repo-context-without-a-local-indexer</guid><description>Wie du einem Coding-Agenten eine abfragbare Karte eines großen Repositorys aus der Cloud gibst, ohne einen lokalen Indexer auf deinem Laptop laufen zu lassen.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ein großes Repository passt nicht in ein Kontextfenster, und wenn du je einen Laptop-Indexer auf ein echtes Monorepo losgelassen hast, weißt du, dass es dort auch nicht bequem hineinpasst – der RAM schnellt hoch, der erste Index dauert eine Stunde, und dein Agent rät in der nächsten Sitzung immer noch, welche Dateien wichtig sind.&lt;/p&gt;
&lt;p&gt;Die übliche Antwort ist, einen Indexer neben dem Editor laufen zu lassen, und für ein Repo, das bequem auf eine Maschine passt, ist das eine gute Antwort. Wenn dein Monorepo in Cursor schon schnell indiziert und das der einzige Ort ist, an dem du die Karte brauchst, hat dieser Beitrag nichts hinzuzufügen – überspring ihn.&lt;/p&gt;
&lt;p&gt;Dieser Beitrag handelt vom anderen Fall – wenn ein Agent eine abfragbare Karte eines großen Repos braucht und du dafür keinen lokalen Indexer laufen lassen willst.&lt;/p&gt;
&lt;h2 id=&quot;wann-ein-lokaler-indexer-das-falsche-werkzeug-ist&quot;&gt;Wann ein lokaler Indexer das falsche Werkzeug ist&lt;/h2&gt;
&lt;p&gt;Ein lokaler Index setzt voraus, dass der Code auf der Maschine liegt, die ihn abfragt, und bei echter Monorepo-Größe gerät diese Annahme selbst innerhalb eines einzigen Editors ins Wanken. Das Repo ist schlicht größer, als du auf einem Laptop warmhalten willst: Du arbeitest in einem Paket, während der Auswirkungsradius drei Verzeichnisse weiter liegt, und einen kalten Erstindex eines Zwei-Millionen-Zeilen-Baums willst du dir nicht zweimal antun – weder auf deiner Maschine noch auf einem CI-Runner, der den Baum nie zuvor geklont hat. Oder ein Teammitglied sollte dieselbe Karte abfragen können wie du, ohne darauf zu warten, dass die eigene Maschine sich erst durch denselben Index arbeitet.&lt;/p&gt;
&lt;p&gt;Nichts davon ist ein Grund, einen guten Editor-Indexer wegzuwerfen. Es ist ein Grund, zusätzlich eine gehostete Karte zu haben, die jeder deiner Agenten über MCP abfragen kann.&lt;/p&gt;
&lt;p&gt;Und das Skalierungsproblem reicht tiefer als „zu viele Dateien zum Einfügen“. Auf einem großen Baum ist die interessante Frage fast nie „zeig mir diese Datei“ – sondern welche Datei, welches Symbol, welche Aufrufer, welche Tests. Ein Agent, der damit anfängt, &lt;code&gt;src/&lt;/code&gt; aufzulisten und die ersten drei Treffer zu lesen, verpasst mit Freude den Handler in &lt;code&gt;apps/api&lt;/code&gt; und den generierten Client in &lt;code&gt;packages/sdk&lt;/code&gt;. Was du brauchst, ist Retrieval, das aus dem gesamten Baum gebaut, dann gerankt, dann zitiert wurde.&lt;/p&gt;
&lt;h2 id=&quot;was-kontext-eines-großen-repos-wirklich-bedeutet&quot;&gt;Was „Kontext eines großen Repos“ wirklich bedeutet&lt;/h2&gt;
&lt;p&gt;Dateien in den Prompt zu kippen ist kein Kontext – es ist eine kleinere, schlechtere Kopie des Baums. Was dein Agent tatsächlich braucht, ist, Fragen zu stellen und zitierte Antworten zurückzubekommen: Wo ist dieses Symbol definiert und wer ruft es auf, was hängt von dem Modul ab, das ich gerade ändern will, welche Testdatei deckt dieses Verhalten ab, und wie sieht der Baum &lt;em&gt;jetzt&lt;/em&gt; aus, nicht letztes Quartal.&lt;/p&gt;
&lt;p&gt;Diese Antworten müssen aus einem Index kommen, der aus deinem Repo gebaut wurde, statt aus der Erinnerung des Modells an fremde Repos, und der Index muss anderswo leben als im Kontextfenster des Agenten. Für dieses Problem sollte er auch anderswo leben als auf deinem Laptop.&lt;/p&gt;
&lt;p&gt;Noch etwas, was Instruktionsdateien nicht für dich leisten können: &lt;code&gt;CLAUDE.md&lt;/code&gt; und &lt;code&gt;AGENTS.md&lt;/code&gt; sind der richtige Ort für Konventionen und Verhalten, aber sie sind keine lebendige, gerankte, abfragbare Karte eines Zwei-Millionen-Zeilen-Baums. Nutze Regeln für Verhalten; nutze Repo-Intelligenz für Fakten.&lt;/p&gt;
&lt;h2 id=&quot;die-karte-in-der-cloud-bauen-von-jedem-client-abfragen&quot;&gt;Die Karte in der Cloud bauen, von jedem Client abfragen&lt;/h2&gt;
&lt;p&gt;Maguyva ist eine entfernte MCP-Codebase-Context-Schicht. Du verbindest GitHub, wählst deine Repositories, und gehst weg, während Cloud-Pipelines den Baum parsen, die Symbole und Graphkanten bauen und eine gerankte Karte pflegen – nie ein lokaler Indexer.&lt;/p&gt;
&lt;p&gt;Wenn du Code pushst, werden geänderte Dateien inkrementell geparst, und die Graph- und Ranking-Schichten bauen sich nach einem Zeitplan neu auf: täglich im kostenlosen Plan, stündlich in bezahlten Plänen. Jeder Snapshot ist zeitgestempelt, sodass dein Agent erkennen kann, welche Version des Baums er liest. Die ehrliche Grenze hier ist unsynchronisierte lokale Arbeit – eine Änderung, die nur in deinem Arbeitsverzeichnis existiert und nie gepusht wurde, ist noch nicht in der gehosteten Karte.&lt;/p&gt;
&lt;p&gt;Dann verkabelst du, welchen Client du auch nutzt, indem du einen API-Schlüssel zu dessen MCP-Konfiguration hinzufügst. Es gibt Einrichtungsanleitungen für 24 dokumentierte MCP-Clients, und jeder andere MCP-kompatible Client, der Standardkonfiguration unterstützt, kann sich ebenfalls verbinden. Wenn Cursor dein Zuhause ist, geht die &lt;a href=&quot;https://maguyva.ai/de/for-cursor&quot;&gt;Cursor-Seite&lt;/a&gt; diesen Weg; derselbe Server bedient Claude Code, VS Code, Windsurf, Codex CLI und den Rest.&lt;/p&gt;
&lt;p&gt;Du wechselst den Editor nicht. Du gibst deinem Agenten eine Werkzeugoberfläche – 11 MCP-Tools über Suche, Symbole, Abhängigkeitsanalyse, Dateiabruf und Repository-Kontext – mit Abdeckung über 279+ Sprachen und textbasierte Technologien, was auf einem Monorepo, das schon lange keine einzelne Sprache mehr ist, mehr zählt, als man denkt.&lt;/p&gt;
&lt;p&gt;Antworten kommen fundiert zurück, als Dateipfade mit Zeilennummern. Semantisches, strukturelles, Graph- und Textretrieval werden zu gerankten Ergebnissen fusioniert, sodass eine Frage wie „was hängt von parseConfig ab“ weder einen Grep-Dump noch einen einzelnen semantischen Chunk liefert, sondern die Handvoll Stellen, die tatsächlich zählen.&lt;/p&gt;
&lt;h2 id=&quot;eine-konkrete-anleitung&quot;&gt;Eine konkrete Anleitung&lt;/h2&gt;
&lt;p&gt;Fang nicht damit an, die ganze Firma zu indizieren. Hier ist der Weg, der funktioniert:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wähle ein Repository, das du schon gut kennst – ein Paket, das du von Hand beurteilen kannst, schlägt den größten Baum, den du hast.&lt;/li&gt;
&lt;li&gt;Starte kostenlos: 3 Repos, 50.000 indizierte Zeilen, alle 11 Tools, kein monatliches Abfragelimit. Wenn dein repräsentatives Repo größer ist, listet die &lt;a href=&quot;https://maguyva.ai/de/pricing&quot;&gt;Preisseite&lt;/a&gt; die Workspace-Stufen ($0, $19, $49, $149) nach indiziertem Umfang – nicht nach Sitzplatzzahl.&lt;/li&gt;
&lt;li&gt;Verbinde GitHub und warte, bis der erste Index fertig ist. Du kompilierst dabei nichts lokal.&lt;/li&gt;
&lt;li&gt;Verkabele den MCP-Client – ein paar Zeilen Konfiguration. Maguyva ist ein entfernter MCP-Server, also gibt es keine Plugins, keine Erweiterungen und keinen zweiten Editor, den du übernehmen musst.&lt;/li&gt;
&lt;li&gt;Stelle eine Frage, die du prüfen kannst. „Was hängt von parseConfig ab?“ oder „Wo wird der Ablauf der Login-Sitzung behandelt?“ Öffne dann die zitierten &lt;code&gt;file.ext:line&lt;/code&gt;-Ergebnisse und prüfe sie gegen den Baum vor dir.&lt;/li&gt;
&lt;li&gt;Erst wenn die Zitate diesen Kontakt überstehen, lässt du den Agenten editieren.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Wenn das erste Repo gut passt und dein Baum groß ist, erhöhe den Workspace passend zu deinen indizierten Zeilen und dem Rebuild-Rhythmus. Menschen und Agenten teilen sich dieselbe Nutzerzahl – Maguyva berechnet pro Workspace, nicht pro Sitzplatz –, sodass ein dritter Agent in der Schleife dich nichts kostet.&lt;/p&gt;
&lt;p&gt;Der Aktivierungstest ist derselbe, den die &lt;a href=&quot;https://maguyva.ai/de/docs&quot;&gt;Docs&lt;/a&gt; für jeden ersten Lauf empfehlen: ein Repo indizieren, das du schon kennst, eine Frage stellen, die du prüfen kannst. Ein großes Repo ändert den Test nicht; es macht nur eine falsche erste Datei teurer.&lt;/p&gt;
&lt;h2 id=&quot;worauf-nach-dem-verkabeln-achten&quot;&gt;Worauf nach dem Verkabeln achten&lt;/h2&gt;
&lt;p&gt;Behalte drei Dinge im Blick. Aktualität: bezahlte Pläne bauen stündlich neu, kostenlose täglich, und ungepushte lokale Arbeit wird nicht in der Karte sein – das ist der Kompromiss, den du eingehst. Umfang: indiziere eine repräsentative Menge an Repos, nicht jeden archivierten Fork; die kostenlose Stufe ist bewusst so bemessen, dass du herausfindest, ob die Antworten das Behalten wert sind. Und Verifikation: eine Große-Repo-Karte, die keine Pfade und Zeilennummern zitieren kann, ist nur eine langsamere Rate-Maschine, also lass deinen Agenten den Ort zeigen, bevor er den Patch ausliefert.&lt;/p&gt;
&lt;p&gt;Dann führe denselben Test durch, den du bei einem kleinen Repo durchführen würdest. Indiziere ein Repo, das du schon kennst. Stelle eine Frage, die du prüfen kannst. Wenn die Karte echt ist, hört dein Agent auf, von einem kalten Baum aus zu starten.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// no laptop got hot building this map.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>AI Agents</category><category>MCP</category><category>Indexing</category><category>Monorepos</category></item><item><title>Warum dein KI-Coding-Agent Dateipfade halluziniert</title><link>https://maguyva.ai/de/blog/why-ai-coding-agents-hallucinate-file-paths</link><guid isPermaLink="true">https://maguyva.ai/de/blog/why-ai-coding-agents-hallucinate-file-paths</guid><description>KI-Coding-Agenten erfinden Dateipfade, wenn sie keine echte Karte des Repos haben. Hier ist, warum das passiert, und wie Verankerung zu weniger halluzinierten Änderungen führt.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Das Verräterische ist nicht ein falscher Funktionskörper. Es ist eine selbstsichere Änderung an einer Datei, die nicht existiert, oder an einer Datei, die zwar existiert, aber nicht diejenige ist, die das Verhalten implementiert.&lt;/p&gt;
&lt;p&gt;Du hast um eine Reparatur des Sitzungsablaufs gebeten. Der Agent hat &lt;code&gt;src/auth/session.ts&lt;/code&gt; geöffnet. Dieser Pfad ist plausibel. Er ist auch falsch. Der echte Handler lebt in &lt;code&gt;apps/api/src/middleware/expiry.ts&lt;/code&gt;, umbenannt vor zwei Refactorings. Der Agent hat dich nicht angelogen. Er hat einen pfadförmigen String aus Trainingspriors plus was auch immer schon im Kontextfenster war vervollständigt.&lt;/p&gt;
&lt;p&gt;Das ist das übliche Versagensmuster auf einem echten Repository. Das Modell kann Code schreiben. Der Fehler liegt darin, den falschen Ort zum Schreiben zu wählen.&lt;/p&gt;
&lt;h2 id=&quot;warum-agenten-pfade-erfinden&quot;&gt;Warum Agenten Pfade erfinden&lt;/h2&gt;
&lt;p&gt;Ein Coding-Agent ist ein Next-Token-Modell mit Werkzeugen. Wenn du sagst „repariere den Sitzungsablauf“, muss er eine Datei benennen, bevor er irgendetwas lesen oder patchen kann. Wenn er noch keine verankerte Karte hat, konstruiert er einen Pfad aus:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Namenskonventionen, die er in anderen Repositories gesehen hat. &lt;code&gt;src/auth/session.ts&lt;/code&gt; ist eine häufige Form.&lt;/li&gt;
&lt;li&gt;Dateien, die schon im Gespräch sind, die vielleicht die sind, die du letzte Woche eingefügt hast, nicht die, die jetzt zählen.&lt;/li&gt;
&lt;li&gt;Verzeichnislistings, die er zufällig ausgeführt hat, die auf einem großen Baum unvollständig sind.&lt;/li&gt;
&lt;li&gt;Instruktionsdateien. &lt;code&gt;CLAUDE.md&lt;/code&gt; und &lt;code&gt;AGENTS.md&lt;/code&gt; sagen dem Agenten, wie er sich verhalten soll. Sie sind kein lebendiger Index von Symbolen, Aufrufern oder aktuellen Pfaden.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Keine dieser Quellen ist eine Karte dieses Repos, heute. Das Modell füllt die Lücke so, wie es jede Lücke füllt: mit einer hochwahrscheinlichen Fortsetzung. Diese Fortsetzung sieht oft wie ein echter Pfad aus. Manchmal existiert die Datei und liegt neben der richtigen. Manchmal existierte sie auf einem Branch, der letzten Monat gemergt wurde. Manchmal hat sie nie existiert.&lt;/p&gt;
&lt;p&gt;Grep rettet dich hier nicht, wenn der Agent nie nach dem richtigen String sucht. Der Agent hat einen Pfad geraten, dann gelesen, was dieser Pfad zurückgab, dann editiert. Der erste falsche Schritt war der Pfad, nicht der Patch.&lt;/p&gt;
&lt;p&gt;Dateien zu lesen ist auch nicht dasselbe wie die richtigen zu finden. Claude Code, Cursor, Codex und ähnliche Werkzeuge können öffnen, worauf du sie zeigst. Die Frage ist, ob sie zuverlässig die richtigen Dateien finden, die wichtigen Symbole, die Abhängigkeiten, die Tests und den Auswirkungsradius, bevor sie editieren. Dateizugriff ohne Karte fängt immer noch mit einem Raten an.&lt;/p&gt;
&lt;h2 id=&quot;die-falsche-datei-änderung-ist-ein-retrieval-problem&quot;&gt;Die Falsche-Datei-Änderung ist ein Retrieval-Problem&lt;/h2&gt;
&lt;p&gt;Behandle den erfundenen Pfad als Retrieval-Fehltreffer, nicht als Charakterfehler.&lt;/p&gt;
&lt;p&gt;Wenn der Agent &lt;code&gt;path/file.ext:line&lt;/code&gt; zurückgeben müsste, bevor er editieren darf, würden zwei Dinge passieren. Erstens könntest du das Zitat öffnen und die Arbeit in zehn Sekunden ablehnen. Zweitens müsste der Agent etwas abfragen, das den Baum tatsächlich kennt.&lt;/p&gt;
&lt;p&gt;Das ist der Job einer Codebase-Context-Schicht. Semantische Suche allein reicht nicht. Ein Chunk, der „nach Sitzungsablauf klingt“, kann trotzdem in einem veralteten Paket landen. Du brauchst auch exakten Text, wenn du den String kennst, Symbol-Lookup, wenn du den Namen kennst, strukturelle Suche, wenn du die Form kennst, und einen Dependency-Graphen, wenn du Aufrufer und Auswirkungsradius brauchst.&lt;/p&gt;
&lt;p&gt;Maguyva ist diese Schicht für MCP-kompatible Coding-Agenten. Es ist kein Editor. Claude Code, Cursor, Codex CLI, VS Code, Windsurf und andere MCP-Clients bleiben, wo sie sind. Der Agent fragt eine gerankte Karte ab, bevor er eine Zeile anfasst.&lt;/p&gt;
&lt;p&gt;Das Versprechen ist absichtlich bescheiden: weniger halluzinierte Änderungen. Maguyva nimmt dem Modell nicht die Fähigkeit zu raten. Es ändert den Standard-ersten-Schritt von „einen plausiblen Pfad erfinden“ zu „nach gerankten, zitierten Orten fragen“.&lt;/p&gt;
&lt;h2 id=&quot;wie-eine-fundierte-antwort-aussieht&quot;&gt;Wie eine fundierte Antwort aussieht&lt;/h2&gt;
&lt;p&gt;Eine nützliche Antwort auf „wo wird der Sitzungsablauf behandelt“ ist kein Absatz. Es ist eine kurze Liste von Orten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;apps/api/src/middleware/expiry.ts:48&lt;/code&gt; - der Handler&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apps/web/src/lib/auth-client.ts:112&lt;/code&gt; - der Aufrufer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apps/api/tests/expiry.test.ts:20&lt;/code&gt; - der Test, der fehlschlägt, wenn die Änderung falsch ist&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Du kannst diese Zeilen öffnen. Wenn sie falsch sind, stoppst du. Wenn sie richtig sind, darf der Agent editieren. Die Verifikation ist der Punkt, kein Slogan.&lt;/p&gt;
&lt;p&gt;Maguyva stellt 11 kundenseitige MCP-Tools über Suche, Symbole, Abhängigkeitsanalyse, Dateiabruf, Repository-Kontext und deterministische Utility-Workflows bereit. Vier Retrieval-Modi (semantisch, strukturell, Graph/Abhängigkeit und Text) werden zu gerankten Ergebnissen fusioniert; Symbol-Lookup ist ein separates MCP-Tool (&lt;code&gt;find_symbol&lt;/code&gt;). Fundierte Antworten kommen mit Dateipfaden und Zeilennummern zurück, sodass du sie gegen den Baum vor dir beurteilen kannst.&lt;/p&gt;
&lt;p&gt;Die &lt;a href=&quot;https://maguyva.ai/de/docs&quot;&gt;Docs&lt;/a&gt; beschreiben den kürzesten Weg: kostenlos starten, ein Repo indizieren, das du schon kennst, den Client verbinden, dann eine Frage stellen, die du prüfen kannst.&lt;/p&gt;
&lt;h2 id=&quot;eine-schleife-die-die-erste-änderung-ändert&quot;&gt;Eine Schleife, die die erste Änderung ändert&lt;/h2&gt;
&lt;p&gt;Du brauchst keine neue Workflow-Religion. Du brauchst einen zusätzlichen Schritt vor dem ersten Schreiben.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Stell eine Frage, die du schon beurteilen kannst. „Welcher Code behandelt Login und Sitzungsablauf?“ ist besser als „repariere die Auth“.&lt;/li&gt;
&lt;li&gt;Verlange Zitate. Dateipfad und Zeilennummer, keine Zusammenfassung von „dem Auth-Modul“.&lt;/li&gt;
&lt;li&gt;Öffne die zitierten Dateien. Folge dem Symbol. Bestätige die Abhängigkeit, die du gleich anfasst.&lt;/li&gt;
&lt;li&gt;Erst dann lass den Agenten patchen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Wenn Schritt 2 nichts Nützliches liefert, darf der Agent keinen Pfad improvisieren. Er sucht erneut, oder du zeigst ihm den Weg. Dieses eine Gate ist es, was weniger halluzinierte Änderungen erzeugt. Das Modell ist dasselbe Modell. Die Karte ist, was sich geändert hat.&lt;/p&gt;
&lt;p&gt;Instruktionsdateien zählen weiterhin. Behalte sie. Nutze sie für Konventionen, Review-Regeln und was nicht angefasst werden soll. Bitte sie nicht, der Index zu sein. Ein &lt;code&gt;CLAUDE.md&lt;/code&gt;, das drei wichtige Verzeichnisse auflistet, ist die Woche nach einem Paket-Split veraltet. Eine abfragbare Karte aktualisiert sich, wenn sich das Repo aktualisiert.&lt;/p&gt;
&lt;p&gt;Ein verwandtes Versagen ist die Beinahe-Treffer-Datei: Der Agent öffnet &lt;code&gt;auth.ts&lt;/code&gt;, wenn das Verhalten in &lt;code&gt;auth-client.ts&lt;/code&gt; lebt, oder patcht eine generierte Datei statt der Quelle, oder editiert die Kopie in &lt;code&gt;packages/legacy&lt;/code&gt;, weil der Name gepasst hat. Zitate machen diese Fehler nicht unmöglich. Sie machen sie sichtbar, bevor der Diff landet.&lt;/p&gt;
&lt;h2 id=&quot;was-eine-karte-nicht-für-dich-löst&quot;&gt;Was eine Karte nicht für dich löst&lt;/h2&gt;
&lt;p&gt;Sei ehrlich zu dir selbst, was du bekommst. Eine fundierte Karte macht nicht jede Änderung korrekt – dein Agent kann trotzdem einen schlechten Patch in genau der richtigen Datei schreiben. Wenn dein Codebase auf dynamischem Dispatch, Reflection oder Monkey-Patching aufbaut, kommen manche Symbol-Lookups dünner zurück, als dir lieb ist, weil das nun mal ist, was Laufzeit-Indirektion mit jedem statischen Index macht. Und wenn du auf eine Prozentzahl hoffst – „halluzinierte Pfade um X% reduziert“ – wirst du sie hier nicht finden, weil niemand diese Zahl für dein Repo ehrlich messen kann außer dir selbst.&lt;/p&gt;
&lt;p&gt;Was du erwarten kannst, ist enger gefasst und nützlicher: Der Agent hört auf, seine Änderungen mit einem geratenen Pfad zu beginnen. Dieser erste Schritt ist in einer echten Karte verankert, und daher kommen weniger halluzinierte Änderungen. Alles nach dem Zitat – den Diff lesen, den Patch beurteilen – ist immer noch dein Job, genau wie es immer war.&lt;/p&gt;
&lt;p&gt;Der Test kostet dich fast nichts: ein Repo indizieren, das du schon kennst, und eine Frage stellen, die du prüfen kannst. Fang mit einem Pfad an, mit dem du schon einmal auf die Nase gefallen bist. Wenn die Zitate falsch sind, siehst du es sofort. Wenn sie richtig sind, hat die nächste Änderung deines Agenten einen besseren Ort zum Landen.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// it doesn&apos;t know the file. it knows how to find it.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>AI Agents</category><category>Hallucination</category><category>Retrieval</category><category>MCP</category></item><item><title>Warum wir unsere Code-Suche auf voyage-4-large upgegradet haben</title><link>https://maguyva.ai/de/blog/upgrading-code-search-to-voyage-4-large</link><guid isPermaLink="true">https://maguyva.ai/de/blog/upgrading-code-search-to-voyage-4-large</guid><description>Wir haben unsere Code-Embeddings auf voyage-4-large umgestellt — aktuell die Nummer eins im öffentlichen RTEB-Code-Retrieval-Leaderboard. Die ehrliche Version: der Trade-off, den wir eingehen, was wir tatsächlich indizieren, und warum wir für Premium-Embeddings bezahlen.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Die Benchmark-Zahlen in diesem Beitrag spiegeln die RTEB-Ranglisten zum Veröffentlichungszeitpunkt (Juni 2026) wider. Ranglisten verändern sich; betrachte die Platzierungen als Momentaufnahme, nicht als dauerhafte Tatsache.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Semantische Suche ist immer nur so gut wie die Embeddings, die ihr zugrunde liegen.&lt;/p&gt;
&lt;p&gt;Wenn ein Agent Maguyva fragt, “wo behandeln wir Retries”, sucht er nicht per grep nach dem Wort “retry”. Er fragt nach der &lt;em&gt;Bedeutung&lt;/em&gt; – der Backoff-Schleife, dem Circuit Breaker, dem Ding, das einen instabilen Aufruf umhüllt. Diese Frage wird von einem Vektormodell beantwortet, das Code in einen Punkt im Raum verwandelt und dessen Nachbarn findet. Wähle ein besseres Modell, und jede semantische Abfrage im Produkt wird still und leise präziser.&lt;/p&gt;
&lt;p&gt;Also haben wir unseres geändert. Seit Juni 2026 laufen die Code-Embeddings von Maguyva auf &lt;strong&gt;&lt;code&gt;voyage-4-large&lt;/code&gt;&lt;/strong&gt; und ersetzen &lt;code&gt;voyage-code-3&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;der-benchmark&quot;&gt;Der Benchmark&lt;/h2&gt;
&lt;p&gt;Wir haben diese Entscheidung nicht aus dem Bauch heraus getroffen. Der öffentliche &lt;a href=&quot;https://embedding-benchmark-rteb.hf.space/code&quot;&gt;Retrieval Embedding Benchmark (RTEB)&lt;/a&gt; bewertet Embedding-Modelle anhand realer Retrieval-Aufgaben, und auf seiner &lt;strong&gt;Code&lt;/strong&gt;-Rangliste steht &lt;code&gt;voyage-4-large&lt;/code&gt; auf &lt;strong&gt;Platz 1 insgesamt (90,86)&lt;/strong&gt; – vor &lt;code&gt;gemini-embedding-2-preview&lt;/code&gt; (90,26) und, bemerkenswerterweise, vor dem Modell, das wir zuvor verwendet haben, &lt;code&gt;voyage-code-3&lt;/code&gt; (89,73, Platz 3).&lt;/p&gt;
&lt;p&gt;Das ist eine kleine absolute Differenz. Aber es ist eine Differenz in die richtige Richtung, auf einem öffentlichen Benchmark, bei genau der Aufgabe, die uns wichtig ist: Code anhand seiner Bedeutung wiederzufinden.&lt;/p&gt;
&lt;h2 id=&quot;der-kompromiss-den-wir-eingehen-binäre-quantisierung&quot;&gt;Der Kompromiss, den wir eingehen: Binäre Quantisierung&lt;/h2&gt;
&lt;p&gt;Das ist der Teil, den die meisten “Wir haben unser Modell aktualisiert”-Beiträge auslassen.&lt;/p&gt;
&lt;p&gt;Maguyva speichert keine Vektoren in voller Präzision. Wir speichern &lt;strong&gt;binär quantisierte&lt;/strong&gt; Embeddings: Jeder 2048-dimensionale Vektor wird zu einer 2048-Bit-Signatur komprimiert – &lt;strong&gt;256 Byte pro Vektor&lt;/strong&gt;. Diese Signaturen werden per Hamming-Distanz durchsucht, indiziert und pro Mandant partitioniert.&lt;/p&gt;
&lt;p&gt;Das ist ein bewusster Kompromiss. Binäre Quantisierung gibt einen Teil der Retrieval-Präzision auf, im Austausch für drastisch kleineren Speicherbedarf und schnelle, günstige Distanzberechnungen, ohne eine separate Vektordatenbank zu betreiben. Für ein Produkt, das ganze Repositories pro Workspace indiziert, zählt diese Wirtschaftlichkeit mehr, als den letzten Bruchteil eines Benchmark-Punkts herauszupressen.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;voyage-4-large&lt;/code&gt; fügt sich in dieses Design ein, ohne eine Migration der Speicherschicht zu erzwingen: Es erzeugt eine 2048-dimensionale Ausgabe, genau wie &lt;code&gt;voyage-code-3&lt;/code&gt;, sodass sich unsere &lt;code&gt;bit(2048)&lt;/code&gt;-Spalten und der Hamming-Suchpfad nicht geändert haben. Das Modell wurde besser; das Schema blieb, wie es war.&lt;/p&gt;
&lt;h2 id=&quot;code-war-nur-der-anfang&quot;&gt;Code war nur der Anfang&lt;/h2&gt;
&lt;p&gt;Maguyva ist ein Code-Intelligence-Tool. Aber wir sind auch Kunde Nummer eins und richten es auch auf etwas anderes: das Markdown, das in unseren Repos neben dem Code liegt. Architekturentscheidungsprotokolle, Runbooks, Verträge, Finanz- und Richtliniendokumente – alles versionskontrolliert in Git, alles hinter demselben MCP-Server, ein semantischer Index über die &lt;em&gt;Dokumente&lt;/em&gt;, nicht nur über den Quellcode.&lt;/p&gt;
&lt;p&gt;Genau deshalb zählt die Breite von voyage-4-large. Auf derselben RTEB-Familie von Ranglisten steht es &lt;strong&gt;auf Platz 1 im Bereich Finanzen, Platz 1 im Bereich Gesundheitswesen und Platz 1 beim gesamten Text-Retrieval&lt;/strong&gt; – vor Gemini Embedding von Google, Embed v4 von Cohere und text-embedding-3-large von OpenAI. (Voyage ist Mitentwickler von RTEB, daher lesen wir das als starkes öffentliches Signal, nicht als perfekt neutralen Schiedsrichter – aber es wird direkt gegen jedes große kommerzielle Modell auf privaten Hold-out-Datensätzen gemessen.) Derselbe Index, der für einen Agenten die richtige Funktion findet, findet auch die richtige Klausel in einem Vertrag oder die richtige Zeile in einer Richtlinie – und in diesen Bereichen ist voyage-4-large kein Kompromiss, sondern der Spitzenreiter.&lt;/p&gt;
&lt;h2 id=&quot;warum-wir-für-premium-embeddings-bezahlen&quot;&gt;Warum wir für Premium-Embeddings bezahlen&lt;/h2&gt;
&lt;p&gt;Es gibt einen günstigeren Weg, Suche zu betreiben, und vieles davon ist kostenlos. Lexikalische Suche – BM25 und Verwandte – gleicht Schlüsselwörter ab, läuft lokal und kostet nichts. Open-Source-Embedding-Modelle wie BGE, Nomic und embeddinggemma liefern durchaus &lt;em&gt;ordentliches&lt;/em&gt; semantisches Retrieval, und man kann sie zum Preis einer GPU selbst hosten. Maguyva nutzt auch die kostenlose Seite: Jede Abfrage vereint Text-, AST-, Graph- und semantische Suche. Wo wir nicht sparen, ist bei der semantischen Schicht.&lt;/p&gt;
&lt;p&gt;Wir bezahlen pro Token für Premium-Embeddings – &lt;code&gt;voyage-4-large&lt;/code&gt; – statt ein kostenloses Modell selbst zu hosten, aus zwei Gründen. Erstens kann reine Schlüsselwortsuche die Frage “wo behandeln wir Retries” nicht beantworten, wenn der Code &lt;code&gt;backoff&lt;/code&gt; und &lt;code&gt;circuit breaker&lt;/code&gt; sagt und nie das Wort “retry” verwendet – Bedeutung ist der ganze Sinn des Embeddings, und in den Bereichen, die wir bedienen, liegen die offenen Modelle hinter den Premium-Modellen zurück: ein paar Punkte bei allgemeinem Text, und noch weiter zurück in Nischen wie Code, Verträgen und Finanzen. Zweitens prägt Retrieval-Qualität unserer Erfahrung nach die finale Antwort stärker als das Modell am anderen Ende – ein starker Agent, dem der falsche Kontext gegeben wird, antwortet trotzdem falsch, und er sieht nie das Dokument, das ihm nie gegeben wurde.&lt;/p&gt;
&lt;p&gt;Premium-Embeddings sind also eine Pro-Token-Rechnung, die mit jedem Repo und Dokument skaliert, das wir indizieren – und wir bezahlen sie bewusst. Für das Ergebnis, das unsere Nutzer bekommen, die richtige Funktion oder die richtige Klausel, ist uns dieser Kompromiss das wert.&lt;/p&gt;
&lt;h2 id=&quot;der-ehrliche-teil&quot;&gt;Der ehrliche Teil&lt;/h2&gt;
&lt;p&gt;Die Dokumentation von Voyage selbst führt &lt;code&gt;voyage-code-3&lt;/code&gt; nach wie vor als das code-optimierte Modell. Warum also wechseln?&lt;/p&gt;
&lt;p&gt;Weil wir den öffentlichen Benchmark gelesen haben, nicht nur die Modelltabelle des Anbieters, und der Benchmark hat &lt;code&gt;voyage-4-large&lt;/code&gt; beim Code-Retrieval an die Spitze gesetzt. Das war eine vorausschauende Entscheidung: das neuere, insgesamt stärkere Modell nehmen und es anhand eines öffentlichen Leaderboards bei den Aufgaben validieren, auf die es ankommt. Wir fühlen uns mit dieser Wette wohl, weil die Evidenz breit ist – voyage-4-large gewinnt nicht nur bei Code, es führt auch bei Finanzen, Gesundheitswesen und Gesamt-Retrieval.&lt;/p&gt;
&lt;h2 id=&quot;das-unsichtbare-fundament&quot;&gt;Das unsichtbare Fundament&lt;/h2&gt;
&lt;p&gt;Jedes Tool, das wir bereitstellen – semantische Suche, das Sammeln von Task-Kontext, quellenbelegte Fragen und Antworten – läuft letztlich auf Retrieval hinaus. Wenn sich der Retriever verbessert, bekommt der Agent am anderen Ende bessere Belege, macht weniger Fehltritte und verankert seine Antworten im richtigen Code – oder in der richtigen Klausel, oder in der richtigen Richtlinie. Ein schärferes Embedding-Modell ist kein spektakuläres Feature. Es ist das Fundament für alles andere, und wir haben es gerade verbessert. Du wirst es nicht bemerken. Das ist der Punkt.&lt;/p&gt;
</content:encoded><category>Embeddings</category><category>Search</category><category>Architecture</category></item><item><title>Rekursive Selbstverbesserung der Sprachunterstützung: Code Intelligence über ~280 Sprachen hinweg verbessern</title><link>https://maguyva.ai/de/blog/autonomous-quality-loops-language-grind</link><guid isPermaLink="true">https://maguyva.ai/de/blog/autonomous-quality-loops-language-grind</guid><description>Wir unterstützen Code Intelligence für ~280 Sprachen. Das kann kein Mensch von Hand auditieren. Also haben wir eine Schleife zur rekursiven Selbstverbesserung der Sprachunterstützung gebaut — Stichprobe, LLM-as-Judge, eine Sache reparieren, erneut validieren — und lassen sie mit einer Flotte isolierter Agenten laufen, bis die Extraktion tatsächlich stimmt, nicht nur grün ist.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Die Zahlen in diesem Beitrag spiegeln den Stand des Systems zum Veröffentlichungszeitpunkt (Mai 2026) wider. Aktuelle Zahlen findest du auf unserer &lt;a href=&quot;https://maguyva.ai/de/team&quot;&gt;Team-Seite&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maguyva extrahiert Symbole, Referenzen und einen Dependency-Graphen aus Quellcode in rund 280 Sprachen. Jede Sprache ist ein maßgeschneiderter tree-sitter-Handler — Queries, Heuristiken, Edge Cases — und jeder Handler kann auf seine eigene, subtile Weise falsch liegen. Ein Methodenaufruf, der als Read ausgegeben wird. Eine Funktion, die dem falschen umschließenden Scope zugeordnet wird. Eine Beziehung, die es schlicht nicht gibt.&lt;/p&gt;
&lt;p&gt;Das kannst du nicht von Hand auditieren. Kein Team kann Extraktionsergebnisse über 280 Grammatiken hinweg lesen und die schlechten Kanten erkennen. Die interessante Frage ist also nicht „ist unsere Extraktion korrekt“ — sie lautet „wie findest du in dieser Breite &lt;em&gt;heraus&lt;/em&gt;, dass sie falsch ist, ohne einen Menschen in jeder Schleife.“ Unsere Antwort ist die rekursive Selbstverbesserung der Sprachunterstützung: eine Qualitätsschleife, angetrieben von Sprach-Agenten, einem LLM als Judge, und einer Lektion, die wir immer wieder neu lernen: Grün ist nicht dasselbe wie korrekt.&lt;/p&gt;
&lt;h2 id=&quot;grün-ist-nicht-korrekt&quot;&gt;Grün ist nicht korrekt&lt;/h2&gt;
&lt;p&gt;Jede Sprache hat eine Fixture-Suite, und ein Release-Gate bewertet sie über fünf Dimensionen — Genauigkeit, strukturelle Integrität, Vollständigkeit, Qualität und Performance. Eine Sprache wird nur &lt;strong&gt;GRÜN&lt;/strong&gt;, wenn auf ihren Fixtures Precision ≥ 0,95, Recall ≥ 0,99 und F1 ≥ 0,97 gilt, bei mindestens 20 erwarteten Kanten für statistische Zuverlässigkeit. Darunter ist sie GELB oder ROT und wird nicht ausgeliefert.&lt;/p&gt;
&lt;p&gt;Dieses Gate ist notwendig, aber nicht hinreichend. Fixtures validieren gegen Fixtures, die &lt;em&gt;wir geschrieben haben&lt;/em&gt;. Sie kodieren die Fälle, an die wir bereits gedacht haben. Ein Handler kann auf seinen Fixtures makellos sein und trotzdem ein Muster verstümmeln, das nur in echtem Code auftaucht — ein Makro-Idiom, eine Methode mit generischen Typbeschränkungen, ein Sprachfeature, für das niemand eine Fixture geschrieben hat. GRÜN bedeutet, dass die Fixtures bestehen. Es bedeutet nicht, dass ein echtes Repository sauber extrahiert wird. Also muss die Schleife die Fixtures hinter sich lassen und in die Wildnis schauen.&lt;/p&gt;
&lt;h2 id=&quot;die-innere-schleife-stichprobe-urteil-fix-beweis&quot;&gt;Die innere Schleife: Stichprobe, Urteil, Fix, Beweis&lt;/h2&gt;
&lt;p&gt;Die Kernschleife läuft jeweils für eine Sprache:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ┌──────────────────────────────────────────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  1. corpus run ── clone real-world repos, extract relationships   │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  2. spot-check 100 edges (seed 42, then seed 123 to cross-check)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  3. LLM judge classifies every sampled edge:                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        CORRECT · FALSE_POSITIVE · TYPE_ERROR ·                    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        SCOPE_ERROR · METADATA_ERROR                               │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  4. fix ONE thing — handler .py, .scm query, or config           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  5. re-validate — F1 + re-classify + manifest diff (no regressions)│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │                                                          │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   better? ──no──► revert, try a different fix ────────────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │ yes                                                       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼                                                           │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  6. promote the fix into fixtures (a permanent regression guard) ──┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Einige Dinge sorgen dafür, dass das funktioniert, statt nur im Kreis zu drehen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Der Richter ist der Agent, kein API-Call.&lt;/strong&gt; Wenn wir „LLM-as-Judge“ sagen, meinen wir, dass der Sprach-Agent selbst jede gesampelte Kante gegen die echte Quelle liest und sie mit einer festen Fünf-Kategorien-Rubrik klassifiziert: Ist diese Kante korrekt, ein False Positive, die richtige Beziehung mit dem falschen Typ, dem falschen Scope zugeordnet, oder trägt sie falsche Metadaten? Diese Rubrik ist das ganze Spiel — „23 % Fehlerrate“ ist bedeutungslos, solange du nicht weißt, ob das echte Defekte sind oder der Richter falsch zählt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eine Sache reparieren, dann beweisen.&lt;/strong&gt; Jede Iteration ändert genau ein editierbares Asset, läuft dann erneut gegen einen festen Prüfstand und behält die Änderung nur, wenn F1 sich verbessert und die Neuklassifizierung besser aussieht. Wenn nicht, wird zurückgesetzt. Kein Batch spekulativer Edits, kein „müsste besser sein“. Eine Änderung verdient sich ihren Platz, oder sie ist weg. Und wenn ein Fix hält, wird er in die Fixture-Suite aufgenommen — sodass der behobene Bug niemals still zurückkehren kann. Dieser Promotion-Schritt macht die Schleife &lt;em&gt;rekursiv&lt;/em&gt; statt nur repetitiv: Jeder Durchlauf härtet das Orakel, gegen das der nächste Durchlauf validiert.&lt;/p&gt;
&lt;h2 id=&quot;die-lektion-die-wir-immer-wieder-neu-lernen-metriken-übertreiben&quot;&gt;Die Lektion, die wir immer wieder neu lernen: Metriken übertreiben&lt;/h2&gt;
&lt;p&gt;Hier ist die Falle, in die wir direkt hineingelaufen sind. Die sekundären Corpus-Metriken — wie oft ein extrahiertes Ziel kein auflösbares Symbol hat, wie viele Symbole „verwaist“ aussehen, und so weiter — übertreiben Probleme massiv. Sie sind größtenteils &lt;em&gt;Paradigma-Artefakte&lt;/em&gt;, keine Bugs.&lt;/p&gt;
&lt;p&gt;Das klarste Beispiel: &lt;code&gt;llvm&lt;/code&gt; zeigte einmal eine 73%ige „Quelle-ohne-Symbol“-Rate und wurde als katastrophal gebrandmarkt. Wir haben nachgegraben. Die echte Genauigkeit lag bei &lt;strong&gt;98,5 %&lt;/strong&gt;. Die „fehlenden Symbole“ waren fast alle legitime externe Referenzen — Aufrufe in die Standardbibliothek, in Frameworks, in Code, der außerhalb des Repos lebt. Die Metrik hat eine Eigenschaft der Sprache gemessen, keinen Defekt im Handler. Sprachen wie Zig, COBOL und Odin zeigen 65–70 % „Waisen“-Raten und sind vollkommen korrekt; COBOL hatte null echte Fehler.&lt;/p&gt;
&lt;p&gt;Hätten wir diese Zahlen die Arbeit steuern lassen, hätten wir Wochen damit verbracht, Handler zu „reparieren“, die bereits richtig waren, und die Sprachen mit stillen, echten Bugs ignoriert. Die Schlussfolgerung ist unverblümt: Die Aggregatmetriken sind bestenfalls ein grobes Triage-Signal. &lt;strong&gt;Das echte Qualitätssignal ist die Stichprobe mit Kantenklassifizierung&lt;/strong&gt; — echte Kanten in echten Repositories anschauen und sie einzeln beurteilen. Daten vor Intuition, aber erst, wenn du weißt, welche Daten die Wahrheit sagen.&lt;/p&gt;
&lt;h2 id=&quot;die-äußere-schleife-eine-flotte-kein-marathon&quot;&gt;Die äußere Schleife: eine Flotte, kein Marathon&lt;/h2&gt;
&lt;p&gt;Eine Sprache nach der anderen würde bei 280 von ihnen ewig dauern, also ist die innere Schleife in eine äußere eingebettet, die viele parallel laufen lässt.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   pick a wave of near-GREEN / high-error languages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   fan out 10–15 agents, each ISOLATED in its own git worktree,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   each grinding ONE language, committing to its own branch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   orchestrator integrates serially: file-scoped apply, then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   `manifest diff` — any cross-language regression blocks the batch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   gated push (reviewed and confirmed) ──► rotate to the next wave&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jeder Agent arbeitet in einem Wegwerf-Worktree, damit sie sich nicht gegenseitig ins Gehege kommen. Der Orchestrator integriert ihre Fixes einen nach dem anderen, jeweils hinter einem Full-Manifest-Regressionscheck: Eine Änderung, die ihrer eigenen Sprache hilft, aber still drei andere kaputt macht, wird nicht gelandet. Integration wird gated und bestätigt, bevor irgendetwas gepusht wird — das Regressions-Gate entscheidet, was &lt;em&gt;sicher&lt;/em&gt; ist, ein Mensch entscheidet weiterhin, was &lt;em&gt;ausgeliefert&lt;/em&gt; wird. Dann rotiert der Pool zur nächsten Menge an Sprachen, und das Ganze läuft erneut.&lt;/p&gt;
&lt;h2 id=&quot;was-noch-unperfekt-ist&quot;&gt;Was noch unperfekt ist&lt;/h2&gt;
&lt;p&gt;Der Richter kann sich irren, und der Irrtum hat eine Richtung: Ein Agent, der mit zu wenig Kontext läuft, &lt;em&gt;übertreibt&lt;/em&gt;. In einem Batch wurden acht Sprachen mit 5–20 % Fehlerrate markiert; bei genauerer Prüfung war nur eine ein echter sprachspezifischer Bug — der Rest waren Richterfehler, weil die eigene Semantik der Sprache übersehen wurde (eine Quellzeile, die legitim mehrere Kanten erzeugt, Parameterbindungen, die als Zuweisungen modelliert werden, Reference-per-Identifier-Sprachen). Deshalb samplen wir mit zwei Seeds und gleichen ab, und deshalb wird eine Abweichung zwischen Richter und Fixtures als das &lt;em&gt;interessanteste&lt;/em&gt; Signal behandelt, nicht als endgültiges Urteil — manchmal ist die Fixture das, was falsch ist.&lt;/p&gt;
&lt;p&gt;Wir sind auch ehrlich, was das Ziel angeht. Das Ziel ist null echte Fehler, Punkt — aber „null“ ist eine Richtung, auf die wir Sprache für Sprache hinarbeiten, keine abgehakte Checkbox. Es gibt immer noch ein weiteres Repo mit einem weiteren Idiom.&lt;/p&gt;
&lt;h2 id=&quot;verdient-nicht-behauptet&quot;&gt;Verdient, nicht behauptet&lt;/h2&gt;
&lt;p&gt;Alles, was Maguyva für einen Agenten tut — ein Symbol finden, eine Abhängigkeit verfolgen, eine Frage mit zitiertem Code beantworten — beruht darauf, dass die Extraktion darunter stimmt. Über 280 Sprachen hinweg lässt sich „richtig“ nicht behaupten; es muss gegen echten Code kontinuierlich &lt;em&gt;verdient&lt;/em&gt; werden. Die Schleife ist, wie wir es verdienen: ein autonomer Stichproben-und-Fix-Zyklus, der seinen eigenen Metriken misstraut, jede Änderung beweist und jeden Fix in eine Schutzmaßnahme gegen die nächste Regression verwandelt. Es ist nicht glamourös. Es ist die Arbeit, die uns erlaubt zu sagen „wir unterstützen deine Sprache“ — und das auch so zu meinen. Grün ist einfach. Korrekt ist verdient.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Languages</category><category>Agents</category></item><item><title>Mehrmodale Fusionssuche: Für jede Query den richtigen Retriever wählen</title><link>https://maguyva.ai/de/blog/multi-modal-fusion-search</link><guid isPermaLink="true">https://maguyva.ai/de/blog/multi-modal-fusion-search</guid><description>Eine Query wie &apos;wo ist parseConfig definiert&apos; braucht eine andere Suche als &apos;wie funktioniert Auth&apos;. Maguyva klassifiziert die Intention, gewichtet vier Retrieval-Modalitäten entsprechend und fusioniert die Ergebnisse mit gewichteter Reciprocal Rank Fusion.</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Hinweis zum historischen Design: Dieser Artikel vom April 2026 beschreibt das damalige Routing-Design, nicht das aktuelle Standardverhalten. Die Korrektur vom September unten betrifft ausschließlich eine Messbehauptung. Aktuelles Routing, Voreinstellungen und die explizite Steuerung der Suchmodalitäten beschreibt &lt;a href=&quot;https://maguyva.ai/de/docs/how-it-works&quot;&gt;So funktioniert es&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Eine Suchanfrage ist nicht eine einzige Sache.&lt;/p&gt;
&lt;p&gt;„wo ist &lt;code&gt;parseConfig&lt;/code&gt; definiert“ will ein exaktes Symbol — einen präzisen Ort, schnell. „wie funktioniert Authentifizierung“ will Bedeutung — die Streuung an verwandtem Code, die ein Konzept erklärt. „was bricht, wenn ich diese Funktion ändere“ will den Dependency-Graphen. „finde den String &lt;code&gt;ECONNREFUSED&lt;/code&gt;“ will einen literalen Treffer, nichts Cleveres.&lt;/p&gt;
&lt;p&gt;Grep ist hervorragend für literale Treffer und nützlich für manche Referenzsuchen, aber es ist kein Dependency-Graph und versteht keine Bedeutung. Embeddings decken die semantische Seite ab, sind aber das falsche Werkzeug für exakte Strings und Impact-Analyse. Die meisten Code-Search-Tools wählen eine Engine und zwingen jede Query, mit dieser Wahl zu leben. Maguyva wählt nicht. Es findet heraus, welche Art von Frage du gestellt hast, und mischt dann vier Retriever in der Gewichtung, die diese Frage verdient.&lt;/p&gt;
&lt;h2 id=&quot;vier-modalitäten&quot;&gt;Vier Modalitäten&lt;/h2&gt;
&lt;p&gt;Unter der Haube gibt es vier unabhängige Wege, Code zu finden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;semantic&lt;/strong&gt; — Vektorsuche über binäre Voyage-Embeddings; findet Code nach Bedeutung.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;text&lt;/strong&gt; — Trigram-Matching; findet Literale, Fehler-Strings, exakte Identifier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;structural&lt;/strong&gt; — AST-Queries; findet Definitionen, Signaturen und Sprachkonstrukte.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;graph&lt;/strong&gt; — der Dependency-Graph; findet Aufrufer, Aufgerufene und den Auswirkungsradius.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jede ist stark bei einer anderen Klasse von Fragen. Der Trick ist zu entscheiden, wie sehr man jeder für die vorliegende Query vertraut.&lt;/p&gt;
&lt;h2 id=&quot;intent-klassifizierung&quot;&gt;Intent-Klassifizierung&lt;/h2&gt;
&lt;p&gt;Bevor überhaupt ein Retrieval läuft, sortiert ein leichtgewichtiger Klassifizierer die Query in eine von sechs Intentionen, mit einem Konfidenzwert. Das ist bewusst billig gehalten — geordnete Heuristiken, der erste Treffer gewinnt — weil es auf dem Hot Path läuft und nur ein bis zwei Millisekunden hinzufügt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;beginnt mit &lt;code&gt;def &lt;/code&gt;, &lt;code&gt;class &lt;/code&gt;, &lt;code&gt;func &lt;/code&gt;, &lt;code&gt;import &lt;/code&gt;… → &lt;strong&gt;find_definition&lt;/strong&gt; (Konfidenz 0,95)&lt;/li&gt;
&lt;li&gt;„who calls“ (wer ruft auf), „usages of“ (Verwendungen von), „references to“ (Referenzen auf) → &lt;strong&gt;find_references&lt;/strong&gt; (0,90)&lt;/li&gt;
&lt;li&gt;„impact“ (Auswirkungen), „blast radius“ (Auswirkungsradius), „what depends on“ (was hängt davon ab) → &lt;strong&gt;impact_analysis&lt;/strong&gt; (0,90)&lt;/li&gt;
&lt;li&gt;ein zitiertes &lt;code&gt;&quot;string&quot;&lt;/code&gt; oder ein Fehler-Token wie &lt;code&gt;traceback&lt;/code&gt; → &lt;strong&gt;exact_match&lt;/strong&gt; (0,85–0,90)&lt;/li&gt;
&lt;li&gt;ein &lt;code&gt;CamelCase&lt;/code&gt;- oder &lt;code&gt;snake_case&lt;/code&gt;-Identifier → &lt;strong&gt;find_definition&lt;/strong&gt; (0,60–0,80)&lt;/li&gt;
&lt;li&gt;„how“ (wie), „why“ (warum), „explain“ (erkläre), „architecture“ (Architektur) → &lt;strong&gt;understand_code&lt;/strong&gt; (0,75)&lt;/li&gt;
&lt;li&gt;nichts passt → &lt;strong&gt;understand_code&lt;/strong&gt;, niedrige Konfidenz (0,40)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jede Intention trägt ein Gewichtungsprofil über die vier Modalitäten. Das sind die echten Zahlen:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Intent&lt;/th&gt;
&lt;th&gt;semantic&lt;/th&gt;
&lt;th&gt;text&lt;/th&gt;
&lt;th&gt;structural (AST)&lt;/th&gt;
&lt;th&gt;graph&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;find_definition&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;find_references&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;understand_code&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;find_similar&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.3&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;impact_analysis&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;exact_match&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;td&gt;0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Also stützt sich „wo ist &lt;code&gt;parseConfig&lt;/code&gt; definiert“ stark auf AST (0,6). „wie funktioniert Auth“ stützt sich auf semantische Vektoren (0,5). „was hängt davon ab“ ist fast ausschließlich Graph (0,7). „finde &lt;code&gt;ECONNREFUSED&lt;/code&gt;“ ist fast ausschließlich Trigram (0,9), wobei das Embedding-Modell komplett ausgeschaltet ist — weil semantische Ähnlichkeit genau das falsche Werkzeug für einen exakten String ist.&lt;/p&gt;
&lt;h2 id=&quot;der-schnelle-pfad-und-der-fusionierte-pfad&quot;&gt;Der schnelle Pfad und der fusionierte Pfad&lt;/h2&gt;
&lt;p&gt;Wenn der Klassifizierer sicher ist — Score ≥ 0,85 — und die Query normal ist, überspringt Maguyva die Fusion komplett und routet direkt zur einzelnen dominanten Modalität. „wo ist X definiert“ braucht keine vier Retriever; es braucht sofort den AST-Index. Dieser direkte Pfad wird als &lt;code&gt;fusion_strategy: &quot;direct&quot;&lt;/code&gt; zurückgemeldet.&lt;/p&gt;
&lt;p&gt;Alles Mehrdeutige durchläuft die Fusion. Die vier (oder drei, im Standard-Preset) Modalitäten laufen parallel, jede liefert ihre eigene Rangliste zurück, und wir kombinieren sie.&lt;/p&gt;
&lt;h2 id=&quot;gewichtete-reciprocal-rank-fusion&quot;&gt;Gewichtete Reciprocal Rank Fusion&lt;/h2&gt;
&lt;p&gt;Heterogene Retriever zu fusionieren ist schwieriger, als es klingt: Eine Cosine-Similarity von 0,82, ein Trigram-Score von 137 und eine Graph-Zentralität von 0,004 liegen nicht auf derselben Skala, du kannst sie also nicht einfach addieren. Reciprocal Rank Fusion umgeht das Problem, indem es die Rohwerte verwirft und nur den &lt;strong&gt;Rang&lt;/strong&gt; behält, den jede Engine vergeben hat. Der Beitrag eines Ergebnisses aus einer Modalität ist:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;contribution = weight × 1 / (k + rank + 1)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;wobei &lt;code&gt;rank&lt;/code&gt; seine Position in der Rangliste dieser Modalität ist und &lt;code&gt;k&lt;/code&gt; eine Glättungskonstante. Beiträge werden über Modalitäten hinweg summiert für jedes Ergebnis, das mehr als eine Engine gefunden hat — Übereinstimmung zwischen Retrievern schwimmt natürlich nach oben. Wir verwenden &lt;strong&gt;k = 40&lt;/strong&gt; im Standard-Preset und 60 bei &lt;code&gt;thorough&lt;/code&gt; (&lt;code&gt;quick&lt;/code&gt; läuft nur semantisch, sodass Fusion dort nie greift). Die ursprüngliche RRF-Arbeit landete bei k = 60 für allgemeines Retrieval; wir setzen den Standard etwas schärfer, was Top-Rang-Übereinstimmung zwischen Modalitäten etwas mehr Gewicht gibt — und wir empfehlen nicht, von Hand daran zu drehen.&lt;/p&gt;
&lt;p&gt;Zusätzlich erhalten Ergebnisse eine &lt;strong&gt;Graph-Relevanzgewichtung&lt;/strong&gt;. Ein Hub — eine Funktion, auf die sich die gesamte Codebase stützt — sollte selbst bei gleicher textueller Relevanz einen wenig bekannten Blattknoten überholen, also multiplizieren wir jeden Beitrag mit:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;boost = min(1 + 0.3 × ln(1 + centrality), 1.5)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Zentralität kommt aus den vorberechneten PageRank-/Degree-Metriken der Pipeline, und der Boost ist bei 1,5× gedeckelt, damit eine populäre Funktion eine relevantere, wenig bekannte Funktion nicht komplett verdrängen kann. Schließlich degradieren wir Ergebnisse aus Vendor-, Build- und Archiv-Pfaden und dedupen auf den besten Chunk pro Datei.&lt;/p&gt;
&lt;h2 id=&quot;was-noch-unperfekt-ist&quot;&gt;Was noch unperfekt ist&lt;/h2&gt;
&lt;p&gt;Der Intent-Klassifikator ist eine Sammlung regulärer Ausdrücke, kein trainiertes Modell. Er behandelt gängige Abfragemuster mit Heuristiken; eine mehrdeutige Abfrage fällt auf &lt;code&gt;understand_code&lt;/code&gt; und eine semantisch gewichtete Mischung zurück. Eine frühere Fassung dieses Beitrags beschrieb einen Rückgang ergebnisloser Suchanfragen von etwa 15 % auf unter 5 % als erreicht. Der Vorschlag vom Dezember 2025 nannte tatsächlich einen geschätzten Ausgangswert und ein Ziel; ein unterstützender Abfragesatz oder Messnachweis liegt nicht vor. Wir ziehen die Behauptung einer erzielten Verbesserung zurück; siehe &lt;a href=&quot;https://maguyva.ai/evidence/search-quality.md&quot;&gt;Quellennachweise und Korrektur&lt;/a&gt;. Wir haben den Klassifikator nicht durch ein trainiertes Modell ersetzt, weil die günstige Variante schnell und für ihre vorgesehene Routing-Aufgabe ausreichend ist und weil ein falscher, aber selbstsicherer Klassifikator schlechter ist als ein ehrlicher Fallback. Die Gewichte selbst sind von Hand gewählte Vorannahmen, nicht aus Klickdaten gelernt, die wir ohnehin nicht erfassen.&lt;/p&gt;
&lt;h2 id=&quot;stell-die-frage-nicht-das-werkzeug&quot;&gt;Stell die Frage, nicht das Werkzeug&lt;/h2&gt;
&lt;p&gt;Ein Agent sollte nicht wissen müssen, ob er zu grep, Embeddings oder dem Call-Graphen greifen soll — er sollte seine Frage in einfachen Worten stellen und die richtige Antwort bekommen. Multi-Modal Fusion ist das, was &lt;code&gt;find_symbol&lt;/code&gt;, semantische Suche und Abhängigkeitsanalyse hinter einer einzigen Query-Oberfläche vereint: Das System liest die Form der Frage und stellt still den richtigen Retriever dafür zusammen. Das Modell, das die Embeddings bewertet, zählt, aber genauso zählt es, zu wissen, wann man sie &lt;em&gt;nicht&lt;/em&gt; verwenden sollte. Für jede Query das richtige Werkzeug zu wählen, ist eine eigene Art von Qualität — und eine, die wir lieber selbst verantworten, als sie an den Aufrufer abzuschieben.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;// you bring the question. it brings the tools.&lt;/code&gt;&lt;/p&gt;
</content:encoded><category>Search</category><category>Architecture</category></item><item><title>Agent-Observability: Hooks, Alloy und Grafana</title><link>https://maguyva.ai/de/blog/agent-observability-hooks-alloy-grafana</link><guid isPermaLink="true">https://maguyva.ai/de/blog/agent-observability-hooks-alloy-grafana</guid><description>Wir haben Claude Code und Codex mit OpenTelemetry und Alloy in einen gemeinsamen Grafana-Stack eingebunden und dann mit Traces und Logs Probleme im Agent-Verhalten direkt an der Quelle gefunden und behoben.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Agent-Systeme versagen auf seltsame Weise.&lt;/p&gt;
&lt;p&gt;Manchmal ist das Modell das Problem. Manchmal ist das Tool das Problem. Manchmal ist dein MCP-Server völlig in Ordnung, aber der Agent hat den falschen Spezialisten gewählt, oder die halbe Session mit Shell-Arbeit verbracht, die du nicht erwartet hast, oder stillschweigend Kosten in einer Schleife verbrannt, die von außen produktiv aussah.&lt;/p&gt;
&lt;p&gt;Wenn du den Unterschied nicht sehen kannst, betreibst du kein Agent-System — du rätst.&lt;/p&gt;
&lt;p&gt;Deshalb haben wir einen Observability-Stack für unseren eigenen Workflow gebaut: Claude Code, Codex, Claude-Hook-Events, Codex-Notify-Events, natives OpenTelemetry, Grafana Alloy und auf der anderen Seite Grafana Cloud.&lt;/p&gt;
&lt;p&gt;Der interessante Teil ist nicht „wir haben ein Dashboard gebaut“. Der interessante Teil ist, dass wir Telemetrie in zwei unterschiedliche Streams aufteilen mussten, weil kein einzelner Feed das ganze Bild lieferte.&lt;/p&gt;
&lt;h2 id=&quot;das-problem-agent-telemetrie-ist-fragmentiert&quot;&gt;Das Problem: Agent-Telemetrie ist fragmentiert&lt;/h2&gt;
&lt;p&gt;Moderne Coding-Agenten senden bereits etwas Telemetrie. Das hilft, reicht aber nicht.&lt;/p&gt;
&lt;p&gt;Natives OTEL beantwortet Fragen wie diese gut:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wie viele Requests haben wir gemacht?&lt;/li&gt;
&lt;li&gt;Wie viel hat eine Session gekostet?&lt;/li&gt;
&lt;li&gt;Wo liegen die Spans und Traces?&lt;/li&gt;
&lt;li&gt;Gab es einen Latenz-Spike?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es ist deutlich schlechter darin, Fragen zu beantworten wie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Auf welchen MCP-Server hat sich der Agent gestützt?&lt;/li&gt;
&lt;li&gt;Lag dieser Fehler in &lt;code&gt;Bash&lt;/code&gt;, einem eingebauten Datei-Tool oder einem MCP-Call?&lt;/li&gt;
&lt;li&gt;Welcher Skill wurde tatsächlich aktiviert?&lt;/li&gt;
&lt;li&gt;Welcher Subagent-Typ wurde eingesetzt?&lt;/li&gt;
&lt;li&gt;Hat die Session sinnvolle Arbeit geleistet oder sich nur im Kreis gedreht?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Diese zweite Klasse von Fragen liegt näher an Hooks als an Traces.&lt;/p&gt;
&lt;p&gt;Aber das Umgekehrte gilt auch: Einige der wichtigsten Performance-Fragen liegen näher an Traces als an Hooks.&lt;/p&gt;
&lt;p&gt;Wenn du wissen willst, wo sich Latenz tatsächlich angesammelt hat, welche Spans langsam waren, oder ob die Session Zeit in Modellaufrufen statt in Tool-Ausführung verbrannt hat, brauchst du Trace-Daten genauso wie semantische Events.&lt;/p&gt;
&lt;h2 id=&quot;die-architektur-bei-der-wir-gelandet-sind&quot;&gt;Die Architektur, bei der wir gelandet sind&lt;/h2&gt;
&lt;p&gt;Wir betreiben zwei Telemetrie-Pfade parallel.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Claude Code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  native OTEL -&amp;gt; Alloy -&amp;gt; Grafana Cloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  hooks        -&amp;gt; send_event.py -&amp;gt; Grafana Cloud Loki&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Codex&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  native OTEL -&amp;gt; Alloy -&amp;gt; Grafana Cloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  notify hook -&amp;gt; codex_notify.py -&amp;gt; shared Loki schema&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Diese Trennung ist bewusst.&lt;/p&gt;
&lt;p&gt;Sie ist auch asymmetrisch. Claude Code liefert uns eine deutlich reichhaltigere Lifecycle-Hook-Schnittstelle. Codex liefert uns natives OTEL plus eine Notify-Schnittstelle, weshalb wir dünnere Turn-Completion-Events in dasselbe Log-Schema normalisieren, statt so zu tun, als würden beide Runtimes dieselben Kontrollmöglichkeiten bieten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Natives OTEL&lt;/strong&gt; liefert uns den Basis-Stream: Logs und Traces direkt aus der Runtime, plus Metriken, wo die Runtime sie tatsächlich ausgibt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hook- und Notify-Events&lt;/strong&gt; liefern uns die semantische Schicht: Dinge wie &lt;code&gt;PreToolUse&lt;/code&gt;, &lt;code&gt;PostToolUse&lt;/code&gt;, &lt;code&gt;PostToolUseFailure&lt;/code&gt;, &lt;code&gt;UserPromptSubmit&lt;/code&gt;, &lt;code&gt;SubagentStop&lt;/code&gt;, &lt;code&gt;SkillActivated&lt;/code&gt; und die klassifizierten Metadaten, die uns beim Debuggen von Agent-Verhalten tatsächlich interessieren. Claude Code liefert hier den reichhaltigeren Event-Stream. Codex liefert einen dünneren, aber immer noch nützlichen normalisierten Stream.&lt;/p&gt;
&lt;h2 id=&quot;warum-es-hooks-überhaupt-gibt&quot;&gt;Warum es Hooks überhaupt gibt&lt;/h2&gt;
&lt;p&gt;Unsere Hook-Pipeline reichert Events an, bevor sie bei Loki ankommen.&lt;/p&gt;
&lt;p&gt;Statt nur zu sagen „ein Tool ist gelaufen“, klassifizieren wir das Event in Felder wie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tool_type&lt;/code&gt;: builtin, mcp, skill, agent, bash&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mcp_server&lt;/code&gt;: welches MCP-Backend den Call bearbeitet hat&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bash_cli&lt;/code&gt;: die Shell-Befehlsfamilie&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subagent_type&lt;/code&gt;: welche Art von Spezialist eingesetzt wurde&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent_tool&lt;/code&gt;: ob die Quelle Claude Code oder Codex war&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das bedeutet, wir können Fragen stellen, die operativ wichtig sind:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | agent_tool=&quot;codex-cli&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | tool_type=&quot;mcp&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{service_name=&quot;claude-code-hooks&quot;} | json | bash_cli=&quot;git&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das sind keine Eitelkeitsfelder. Sie sind der Unterschied zwischen „der Agent fühlte sich langsam an“ und „der Agent hat die letzten zehn Minuten in shell-lastigen Git-Operationen mit hoher Tool-Fehlerrate verbracht“.&lt;/p&gt;
&lt;p&gt;Ein Implementierungsdetail, das seltsamer wirkt, als es ist: Der gemeinsame Loki-Stream verwendet weiterhin &lt;code&gt;service_name=&quot;claude-code-hooks&quot;&lt;/code&gt; als Label, selbst wenn das Event von Codex stammt. Die eigentliche Trennung zwischen den Runtimes passiert bei &lt;code&gt;agent_tool&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;warum-alloy-in-der-mitte-sitzt&quot;&gt;Warum Alloy in der Mitte sitzt&lt;/h2&gt;
&lt;p&gt;Grafana Alloy ist in diesem Setup nicht nur ein Forwarder. Es ist die Policy-Grenze.&lt;/p&gt;
&lt;p&gt;Wir richten den nativen OTEL-Stream von Claude Code und Codex auf einen lokalen Alloy-Proxy auf &lt;code&gt;localhost:4318&lt;/code&gt;, und lassen Alloy dann den Payload bereinigen, bevor er an Grafana Cloud weitergeleitet wird.&lt;/p&gt;
&lt;p&gt;Das ist wichtig, weil rohe Agent-Telemetrie voller High-Cardinality-Felder ist, die für die Analyse nützlich, aber als indizierte Labels furchtbar sind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompt_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Token-Zahlen&lt;/li&gt;
&lt;li&gt;Dauern&lt;/li&gt;
&lt;li&gt;Werkzeugparameter-Pakete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wenn du alles indizierst, bekommst du eine Label-Explosion und einen schlechten Tag.&lt;/p&gt;
&lt;p&gt;Alloy erledigt für uns also drei Dinge:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hält eine sehr kleine Menge Low-Cardinality-Labels indiziert.&lt;/li&gt;
&lt;li&gt;Verschiebt verrauschte, aber nützliche Felder in strukturierte Metadaten.&lt;/li&gt;
&lt;li&gt;Verwirft reines Rauschen vollständig.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Die wichtige Idee ist einfach: &lt;strong&gt;mehr beobachten, weniger indizieren&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;warum-der-hook-stream-alloy-umgeht&quot;&gt;Warum der Hook-Stream Alloy umgeht&lt;/h2&gt;
&lt;p&gt;Der Hook-Stream ist bereits für Loki zugeschnitten.&lt;/p&gt;
&lt;p&gt;Wenn &lt;code&gt;send_event.py&lt;/code&gt; ein Event pusht, haben wir bereits entschieden, welche Felder eine Label-Behandlung verdienen und welche in den strukturierten JSON-Body gehören. Dieser Stream geht direkt zum OTLP-Gateway von Grafana Cloud, statt noch einmal durch Alloy zu laufen.&lt;/p&gt;
&lt;p&gt;Das System hat also eine klare Arbeitsteilung:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alloy&lt;/strong&gt; bändigt den rohen nativen OTEL-Stream.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hook-Anreicherung&lt;/strong&gt; macht semantische Events abfragbar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das hält die Architektur einfacher, als zu versuchen, alles durch einen einzigen Pfad zu zwingen.&lt;/p&gt;
&lt;h2 id=&quot;was-das-dashboard-tatsächlich-zeigt&quot;&gt;Was das Dashboard tatsächlich zeigt&lt;/h2&gt;
&lt;p&gt;Der Screenshot unten stammt von einem der Observability-Dashboards hinter unserem Agent-Workflow. Es ist kein Benchmark, und die Zahlen sind nur eine Momentaufnahme. Der Punkt ist die Form der Daten: Activity Feed, Tool Calls, Fehler, Prompts und Aufschlüsselungen nach Agent, eingebauten Tools, MCP-Nutzung, Shell-Befehlen und Skills.&lt;/p&gt;
&lt;p&gt;Der nützliche Teil ist, dass dieses Dashboard auf demselben Grafana-Stack lebt wie der Rest der Agent-Telemetrie. Wir können nach Quell-Agent und Tool-Familie filtern und über Runtimes hinweg schauen, ohne für jedes System eine eigene Observability-Geschichte zu erfinden.&lt;/p&gt;
&lt;figure class=&quot;feature-figure feature-figure--wide&quot;&gt;
  &lt;a
    href=&quot;https://maguyva.ai/blog/agent-observability-dashboard.png&quot;
    target=&quot;_blank&quot;
    rel=&quot;noreferrer&quot;
    aria-label=&quot;Screenshot des Observability-Dashboards in voller Auflösung öffnen&quot;
  &gt;
    &lt;img
      src=&quot;https://maguyva.ai/blog/agent-observability-dashboard.png&quot;
      alt=&quot;Grafana-Dashboard mit Activity Feed, Tool-Call-Zählungen, Fehlern, Prompts und Aufschlüsselungen nach Agenten, eingebauten Tools, MCP-Nutzung, CLI-Befehlen und Skills für einen Agent-Workflow.&quot;
    /&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;
    Eines der Live-Dashboards hinter unserem Agent-Workflow. Dieser Screenshot ist nur ein Ausschnitt eines gemeinsamen Grafana-Stacks, der auch Telemetrie von unseren anderen Agent-Runtimes und -Systemen empfängt. Klicke auf das Bild für die Version in voller Auflösung.
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;warum-traces-wichtiger-sind-als-sie-zunächst-wirken&quot;&gt;Warum Traces wichtiger sind, als sie zunächst wirken&lt;/h2&gt;
&lt;p&gt;Logs sagen uns, welche Kategorie von Arbeit stattgefunden hat. Traces sagen uns, wie sich die Arbeit über die Zeit entfaltet hat.&lt;/p&gt;
&lt;p&gt;Dieser Unterschied ist in Agent-Systemen wichtig, weil „langsam“ zu stumpf ist, um nützlich zu sein.&lt;/p&gt;
&lt;p&gt;Ein Trace kann uns zeigen, ob die Probleme von Folgendem herrühren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modell-Latenz&lt;/li&gt;
&lt;li&gt;Tool-Ausführungszeit&lt;/li&gt;
&lt;li&gt;wiederholten Retries&lt;/li&gt;
&lt;li&gt;einer besonders teuren MCP-Interaktion&lt;/li&gt;
&lt;li&gt;einer langen Reihe kleiner Operationen, die isoliert betrachtet harmlos aussahen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In der Praxis nutzen wir den Hook-Stream und Tempo-Traces zusammen.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hook-Logs&lt;/strong&gt; beantworten: Was für eine Art von Sache ist passiert?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traces&lt;/strong&gt; beantworten: Wo ist die Zeit hingegangen?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Kombination ist das, was Observability von einem Dashboard in eine Erklärung verwandelt.&lt;/p&gt;
&lt;h2 id=&quot;wo-codex-hineinpasst&quot;&gt;Wo Codex hineinpasst&lt;/h2&gt;
&lt;p&gt;Codex ist Teil desselben Stacks, aber nicht identisch mit Claude Code.&lt;/p&gt;
&lt;p&gt;Für Codex verdrahten wir zwei Teile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Natives OTEL von Codex in Alloy&lt;/li&gt;
&lt;li&gt;Ein Notify-Webhook in &lt;code&gt;codex_notify.py&lt;/code&gt;, der Turn-Completions auf dasselbe Loki-Schema abbildet, das wir für Hook-Events verwenden&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das gibt uns einen einheitlichen Filter wie &lt;code&gt;agent_tool=&quot;codex-cli&quot;&lt;/code&gt; innerhalb desselben Log-Streams.&lt;/p&gt;
&lt;p&gt;Der ehrliche Vorbehalt: Codex’ Notify-Payload ist derzeit dünner als Claude Codes Hook-Payload, weil es nicht dieselbe Art von Integrationsschnittstelle ist. In unserem heutigen Setup können Codex-Turn-Completions in das gemeinsame Schema normalisiert werden, aber eine reichhaltige Tool-für-Tool-Extraktion ist im nativen OTEL-Stream immer noch besser als in der Notify-Bridge.&lt;/p&gt;
&lt;p&gt;Das ist kein Grund, den Post zu meiden. Es ist der Punkt des Posts. Echte Observability-Systeme werden aus unperfekten Signalen zusammengesetzt.&lt;/p&gt;
&lt;h2 id=&quot;grafana-über-mcp-verändert-das-spiel&quot;&gt;Grafana über MCP verändert das Spiel&lt;/h2&gt;
&lt;p&gt;Die größere Verschiebung ist, dass Grafana nicht nur ein Ort ist, den Menschen im Browser besuchen.&lt;/p&gt;
&lt;p&gt;In diesem Repo exponieren wir Grafana auch über MCP. Das bedeutet, ein Agent kann Loki, Prometheus und Tempo direkt abfragen, statt darauf zu warten, dass ein Mensch zuerst manuell die Dashboards inspiziert.&lt;/p&gt;
&lt;p&gt;Das macht Observability zu einem aktiven Input für den Workflow.&lt;/p&gt;
&lt;p&gt;Ein Agent kann fragen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Welche Tool-Familien sind in der letzten Stunde am häufigsten fehlgeschlagen?&lt;/li&gt;
&lt;li&gt;Welcher MCP-Server hat eine Session dominiert?&lt;/li&gt;
&lt;li&gt;Haben aktuelle Änderungen Tool-Fehler reduziert, oder die Arbeit nur in shell-lastigere Pfade mit denselben Fehlern verschoben?&lt;/li&gt;
&lt;li&gt;Welche Traces zeigen die höchste Latenz oder wiederholte Retries?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sobald du das hast, bist du sehr nah an einer Self-Improvement-Loop.&lt;/p&gt;
&lt;h2 id=&quot;vom-dashboard-zur-feedback-loop&quot;&gt;Vom Dashboard zur Feedback-Loop&lt;/h2&gt;
&lt;p&gt;Das ist der Teil, den wir am interessantesten finden.&lt;/p&gt;
&lt;p&gt;Sobald der Observability-Stack von der Agent-Schicht aus abfragbar ist, hört Telemetrie auf, eine passive Reporting-Oberfläche zu sein, und wird zu einem Kontrollsignal.&lt;/p&gt;
&lt;p&gt;Die Loop sieht so aus:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Agent-Aktivität erzeugt Traces, Metriken und angereicherte Hook-Logs.&lt;/li&gt;
&lt;li&gt;Grafana speichert die Evidenz in Loki, Tempo und Prometheus, wo Metriken existieren.&lt;/li&gt;
&lt;li&gt;Agenten fragen diese Evidenz über Grafana MCP ab.&lt;/li&gt;
&lt;li&gt;Das System identifiziert schlechte Tool-Mischungen, brüchige Skills, schwaches Routing oder shell-lastige Workflows, die weiterhin vermeidbare Fehler produzieren.&lt;/li&gt;
&lt;li&gt;Agenten oder Operatoren passen Prompts, Agent-Configs, Skill-Beschreibungen, Routing-Regeln oder Tool-Zugriff an.&lt;/li&gt;
&lt;li&gt;Die nächste Session erzeugt eine neue Telemetrie-Form, und der Zyklus wiederholt sich.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So kommt man von „interessantes Dashboard“ zu „messbares Verbesserungssystem“.&lt;/p&gt;
&lt;p&gt;Das Ziel ist nicht, eine Tool-Kategorie zu maximieren. Es ist, für die tatsächlich geleistete Arbeit auf die richtige Mischung aus CLI, eingebauten Tools, MCP-Calls und Skills zu kommen.&lt;/p&gt;
&lt;h2 id=&quot;was-uns-das-zu-beantworten-erlaubt&quot;&gt;Was uns das zu beantworten erlaubt&lt;/h2&gt;
&lt;p&gt;Sobald beide Runtimes im selben Grafana-Stack landen, können wir operative Fragen viel schneller beantworten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Konzentrieren sich Fehler auf eine Tool-Familie?&lt;/li&gt;
&lt;li&gt;Erzeugen shell-lastige Workflows vermeidbare Fehler, wo eigentlich ein High-Level-Tool existieren sollte?&lt;/li&gt;
&lt;li&gt;Welche MCP-Server tragen die Arbeitslast?&lt;/li&gt;
&lt;li&gt;Zahlen wir für Agent-Aktivität, die keinen sinnvollen Fortschritt erzeugt?&lt;/li&gt;
&lt;li&gt;Ist eine Session ungesund wegen des Modells, der Tools oder der Orchestrierungsschicht?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das ist besonders nützlich in Multi-Agent-Workflows, wo „der Agent war beschäftigt“ fast nichts aussagt.&lt;/p&gt;
&lt;p&gt;Wenn ein Spezialist ständig eingesetzt wird und hohe Fehlerraten produziert, ist das ein Routing- oder Prompt-Shaping-Problem.&lt;/p&gt;
&lt;p&gt;Wenn ein MCP-Server alle Calls dominiert, kann das gute Architektur sein oder ein Zeichen, dass alles andere unnötiger Ballast ist.&lt;/p&gt;
&lt;p&gt;Wenn Tool-Fehler ansteigen, während die Kosten hoch bleiben, hast du ein operatives Problem, kein Qualitätsproblem.&lt;/p&gt;
&lt;p&gt;Wenn Shell-Arbeit weiterhin auf vorhersehbare, vermeidbare Weise fehlschlägt, wo eigentlich ein High-Level-Tool existieren sollte, ist das ein Produktsignal.&lt;/p&gt;
&lt;p&gt;Wenn ein Skill ständig aktiviert wird, aber die Ergebnisse nicht verbessert, ist das ein Prompt- oder Routing-Signal.&lt;/p&gt;
&lt;h2 id=&quot;die-eigentliche-lektion&quot;&gt;Die eigentliche Lektion&lt;/h2&gt;
&lt;p&gt;Die tiefere Lektion hier ist, dass Agent-Observability sowohl &lt;strong&gt;Runtime-Telemetrie&lt;/strong&gt; als auch &lt;strong&gt;Workflow-Telemetrie&lt;/strong&gt; braucht.&lt;/p&gt;
&lt;p&gt;Runtime-Telemetrie sagt dir, was das System getan hat.&lt;/p&gt;
&lt;p&gt;Workflow-Telemetrie sagt dir, was der Agent dachte, dass er tut.&lt;/p&gt;
&lt;p&gt;Wir brauchen beides.&lt;/p&gt;
&lt;p&gt;Wenn du nur Traces und Zähler behältst, verpasst du die semantische Schicht. Wenn du nur Hook-Events behältst, verpasst du Latenz, Spans und das größere Runtime-Bild.&lt;/p&gt;
&lt;p&gt;Und wenn du beides behältst, sie aber nie in die Agent-Schicht zurückspielst, hast du Monitoring, keine Anpassung.&lt;/p&gt;
&lt;p&gt;Die Kombination ist das, was das System erklärbar genug macht, um es zu betreiben, und feinjustierbar genug, um es zu verbessern.&lt;/p&gt;
&lt;h2 id=&quot;was-noch-unperfekt-ist&quot;&gt;Was noch unperfekt ist&lt;/h2&gt;
&lt;p&gt;Es gibt immer noch raue Kanten.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nicht jedes Hook-Event enthält die Dauer- und Token-Daten, die wir gerne hätten.&lt;/li&gt;
&lt;li&gt;Einige der besten Timing-Ansichten kommen immer noch von Tempo-Traces, nicht von den Hook-Logs.&lt;/li&gt;
&lt;li&gt;Codex ist heute im angereicherten Event-Stream semantisch weniger reichhaltig als Claude Code.&lt;/li&gt;
&lt;li&gt;Der Dashboard-Screenshot ist eine echte Betriebsoberfläche, kein poliertes Marketing-Artefakt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der letzte Punkt ist beabsichtigt. Wir zeigen lieber das echte Instrumentenbrett, als so zu tun, als würden sich Agent-Systeme magisch von selbst erklären.&lt;/p&gt;
&lt;h2 id=&quot;warum-das-für-maguyva-wichtig-ist&quot;&gt;Warum das für Maguyva wichtig ist&lt;/h2&gt;
&lt;p&gt;Bei Maguyva geht es darum, Agenten bessere Code Intelligence zu geben. Aber sobald Agenten tatsächlich nützliche Arbeit leisten, taucht sofort eine neue Anforderung auf: Du musst sehen, wie sie sich verhalten.&lt;/p&gt;
&lt;p&gt;Suchqualität, Routing-Qualität, Tool-Auswahl und Context-Effizienz werden allesamt zu beobachtbaren Problemen.&lt;/p&gt;
&lt;p&gt;Deshalb glauben wir, dass es sich lohnt, darüber zu schreiben. Der zukünftige Agent-Stack besteht nicht nur aus Prompts und Tools. Es sind Prompts, Tools und die Instrumentierungsschicht, die dir sagt, ob das Ganze funktioniert.&lt;/p&gt;
&lt;p&gt;Wenn du ernsthafte Agent-Workflows baust, ist Observability keine optionale Infrastruktur. Sie ist Teil des Produkts.&lt;/p&gt;
</content:encoded><category>Observability</category><category>Grafana</category><category>OpenTelemetry</category><category>Architecture</category></item><item><title>Mining im Kreislauf: Wie Änderungen zu institutionellem Gedächtnis werden</title><link>https://maguyva.ai/de/blog/mining-workflow-closing-the-loop</link><guid isPermaLink="true">https://maguyva.ai/de/blog/mining-workflow-closing-the-loop</guid><description>Git-Commits werden zu strukturierten Changelog-Einträgen und Architectural Decision Records und fließen dann als abfragbares institutionelles Gedächtnis zurück in KI-Agenten.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Die Zahlen in diesem Beitrag spiegeln den Stand des Systems zum Veröffentlichungszeitpunkt (Februar 2026) wider. Aktuelle Zahlen findest du auf unserer &lt;a href=&quot;https://maguyva.ai/de/team&quot;&gt;Team-Seite&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jedes Engineering-Team steht vor derselben Herausforderung: Änderungen passieren ständig, aber das &lt;em&gt;Warum&lt;/em&gt; dahinter verschwindet. Sechs Monate später fragt jemand „warum haben wir DuckDB für Pipeline-Stages eingeführt?“, und die Antwort lebt nur im Kopf der Person, die diese Entscheidung getroffen hat — falls diese Person noch da ist.&lt;/p&gt;
&lt;p&gt;Wir haben einen Mining-Workflow gebaut, der diese Lücke schließt. Änderungen fließen durch Git-Commits, werden von unserer Mining-Pipeline verarbeitet, werden zu strukturierten Changelog-Einträgen und Architectural Decision Records, und fließen dann über CLI-Abfragen zurück in unsere KI-Agenten. Das Ergebnis: institutionelles Gedächtnis, auf das sowohl Menschen als auch KI zugreifen können.&lt;/p&gt;
&lt;h2 id=&quot;das-problem-entscheidungen-verdunsten&quot;&gt;Das Problem: Entscheidungen verdunsten&lt;/h2&gt;
&lt;p&gt;Stell dir ein typisches Szenario vor. Ein Entwickler committet:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;feat(canonical): add DuckDB runtime for pipeline stages&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dieser Commit stellt eine bedeutende Architekturentscheidung dar. Das Team hat Optionen bewertet, Trade-offs abgewogen und ist bei DuckDB aus bestimmten Gründen gelandet. Aber der ganze Kontext lebt in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Einem Slack-Thread (wahrscheinlich gelöscht)&lt;/li&gt;
&lt;li&gt;Der Erinnerung von jemandem (definitiv verblassend)&lt;/li&gt;
&lt;li&gt;Einem Kommentar im Code (vielleicht, wenn du Glück hast)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Drei Monate später fragt ein neues Teammitglied: „Sollte ich DuckDB oder SQLite für diese neue Stage verwenden?“ Ohne institutionelles Gedächtnis erfinden sie entweder das Rad neu oder treffen inkonsistente Entscheidungen.&lt;/p&gt;
&lt;h2 id=&quot;die-loop-von-commits-zu-kontext&quot;&gt;Die Loop: Von Commits zu Kontext&lt;/h2&gt;
&lt;p&gt;Unser Mining-Workflow verwandelt Git-History in abfragbares Wissen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Git Commits&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  mine sync          │  ← Build index from git history&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  mine candidates    │  ← Surface commits for review&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  Classification     │  ← Human or LLM assessment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│  (changelog or ADR) │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├──────────────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼                      ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────┐    ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ Changelog   │    │ Decisions     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ Ledger      │    │ Registry      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ (JSONL)     │    │ (YAML files)  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────┘    └───────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ▼                      ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;┌─────────────┐    ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ CHANGELOG.md│    │ orkestra CLI  │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;│ per package │    │ queries       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─────────────┘    └───────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    │                      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └──────────────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              ▼&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      ┌───────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      │ AI Agents     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      │ (via CLI)     │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      └───────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die zentrale Erkenntnis: Sowohl Changelogs als auch Architekturentscheidungen fließen aus derselben Git-History, verarbeitet durch eine einheitliche Pipeline. Das stellt sicher, dass nichts durch die Maschen fällt.&lt;/p&gt;
&lt;h2 id=&quot;wie-mining-funktioniert&quot;&gt;Wie Mining funktioniert&lt;/h2&gt;
&lt;h3 id=&quot;schritt-1-den-index-synchronisieren&quot;&gt;Schritt 1: Den Index synchronisieren&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dieser Befehl scannt die Git-History und baut einen Index aller Commits. Er extrahiert strukturierte Signale aus jedem Commit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conventional-Commit-Typ (&lt;code&gt;feat&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;chore&lt;/code&gt;, &lt;code&gt;docs&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Scope (welches Paket oder welcher Bereich)&lt;/li&gt;
&lt;li&gt;Breaking-Change-Markierungen&lt;/li&gt;
&lt;li&gt;Angefasste Dateien und Komplexitätsmetriken&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;schritt-2-coverage-status-prüfen&quot;&gt;Schritt 2: Coverage-Status prüfen&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So sieht unser aktueller Status aus:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Mining Status&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;=============&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Decisions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;---------&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Coverage:        100.0%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Processed:     15637  (of 15637)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Extracted:       476&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Skipped:       15161&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Changelog&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;---------&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  Coverage:        100.0%&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Processed:     15637  (of 15637)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Released:       6799&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    Skipped:        8838&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;15.637 Commits verarbeitet. 476 wurden zu Architekturentscheidungen. 6.799 wurden zu Changelog-Einträgen. Jeder Commit klassifiziert.&lt;/p&gt;
&lt;h3 id=&quot;schritt-3-kandidaten-für-die-review-holen&quot;&gt;Schritt 3: Kandidaten für die Review holen&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; candidates&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 50&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --full&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das bringt Commits an die Oberfläche, die noch nicht verarbeitet wurden, mit vollständigem Kontext für die Klassifizierung:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;90571786d99166c0039ca2e80e4d9cd96184bd85&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;date&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;subject&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat(canonical): add DuckDB runtime for pipeline stages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;signals&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;commit_type&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;scope&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;canonical&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;breaking&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;is_releasable_type&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;domains_affected&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;pipeline&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;data-architecture&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;body&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Establishes DuckDB as canonical in-process analytical database...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;files_changed&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/canonical/pipelines/stages/duckdb_runtime.py&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;stats&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;files&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;insertions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;450&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;deletions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;120&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Signale helfen bei der Klassifizierung: &lt;code&gt;is_releasable_type: true&lt;/code&gt; legt nahe, dass das im Changelog erscheinen sollte. Die große Anzahl an Insertions und die Infrastruktur-Dateien legen nahe, dass es auch eine Architectural Decision sein könnte.&lt;/p&gt;
&lt;h3 id=&quot;schritt-4-commits-klassifizieren&quot;&gt;Schritt 4: Commits klassifizieren&lt;/h3&gt;
&lt;p&gt;Hier trennen sich zwei Pfade: Changelog-Einträge und Architekturentscheidungen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Für Changelog-Einträge:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classify&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; abc123&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --changelog&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; added&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das protokolliert, dass Commit &lt;code&gt;abc123&lt;/code&gt; im Changelog unter der Kategorie „Added“ erscheinen sollte.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Für Architekturentscheidungen:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Zuerst eine echte Decision-ID holen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --domain&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; pipeline&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Returns: DEC-PL-143&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dann mit der Decision-ID klassifizieren:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classify&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; abc123&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --decision&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-PL-143&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das verknüpft den Commit mit einem Decision-Record, der erstellt oder aktualisiert wird.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Für Batch-Verarbeitung (was wir tatsächlich tun):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Generate classifications file with LLM assistance&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; commit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --input&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; classifications.jsonl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das JSONL-Format unterstützt beide Domänen in einem Durchgang:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsonl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;changelog&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;release&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;category&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;added&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;summary&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Add DuckDB runtime for pipeline stages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;decisions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;extract&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;decision_id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-PL-142&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;def456&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;changelog&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;action&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;skip&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&quot;reason&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Chore: dependency update&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;schritt-5-outputs-rendern&quot;&gt;Schritt 5: Outputs rendern&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; changelog&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; render&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --package&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;pk&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das generiert pro-Paket-&lt;code&gt;CHANGELOG.md&lt;/code&gt;-Dateien aus dem Ledger. Die Changelogs sind abgeleitete Artefakte — lösche sie, und sie regenerieren sich perfekt aus dem Quell-Ledger.&lt;/p&gt;
&lt;h2 id=&quot;die-struktur-des-decision-records&quot;&gt;Die Struktur des Decision-Records&lt;/h2&gt;
&lt;p&gt;Extrahierte Decisions werden zu YAML-Dateien mit reichhaltigen Metadaten:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DEC-PL-142&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Adopt DuckDB as Canonical Processing Runtime for Pipeline Stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;active&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;created&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-26&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  Establishes DuckDB as the canonical in-process analytical database for pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  stage transformations. Provides a shared runtime module that resolves settings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  from pipeline defaults with stage-level overrides.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  Pipeline stages performing data transformations each independently configured&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  DuckDB connections. This led to inconsistent settings, duplicated configuration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  code, and no way to tune DuckDB globally for a pipeline run.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DuckDB provides efficient in-process OLAP with zero configuration deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Centralized runtime module eliminates duplicated DuckDB setup across stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Hierarchical settings enable global tuning with stage-level overrides&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Memory limits and thread counts can be adjusted per-pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;impact&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  positive&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Consistent DuckDB configuration across all pipeline stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Single point of control for memory/thread tuning&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Reduced code duplication in conversion and export stages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  negative&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Adds dependency on shared runtime module&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Stages must adopt new configuration pattern&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;source_commits&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;sha&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;90571786d99166c0039ca2e80e4d9cd96184bd85&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    message&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;feat(canonical): add DuckDB runtime for pipeline stages&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    date&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-26&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    role&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;primary&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/stages/duckdb_runtime.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/runner.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/canonical/pipelines/stages/convert_hdx_admin_boundaries_to_geoparquet.py&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;related&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;DEC-DA-014&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Data architecture decisions that influenced this&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jede Decision verlinkt zurück zu ihren Quell-Commits. Jede Decision spezifiziert, welche Dateien sie betrifft. Beziehungen zwischen Decisions sind explizit.&lt;/p&gt;
&lt;h2 id=&quot;cli-integration-institutionelles-gedächtnis-abfragen&quot;&gt;CLI-Integration: Institutionelles Gedächtnis abfragen&lt;/h2&gt;
&lt;p&gt;Hier schließt sich die Loop. Agenten können Decisions über die CLI abfragen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Search by topic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;retry&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Liefert Decisions über Retry-Logik, Fehlerbehandlung, Recovery-Muster.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Get full details on a specific decision&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-PL-142&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Liefert den vollständigen Decision-Record mit Kontext, Begründung und Auswirkung.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# List recent decisions for context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --limit&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 15&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Zeigt, welche Architekturentscheidungen kürzlich getroffen wurden.&lt;/p&gt;
&lt;h3 id=&quot;wie-agenten-das-nutzen&quot;&gt;Wie Agenten das nutzen&lt;/h3&gt;
&lt;p&gt;Die Baseline-Instruktionen unseres Orchestrators enthalten:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8;font-weight:bold&quot;&gt;**Essential CLI commands:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; `orkestra registry decisions search &quot;X&quot;`&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; — Find architectural decisions&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wenn ein Agent gebeten wird, etwas im Zusammenhang mit DuckDB zu implementieren, kann er zuerst prüfen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;DuckDB&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Und DEC-PL-142 entdecken und lernen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Warum wir DuckDB gewählt haben (context)&lt;/li&gt;
&lt;li&gt;Wie man es richtig verwendet (agent_guidance)&lt;/li&gt;
&lt;li&gt;Welche Dateien man sich ansehen sollte (files)&lt;/li&gt;
&lt;li&gt;Welche verwandten Decisions existieren (related)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Der Agent erfindet das Rad nicht neu. Er baut auf etablierten Mustern auf.&lt;/p&gt;
&lt;h2 id=&quot;der-drei-fragen-test&quot;&gt;Der Drei-Fragen-Test&lt;/h2&gt;
&lt;p&gt;Nicht jeder Commit verdient einen Decision-Record. Wir verwenden den Drei-Fragen-Test zum Filtern:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;War das schwer zu entscheiden?&lt;/strong&gt; Erforderte es signifikante Analyse, Trade-off-Bewertung oder Debatte?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ist es teuer zu ändern?&lt;/strong&gt; Würde eine Umkehrung dieser Entscheidung signifikante Nacharbeit erfordern?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hat es systemweite Auswirkungen?&lt;/strong&gt; Betrifft es mehrere Pakete oder etabliert es Muster, denen andere folgen werden?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Wenn ein Commit mindestens eine dieser Fragen mit „ja“ beantwortet, ist er ein Kandidat für die Decision-Extraktion. Unsere typische Rate: 1–4 Decisions pro 100 Commits (etwa 1–4 %).&lt;/p&gt;
&lt;p&gt;Für Changelog-Einträge liegt die Hürde niedriger: Jede nutzersichtbare Änderung (Features, Fixes, Verbesserungen) wird erfasst. Interne Chores, Dokumentations-Updates und Refactorings werden typischerweise übersprungen. Unsere typische Rate: 30–50 Changelog-Einträge pro 100 Commits.&lt;/p&gt;
&lt;h2 id=&quot;datenspeicherung-append-only-ledger&quot;&gt;Datenspeicherung: Append-Only-Ledger&lt;/h2&gt;
&lt;p&gt;Das Mining-System verwendet Append-Only-JSONL-Ledger für konfliktfreien Multi-Agent-Betrieb:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;packages/orchestration/ai_assets/reference/changelog/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── commits_processed.jsonl  # Classification ledger (both domains)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── release_notes.jsonl      # Changelog entries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── commits_index.yaml       # Derived index (gitignored)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;packages/orchestration/ai_assets/reference/decisions/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── registry.yaml            # Decision index&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── records/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── DEC-AD-001.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    ├── DEC-AD-002.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    └── ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das JSONL-Format mit &lt;code&gt;merge=union&lt;/code&gt; in &lt;code&gt;.gitattributes&lt;/code&gt; bedeutet, dass mehrere Agenten Commits gleichzeitig klassifizieren können, ohne Merge-Konflikte. Jede Zeile ist unabhängig.&lt;/p&gt;
&lt;h2 id=&quot;validierungs-gates&quot;&gt;Validierungs-Gates&lt;/h2&gt;
&lt;p&gt;Vor jeder Mining-Session führen wir eine Validierung durch:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; mine&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --quick&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das prüft:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gültigkeit des SHA-Formats&lt;/li&gt;
&lt;li&gt;Einhaltung des Decision-ID-Formats&lt;/li&gt;
&lt;li&gt;Keine doppelten Einträge für denselben SHA&lt;/li&gt;
&lt;li&gt;Referenzierte Decisions existieren tatsächlich&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nach der Klassifizierung validieren wir erneut, bevor Änderungen committet werden.&lt;/p&gt;
&lt;h2 id=&quot;warum-das-wichtig-ist&quot;&gt;Warum das wichtig ist&lt;/h2&gt;
&lt;p&gt;Die Feedback-Loop, die wir gebaut haben, löst mehrere Probleme:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Für neue Teammitglieder:&lt;/strong&gt; Statt zu fragen „warum haben wir X gemacht?“, können sie die Decisions-Registry durchsuchen. Der Kontext bleibt erhalten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Für KI-Agenten:&lt;/strong&gt; Sie operieren nicht im luftleeren Raum. Sie können institutionelles Wissen abfragen, bevor sie Empfehlungen aussprechen. Wenn sie gebeten werden, eine neue Pipeline-Stage hinzuzufügen, können sie das DuckDB-Muster entdecken und ihm folgen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Für Architekturkonsistenz:&lt;/strong&gt; Decisions sind explizit und durchsuchbar. Wenn jemand einen Ansatz vorschlägt, der einer bestehenden Decision widerspricht, kann das System den Konflikt sichtbar machen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Für die Changelog-Generierung:&lt;/strong&gt; Release Notes sind kein Last-Minute-Gehetze. Sie sind ein Nebenprodukt kontinuierlicher Klassifizierung während der Entwicklung.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Für Onboarding:&lt;/strong&gt; Neue Agenten erben den vollen Kontext der Codebase. Sie sehen nicht nur den Code — sie sehen die Entscheidungen, die ihn geformt haben.&lt;/p&gt;
&lt;h2 id=&quot;aktueller-stand&quot;&gt;Aktueller Stand&lt;/h2&gt;
&lt;p&gt;Stand heute:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;15.637 Commits&lt;/strong&gt; durch die Pipeline verarbeitet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;476 Architekturentscheidungen&lt;/strong&gt; extrahiert und dokumentiert&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6.799 Changelog-Einträge&lt;/strong&gt; erfasst&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;100 % Coverage&lt;/strong&gt; über beide Domänen hinweg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jeder Commit seit unserem Start wurde klassifiziert. Das institutionelle Gedächtnis ist vollständig und abfragbar.&lt;/p&gt;
&lt;h2 id=&quot;erste-schritte&quot;&gt;Erste Schritte&lt;/h2&gt;
&lt;p&gt;Wenn du etwas Ähnliches umsetzen willst:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Beginne mit Conventional Commits.&lt;/strong&gt; Die Mining-Pipeline funktioniert am besten, wenn Commits strukturierte Präfixe haben (&lt;code&gt;feat:&lt;/code&gt;, &lt;code&gt;fix:&lt;/code&gt;, &lt;code&gt;chore:&lt;/code&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Definiere deine Domänen.&lt;/strong&gt; Wir verwenden Domänen wie &lt;code&gt;pipeline&lt;/code&gt;, &lt;code&gt;agent-design&lt;/code&gt;, &lt;code&gt;observability&lt;/code&gt;, &lt;code&gt;data-modeling&lt;/code&gt;. Diese organisieren Decisions nach Bereich.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Baue die Klassifizierungs-Gewohnheit auf.&lt;/strong&gt; Mining funktioniert, wenn Teams regelmäßig Commits klassifizieren. Batch-Verarbeitung mit LLM-Unterstützung hilft bei der Skalierung.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mache Decisions abfragbar.&lt;/strong&gt; Der Wert verstärkt sich, wenn Agenten Decisions über die CLI durchsuchen können. Strukturiere deine Ausgabe für maschinellen Konsum.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Schließe die Loop.&lt;/strong&gt; Decisions sollten zukünftige Arbeit beeinflussen. Nimm Decision-Referenzen in Agent-Instruktionen und Code-Review-Checklisten auf.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Das Ziel ist nicht perfekte Dokumentation. Es ist, das &lt;em&gt;Warum&lt;/em&gt; hinter Änderungen sowohl für Menschen als auch für KI zugänglich zu machen, heute und in sechs Monaten. Wenn Änderungen zu institutionellem Gedächtnis werden, bauen Teams auf etablierten Mustern auf, statt sie neu zu erfinden.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Der Mining-Workflow ist Teil unserer Orchestrierungs-Engine, genauer gesagt des Context-Engine-Moduls in unserem Orchestration-Paket.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Workflows</category></item><item><title>Skill Mining: Von 3.500 Kandidaten zu 466 Fähigkeiten</title><link>https://maguyva.ai/de/blog/skill-mining-3500-and-counting</link><guid isPermaLink="true">https://maguyva.ai/de/blog/skill-mining-3500-and-counting</guid><description>Wir haben 3.500 Skill-Kandidaten geprüft und 466 übernommen. Eine systematische Mining- und Ingestion-Loop für den Aufbau einer kohärenten KI-Agent-Skill-Bibliothek im großen Maßstab.</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Die Zahlen in diesem Beitrag spiegeln den Stand des Systems zum Veröffentlichungszeitpunkt (Januar 2026) wider. Aktuelle Zahlen findest du auf unserer &lt;a href=&quot;https://maguyva.ai/de/team&quot;&gt;Team-Seite&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;das-3500-skill-problem&quot;&gt;Das 3.500-Skill-Problem&lt;/h2&gt;
&lt;p&gt;Als wir angefangen haben, ein Agent-Orchestrierungssystem zu bauen, standen wir vor einer interessanten Herausforderung: Es gibt Tausende potenzielle Skills, verstreut über das gesamte KI-Ökosystem. GitHub-Repositories, Vendor-Dokumentation, Community-Projekte, interne Muster — Skills existieren überall. Aber welche zählen? Welche funktionieren? Und wie pflegst du eine kohärente Skill-Bibliothek, die Agenten tatsächlich nutzen können?&lt;/p&gt;
&lt;p&gt;Unsere Antwort: eine systematische Mining- und Ingestion-Loop.&lt;/p&gt;
&lt;h2 id=&quot;die-zahlen-heute&quot;&gt;Die Zahlen heute&lt;/h2&gt;
&lt;p&gt;Etwas mehr als drei Monate nachdem Anthropic am 16. Oktober 2025 Agent Skills gestartet hat, sah unser Stand am Veröffentlichungsdatum dieses Beitrags, dem 27. Januar 2026, so aus:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metrik&lt;/th&gt;
&lt;th&gt;Anzahl&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Identifizierte Kandidaten&lt;/td&gt;
&lt;td&gt;3.500+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Übernommene Skills&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vendor-Skills&lt;/td&gt;
&lt;td&gt;373&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interne Skills&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aktive Vendors&lt;/td&gt;
&lt;td&gt;25+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Durchschnittliche Tokens pro Skill&lt;/td&gt;
&lt;td&gt;2.834&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Referenzierte Tools&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eindeutige Tags&lt;/td&gt;
&lt;td&gt;635&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Wir haben über 3.500 Skill-Kandidaten geprüft. Wir haben 466 übernommen. Das ist eine Übernahmequote von 13 % — und diese Selektivität ist Absicht.&lt;/p&gt;
&lt;h2 id=&quot;das-knowledge-tier-system&quot;&gt;Das Knowledge-Tier-System&lt;/h2&gt;
&lt;p&gt;Nicht alle Skills sind gleich. Wir organisieren sie in fünf Wissensschichten (K0–K4), jede repräsentiert einen anderen Geltungsbereich der Anwendbarkeit:&lt;/p&gt;
&lt;h3 id=&quot;k0-foundations-universell&quot;&gt;K0: Foundations (Universell)&lt;/h3&gt;
&lt;p&gt;Skills, die jeder Agent haben sollte. Diese repräsentieren „guter Denker“-Fähigkeiten, die überall funktionieren.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;foundations/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── test-first-discipline       # TDD: Red-Green-Refactor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── evidence-based-completion   # Verify before claiming done&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── systematic-debugging        # Root cause methodology&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── structured-planning         # Break work into tasks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── context-budget-awareness    # Manage token consumption&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;K0-Skills sind auf jedes Projekt, jede Domäne, jeden Stack portabel. Sie kodieren universelle kognitive Muster.&lt;/p&gt;
&lt;h3 id=&quot;k1-identities-fachdisziplin&quot;&gt;K1: Identities (Fachdisziplin)&lt;/h3&gt;
&lt;p&gt;„Guter Engineer“- oder „guter Researcher“-Skills, die über Projekte hinweg innerhalb einer Disziplin gelten.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;identities/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── research-workflows          # Multi-source research&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── web-extraction-playbook     # Content extraction&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── code-review                 # PR review patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── cli-interface-standards     # CLI design patterns&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k2-domains-fachexpertise&quot;&gt;K2: Domains (Fachexpertise)&lt;/h3&gt;
&lt;p&gt;„Guter Datenbankexperte“- oder „guter Security-Engineer“-Skills, portabel innerhalb eines Fachbereichs.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domains/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── schema-migration-workflow   # Safe migration patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── rpc-validation-checklist    # RPC health checks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── auth-validation-checklist   # JWT/OAuth patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── secrets-audit-checklist     # Credential scanning&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k3-stacks-technologie&quot;&gt;K3: Stacks (Technologie)&lt;/h3&gt;
&lt;p&gt;„Guter Supabase-Nutzer“- oder „guter Cloudflare-Entwickler“-Skills für bestimmte Technologie-Stacks.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;stacks/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── maguyva-quickstart          # Our semantic search patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── cloudflare-deployment       # Workers/Pages deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── mcp-tool-best-practices     # MCP tool selection&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;k4-project-organisation&quot;&gt;K4: Project (Organisation)&lt;/h3&gt;
&lt;p&gt;Skills, die spezifisch für unsere Organisation und unsere Workflows sind.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;project/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── agent-creation-workflow     # How we build agents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── skill-authoring-workflow    # How we write skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── mining-session-workflow     # This very process&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── vendor-skill-evaluation     # Evaluation rubrics&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;die-mining-loop&quot;&gt;Die Mining-Loop&lt;/h2&gt;
&lt;h3 id=&quot;phase-1-entdeckung&quot;&gt;Phase 1: Entdeckung&lt;/h3&gt;
&lt;p&gt;Skills kommen von überall her:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vendor-Repositories&lt;/strong&gt;: AWS, Anthropic, Cloudflare, Supabase und Community-Contributor veröffentlichen Skill-Sammlungen. Wir verfolgen 25+ Vendor-Roots.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community-Projekte&lt;/strong&gt;: GitHub ist voll von Claude-Code-Templates, Agent-Mustern und Workflow-Definitionen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interne Muster&lt;/strong&gt;: Während unser Team Probleme löst, entstehen Muster. Diese werden zu Skills formalisiert.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dokumentations-Mining&lt;/strong&gt;: Technische Dokumentation enthält oft implizite Skills — Prozeduren, Checklisten, Entscheidungsbäume.&lt;/p&gt;
&lt;p&gt;Entdeckung ist kontinuierlich. Wir nutzen einen Skill-Backlog, um Kandidaten vor der formalen Bewertung zu verfolgen.&lt;/p&gt;
&lt;h3 id=&quot;phase-2-bewertung&quot;&gt;Phase 2: Bewertung&lt;/h3&gt;
&lt;p&gt;Jeder Kandidat durchläuft dieselbe Rubrik:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;adoption_criteria&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;fills_real_gap&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # We lack this capability&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;well_structured&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Progressive disclosure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;actively_maintained&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # Commits in last 6 months&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;portable&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;            # Not hyper-specific&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;tested&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;              # Evidence of usage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alle fünf Produktkriterien müssen erfüllt sein. Deshalb werden 87 % der Kandidaten abgelehnt.&lt;/p&gt;
&lt;p&gt;Dann durchläuft jeder Kandidat ein separates Trust-Review. Wir behandeln ein offizielles Vendor-Repository, einen bekannten Community-Maintainer und ein zufälliges GitHub-Repo nicht als gleichwertige Quellen der Wahrheit.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;trust_review&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  vendor_credibility&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;ownership_verified&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Official vendor, known maintainer, or internal source&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;maintenance_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Recent commits, issue response, release history&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adoption_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Evidence of real use, stars alone are not enough&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;provenance_clear&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;         # We can trace where the skill came from&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  prompt_injection_scan&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;hidden_instruction_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # Buried &quot;ignore previous instructions&quot; patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;exfiltration_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;       # Prompts that try to leak files, secrets, or context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;authority_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Claims of priority over system or developer rules&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  script_audit&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;inspect_scripts&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Read shell/python/js helpers before adoption&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;network_and_exec_review&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # curl|bash, remote downloads, subprocess execution&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;file_and_secret_review&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;   # Env vars, credential access, broad file writes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;destructive_action_check&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt; # rm, reset, overwrite, or unsafe automation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vertrauenswürdige Vendors bekommen ein leichteres Provenienz-Review, aber keinen Freifahrtschein. Nicht vertrauenswürdige oder unbekannte Quellen bekommen ein tieferes manuelles Audit, und wir führen keine gebündelten Skripte aus, bevor sie gelesen, eingegrenzt und als sicher klassifiziert wurden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gap-Analyse&lt;/strong&gt;: Vor der Übernahme durchsuchen wir unsere Registry:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&amp;lt;capability&amp;gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wenn wir es schon haben, brauchen wir es nicht. Wenn wir etwas Ähnliches haben, mergen wir vielleicht, statt zu übernehmen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tiefen- und Standards-Scoring&lt;/strong&gt;: Wir bewerten auch, wie vollständig ein Kandidat das Agent-Skill-Modell nutzt. Ein einsames &lt;code&gt;SKILL.md&lt;/code&gt; kann trotzdem nützlich sein, aber tiefere Skills sind wertvoller, wenn sie Anweisungen von Referenzen, Skripten und Assets trennen, so wie &lt;code&gt;agentskills.io&lt;/code&gt; es fördert.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;skill_depth&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_1&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;SKILL.md only&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;                     # Single instruction file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;SKILL.md + strong description&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Clear triggers and scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds references/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;                  # Load docs only when needed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_4&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds atomic scripts/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;              # Small, reviewable helpers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;level_5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;adds assets/examples/templates&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;    # Full progressive disclosure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;depth_signals&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;standards_adherence&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;        # Structure aligns with agentskills.io conventions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;reference_quality&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;          # Curated references, not giant context dumps&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;script_atomicity&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Focused helpers, not opaque monoliths&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tool_boundary_clarity&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # Clear limits on what the skill can execute&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;community_signal&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Stars/forks/users help, but only as a weak boost&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;GitHub-Sterne können einen Glaubwürdigkeits-Score etwas anheben, aber sie retten nie einen flachen oder unsicheren Skill. Ein Repo mit vielen Sternen und einem vagen &lt;code&gt;SKILL.md&lt;/code&gt; sowie undurchsichtigen Skripten schneidet schlechter ab als ein kleineres Repo mit präziser Beschreibung, kuratierten &lt;code&gt;references/&lt;/code&gt; und atomaren Helpern, die die volle Skill-Capability tatsächlich nutzen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strukturelle Analyse&lt;/strong&gt;: Wir prüfen die Skill-Qualität:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;wc&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -l&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/SKILL.md&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Size check&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/scripts/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Supporting files&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; vendor/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;rep&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skil&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/references/&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # Bundled docs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wenn ein Kandidat Skripte enthält, wird dieses Review strenger. Ein guter Skill ist nicht nur nützlich; er muss lesbar, abgegrenzt und sicher genug sein, um ihn einem Agenten zu übergeben. Allein dieser Sicherheitsfilter disqualifiziert einen bedeutenden Teil ansonsten interessanter Kandidaten.&lt;/p&gt;
&lt;h3 id=&quot;phase-3-einlesung&quot;&gt;Phase 3: Einlesung&lt;/h3&gt;
&lt;p&gt;Wenn ein Skill die Bewertung besteht, kommt er in die Registry. Aber Skills werden nie unverändert übernommen. Sie werden angepasst, um in unser System zu passen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modifikationen bei der Übernahme&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Metadaten-Normalisierung&lt;/strong&gt;: Jeder Skill bekommt unser Frontmatter-Schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;K-Tier-Zuweisung&lt;/strong&gt;: Skills werden der passenden Wissensschicht zugeordnet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tag-Anreicherung&lt;/strong&gt;: Tags werden für die Auffindbarkeit hinzugefügt&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool-Deklaration&lt;/strong&gt;: Erlaubte Tools werden explizit deklariert&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Abschnitts-Angleichung&lt;/strong&gt;: Inhalt wird umstrukturiert, um zu unserem Template zu passen&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Eine typische Skill-YAML nach der Ingestion:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  identifier&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor-skill-evaluation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  name&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor-skill-evaluation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  description&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Systematic evaluation of vendor skills for adoption.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  layer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;K4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  semantic_folder&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;project&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  source&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;core&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_updated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;2026-01-17&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;frontmatter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;agents&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;meta&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;skill-adoption&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  allowed_tools&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Read&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Write&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Edit&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Grep&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Glob&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Task&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;phase-4-scope-zuweisung&quot;&gt;Phase 4: Scope-Zuweisung&lt;/h3&gt;
&lt;p&gt;Skills werden Scopes zugewiesen — Kategorien, die bestimmen, welche Agenten welche Skills laden:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;domains/schema-migration-workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;domains/rpc-validation-checklist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase/supabase-database&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase/supabase-auth&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/research-workflows&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/web-extraction-playbook&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;identities/dataset-discovery-quickstart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Agenten deklarieren ihre Scopes, und Skills werden automatisch zugewiesen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Agent definition&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;database&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Gets: all database skills + all research skills + universal skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;phase-5-materialisierung&quot;&gt;Phase 5: Materialisierung&lt;/h3&gt;
&lt;p&gt;Skills leben nicht als YAML in Produktion. Sie werden in SKILL.md-Dateien gerendert, die Claude Code laden kann:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dieser Befehl:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Liest alle Skill-YAML-Definitionen&lt;/li&gt;
&lt;li&gt;Rendert sie durch Jinja-Templates&lt;/li&gt;
&lt;li&gt;Schreibt SKILL.md-Dateien nach &lt;code&gt;.claude/skills/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Organisiert nach K-Tier (foundations/, identities/, domains/, stacks/, project/)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Die finale Ausgabestruktur:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;.claude/skills/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── foundations/     # K0: Universal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── identities/      # K1: Discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── domains/         # K2: Subject&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── stacks/          # K3: Technology&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├── project/         # K4: Organization&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└── vendor/          # External skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;das-dormant-scope-muster&quot;&gt;Das Dormant-Scope-Muster&lt;/h2&gt;
&lt;p&gt;Eines unserer mächtigsten Muster sind „übernommen, aber nicht geladen“-Skills. Wir nennen diese Dormant Scopes.&lt;/p&gt;
&lt;p&gt;Betrachte Scientific-Computing-Skills aus dem k-dense-scientific-Repository. Wir haben 120+ Skills übernommen, die Bioinformatik, Chemie, Quantencomputing und klinische Informatik abdecken. Aber die meisten unserer Agenten brauchen weder molekulares Docking noch Genexpressionsanalyse.&lt;/p&gt;
&lt;p&gt;Statt alle 120 Skills in jeden Agenten zu laden (was die Kontextfenster aufbläht), tun wir Folgendes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wir &lt;strong&gt;übernehmen&lt;/strong&gt; die Skills mit einem spezifischen Scope (z. B. &lt;code&gt;bioinformatics&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Wir halten sie &lt;strong&gt;dormant&lt;/strong&gt; — registriert, aber nicht geladen&lt;/li&gt;
&lt;li&gt;Wir &lt;strong&gt;aktivieren&lt;/strong&gt; sie nur, wenn ein Agent diesen Scope deklariert&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# In scopes.yaml - dormant scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;bioinformatics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  description&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Bioinformatics and genomics&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  primary_skills&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: []  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Empty - skills exist but aren&apos;t loaded&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# When an agent needs bioinformatics:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Agent YAML&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;scopes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;research&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;bioinformatics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Now loads bioinformatics skills&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dieses Muster erlaubt uns, 466 Skills in der Registry zu haben, während typische Agenten nur 40–60 relevante laden.&lt;/p&gt;
&lt;h2 id=&quot;skill-typen&quot;&gt;Skill-Typen&lt;/h2&gt;
&lt;p&gt;Skills kommen in drei kognitiven Mustern:&lt;/p&gt;
&lt;h3 id=&quot;workflow&quot;&gt;Workflow&lt;/h3&gt;
&lt;p&gt;Geordnete prozedurale Schritte: „1. Mach X, 2. Dann Y, 3. Schließlich Z“&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: schema-migration-workflow, mining-session-workflow&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;verhaltensregeln&quot;&gt;Verhaltensregeln&lt;/h3&gt;
&lt;p&gt;Verhaltens-Leitplanken: „Immer X“, „Nie Y“, „Bevorzuge Z“&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: test-first-discipline, evidence-based-completion&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;checkliste&quot;&gt;Checkliste&lt;/h3&gt;
&lt;p&gt;Verifikationskriterien: „Bestätige X“, „Verifiziere Y“, „Prüfe Z“&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;checklist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Examples: auth-validation-checklist, secrets-audit-checklist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;qualitätsgates&quot;&gt;Qualitätsgates&lt;/h2&gt;
&lt;p&gt;Jeder Skill muss vor dem Ausliefern eine Validierung bestehen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;validation&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  file_exists&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;           # Skill file at declared path&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  frontmatter_valid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Frontmatter parses correctly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  sections_complete&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;     # Expected sections present&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tools_registered&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;      # Declared tools exist in registry&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Beschreibungen müssen 50–400 Zeichen mit Auslösephrasen sein („Verwenden, wenn…“, „Wenn du… brauchst“), damit Claude Code weiß, wann sie vorgeschlagen werden sollen.&lt;/p&gt;
&lt;p&gt;Wir validieren kontinuierlich:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --show-warnings&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;das-vendor-ökosystem&quot;&gt;Das Vendor-Ökosystem&lt;/h2&gt;
&lt;p&gt;Unsere 373 Vendor-Skills kommen von:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Anbieter&lt;/th&gt;
&lt;th&gt;Skills&lt;/th&gt;
&lt;th&gt;Domäne&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS Agent&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;Cloud-Services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Dokumentengenerierung&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Edge-Infrastruktur&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Datenbank&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;k-dense&lt;/td&gt;
&lt;td&gt;100+&lt;/td&gt;
&lt;td&gt;Wissenschaftliches Computing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;silvainfm&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Datenwissenschaft&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Java Developer Kit&lt;/td&gt;
&lt;td&gt;45+&lt;/td&gt;
&lt;td&gt;Spring/Java&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Browser-Automatisierung&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Jede Vendor-Root wird in metadata.yaml deklariert:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;vendor_roots&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/aws-agent-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;aws&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/k-dense-scientific/scientific-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;k-dense&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;vendor/supabase-skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    provider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;supabase&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wenn &lt;code&gt;orkestra sync&lt;/code&gt; läuft, werden Vendor-Skills mit ihrem Provider-Namespace nach &lt;code&gt;.claude/skills/vendor/&lt;/code&gt; symlinkt.&lt;/p&gt;
&lt;h2 id=&quot;was-wir-gelernt-haben&quot;&gt;Was wir gelernt haben&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Selektivität zahlt sich aus.&lt;/strong&gt; Es ist verlockend, alles zu übernehmen, was nützlich aussieht. Aber jeder Skill kostet Tokens. Bei 2.834 durchschnittlichen Tokens pro Skill schadet Aufblähung schnell. Unsere Übernahmequote von 13 % hält Agenten schlank.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Struktur ermöglicht Auffindbarkeit.&lt;/strong&gt; Das K-Tier-System ist nicht nur Organisation — es geht um Portabilität. K0-Skills können überall wiederverwendet werden. K4-Skills sind absichtlich projektspezifisch. Diese Klarheit hilft sowohl Menschen als auch Agenten, zu finden, was sie brauchen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dormant Scopes skalieren.&lt;/strong&gt; Du kannst Hunderte von Skills übernehmen, ohne sie alle zu laden. Scopes lassen dich eine umfassende Registry aufbauen, während die Kontextfenster einzelner Agenten überschaubar bleiben.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modifikation bei der Übernahme ist essenziell.&lt;/strong&gt; Rohe Vendor-Skills passen selten zu deinem System. Der Ingestion-Prozess — Metadaten hinzufügen, Tiers zuweisen, Tags anreichern — macht externe Skills intern nutzbar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mining ist kontinuierlich.&lt;/strong&gt; Die Zahl 3.500 wächst weiter. Neue Vendor-Repos tauchen auf. Community-Muster entstehen. Interne Workflows verfestigen sich. Die Loop hört nie auf.&lt;/p&gt;
&lt;h2 id=&quot;was-als-nächstes-kommt&quot;&gt;Was als Nächstes kommt&lt;/h2&gt;
&lt;p&gt;Wir arbeiten an mehreren Verbesserungen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Automatisierte Gap-Erkennung&lt;/strong&gt;: Alarm, wenn häufige Agent-Fehler durch einen nicht übernommenen Skill adressiert werden könnten&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skill-Ausmusterungsprozesse&lt;/strong&gt;: Formaler Prozess für das Ausmustern von Skills, die abgelöst oder ungenutzt sind&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-Skill-Abhängigkeiten&lt;/strong&gt;: Explizite Deklaration von Skill-Voraussetzungen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nutzungs-Analytik&lt;/strong&gt;: Verfolgen, welche Skills Agenten tatsächlich aufrufen versus nur laden&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Die Skill-Mining-Loop ist Infrastruktur. Sie ist nicht glamourös. Aber sie ist das, was 41 Agenten erlaubt, kohärent mit 466 Capabilities zu funktionieren, während sie innerhalb der Kontextgrenzen bleiben.&lt;/p&gt;
&lt;p&gt;Das ist die Geschichte, wie aus 3.500 466 werden. Nicht, indem man 3.000 ignoriert — indem man sie systematisch bewertet und nur übernimmt, was funktioniert.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Willst du das Skill-System in Aktion sehen? Schau dir &lt;code&gt;uv run orkestra skills list&lt;/code&gt; an, um unsere aktuelle Registry zu erkunden.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Skills</category></item><item><title>Progressive Disclosure: CLI-Fenster in Agent-Systeme</title><link>https://maguyva.ai/de/blog/progressive-disclosure-cli-into-agents</link><guid isPermaLink="true">https://maguyva.ai/de/blog/progressive-disclosure-cli-into-agents</guid><description>Agent-Systeme sind standardmäßig undurchsichtig. Progressive Disclosure gibt Operatoren gestufte CLI-Ansichten — von schnellen Statuschecks bis zu vollständigen Agent-Interna und Decision-Traces.</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Die Zahlen in diesem Beitrag spiegeln den Stand des Systems zum Veröffentlichungszeitpunkt (Januar 2026) wider. Aktuelle Werte findest du auf unserer &lt;a href=&quot;https://maguyva.ai/de/team&quot;&gt;Team-Seite&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Agentensysteme sind von Natur aus undurchsichtig. Sie treffen Entscheidungen, rufen Tools auf und koordinieren Arbeit über Dutzende Spezialisten hinweg. Aber wenn etwas schiefgeht – oder du einfach verstehen willst, was gerade passiert – wo schaust du dann nach?&lt;/p&gt;
&lt;p&gt;Die Antwort lautet Progressive Disclosure: eine geschichtete Oberfläche, die genau so viel Komplexität offenlegt, wie du brauchst, genau dann, wenn du sie brauchst.&lt;/p&gt;
&lt;h2 id=&quot;das-undurchsichtigkeits-problem&quot;&gt;Das Undurchsichtigkeits-Problem&lt;/h2&gt;
&lt;p&gt;Ein modernes Agenten-Orchestrierungssystem kann Folgendes umfassen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;40+ Spezialagenten, jeder mit eigenen Fähigkeiten&lt;/li&gt;
&lt;li&gt;700+ Skills, die interne Automatisierung und Drittanbieter-Integrationen abdecken&lt;/li&gt;
&lt;li&gt;470+ Architekturentscheidungen, die das Verhalten prägen&lt;/li&gt;
&lt;li&gt;Dutzende MCP-Tool-Server, die externe Fähigkeiten bereitstellen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Diese Komplexität ist beabsichtigt. Agenten brauchen Zugriff auf reichhaltigen Kontext – Fachwissen, Code Intelligence, Datenbankschemata –, um gute Entscheidungen zu treffen. Aber genau dieser Reichtum schafft ein Sichtbarkeitsproblem.&lt;/p&gt;
&lt;p&gt;Woher weißt du, welcher Agent Datenbankmigrationen übernimmt? Welche Entscheidungen haben das Ranking-Verhalten des Suchsystems geprägt? Auf welche Tools hat der Architektur-Advisor Zugriff?&lt;/p&gt;
&lt;p&gt;Ohne strukturierten Zugriff bleibt dir nur, den Quellcode zu lesen oder zu hoffen, dass die Dokumentation aktuell ist.&lt;/p&gt;
&lt;h2 id=&quot;progressive-disclosure-als-architektur&quot;&gt;Progressive Disclosure als Architektur&lt;/h2&gt;
&lt;p&gt;Progressive Disclosure ist nicht nur ein UI-Muster. Es ist ein Architekturprinzip: Informationen in Schichten organisieren, jede tiefer als die vorherige, sodass Nutzer auf der Ebene stehen bleiben können, die ihre Frage beantwortet.&lt;/p&gt;
&lt;p&gt;Für Agentensysteme übersetzt sich das in CLI-Befehle mit zunehmender Tiefe:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ebene&lt;/th&gt;
&lt;th&gt;Befehl&lt;/th&gt;
&lt;th&gt;Beantwortete Frage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra system status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ist alles gesund?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra agents list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Welche Agenten gibt es?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra agents info &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Was macht dieser Agent?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;orkestra decisions search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Warum funktioniert es so?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;MCP-Tools von Maguyva&lt;/td&gt;
&lt;td&gt;Zeig mir den Code.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Jede Ebene beantwortet eine natürliche Anschlussfrage. Du musst nur selten direkt zu Ebene 5 springen.&lt;/p&gt;
&lt;h2 id=&quot;ebene-1-systemzustand&quot;&gt;Ebene 1: Systemzustand&lt;/h2&gt;
&lt;p&gt;Die erste Frage lautet immer: Läuft alles?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; system&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;agents&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_internal&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;466&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_vendor&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;240&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;skills_total&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;706&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;commands&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;17&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ein Befehl. Vier Zahlen. Genug, um zu wissen, dass das System konfiguriert und die Registries befüllt sind.&lt;/p&gt;
&lt;p&gt;Wenn eine Agentenzahl unerwartet sinkt oder Skills nicht laden, siehst du das hier zuerst. Keine Log-Wühlerei nötig.&lt;/p&gt;
&lt;h2 id=&quot;ebene-2-agenten-inventar&quot;&gt;Ebene 2: Agenten-Inventar&lt;/h2&gt;
&lt;p&gt;Sobald du weißt, dass das System gesund ist, lautet die nächste Frage: Was ist verfügbar?&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das liefert strukturierte Daten – Agentennamen, Beschreibungen, Modellpräferenzen, Domänenabdeckung. Die Ausgabe ist standardmäßig JSON, sodass sie sich leicht in &lt;code&gt;jq&lt;/code&gt; zum Filtern weiterleiten lässt:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;.agents[] | select(.model == &quot;opus&quot;) | .name&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Du suchst Agenten, die Datenbankarbeit übernehmen? Der Suchbefehl grenzt das ein:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das durchsucht Namen, Beschreibungen und Fähigkeiten. Du findest den richtigen Spezialisten, ohne 40 Agentendefinitionen zu lesen.&lt;/p&gt;
&lt;h2 id=&quot;ebene-3-agenten-im-detail&quot;&gt;Ebene 3: Agenten im Detail&lt;/h2&gt;
&lt;p&gt;Einen Agenten gefunden, der relevant aussieht? Der Befehl &lt;code&gt;info&lt;/code&gt; zeigt alles:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architecture-advisor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Ausgabe umfasst:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Metadaten&lt;/strong&gt;: Name, Kategorie, Modellpräferenz, Beschreibung&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domänen&lt;/strong&gt;: Welche Wissensbereiche dieser Agent abdeckt&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identität&lt;/strong&gt;: Charaktereigenschaften (Architekt, Stratege, Knowledge-Architect)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Werkzeugleitfäden&lt;/strong&gt;: Welche Tool-Dokumentation in den Kontext eingespeist wird&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt;: Die vollständige Liste der MCP-Tools, auf die dieser Agent Zugriff hat&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hier ein Ausschnitt dessen, was du siehst:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;architecture-advisor&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;model&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;opus&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;description&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Strategic decision-making and architectural guidance...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;domains&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;product&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;development/architecture&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;meta/strategy&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;tools&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;mcp_tools&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__maguyva__intelligent_search&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__maguyva__analyze_dependencies&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;mcp__supabase__execute_sql&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FDAEB7;font-style:italic&quot;&gt;      ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das sagt dir genau, was der Agent kann. Kein Quellcode nötig.&lt;/p&gt;
&lt;h2 id=&quot;ebene-4-entscheidungsarchäologie&quot;&gt;Ebene 4: Entscheidungsarchäologie&lt;/h2&gt;
&lt;p&gt;Agenten verhalten sich gemäß dokumentierten Entscheidungen. Wenn du verstehen willst, &lt;em&gt;warum&lt;/em&gt; etwas auf eine bestimmte Weise funktioniert, ist die Decisions-Registry die maßgebliche Quelle.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;agent&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das liefert passende Architekturentscheidungen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;results&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-SR-049&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;title&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;AI-Agent-First Defaults with Graph Intelligence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;domain&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;search&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;status&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;active&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jede Entscheidung hat eine vollständige Herkunftsangabe – wann sie getroffen wurde, warum, welche Kompromisse abgewogen wurden, welche Commits sie umgesetzt haben:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; DEC-SR-049&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;DEC-SR-049&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;title&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;AI-Agent-First Defaults with Graph Intelligence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;summary&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Changes default values for search tools to AI-agent-optimal behavior...&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;rationale&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;AI agents work better with pre-ranked, importance-weighted results&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;Graph metrics already computed by pipeline - leverage them&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    &quot;Community context helps agents understand feature scope in single query&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;source_commits&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;sha&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;156a880d05eae295669ef7c194b039023f245511&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;      &quot;message&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;feat(maguyva): enable boost_by_importance...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das ist Architekturdokumentation, die aktuell bleibt, weil sie aus Commits gewonnen wird, nicht manuell gepflegt.&lt;/p&gt;
&lt;h2 id=&quot;ebene-5-direkte-code-intelligence&quot;&gt;Ebene 5: Direkte Code Intelligence&lt;/h2&gt;
&lt;p&gt;Wenn du die tatsächliche Implementierung sehen musst – nicht nur Metadaten darüber –, liefern die MCP-Tools von Maguyva direkten Zugriff.&lt;/p&gt;
&lt;p&gt;Aus einer Agenten-Session heraus:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__intelligent_search&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  query: &quot;agent context loading&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das routet automatisch über semantische, textbasierte und AST-Suche, um relevanten Code zu finden. Für konkrete Symbole:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__find_symbol&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  symbol_name: &quot;load_agent_context&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Für Abhängigkeitsanalysen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;mcp__maguyva__analyze_dependencies&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  target: &quot;packages/orchestration/core/agents.py&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das sind nicht einfach nur grep-Ersatzwerkzeuge. Sie sind graphbewusst, semantisch indiziert und in dieselbe Code Intelligence eingebunden, die auch die Agenten selbst antreibt.&lt;/p&gt;
&lt;h2 id=&quot;einheitliche-suche-über-alle-registries&quot;&gt;Einheitliche Suche über alle Registries&lt;/h2&gt;
&lt;p&gt;Manchmal weißt du nicht, welche Registry die Antwort enthält. Die einheitliche Suche deckt alles ab:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --summary&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;query&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;database&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;total&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;254&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;  &quot;counts&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;agents&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;skills&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;59&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;decisions&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;476&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;truths&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    &quot;packages&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;254 Treffer über fünf Registries hinweg. Die Zusammenfassung zeigt dir, wo du tiefer einsteigen solltest. Entferne &lt;code&gt;--summary&lt;/code&gt; für detaillierte Ergebnisse, oder füge &lt;code&gt;--limit 5&lt;/code&gt; hinzu, um die Ausgabe überschaubar zu halten.&lt;/p&gt;
&lt;h2 id=&quot;warum-das-wichtig-ist&quot;&gt;Warum das wichtig ist&lt;/h2&gt;
&lt;p&gt;Progressive Disclosure ist nicht nur eine Frage der Bequemlichkeit. Es verändert, wie du mit komplexen Systemen umgehst.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debugging wird handhabbar.&lt;/strong&gt; Wenn ein Agent eine unerwartete Entscheidung trifft, durchsuchst du nicht Logs mit grep. Du prüfst, auf welche Tools er Zugriff hat (&lt;code&gt;agents info&lt;/code&gt;), welche Entscheidungen sein Verhalten prägen (&lt;code&gt;decisions search&lt;/code&gt;), und verfolgst bei Bedarf die Implementierung (&lt;code&gt;intelligent_search&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Onboarding wird schneller.&lt;/strong&gt; Neue Teammitglieder müssen nicht die gesamte Codebasis lesen. Sie starten mit &lt;code&gt;system status&lt;/code&gt;, erkunden mit &lt;code&gt;agents list&lt;/code&gt; und gehen erst tiefer, wenn sie auf etwas stoßen, das sie nicht verstehen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dokumentation bleibt aktuell.&lt;/strong&gt; Weil die CLI aus denselben Registries liest, die auch die Agenten konfigurieren, ist die Ausgabe immer korrekt. Es gibt keine Diskrepanz zwischen dem, was die Dokumentation sagt, und dem, was das System tut.&lt;/p&gt;
&lt;h2 id=&quot;die-cli-als-schnittstelle&quot;&gt;Die CLI als Schnittstelle&lt;/h2&gt;
&lt;p&gt;Wir hätten ein Web-Dashboard bauen können. Wir hätten ausführliche Dokumentation schreiben können. Stattdessen haben wir eine CLI gebaut, die aus der maßgeblichen Quelle liest.&lt;/p&gt;
&lt;p&gt;Die CLI hat Vorteile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kombinierbar&lt;/strong&gt;: Ausgabe durch &lt;code&gt;jq&lt;/code&gt; leiten, in Skripte integrieren&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scriptbar&lt;/strong&gt;: Prüfungen automatisieren, Berichte erzeugen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schnell&lt;/strong&gt;: Keine Seitenaufrufe, keine Authentifizierungs-Umwege&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Präzise&lt;/strong&gt;: Liest die tatsächliche Konfiguration, keine zwischengespeicherte Darstellung&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Für Systeme, bei denen Korrektheit wichtiger ist als Ästhetik, gewinnt die CLI.&lt;/p&gt;
&lt;h2 id=&quot;deine-eigene-progressive-disclosure-bauen&quot;&gt;Deine eigene Progressive Disclosure bauen&lt;/h2&gt;
&lt;p&gt;Wenn du Agentensysteme baust, überlege dir, wie Nutzer sie inspizieren werden:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Mit Health-Checks beginnen.&lt;/strong&gt; Ein Befehl, der dir sagt, ob alles läuft.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inventaransichten bereitstellen.&lt;/strong&gt; Zeige, was existiert, bevor du erklärst, was es tut.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gezielte Abfragen ermöglichen.&lt;/strong&gt; Suche schlägt Durchblättern im großen Maßstab.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Herkunft offenlegen.&lt;/strong&gt; Lass Nutzer Entscheidungen zu ihrem Ursprung zurückverfolgen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mit Code Intelligence verbinden.&lt;/strong&gt; Irgendwann müssen Nutzer die Implementierung sehen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Jede Schicht beantwortet eine Anschlussfrage. Baue sie in der Reihenfolge ihrer Häufigkeit auf – die meisten Nutzer bleiben bei Ebene 2 oder 3 stehen. Nur Power-User erreichen Ebene 5.&lt;/p&gt;
&lt;p&gt;Das Ziel ist nicht, alles offenzulegen. Es geht darum, genau das offenzulegen, was gebraucht wird, genau dann, wenn es gebraucht wird. Das ist Progressive Disclosure, angewendet auf Agentenarchitektur.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>CLI</category><category>Tooling</category></item><item><title>Grundwahrheiten: KI-Agenten in der Realität verankern</title><link>https://maguyva.ai/de/blog/ground-truths-anchoring-ai-to-reality</link><guid isPermaLink="true">https://maguyva.ai/de/blog/ground-truths-anchoring-ai-to-reality</guid><description>KI-Agenten halluzinieren mit großer Überzeugung. Grundwahrheiten sind versionierte, abgegrenzte Fakten, die das Verhalten von Agenten in der Realität verankern. So haben wir sie gebaut und setzen sie durch.</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Die Zahlen in diesem Beitrag spiegeln den Stand des Systems zum Veröffentlichungszeitpunkt (Januar 2026) wider. Aktuelle Zahlen findest du auf unserer &lt;a href=&quot;https://maguyva.ai/de/team&quot;&gt;Team-Seite&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;KI-Agenten sind bemerkenswert leistungsfähig. Sie können schlussfolgern, synthetisieren und generieren. Aber sie haben eine grundlegende Schwäche: Sie erfinden Dinge. Nicht böswillig, aber mit großer Überzeugung. Ein Agent könnte API-Parameter erfinden, die nicht existieren, Konfigurationen referenzieren, die nie definiert wurden, oder Muster aus seinen Trainingsdaten anwenden, die deiner tatsächlichen Architektur widersprechen.&lt;/p&gt;
&lt;p&gt;Die Standardlösung lautet „gib dem Agenten mehr Kontext“. Aber Kontext kann widersprüchlich sein. Dokumentation driftet von der Implementierung ab. Kommentare lügen. Selbst Code kann irreführen, wenn er ohne Verständnis der Intention gelesen wird.&lt;/p&gt;
&lt;p&gt;Wir brauchten etwas Expliziteres. Etwas, das nicht ignoriert oder falsch interpretiert werden konnte. Etwas, das Agenten an überprüfbarer Realität verankert.&lt;/p&gt;
&lt;p&gt;Wir nennen sie Grundwahrheiten.&lt;/p&gt;
&lt;h2 id=&quot;was-ist-eine-grundwahrheit&quot;&gt;Was ist eine Grundwahrheit?&lt;/h2&gt;
&lt;p&gt;Eine Grundwahrheit (Ground Truth) ist eine explizite, versionierte Tatsachenaussage, die Agenten respektieren müssen. Sie ist keine Dokumentation und kein Kommentar, sondern eine eigenständige Entität im System mit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Einer eindeutigen ID&lt;/strong&gt; (wie &lt;code&gt;GT-MAG-015&lt;/code&gt; oder &lt;code&gt;GT-MAG-036&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Einem Lifecycle-Status&lt;/strong&gt; (current, tentative oder deprecated)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Einem Scope&lt;/strong&gt; (plattformweit, paketspezifisch oder domänengebunden)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evidenz&lt;/strong&gt; (Dateipfade, URLs oder Referenzen, die die Aussage belegen)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent-Guidance&lt;/strong&gt; (explizite Do/Avoid-Anweisungen)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hier ist ein Beispiel aus unserer Maguyva-Code-Intelligence-Plattform:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-015&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  scope&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;package&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Fuzzy symbol matching is opt-in via `find_similar=true`.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Default behavior returns empty results for non-existent symbols;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    `exact_match=true` enforces strict matching and disables all fuzzy fallbacks.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Deterministic defaults prevent agents from receiving misleading results.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Typos should fail explicitly rather than silently returning unrelated symbols.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  evidence&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/src/maguyva/services/code_analysis_service.py&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/docs/quick_reference/parameters.md&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_verified&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-25&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;product&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;ai_first&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;principle&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das ist keine Prosa. Es ist ein Vertrag. Wenn ein Agent auf diese Grundwahrheit trifft, weiß er:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Der Standard ist deterministisch (leere Ergebnisse, keine unscharfen Vermutungen)&lt;/li&gt;
&lt;li&gt;Es gibt bestimmte Parameter (&lt;code&gt;find_similar&lt;/code&gt;, &lt;code&gt;exact_match&lt;/code&gt;) mit definiertem Verhalten&lt;/li&gt;
&lt;li&gt;Es gibt Evidenz in bestimmten Dateien, die überprüft werden kann&lt;/li&gt;
&lt;li&gt;Die Aussage wurde an einem bestimmten Datum verifiziert&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;die-anatomie-einer-ground-truth-registry&quot;&gt;Die Anatomie einer Ground-Truth-Registry&lt;/h2&gt;
&lt;p&gt;Grundwahrheiten leben in YAML-Registries unter &lt;code&gt;ai_assets/reference/ground_truths.yaml&lt;/code&gt;. Jedes Paket oder jede Domäne kann seine eigene Registry haben. Die Struktur ist:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;metadata&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Maguyva Ground Truths&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  summary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Foundational constraints and principles that guide Maguyva.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_updated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  owner&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;maguyva&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  render&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    include_statuses&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tentative&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    show_deprecated&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    groups&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Product Principles&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;product&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;principle&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;brand&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Architecture &amp;amp; Boundaries&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;        tags&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;architecture&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;boundaries&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;cqrs&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;statements&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-001&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    scope&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;package&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Maguyva is read-only with respect to user repositories...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    ...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Registry enthält Metadaten über die Sammlung selbst, eine Render-Konfiguration für die Dokumentationsgenerierung, und die Aussagen selbst. Jede Aussage folgt einem strikten, durch Pydantic-Modelle validierten Schema:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; GroundTruthStatement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;BaseModel&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    status: GTStatus  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# current, tentative, deprecated&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    source: GTSource &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;  # claude-code, orkestra, discipline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    scope: GTScope  &lt;/span&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# platform, package, domain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    statement: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    rationale: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    evidence: list[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    last_verified: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    tags: list[&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    agent_guidance: AgentGuidance &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; None&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;wie-agenten-auf-grundwahrheiten-zugreifen&quot;&gt;Wie Agenten auf Grundwahrheiten zugreifen&lt;/h2&gt;
&lt;p&gt;Grundwahrheiten werden über mehrere Kanäle bereitgestellt:&lt;/p&gt;
&lt;h3 id=&quot;1-gerenderte-dokumentation&quot;&gt;1. Gerenderte Dokumentation&lt;/h3&gt;
&lt;p&gt;Der Befehl &lt;code&gt;orkestra sync&lt;/code&gt; wandelt YAML-Registries in lesbares Markdown um:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das erzeugt &lt;code&gt;GROUND_TRUTHS.md&lt;/code&gt;-Dateien, die in den Agent-Kontext einbezogen werden. Die gerenderte Ausgabe gruppiert Aussagen nach Status und Kategorie:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;## Current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;### Product Principles&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Maguyva is read-only with respect to user repositories... (GT-MAG-001)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Design tool responses for AI agents first... (GT-MAG-009)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF;font-weight:bold&quot;&gt;### Architecture &amp;amp; Boundaries&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Pipeline and Maguyva boundaries are intentional... (GT-MAG-006)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-cli-suche&quot;&gt;2. CLI-Suche&lt;/h3&gt;
&lt;p&gt;Agenten mit Shell-Zugriff können Grundwahrheiten programmatisch durchsuchen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;embedding&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --tag&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; security&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;uv&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; registry&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; truths&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --status&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; current&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die Suchfunktion bewertet Treffer über mehrere Felder hinweg mit gewichteter Relevanz:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; truth_fields&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(gt: GroundTruthStatement) -&amp;gt; list[FieldSpec]:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.id]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;statement&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.statement]),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;rationale&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;[gt.rationale] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; gt.rationale &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;tags&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;gt.tags &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        FieldSpec(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;evidence&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;gt.evidence &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; []),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-kontext-komposition&quot;&gt;3. Kontext-Komposition&lt;/h3&gt;
&lt;p&gt;Wenn Agenten aus YAML-Definitionen gerendert werden, kann ihr Kontext auf Ground-Truth-Registries verweisen:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;context_composition&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  domain_knowledge&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;packages/maguyva/ai_assets/reference/ground_truths.yaml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das stellt sicher, dass relevante Grundwahrheiten geladen werden, bevor der Agent mit der Arbeit beginnt.&lt;/p&gt;
&lt;h2 id=&quot;kategorien-von-grundwahrheiten&quot;&gt;Kategorien von Grundwahrheiten&lt;/h2&gt;
&lt;p&gt;Betrachtet man unsere Registries im Ganzen, clustern sich Grundwahrheiten in mehrere Muster:&lt;/p&gt;
&lt;h3 id=&quot;produktprinzipien&quot;&gt;Produktprinzipien&lt;/h3&gt;
&lt;p&gt;Einschränkungen darüber, was das Produkt ist und was nicht:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Maguyva ist gegenüber Nutzer-Repositories rein lesend; das einzige nicht wiederherstellbare Asset ist der bezahlte Embeddings-Cache.“ (GT-MAG-001)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;architekturgrenzen&quot;&gt;Architekturgrenzen&lt;/h3&gt;
&lt;p&gt;Wo Verantwortlichkeiten liegen und warum:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Die Grenzen zwischen Pipeline und Maguyva sind beabsichtigt: Pipeline ist wiederverwendbar, Maguyva enthält codespezifische Logik, und CQRS trennt Stage-Writes von Server-Reads.“ (GT-MAG-006)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;anti-halluzinations-regeln&quot;&gt;Anti-Halluzinations-Regeln&lt;/h3&gt;
&lt;p&gt;Explizite Vorgaben, die Tool-Contracts deterministisch statt erraten halten:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Unscharfes Symbol-Matching ist über &lt;code&gt;find_similar=true&lt;/code&gt; Opt-in. Das Standardverhalten liefert leere Ergebnisse für nicht existierende Symbole; &lt;code&gt;exact_match=true&lt;/code&gt; erzwingt striktes Matching und deaktiviert alle Fuzzy-Fallbacks.“ (GT-MAG-015)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;qualitätsgates&quot;&gt;Qualitätsgates&lt;/h3&gt;
&lt;p&gt;Standards, die eingehalten werden müssen:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Änderungen an gemeinsam genutzter Infrastruktur (post_filters.py, Relationship-Extraktoren, gemeinsame Handler) MÜSSEN vor dem Commit per Full-Manifest-Generierung gegen ALLE unterstützten Sprachen validiert werden. Eine Einzelsprachen-Validierung reicht für gemeinsam genutzten Code nicht aus.“ (GT-MAG-036)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;code-muster&quot;&gt;Code-Muster&lt;/h3&gt;
&lt;p&gt;Implementierungsanforderungen:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Verwende &lt;code&gt;asyncio.to_thread()&lt;/code&gt; für CPU-lastige Arbeit in Async-Kontexten; das veraltete &lt;code&gt;loop.run_in_executor()&lt;/code&gt;-Muster sollte in neuem Code nicht mehr verwendet werden.“ (GT-MAG-018)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;der-lebenszyklus-einer-grundwahrheit&quot;&gt;Der Lebenszyklus einer Grundwahrheit&lt;/h2&gt;
&lt;p&gt;Grundwahrheiten sind nicht statisch. Sie durchlaufen einen definierten Lebenszyklus:&lt;/p&gt;
&lt;h3 id=&quot;tentative&quot;&gt;Tentative&lt;/h3&gt;
&lt;p&gt;Eine vorgeschlagene Wahrheit unter Bewertung. Die Aussage ist festgehalten, kann sich aber noch ändern:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-044&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;tentative&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    get_file with include_metadata=false may still return metadata in the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    response because middleware may re-inject it for AI agent disambiguation.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;current&quot;&gt;Current&lt;/h3&gt;
&lt;p&gt;Eine verifizierte Wahrheit, die Agenten respektieren müssen. Die Evidenz wurde validiert:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-017&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;current&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  last_verified&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;2026-01-26&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  evidence&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;packages/maguyva/server/src/maguyva/services/supabase.py&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;deprecated&quot;&gt;Deprecated&lt;/h3&gt;
&lt;p&gt;Eine Wahrheit, die nicht mehr gilt. Zur historischen Referenz aufbewahrt, mit einem Verweis darauf, was sie ersetzt hat:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-099&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  status&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;deprecated&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  superseded_by&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-015&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  notes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Replaced when we moved to explicit matching behavior&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;warum-nicht-einfach-dokumentation&quot;&gt;Warum nicht einfach Dokumentation?&lt;/h2&gt;
&lt;p&gt;Dokumentation dient einem anderen Zweck. Sie erklärt. Sie lehrt. Sie kann vage sein, kann Qualifizierer wie „im Allgemeinen“ oder „typischerweise“ verwenden.&lt;/p&gt;
&lt;p&gt;Grundwahrheiten dürfen nicht vage sein. Sie sind Behauptungen. Sie gelten entweder, oder sie gelten nicht.&lt;/p&gt;
&lt;p&gt;Betrachte den Unterschied:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dokumentation:&lt;/strong&gt; „Die API liefert im Allgemeinen leere Ergebnisse, wenn ein Symbol nicht gefunden wird, obwohl in manchen Konfigurationen Fuzzy-Matching aktiviert sein kann.“&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Grundwahrheit:&lt;/strong&gt; „Das Standardverhalten liefert leere Ergebnisse für nicht existierende Symbole; &lt;code&gt;exact_match=true&lt;/code&gt; erzwingt striktes Matching und deaktiviert alle Fuzzy-Fallbacks.“&lt;/p&gt;
&lt;p&gt;Die erste ist hilfreich für Menschen, die das System lernen. Die zweite ist umsetzbar für Agenten, die Entscheidungen treffen.&lt;/p&gt;
&lt;h2 id=&quot;agent-guidance-do-und-avoid&quot;&gt;Agent-Guidance: Do und Avoid&lt;/h2&gt;
&lt;p&gt;Manche Grundwahrheiten enthalten explizite Agent-Guidance:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-022&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Accuracy fixes must happen at extraction time via production code,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    never via validator filters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  agent_guidance&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    do&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Fix extraction bugs in YAML config, handlers, or tree-sitter queries&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Add test cases at the layer where the fix lives&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;    avoid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Adding validator filters to mask production bugs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Creating test-only workarounds for extraction issues&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das entfernt Mehrdeutigkeit. Ein Agent, der das liest, weiß nicht nur, was wahr ist, sondern auch, welche Handlungen diese Wahrheit impliziert.&lt;/p&gt;
&lt;h2 id=&quot;verifikation-und-wartung&quot;&gt;Verifikation und Wartung&lt;/h2&gt;
&lt;p&gt;Grundwahrheiten brauchen Wartung. Wir verfolgen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;last_verified&lt;/strong&gt;: Wann jemand bestätigt hat, dass die Aussage noch gilt&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;evidence&lt;/strong&gt;: Dateien, die die Aussage belegen (können auf Existenz geprüft werden)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;source&lt;/strong&gt;: Wo die Wahrheit herstammt (CLI-Inspektion, Architektur-Review, Learning nach einem Vorfall)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eine Grundwahrheit mit veralteten Verifikationsdaten oder defekten Evidenz-Links ist ein Signal zum Nachforschen. Entweder ist die Wahrheit noch gültig und braucht erneute Verifikation, oder die Realität hat sich geändert und die Wahrheit muss aktualisiert werden.&lt;/p&gt;
&lt;h2 id=&quot;echte-beispiele-aus-der-produktion&quot;&gt;Echte Beispiele aus der Produktion&lt;/h2&gt;
&lt;h3 id=&quot;sicherheitsgrenze&quot;&gt;Sicherheitsgrenze&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-014&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Maguyva queries are search patterns, not executable code.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    SQL injection prevention is handled by PostgREST parameterization;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    application-layer SQL keyword blocking must never be added.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Blocking SQL keywords breaks legitimate code search. Users search FOR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    code containing patterns like &apos;DROP TABLE&apos;, they don&apos;t execute them.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Diese Grundwahrheit verhindert eine Klasse von fehlgeleiteten „Sicherheitsverbesserungen“, die das Produkt kaputt machen würden.&lt;/p&gt;
&lt;h3 id=&quot;genauigkeit-zur-extraktionszeit&quot;&gt;Genauigkeit zur Extraktionszeit&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-022&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Accuracy fixes must happen at extraction time via production code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (YAML config, handlers, queries), never via validator filters.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Validator filters only run during tests. They can hide extractor bugs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    while production responses remain wrong.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das kam aus schmerzhafter Erfahrung. Agenten patchten fehlschlagende Language-Packs, indem sie nur-Validator-Filter hinzufügten, die den Testharness grüner aussehen ließen, während der Live-Maguyva-Extraktor weiterhin die falschen Kanten ausgab. Die Regel zwingt Fixes zurück in den echten Pfad: YAML-Konfiguration, Queries oder Handler.&lt;/p&gt;
&lt;h3 id=&quot;mehrstufiges-filtering&quot;&gt;Mehrstufiges Filtering&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;- &lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;GT-MAG-023&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  statement&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Language engine uses three-tier filtering: external_method_patterns&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (builtins/stdlib), allowlists (legitimate idioms), and expected_call_targets&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    (validation-time deduplication). Each tier serves a distinct purpose.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;  rationale&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    Conflating filter purposes leads to either over-filtering (missing real&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    relationships) or under-filtering (noise).&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Das verhindert, dass Agenten Filter am falschen Ort hinzufügen — ein häufiger Fehler, der Genauigkeits-Regressionen verursacht hat.&lt;/p&gt;
&lt;h2 id=&quot;integration-mit-dem-orchestrierungssystem&quot;&gt;Integration mit dem Orchestrierungssystem&lt;/h2&gt;
&lt;p&gt;Grundwahrheiten sind eine Schicht eines größeren Kontextsystems:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Architekturentscheidungen (ADRs)&lt;/strong&gt; – Dokumentieren, warum wir Ansatz A statt B gewählt haben&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grundwahrheiten&lt;/strong&gt; – Sagen aus, was gerade definitiv wahr ist&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domain Patterns&lt;/strong&gt; – Beschreiben, wie man Dinge richtig macht&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anti-Patterns&lt;/strong&gt; – Beschreiben, was zu vermeiden ist und warum&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ein Agent, der im System arbeitet, hat Zugriff auf alle vier. Grundwahrheiten liefern den faktischen Anker, während Decisions die Geschichte erklären, Patterns die Implementierung anleiten und Anti-Patterns vor Fallstricken warnen.&lt;/p&gt;
&lt;h2 id=&quot;wirkung-messen&quot;&gt;Wirkung messen&lt;/h2&gt;
&lt;p&gt;Seit der Einführung von Grundwahrheiten haben wir beobachtet:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Weniger „den halluzinierten Fix reparieren“-Zyklen&lt;/li&gt;
&lt;li&gt;Selbstbewusstere Agent-Entscheidungen, wenn Fakten klar sind&lt;/li&gt;
&lt;li&gt;Bessere PR-Reviews, weil Erwartungen explizit sind&lt;/li&gt;
&lt;li&gt;Kürzere Onboarding-Zeit für neue Agenten (und Menschen)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Investition in die Pflege von Grundwahrheiten zahlt sich in weniger Debugging und klareren Systemgrenzen aus.&lt;/p&gt;
&lt;h2 id=&quot;erste-schritte&quot;&gt;Erste Schritte&lt;/h2&gt;
&lt;p&gt;Um eine Grundwahrheit zu deinem System hinzuzufügen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Erstelle ein &lt;code&gt;ground_truths.yaml&lt;/code&gt; im &lt;code&gt;ai_assets/reference/&lt;/code&gt;-Verzeichnis deines Pakets&lt;/li&gt;
&lt;li&gt;Definiere Metadaten und Render-Konfiguration&lt;/li&gt;
&lt;li&gt;Füge Aussagen nach dem Schema hinzu&lt;/li&gt;
&lt;li&gt;Führe &lt;code&gt;uv run orkestra sync&lt;/code&gt; aus, um Dokumentation zu generieren&lt;/li&gt;
&lt;li&gt;Binde die Registry in die Agent-Kontext-Komposition ein&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Beginne mit den Fakten, die die meiste Verwirrung stiften, oder den Einschränkungen, die am häufigsten verletzt werden. Das sind deine wertvollsten Grundwahrheiten.&lt;/p&gt;
&lt;h2 id=&quot;fazit&quot;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;KI-Agenten werden halluzinieren. Das liegt in ihrer Natur. Aber wir können Umgebungen schaffen, in denen Halluzination eingegrenzt ist, in denen bestimmte Fakten nicht verhandelbar sind, in denen Agenten ihre Annahmen gegen verifizierte Realität abgleichen können.&lt;/p&gt;
&lt;p&gt;Grundwahrheiten sind keine vollständige Lösung. Sie brauchen Wartung. Sie können veralten. Sie fügen dem Entwicklungsprozess Overhead hinzu.&lt;/p&gt;
&lt;p&gt;Aber sie liefern etwas Wertvolles: ein gemeinsames Vokabular an Fakten, dem sowohl Menschen als auch Agenten vertrauen können. In einer Welt, in der Agenten zunehmend an der Softwareentwicklung teilnehmen, wird dieses gemeinsame Fundament essenziell.&lt;/p&gt;
&lt;p&gt;Die Alternative sind endlose Zyklen, in denen Agenten selbstbewusst Fehler machen und Menschen sie korrigieren. Grundwahrheiten durchbrechen diesen Zyklus, indem sie die Korrekturen explizit und dauerhaft machen.&lt;/p&gt;
&lt;p&gt;Deine Agenten haben es verdient zu wissen, was wahr ist. Sag es ihnen.&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Grounding</category></item><item><title>Orkestra: KI-Agenten im großen Maßstab orchestrieren</title><link>https://maguyva.ai/de/blog/orkestra-agent-orchestration</link><guid isPermaLink="true">https://maguyva.ai/de/blog/orkestra-agent-orchestration</guid><description>Ein Orchestrator verteilt Arbeit an spezialisierte KI-Agenten, jeder mit eigenen Skills und eigenem Gedächtnis. Wie Orkestra 46 Agenten und 466 Skills in Produktion koordiniert.</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Die Zahlen in diesem Beitrag spiegeln den Stand des Systems zum Veröffentlichungszeitpunkt (Januar 2026) wider. Aktuelle Zahlen findest du auf unserer &lt;a href=&quot;https://maguyva.ai/de/team&quot;&gt;Team-Seite&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Als wir angefangen haben, mit Claude Code zu bauen, sind wir auf ein Problem gestoßen, dem jedes Team, das KI-Coding-Assistenten nutzt, irgendwann begegnet: Ein einzelner Agent kann nicht alles gut können.&lt;/p&gt;
&lt;p&gt;Du kannst einen Agenten zu einem Datenbank-Spezialisten machen. Oder zu einem Security-Auditor. Oder zu einem Frontend-Engineer. Aber in dem Moment, in dem du ihn bittest, alle drei gleichzeitig zu sein, leidet die Qualität. Kontext verwässert. Anweisungen widersprechen sich. Der Agent wird zu einem Generalisten, der in allem mittelmäßig ist.&lt;/p&gt;
&lt;p&gt;Also haben wir Orkestra gebaut.&lt;/p&gt;
&lt;h2 id=&quot;was-ist-orkestra&quot;&gt;Was ist Orkestra?&lt;/h2&gt;
&lt;p&gt;Orkestra ist ein Agent-Orchestrierungssystem für Claude Code und ähnliche KI-Coding-Tools. Es koordiniert mehrere spezialisierte Agenten, jeder mit eigener Expertise, unter einem einzigen Orchestrator, der Arbeit an den richtigen Spezialisten routet.&lt;/p&gt;
&lt;p&gt;Stell es dir wie eine Personalvermittlung für KI-Agenten vor. Der Orchestrator erhält eine Aufgabe, identifiziert, welcher Spezialist sie bearbeiten soll, und delegiert mit dem richtigen Kontext. Wenn die Arbeit erledigt ist, fließen die Ergebnisse zur Synthese zurück zum Orchestrator.&lt;/p&gt;
&lt;p&gt;Die Zahlen erzählen die Geschichte:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Komponente&lt;/th&gt;
&lt;th&gt;Anzahl&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Spezialisierte Agenten&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiederverwendbare Skills&lt;/td&gt;
&lt;td&gt;466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identitäts-Archetypen&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mindsets&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kommunikationsstile&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wissensdomänen&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;das-charaktersystem-dd-für-agenten&quot;&gt;Das Charaktersystem: D&amp;amp;D für Agenten&lt;/h2&gt;
&lt;p&gt;Die Kernerkenntnis hinter Orkestra ist, dass Agent-Verhalten aus drei kombinierbaren Primitiven entsteht:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Identity&lt;/strong&gt; definiert &lt;em&gt;was&lt;/em&gt; der Agent ist. Ein Architect entwirft Systemstrukturen. Ein Debugger verfolgt Fehler zu ihren Grundursachen. Ein Guardian setzt Compliance- und Sicherheitsgrenzen durch. Wir haben 27 Identitäts-Archetypen, die gemischt werden können.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mindset&lt;/strong&gt; definiert &lt;em&gt;wie&lt;/em&gt; der Agent denkt. Ein analytisches Mindset verankert Aussagen in Evidenz und quantifiziert Unsicherheit. Ein skeptisches Mindset hinterfragt Annahmen und sucht widerlegende Evidenz. Ein exploratives Mindset umarmt Mehrdeutigkeit und probiert mehrere Ansätze.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Style&lt;/strong&gt; definiert &lt;em&gt;wie&lt;/em&gt; der Agent kommuniziert. Ein technischer Style enthält exakte Werte und referenziert konkrete Dateien. Ein knapper Style streicht Füllwörter und führt mit der Antwort. Ein diplomatischer Style balanciert Ehrlichkeit mit Taktgefühl.&lt;/p&gt;
&lt;p&gt;Ein Agent kombiniert diese Primitiven:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# architecture-advisor.yaml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;identity&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;knowledge-architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  - &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;strategist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;mindset&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;analytical&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;concise&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Diese Komposition erzeugt einen Agenten, der Systeme entwirft (architect), Wissen über Domänen hinweg verbindet (knowledge-architect), strategische Richtung vorgibt (strategist), in Evidenz und Daten denkt (analytical) und ohne Füllwörter kommuniziert (concise).&lt;/p&gt;
&lt;p&gt;Die Stärke liegt in der kombinatorischen Explosion. 27 Identities mal 11 Mindsets mal 10 Styles ergeben fast 3.000 mögliche Agent-Persönlichkeiten. Aber du definierst nur die Kombinationen, die für deine Arbeit zählen.&lt;/p&gt;
&lt;h2 id=&quot;skills-wiederverwendbare-fähigkeitsmodule&quot;&gt;Skills: Wiederverwendbare Fähigkeitsmodule&lt;/h2&gt;
&lt;p&gt;Skills sind das Wissen und die Workflows, die Agenten aufrufen können. Sie folgen einem gestuften System basierend auf Geltungsbereich:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Geltungsbereich&lt;/th&gt;
&lt;th&gt;Beispiel&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K0&lt;/td&gt;
&lt;td&gt;Foundations&lt;/td&gt;
&lt;td&gt;Universelle Methodik&lt;/td&gt;
&lt;td&gt;Test-First-Disziplin, evidenzbasierte Fertigstellung&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K1&lt;/td&gt;
&lt;td&gt;Identities&lt;/td&gt;
&lt;td&gt;Rollenbasierte Workflows&lt;/td&gt;
&lt;td&gt;CLI-Schnittstellenstandards, Performance-Leitfaden&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K2&lt;/td&gt;
&lt;td&gt;Domains&lt;/td&gt;
&lt;td&gt;Domänenspezifisches Wissen&lt;/td&gt;
&lt;td&gt;Datenbank-Migrationsmuster, Authentifizierungs-Validierung&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K3&lt;/td&gt;
&lt;td&gt;Stacks&lt;/td&gt;
&lt;td&gt;Technologiespezifisch&lt;/td&gt;
&lt;td&gt;Cloudflare-Deployment, Supabase-Operationen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K4&lt;/td&gt;
&lt;td&gt;Project&lt;/td&gt;
&lt;td&gt;Nur diese Codebase&lt;/td&gt;
&lt;td&gt;Projektspezifische Workflows und Konventionen&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Skills werden Lazy-Loaded. Ein Agent sieht Skill-Namen und -Beschreibungen beim Start, aber der vollständige Skill-Inhalt lädt erst, wenn er ausgelöst wird. Das hält den Kontext schlank, während Hunderte von Skills auffindbar bleiben.&lt;/p&gt;
&lt;p&gt;Jeder Skill enthält:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Klare Auslösebedingungen („Verwenden, wenn Datenbankschemas migriert werden“)&lt;/li&gt;
&lt;li&gt;Schritt-für-Schritt-Anleitung&lt;/li&gt;
&lt;li&gt;Erlaubte Tools für den Workflow&lt;/li&gt;
&lt;li&gt;Erfolgskriterien und Recovery-Pfade bei Fehlern&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die 466 Skills in unserer Registry decken alles ab, von Git-Worktree-Isolation über Web-Research-Workflows bis zu Deployment-Health-Validierung.&lt;/p&gt;
&lt;h2 id=&quot;warum-orchestrierung-wichtig-ist&quot;&gt;Warum Orchestrierung wichtig ist&lt;/h2&gt;
&lt;p&gt;Single-Agent-Architekturen stoßen schnell an Grenzen:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kontext-Verwässerung.&lt;/strong&gt; Ein 200k-Token-Kontextfenster klingt groß, bis du Datenbankschemas, API-Dokumentation, Test-Fixtures und Domänenwissen lädst. Spezialisten können mit gezieltem Kontext arbeiten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Widersprüchliche Anweisungen.&lt;/strong&gt; Einem Agenten zu sagen, „sei gründlich, aber schnell“ und „verifiziere alles, aber übertreibe es nicht“, erzeugt Spannung. Spezialisten lösen das, indem sie einen klaren Scope haben.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expertise-Tiefe.&lt;/strong&gt; Ein Generalist-Agent weiß ein bisschen über alles. Ein Spezialist-Agent, komponiert mit der richtigen Identity und den richtigen Skills, kennt seine Domäne tiefgehend.&lt;/p&gt;
&lt;p&gt;Orkestra implementiert flache Orchestrierung: Ein Orchestrator koordiniert mehrere Spezialisten. Spezialisten können keine Sub-Spezialisten erzeugen. Das verhindert eine Komplexitätsexplosion, während parallele Arbeit möglich bleibt.&lt;/p&gt;
&lt;p&gt;Der Orchestrator hat Zugriff auf 2,2 Millionen Token effektive Kapazität: sein eigenes 200k-Fenster plus 10 gleichzeitige Subagents mit je 200k. Arbeit, die einen einzelnen Agenten erschöpfen würde, läuft komfortabel über die gesamte Flotte.&lt;/p&gt;
&lt;h2 id=&quot;die-rendering-pipeline&quot;&gt;Die Rendering-Pipeline&lt;/h2&gt;
&lt;p&gt;Agent-Definitionen leben in YAML. Claude Code liest Markdown. Orkestra überbrückt diese Lücke mit einer deterministischen Rendering-Pipeline:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;YAML Registries → Jinja Templates → .claude/agents/*.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Operatoren bearbeiten die YAML-Quelle und führen &lt;code&gt;orkestra sync&lt;/code&gt; aus. Gerendertes Markdown erscheint in &lt;code&gt;.claude/agents/&lt;/code&gt;. Claude Code übernimmt die Änderungen.&lt;/p&gt;
&lt;p&gt;Diese Trennung bedient unterschiedliche Zielgruppen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;YAML-Quelle&lt;/strong&gt; enthält Lifecycle-Metadaten, Tags, Validierungsregeln und Deprecation-Hinweise für Tooling&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gerendertes Markdown&lt;/strong&gt; enthält nur, was das Modell braucht: Beschreibung, Tools, Skills und Verhaltensanleitung&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Pipeline komponiert Identities, Mindsets, Styles und Skills zu einem einzigen kohärenten Prompt. Ein architect-analytical-concise-Agent bekommt einen ganz anderen System-Prompt als ein debugger-skeptical-technical-Agent, selbst wenn sie einige zugrunde liegende Skills teilen.&lt;/p&gt;
&lt;h2 id=&quot;domänenwissen-das-vier-datei-muster&quot;&gt;Domänenwissen: Das Vier-Datei-Muster&lt;/h2&gt;
&lt;p&gt;Jede Wissensdomäne folgt einer konsistenten Struktur:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;domain-name/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  decisions.md      # Key choices, rationale, consequences&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  patterns.md       # Step-by-step guidance and examples&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  anti-patterns.md  # Failure modes and remediation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  evolution.md      # Dated log of changes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Diese Struktur dient dem Laden von Agent-Kontext. Ein Agent, der an Authentifizierung arbeitet, lädt &lt;code&gt;authentication/patterns.md&lt;/code&gt; für Anleitung und &lt;code&gt;authentication/anti-patterns.md&lt;/code&gt;, um bekannte Fallstricke zu vermeiden. Die Dateien sind auf effizientes Kontext-Laden zugeschnitten: fokussiert genug, um nützlich zu sein, umfassend genug, um maßgeblich zu sein.&lt;/p&gt;
&lt;p&gt;Wir pflegen 21 Top-Level-Domänen einschließlich Analytics, Authentifizierung, Datenwissenschaft, Infrastruktur, Machine Learning, Performance, Security und mehr. Jede Domäne kann Sub-Domänen für feinere Granularität haben.&lt;/p&gt;
&lt;h2 id=&quot;werte-das-betriebssystem&quot;&gt;Werte: Das Betriebssystem&lt;/h2&gt;
&lt;p&gt;Alle Agenten teilen eine Basisschicht an Werten, die definieren, wie sie operieren:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Einfachheit zuerst.&lt;/strong&gt; Verwende die einfachste Lösung, die funktioniert. Füge Komplexität nur hinzu, wenn sie gerechtfertigt ist.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Grundursachen beheben.&lt;/strong&gt; Nie um Fehler herumpatchen. Wenn eine Pipeline fehlschlägt, debugge die Pipeline. Wenn ein Test fehlschlägt, repariere den Code oder den Test.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Evidenzbasiert.&lt;/strong&gt; Kennzeichne Behauptungen als „verifiziert“ (mit Benchmarks) oder „geschätzt“ (mit Annahmen). Ein erkanntes Muster ist nicht gleich ein bestätigtes Problem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Context-Ökonomie.&lt;/strong&gt; MCP-Tools kosten 0,1 % des Kontexts. Datei-Reads kosten je 2 %. Wende Domänenexpertise an, bevor du Code erkundest.&lt;/p&gt;
&lt;p&gt;Diese Werte pflanzen sich über die Rendering-Pipeline zu jedem Spezialisten fort. Ein Agent kann sie nicht durch Komposition umgehen.&lt;/p&gt;
&lt;h2 id=&quot;cli-die-steuerungsebene&quot;&gt;CLI: Die Steuerungsebene&lt;/h2&gt;
&lt;p&gt;Orkestra wird mit einer CLI zur Verwaltung des Agent-Ökosystems ausgeliefert:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Discovery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;database&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; agents&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; database-architect&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Validation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; validate&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --show-warnings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Rendering&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; sync&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Skills&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; skills&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; schema-migration-workflow&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#959da5&quot;&gt;# Decisions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;orkestra&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; search&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;authentication&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Die CLI ist die Quelle der Wahrheit dafür, welche Agenten existieren, welche Skills sie haben, und ob das System gesund ist. Sie führt Validierung vor dem Sync aus, um Probleme früh zu erkennen.&lt;/p&gt;
&lt;h2 id=&quot;open-source-überlegungen&quot;&gt;Open-Source-Überlegungen&lt;/h2&gt;
&lt;p&gt;Wir haben Orkestra gebaut, um unser eigenes Problem zu lösen: KI-Agenten im großen Maßstab für eine komplexe Codebase zu koordinieren. Die Muster, die wir entdeckt haben, sind nicht spezifisch für unsere Domäne.&lt;/p&gt;
&lt;p&gt;Das Character-Kompositionssystem (Identity + Mindset + Style) gilt für jedes Team, das Agent-Persönlichkeiten definiert.&lt;/p&gt;
&lt;p&gt;Das Skill-Tier-System (K0–K4) liefert ein mentales Modell zur Organisation wiederverwendbarer Capabilities nach Geltungsbereich.&lt;/p&gt;
&lt;p&gt;Das Rendering-Pipeline-Muster (YAML-Quelle + Templates + generierte Artefakte) trennt Belange zwischen Tooling und Modell-Konsum.&lt;/p&gt;
&lt;p&gt;Das flache Orchestrierungsmodell (ein Koordinator, viele Spezialisten) vermeidet Komplexität, während es Parallelität ermöglicht.&lt;/p&gt;
&lt;p&gt;Ob Orkestra Open Source wird, hängt davon ab, ob diese Muster für andere, die mit Claude Code bauen, einen Wert haben. Wenn du an die Grenzen stößt, die wir beschrieben haben, könnte die Architektur helfen.&lt;/p&gt;
&lt;h2 id=&quot;was-wir-gelernt-haben&quot;&gt;Was wir gelernt haben&lt;/h2&gt;
&lt;p&gt;Der Bau von Orkestra hat uns gelehrt, dass es bei Orchestrierung nicht darum geht, Agenten intelligenter zu machen. Es geht darum, sie fokussierter zu machen.&lt;/p&gt;
&lt;p&gt;Ein einzelner Agent mit perfekten Anweisungen schöpft trotzdem irgendwann sein Kontextfenster aus. Ein einzelner Agent mit allen Skills wird trotzdem verwirrt darüber, welchen er anwenden soll. Ein einzelner Agent, der versucht, alles zu sein, produziert überall mittelmäßige Ergebnisse.&lt;/p&gt;
&lt;p&gt;Vierzig Spezialisten, jeder exzellent in seiner Domäne, koordiniert von einem Orchestrator, der weiß, wann er delegieren muss: So liefern wir aus.&lt;/p&gt;
&lt;p&gt;Die Zahlen zählen weniger als die Architektur. Du brauchst vielleicht fünf Agenten oder fünfzig. Das Prinzip bleibt: Komposition vor Capability, Spezialisierung vor Generalisierung, Koordination vor individuellem Heldentum.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Orkestra treibt das Agent-Ökosystem hinter Maguyva an, unserer Code-Intelligence-Plattform. Willst du mehr erfahren? Kontaktiere das Team.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Architecture</category><category>Open Source</category></item></channel></rss>