Dokumentation / Referenz

Architektur

So ist Yuli aufgebaut: eine native Engine in Rust, eine Electron-Oberfläche mit TypeScript und React und das Sprachmodell als denkende Schicht.

Yuli trennt klar, wer die schwere Arbeit erledigt, wer darstellt und wer denkt.

Schicht Technologie Verantwortung
Native Engine Rust Indizierung und semantische Analyse, Git, Prozesse, Debugging, Datenbank, Sicherheit, Qualität und Orchestrierung des Agenten.
Oberfläche Electron, TypeScript und React Stellt nur dar: Editor, Panels, Diagramme und Vorschauen.
Sprachmodell Der Anbieter oder Agent deiner Wahl Denkt: plant, entscheidet und bedient die Dienste der IDE über kontrollierte Tools.

Die Anwendung läuft unter Windows, macOS und Linux – durchgängig in 64 Bit.

Wie die Teile kommunizieren

Oberfläche (Electron + React)
        │  IPC über stdin/stdout
        ▼
Engine (agent-engine, Rust) ──▶ Git, Build, Debugger, Datenbank, Index
        │
        ├──▶ KI-Anbieter (Platform-Modus)
        │
        └──◀ yuli-mcp ◀── stdio ── Claude Code, Kiro, Codex, Antigravity
              (TCP 127.0.0.1 + token)
  • Die Oberfläche startet die Engine als Prozess und spricht über stdin/stdout mit ihr.
  • Die Oberfläche greift nie eigenständig auf die Festplatte, Git oder das Netzwerk des Agenten zu: Alles läuft über die Controller der Engine.
  • Externe Agenten verbinden sich über yuli-mcp, das per Loopback-Socket mit Token mit der Engine spricht. Siehe Yuli als MCP-Server.

Die Komponenten der Engine

Komponente Aufgabe
agent-engine Das Haupt-Binary: Dienste, Controller und Orchestrierung des Agenten.
yuli-mcp Der MCP-Server für externe Agenten, die Hooks und das Gate.
code-intelligence Die Code-Intelligenz-Engine: Graph-Kern, Java, Autovervollständigung, Scheduler und Frameworks (Struts, JBoss).
java-debug Der JDWP-Client des Java-Debuggers.

Die Engine ist in Schichten organisiert: domain (Typen und reine Regeln), service (Logik) und controller (IPC). Die Oberfläche spricht nur mit den Controllern.

Code-Intelligenz

Baustein Technologie
Syntaxanalyse Tree-sitter (Java und TypeScript)
Symbolgraph petgraph, mit Knoten (Klassen, Methoden, Felder, Spring-Beans) und Kanten (ruft auf, erweitert, implementiert, injiziert)
Persistenz SQLite in .ai/codebase/, pro Projekt
Invalidierung Ein Abhängigkeitsgraph zwischen Dateien: Bearbeitest du eine Datei, wird nur neu analysiert, was von ihr abhängt
Typauflösung Der Java-Compiler
Planung Prioritätswarteschlangen, damit zuerst aufgelöst wird, was du gerade ansiehst

Um Fragen zum Projekt zu beantworten, erhält der Agent einen begrenzten Teilgraphen statt ganzer Dateien. So erschöpfen sich weder das Kontextfenster noch die Token-Kosten.

Wo was liegt

Ort Inhalt
.ai/ in deinem Projekt Vertrag, Missionen, Gedächtnis, Regeln und Index. Siehe Der Ordner .ai.
%APPDATA%\.yulicode (Windows) Einstellungen, eigene Prompts, Skills und Hooks, Chatverlauf.
%LOCALAPPDATA%\.yulicode (Windows) Runtimes, Indizes, Caches und Logs. Kann gelöscht werden.
Schlüsselbund des Systems API-Keys, Passwörter und Tokens.

Unter macOS und Linux gilt dieselbe Aufteilung in den Standardordnern des jeweiligen Systems.

Deterministische Regeln

Die Sicherheits- und Qualitätsgrenzen leben in der Engine, nicht im Prompt:

  • Die Projekt-Sandbox und die geschützten Pfade.
  • Die Risikobewertung jeder Aktion.
  • Das Schwärzen von Secrets, bevor sie deinen Rechner verlassen.
  • Die Zugriffsrichtlinie für jede Datenbank.
  • Das Qualitäts-Gate – dasselbe für Menschen, Agenten, Git-Hooks und CI.

Ein Modell kann eine Regel nicht umgehen, indem es sich selbst überzeugt.

Erweiterungen

Plugins werden ohne Neukompilierung geladen, laufen isoliert (ein Fehler beeinträchtigt die IDE nicht) und deklarieren ihre Berechtigungen in einem Manifest. Sie können Befehle und Panels, Inspektionen, Menü- und Statusleisteneinträge, eigene Einstellungen, Daten für den Agenten und eigene Übersetzungen hinzufügen.