Documentație / Referință

Arhitectură

Cum este construit Yuli: un motor nativ în Rust, o interfață Electron cu TypeScript și React, iar modelul de limbaj ca strat care raționează.

Yuli separă clar cine face munca grea, cine afișează și cine raționează.

Strat Tehnologie Responsabilitate
Motor nativ Rust Indexare și analiză semantică, Git, procese, depanare, bază de date, securitate, calitate și orchestrarea agentului.
Interfață Electron, TypeScript și React Doar afișează: editor, panouri, diagrame și previzualizări.
Model de limbaj Furnizorul sau agentul pe care îl alegi Raționează: planifică, decide și operează serviciile IDE-ului prin unelte controlate.

Aplicația rulează pe Windows, macOS și Linux, pe 64 de biți de la un capăt la altul.

Cum comunică

Interfață (Electron + React)
        │  IPC prin stdin/stdout
        ▼
Motor (agent-engine, Rust) ──▶ Git, build, depanator, bază de date, index
        │
        ├──▶ Furnizor IA (Modul Platform)
        │
        └──◀ yuli-mcp ◀── stdio ── Claude Code, Kiro, Codex, Antigravity
              (TCP 127.0.0.1 + token)
  • Interfața pornește motorul ca proces și comunică cu el prin stdin/stdout.
  • Interfața nu atinge niciodată singură discul, Git sau rețeaua agentului: totul trece prin controllerele motorului.
  • Agenții externi se conectează prin yuli-mcp, care comunică cu motorul printr-un socket de loopback cu token. Vezi Yuli ca server MCP.

Componentele motorului

Componentă Ce face
agent-engine Binarul principal: servicii, controllere și orchestrarea agentului.
yuli-mcp Serverul MCP pentru agenții externi, hook-urile și gate-ul.
code-intelligence Motorul de inteligență a codului: nucleul grafului, Java, completare automată, planificator și framework-uri (Struts, JBoss).
java-debug Clientul JDWP al depanatorului Java.

Motorul este organizat pe straturi: domain (tipuri și reguli pure), service (logică) și controller (IPC). Interfața comunică doar cu controllerele.

Inteligența codului

Piesă Tehnologie
Analiză sintactică Tree-sitter (Java și TypeScript)
Graful de simboluri petgraph, cu noduri (clase, metode, câmpuri, bean-uri Spring) și muchii (apelează, extinde, implementează, injectează)
Persistență SQLite în .ai/codebase/, pe proiect
Invalidare Un graf de dependențe între fișiere: editarea unuia reanalizează doar ce depinde de el
Rezolvarea tipurilor Compilatorul Java
Planificare Cozi de prioritate, ca ce te uiți să se rezolve primul

Pentru a răspunde la întrebări despre proiect, agentul primește un subgraf delimitat în loc de fișiere întregi. Astfel nu se epuizează fereastra de context și nici bugetul de tokeni.

Unde se află fiecare lucru

Loc Conținut
.ai/ în proiectul tău Contract, misiuni, memorie, reguli și index. Vezi Folderul .ai.
%APPDATA%\.yulicode (Windows) Setări, prompturi, skills și hooks proprii, istoricul chatului.
%LOCALAPPDATA%\.yulicode (Windows) Runtime-uri, indexuri, cache-uri și jurnale. Poate fi șters.
Keychain-ul sistemului Chei API, parole și tokeni.

În macOS și Linux se folosește aceeași împărțire, în folderele standard ale fiecărui sistem.

Reguli deterministe

Limitele de securitate și de calitate se află în motor, nu în prompt:

  • Sandbox-ul proiectului și căile protejate.
  • Evaluarea riscului fiecărei acțiuni.
  • Redactarea secretelor înainte să iasă de pe calculator.
  • Politica de acces la fiecare bază de date.
  • Gate-ul de calitate, același pentru oameni, agenți, hook-uri Git și CI.

Un model nu poate ocoli o regulă convingându-se singur.

Extensii

Pluginurile se încarcă fără recompilare, rulează izolat (o eroare nu afectează IDE-ul) și își declară permisiunile într-un manifest. Pot adăuga comenzi și panouri, inspecții, intrări în meniuri și în bara de stare, setări proprii, date pentru agent și propriile traduceri.