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.