Technisches Handbuch v2.0.1

KI-gestützter
Code-Editor

Eine professionelle Drei-Panel-Workstation für lokal-first-Entwicklung mit KI-Orchestrierung. Gebaut auf DatenOwnership, modularer Architektur und autonomer Agenturfähigkeit.

Dokumentation lesen
Testsession anfragen

1. Übersicht

Was ist XteVision Coder und für wen ist es gedacht?

1.1 Was ist XteVision Coder?

XteVision Coder ist ein KI-gestützter Code-Editor und browserbasierter IDE für Entwickler, die Projekte mit integrierter KI-Unterstützung erstellen, bearbeiten und verwalten möchten. Es bietet eine professionelle Drei-Panel-Workstation-Layout mit Dateierkundung, Code-Bearbeitung, KI-Chat, Live-Vorschau und Terminal-Zugang—all laufend lokal mit Unterstützung verschiedener KI-Modelle.

1.2 Kernfähigkeiten

  • Mehrere Workspace-Verzeichnisse mit Drag-and-Drop-Dateioperationen
  • Professionelle Code-Bearbeitung angetrieben von Monaco Editor (derselbe Motor wie VS Code)
  • KI-gestützte Entwicklung mit Streaming-Antworten und autonomem Agenturmodus
  • Persistente authentifizierte Sitzungen mit eigenem Login/Registrierung und PostgreSQL-gestützter Sitzungsspeicherung
  • Gespeicherte KI-Unterhaltungen mit Titeln, Umbenennens/Suche/Lesezeichen-Steuerung und automatischer Letzt-Sitzung-Wiederherstellung
  • Workspace-Zustands-Wiederherstellung Wiederherstellung des aktiven Workspace-Wurzelverzeichnisses, offener Tabs, aktivem Tab und nichtgespeicherter Editor-Puffer
  • Live-Vorschau für HTML/CSS/JS-Projekte mit sandgekäster iframe-Rendering
  • Integriertes Terminal mit Command-Allowlist für sichere Ausführung
  • Mehrmodale Unterstützung für MLX, Ollama, LMStudio, GitHub Copilot und OpenRouter
  • Intelligente Code-Zusammenführung mit diff-basierter Edit-Anwendung und visueller Diff-Vorschau

1.3 Zielgruppe

  • Entwickler, die mit lokalen KI-Modelle arbeiten
  • Teams, die eine leichte, selbstgehostede IDE benötigen
  • Lehrende, die Programmierung mit KI-Unterstützung unterrichten
  • Alle, die ein VS-Code-ähnliches Erlebnis im Browser möchten

2. Systemarchitektur

High-Level-Design und Kommunikationsfluss

2.1 High-Level-Architektur

┌──────────────────────────────────────────────────────────┐
│                      Browser (Client)                     │
│  ┌────────────────────────────────────────────────────┐  │
│  │               Frontend (Vanilla JS)                 │  │
│  │  ┌────────┐ ┌────────┐ ┌──────┐ ┌────────┐       │  │
│  │  │ Dateie │ │ Monaco │ │  KI  │ │ Live   │       │  │
│  │  │ explorer│ │ Editor │ │ Chat │ │Preview │       │  │
│  │  └────────┘ └────────┘ └──────┘ └────────┘       │  │
│  └────────────────────────────────────────────────────┘  │
└──────────────────────┬───────────────────────────────────┘
                       │ HTTP/REST API (localhost:5004)
┌──────────────────────┴───────────────────────────────────┐
│                  Python-Backend-Server                    │
│  ┌──────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ ┌──────────┐ │
│  │ DateI/O │ │ Shell  │ │KI-Proxy│ │Workspace │ │Auth/Chat │ │
│  └──────────┘ └────────┘ └────────┘ └──────────┘ └──────────┘ │
└──────────────────────┬───────────────────────────────────┘
         ┌───────────┬───────────┬───────────┐
         │           │           │           │
     ┌─────▼──────┐ ┌──▼────────┐ ┌▼──────────┐
     │  Datei     │ │PostgreSQL │ │ KI-Model  │
     │  System    │ │users +    │ │  Server   │
     │            │ │sessions   │ │           │
     └────────────┘ └───────────┘ └───────────┘

2.2 Kommunikationsfluss

  1. Frontend → Backend: RESTful HTTP-Anfragen für Dateioperationen, Shell-Befehle und KI-Proxying
  2. Backend → KI-Modell: OpenAI-kompatible API-Aufrufe zu lokalen oder entfernten Modelservern
  3. Backend → Frontend: JSON-Antworten mit Datei-inhalten, Ausführungsergebnissen oder fließenden KI-Antworten über SSE
  4. Frontend → Benutzer: UI-Updates, Editor-Änderungen, Chat-Antworten und Terminal-Ausgabe

2.3 Bereitstellungsmodell

XteVision Coder ist für lokal-first-Entwicklung ausgelegt:

  • Läuft vollständig auf der Maschine des Benutzers
  • Keine Cloud-Abhängigkeiten (außer optionalen KI-Modell-Proxy)
  • Backend servingt statische Frontend-Dateien
  • Alle Daten bleiben auf dem lokalen Dateisystem

3. Technologie-Stack

Frontend, Backend und KI-Integration-Technologien

3.1 Frontend-Technologien

TechnologieVersZweck
JavaScript (ES6+)ES2020+Anwendungslogik
HTML5-Semantische Struktur
CSS3-Styling & Layout
Monaco Editor0.52.2Code-Bearbeitung
Marked.js-Markdown-Parsing
Prism.js-Syntax-Highlighting
html2pdf.js-PDF-Generierung
FontAwesomeKostenlosSymbolbibliothek

3.2 Backend-Technologien

TechnologieVersZweck
Python3.8+HTTP-Server
http.serverstdlibBasis HTTP-Server
socketserverstdlibTCP-Threadung
subprocessstdlibShell-Ausführung
PostgreSQL12+Benutzerkonten, Auth-Sitzungen und Chat-Sitzungen
psycopg22.9+PostgreSQL-Konnektivität
argon2-cffi23+Passwort-Hashing
PyJWT2.8+Signierte Prodigy-Handoff-Token

3.3 Browser-Unterstützung

BrowserUnterstützungAnmerkungen
Chrome/Edge✅ VollDatei-System-Zugang-API
Firefox⚠️ TeilweiseServer-basiertes I/O
Safari⚠️ TeilweiseEingeschränkter Datei-Zugang

4. Installation & Einrichtung

Bringen Sie XteVision Coder in Minuten zum Laufen

4.1 Voraussetzungen

  • Python 3.8+ (für Backend-Server)
  • Moderner Browser (Chrome/Edge empfohlen)
  • KI-Modell-Server (optional, für KI-Funktionen)

4.2 Installationsschritte

Schritt 1: Herunterladen

cd /path/to/mlx_coder

Schritt 2: Monaco-Editor installieren (Optional)

bash download-monaco.sh

Schritt 3: KI-Server konfigurieren (Optional)

mlx_lm.server --model <your-model-path> --port 5010

Schritt 4: Python-Abhängigkeiten installieren

pip3 install -r requirements.txt

Schritt 5: XteVision Coder starten

Standard-Konfiguration
python3 server.py

# Benutzerdefinierter Port
PORT=8080 python3 server.py

# Mit PostgreSQL-gestützter Authentifizierung
XTEVISION_DB_HOST=192.168.1.4 \
XTEVISION_DB_PORT=5432 \
XTEVISION_DB_NAME=codebase \
XTEVISION_DB_USER=postgres \
XTEVISION_DB_PASSWORD=your-db-password \
python3 server.py

Schritt 6: Anwendung zugreifen

http://localhost:5004

4.3 Ersteinrichtung

  1. Konto erstellen: Nutzen Sie das Login/Registrierungs-Overlay, um den ersten eigenständigen Coder-Benutzer zu erstellen
  2. Workspace öffnen: Klicken Sie auf "Ordner öffnen", um ein Projektverzeichnis auszuwählen
  3. KI konfigurieren: Öffnen Sie Einstellungen (Zahnrad-Symbol) und speichern Sie Ihren bevorzugten KI-Backend
  4. Sitzung starten: Nutzen Sie die Symbolleiste „Sitzungen", um persistente KI-Unterhaltungen zu erstellen, zu benennen und zu Lesezeichen hinzuzügen

4.4 Authentifizierung-Einrichtung

XteVision Coder nutzt jetzt cookie-basierte eigenständige Authentifizierung, die von PostgreSQL gestützt wird. Jeder Benutzer sieht nur seine eigenen gespeicherten Chat-Sitzungen und Workspace-Wiederherstellungsdaten.

Erforderliche Datenbank: Das Backend erwartet eine PostgreSQL-Datenbank wie codebase. Beim Start erstellt Coder das coder-Schema automatisch, wenn die konfigurierte Datenbank erreichbar ist.
  • XTEVISION_AUTH_COOKIE_NAME: Sitzungs-Cookie-Name, Standard xtevision_session
  • XTEVISION_AUTH_SESSION_DAYS: Cookie-Lebensdauer in Tagen, Standard 14
  • XTEVISION_AUTH_ALLOW_REGISTRATION: Lokale Anmeldung aktivieren/deaktivieren
  • XTEVISION_PRODIGY_SHARED_SECRET: Optionales gemeinsames Geheimnis für zukünftige vertrauenswürdige Prodigy-Start-Handoff

4.5 OpenRouter-Einrichtung

Um OpenRouter als KI-Backend zu nutzen:

  1. Öffnen Sie Einstellungen in der rechten Seitenleiste
  2. Wählen Sie OpenRouter in der KI-Server-Dropdown
  3. Setzen Sie die API-URL auf https://openrouter.ai/api/v1/chat/completions
  4. Wählen Sie eine OpenRouter-Modell-ID wie qwen/qwen3.6-plus-preview

Wenn OpenRouter ausgewählt ist, hängt XteVision Coder diese Header an:

  • Authorization: Bearer <OPENROUTER_API_KEY>
  • HTTP-Referer: <konfigurierte Seiten-URL>
  • X-OpenRouter-Title: <konfigurierte Seiten-Titel>

5. Anwendungsstruktur

Verzeichnislayout und Modulorganisation

5.1 Verzeichnislayout

mlx_coder/
├── index.html                      # Haupt-HTML-Einstiegspunkt
├── style.css                       # Anwendungsstile
├── script.js                       # Bootstrap und Modul-Lader
├── server.py                       # Python-HTTP-Backend
├── .mlx.json                       # Projektzustand
├── js/
│   ├── modules/                    # Frontend-ES6-Module
│   │   ├── state.js                # Globales Zustandsmanagement
│   │   ├── config.js               # KI-Konfiguration und anbieterspezifische Einstellungen
│   │   ├── utils.js                # Hilfsfunktionen
│   │   ├── filesystem.js           # Datei-I/O und Workspace
│   │   ├── editor.js               # Monaco-Editor-Initialisierung
│   │   ├── chat.js                 # KI-Chat und Streaming
│   │   ├── agent.js                # Agentur-Loop und Funktionsaufruf
│   │   ├── auth.js                 # Login/Registrierung/Logout-Bootstrap
│   │   ├── sessionPersistence.js   # Chat-Sitzungs-Autosave und Wiederherstellung
│   │   ├── tools.js                # Werkzeugdefinitionen
│   │   ├── diff.js                 # Diff-basierte Bearbeitung
│   │   ├── preview.js              # Live-Vorschau und PDF-Export
│   │   └── ui.js                   # UI-Rendering und Interaktionen
│   ├── marked.min.js               # Markdown-Parser
│   ├── prism.min.js                # Syntax-Highlighter
│   └── html2pdf.bundle.min.js      # PDF-Generierung
├── fontawesome-free-web/           # FontAwesome-Symbole
├── requirements.txt                # Python-Auth-/DB-Abhängigkeiten
├── projects/                       # Benutzer-Projektdateien
└── logs/app.log                    # Anwendungslog

5.2 Zustandsmanagement

export const state = {
    editor: null,               // Monaco-Editor-Instanz
    files: {},                  // Datei-Inhalts-Cache
    openTabs: [],               // Offene Editor-Tabs
    activeTabPath: null,        // Aktiver Tab-Pfad
    tabDirty: {},               // Dirty-Zustand pro Tab-Pfad
    messageHistory: [],         // Aktive Chat-Nachrichten-Historie
    chatSessionId: null,        // Aktuelle gespeicherte Chat-Sitzungs-ID
    chatSessions: [],           // Verfügbare gespeicherte Chat-Sitzungen
    workspaceFolders: new Map() // Offene Workspace-Ordner
};

6. Kernfunktionen

Datei-Explorer, Code-Editor, KI-Chat, Vorschau und Terminal

Datei-Explorer

Mehrere Workspace-Verzeichnisse, Drag-and-Drop-Operationen, Kontextmenüs, Path-Traversal-Schutz und drei Workspace-Modi (Native, Server, Fallback).

Code-Editor

Monaco-Editor mit 20+ Sprachen, Multi-Tab-Bearbeitung, IntelliSense, MiniMap, Suchen/Ersetzen, Multi-Cursor und Code-Faltung.

KI-Chat

Streaming- und Agentur-Modi, SSE-Antworten, 7 Werkzeuge, @-Erwähnungen, Code-Block-Aktionen (Kopieren, Smart-Merge, Einfügen, Erstellen, Ersetzen) und visuelle Diff-Vorschau.

Gespeicherte Sitzungen

Persistente pro-Benutzer-KI-Sitzungen mit Umbenennung, Suche, Lesezeichen, Autosave und Wiederherstellung der Chat-Historie plus Workspace/Editor-Zustand.

Live-Vorschau

HTML-Rendering in sandboxed iframe, Markdown-zu-HTML-Konvertierung, YAML-Formatierung und PDF-Export über html2pdf.

Terminal/Shell

LOG- und SHELL-Tabs, 100er-Befehls-Historie, 40+ Befehls-Allowlist, blockierte Muster Verteidigung-in-Tiefe.

Authentifizierung

Eigenständiger Browser-Login, sichere Sitzungs-Cookies, Argon2-gehashte Passwörter und zukünftige signierte Prodigy-Start-Unterstützung.

Agentur-Modi-Details

EigenschaftWert
Max-Iterationen15 Schritte per Aufgabe
Timeout1 Stunde maximal
Wiederholungslogik3 Wiederholungen mit exponentiellem Backoff
Verfügbare Werkzeugeread_file, write_file, edit_file, list_files, search_files, run_shell, create_directory

7. Frontend-Architektur

Kernmodule und Event-System

7.1 Kernmodule

state.js - Globales Zustandsmanager

Zentralisierter Zustand mit lazy DOM-Caching über Proxy und Typo-Erkennung.

config.js - Konfigurationsmanager

KI-Server-Presets, anbieterspezifische Anfrage-Header, OpenRouter-Header-Injektion, localStorage-Persistenz und Verbindungsgesundheitsprüfung.

utils.js - Hilfsfunktionen

Gemeinsame Helfer: escapeHtml, logToTerminal, safeFetchJson, cleanContent.

filesystem.js - Dateisystem-Operationen

Datei-I/O (native + server), Workspace-Management, Drag-and-Drop, IndexedDB, KI-Helfer.

editor.js - Monaco-Editor-Manager

Monaco-Initialisierung, Multi-Tab-Management, Speicheroperationen, Dirty-Zustands-Tracking.

chat.js - KI-Chat-Manager

Nachrichtenbehandlung, anbieterspezifische Anfrage-Header, SSE-Streaming, Agentur-Koordination, Code-Block-Aktionen, @-Erwähnungen und sitzungsbezogene NachricHTen-Updates.

agent.js - Agentur-Engine

Mehrschritt-Ausführung, anbieterspezifische Anfrage-Header, Funktionsaufruf, Werkzeug-Parsing, Wiederholungslogik, Copilot-Protokoll.

auth.js - Auth-Bootstrap

Login/Registrierung/Logout-Fluss, Start-Gating und Auth-HUD-Updates für die geschützte IDE-Shell.

sessionPersistence.js - Sitzungsmanager

Autosave von Chat-Sitzungen, Wiederherstellung der neuesten Sitzung und Rehydrierung von Workspace-Wurzel, Tabs, Dirty-Puffern und Lesezeichen.

tools.js - Werkzeugdefinitionen

Werkzeug-Schemas, Ausführungslogik, Parameter-Validierung für 7 Werkzeuge.

7.2 Event-System

// Benutzerdefiniertes Event für Einstellungsänderungen
window.dispatchEvent(new CustomEvent('xtevision-settings-changed'));

// Für Events hören
window.addEventListener('xtevision-settings-changed', () => {
  // On Einstellungsänderung reagieren
});

7.3 Fehlerbehandlung

// Globale Error-Boundaries für async init
try {
  await checkServerAvailability();
  await connectToServerWorkspace();
} catch (error) {
  logToTerminal(`Init-Fehler: ${error.message}`, 'error');
}

8. Backend-Architektur

Python-Server-Konfiguration und Anfragebehandlung

8.1 Server-Konfiguration

PORT = int(os.environ.get('PORT', 5004))
PROJECTS_DIR = os.path.join(os.getcwd(), 'projects')
AI_PROXY_TIMEOUT_SEC = 3660
AUTH_COOKIE_NAME = os.environ.get('XTEVISION_AUTH_COOKIE_NAME', 'xtevision_session')
AUTH_DB_HOST = os.environ.get('XTEVISION_DB_HOST', '192.168.1.4')
AUTH_DB_NAME = os.environ.get('XTEVISION_DB_NAME', 'codebase')
PRODIGY_JWT_SECRET = os.environ.get('XTEVISION_PRODIGY_SHARED_SECRET', '')

8.2 Thread-Sicherheit

_current_dir_lock = threading.Lock()
_current_dir = os.getcwd()

def get_current_dir():
    with _current_dir_lock:
        return _current_dir

8.3 Auth und Sitzungsspeicherung

Das Backend initialisiert ein coder-PostgreSQL-Schema mit:

  • users für lokale und zukünftige Prodigy-verbundene Identitäten
  • auth_sessions für sichere Sitzungs-Cookie-Login-Zustand
  • auth_launch_tokens für einmalige signierte Start-Handoffs
  • chat_sessions für gespeicherte Chats, Titel, Lesezeichen und UI-Wiederherstellung-Payloads

8.4 Anfragehandler

class CustomHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self): # GET behandeln
    def do_POST(self): # POST behandeln
    def do_OPTIONS(self): # CORS-Preflight
    def end_headers(self): # CORS-Header hinzufügen

8.5 KI-Proxy-Verhalten

Das Backend stellt zwei KI-bezogene Proxy-Endpunkte bereit:

  • /api/proxy für leichte JSON-Fetches wie Modellentdeckung
  • /api/ai-proxy für vollständige Anfrage-Weiterleitung zu OpenAI-kompatible Chat-Endpunkte

Für OpenRouter weiterlegen beide Endpunkte Anbieter-Header und erlauben openrouter.ai in der Proxy-Allowlist, so dass authentifizierte Modellentdeckung und Chat-Antworten durch die Backend-Fallback-Pfade funktionieren.

9. KI-Integration

Unterstützte Server, Protokolle und Funktionsaufruf

9.1 Unterstützte KI-Server

ServerStandard-URLPortAnmerkungen
MLXhttp://localhost5010Apple-Silicon-optimiert
Ollamahttp://localhost11434Beliebte lokale Modelle
LMStudiohttp://localhost1234GUI-basierter Modelserver
GitHub Copilothttp://localhost5015Über Proxy
OpenRouterhttps://openrouter.ai443Cloud-API-Gateway
BenutzerdefiniertBenutzerdefiniertBeliebigOpenAI-kompatible API

9.2 OpenAI-kompatible Protokoll

Endpunkt: /v1/chat/completions

{
  "model": "your-model-name",
  "messages": [
    {"role": "system", "content": "Du bist ein Entwicklungsassistent..."},
    {"role": "user", "content": "Schreibe eine Funktion zu..."}
  ],
  "stream": true,
  "tools": [{"type":"function","function":{"name":"read_file","parameters":{"file_path":"string"}}}]
}

9.3 Streaming-Antwort-Format

Server-Sent Events (SSE):

data: {"choices": [{"delta": {"content": "Hallo"}}]}
data: {"choices": [{"delta": {"content": " Welt"}}]}
data: [DONE]

9.4 Funktionsaufruf

Werkzeug-Parsing (3 Formate):

  1. Gemma-Style: call:read_file{"file_path": "test.js"}
  2. Strukturiertes JSON: {"name": "read_file", "arguments": {...}}
  3. Getaggtes Format:

9.5 Copilot-Planer-Protokoll

Bei Verwendung von GitHub Copilot als Backend nutzt der Agent ein JSON-only-Antwort-Format für strukturierte Werkzeugaufrufe und folgt dem Planer-Ausführung-Muster.

10. Sicherheitsmodell

Fünf-Schichten-Sicherheitsimplementierung

10.1 Shell-Befehls-Allowlist

40+ genehmigte Befehle: ls, cat, echo, pwd, mkdir, touch, cp, mv, git, npm, python, node, curl, etc.

Blockierte Muster (Verteidigung-in-Tiefe):

  • rm -rf / und Varianten
  • sudo-Befehle
  • chmod 777
  • Pipe zu Shell: curl ... | sh
  • Fork-Bomben und Dateisystem-Werkzeuge

10.2 Path-Traversal-Schutz

Nutzt os.path.commonpath() + os.path.realpath() zur Verhinderung von symlink-basierten Path-Traversal-Angriffen. Alle Dateioperationen werden validiert, um im Workspace-Wurzelverzeichnis zu bleiben.

10.3 SSRF-Schutz

KI-Proxy auf zugelassene Domänen beschränkt:

  • localhost, 127.0.0.1, 0.0.0.0
  • 192.168.10.3 (lokales KI-Server des Benutzers)
  • openrouter.ai (Cloud-Anbieter-Endpunkt)

Verhinderung der Nutzung des Proxy zum Zugriff auf interne Netzwerkdienste.

10.4 CORS-Härtung

Wildcard-CORS durch localhost-only-Ursätze ersetzt:

  • http://localhost:5004
  • http://127.0.0.1:5004
  • http://localhost:8080

Verhinderung von böswilligen Websites, Anfragen an den lokalen Server zu machen.

10.5 Authentifizierung

XteVision Coder schützt jetzt den Workspace mit eigenständiger Browser-Authentifizierung:

  • Argon2-gehashte lokale Passwörter in PostgreSQL gespeichert
  • Server-ausgesetzte Sitzungs-Cookies mit konfigurierbarer Lebensdauer
  • Per-Benutzer Chat/Sitzungs-Isolierung am Backend erzwungen
  • Optionale zukünftige Prodigy-Start-Handoff über signierte einmalige JWTs

10.6 Data-Loss-Prevention

  • beforeunload-Warnung: Warnt Benutzer vor dem Schließen von Tabs mit nichtgespeicherten Änderungen
  • Einstellungs-Speicherung ohne Reload: Dispatcht benutzerdefiniertes Event statt Seiten-Reload
  • Dirty-Zustands-Tracking: Monaco-Version-ID überwacht Änderungen
  • Sitzungs-Autosave: Chat-Historie, Lesezeichen, Workspace-Wurzel und nichtgespeicherte Puffer werden per Benutzer persistiert

11. API-Referenz

Vollständige REST-API-Endpunkte

11.1 Datei-Operationen

POST /api/write-file

Anfrage:
{
  "path": "projects/myapp/src/index.js",
  "content": "console.log('Hallo');"
}

Antwort:
{"success": true, "message": "Datei erfolgreich geschrieben"}

POST /api/read-file

Anfrage:
{"path": "projects/myapp/package.json"}

Antwort:
{"content": "{...}", "success": true}

POST /api/create-folder

Anfrage:
{"path": "projects/myapp/src/components"}

Antwort:
{"success": true, "message": "Ordner erstellt"}

GET /api/list-files

Antwort:
{"folders": ["src", "public"], "files": ["index.html", "package.json"]}

POST /api/delete-item

Anfrage:
{"path": "projects/myapp/old-file.js"}

Antwort:
{"success": true}

POST /api/rename-item

Anfrage:
{"old_path": "projects/myapp/old-name.js", "new_path": "projects/myapp/new-name.js"}

Antwort:
{"success": true}

11.2 Shell-Ausführung

POST /shell

Anfrage:
{"command": "ls -la"}

Antwort:
{"output": "insgesamt 48\ndrwxr-xr-x ...", "success": true}

11.3 KI-Proxy

POST /api/proxy

Weiterleitung von Anfragen an den konfigurierten KI-Server für Modellentdeckung und leichte Operationen.

POST /api/ai-proxy

Weiterleitung vollständiger Chat-Antwort-Anfragen an den configurierten KI-Backend mit anbieterspezifischen Headers für OpenRouter-Integration.

11.4 Authentifizierung

GET /auth/me

Gibt den authifizierten Benutzer und Backend-Verfügbarkeitszustand für den Login-Bootstrap zurück.

POST /auth/register

Erstellt einen neuen eigenständigen Coder-Benutzer mit Benutzername, optionaler E-Mail und Passwort.

POST /auth/login

Authentifiziert einen lokalen Benutzer und gibt einen Sitzungs-Cookie zurück.

POST /auth/logout

Widerruft die aktuelle Auth-Sitzung und räumt den Cookie auf.

11.5 Chat-Sitzungen

GET /api/chat-sessions

Listet die Chat-Sitzungen des aktuellen Benutzers, geordnet nach Lesezeichen-Zustand und letzter Aktivität.

GET /api/chat-sessions/current

Gibt die neueste aktive Chat-Sitzung für Login-Wiederherstellung zurück.

POST /api/chat-sessions

Erstellt eine neue Chat-Sitzung mit Titel, Nachrichten, Lesezeichen-Zustand und serialisiertem UI-Zustand.

POST /api/chat-sessions/<id>/save

Aktualisiert eine bestehende Sitzung mit neuen Nachrichten, umbenanntem Titel, Lesezeichen-Flag, Workspace-Wurzel, offnen Tabs und nichtgespeicherten Puffer-Inhalten.

POST /api/chat-sessions/<id>/delete

Löscht die ausgewählte Chat-Sitzung für den authifizierten Benutzer.

11.6 Diff-Bearbeitung

POST /api/edit-file

Anfrage:
{
  "path": "projects/myapp/src/index.js",
  "edits": [{
    "search": "console.log('old')",
    "replace": "console.log('new')"
  }]
}

Antwort:
{"success": true, "message": "Datei aktualisiert"}

12. Konfiguration

Umgebungsvariablen und Einstellungen

12.1 Umgebungsvariablen

VariabStandardBeschreibung
PORT5004Backend-Server-Port
XTEVISION_AUTH_COOKIE_NAMExtevision_sessionSitzungs-Cookie-Name
XTEVISION_AUTH_SESSION_DAYS14Cookie/Sitzungs-Lebensdauer in Tagen
XTEVISION_AUTH_SECURE_COOKIEfalseMarkiert Cookies sicher hinter HTTPS
XTEVISION_AUTH_ALLOW_REGISTRATIONtrueLokale Anmeldung aktivieren/deaktivieren
XTEVISION_DB_HOST192.168.1.4PostgreSQL-Host
XTEVISION_DB_PORT5432PostgreSQL-Port
XTEVISION_DB_NAMEcodebasePostgreSQL-Datenbankname
XTEVISION_DB_USERpostgresPostgreSQL-Benutzername
XTEVISION_DB_PASSWORDleerPostgreSQL-Passwort
XTEVISION_PRODIGY_SHARED_SECRETleerOptionales signiertes Prodigy-Handoff-Geheimnis

12.2 localStorage-Einstellungen

EinstellungTypBeschreibung
xtevision_ai_serverstringAusgewählter KI-Server-Preset
xtevision_ai_urlstringKI-Server-API-URL
xtevision_ai_modelstringModell-Name/ID
openrouter_api_keystringOpenRouter-API-Key
openrouter_site_urlstringOpenRouter HTTP-Referer-Header-Wert
openrouter_site_titlestringOpenRouter X-OpenRouter-Title-Header-Wert
xtevision_last_filestringLetzt geöffnete Datei-Pfad

12.3 Datenbank-gestützte Benutzerdaten

Die folgenden Daten sind nicht mehr nur in localStorage gespeichert:

  • Benutzerkonten und aktive Auth-Sitzungen
  • Gespeicherte Chat-Sitzungen und umbenannte Titel
  • Lesezeichen-Zustand und Sitzungs-Aktivitäts-Timestamps
  • Workspace-Wiederherstellungs-Metadaten, offnen Tabs und nichtgespeicherte Editor-Puffer

12.4 KI-Server-Presets

PresetsURLPort
MLXhttp://localhost5010
Ollamahttp://localhost11434
LMStudiohttp://localhost1234
OpenRouterhttps://openrouter.ai443
Copilothttp://localhost5015

13. Entwicklungsleitfaden

Modul-Erstellung und Debugging

13.1 Neues Modul hinzufügen

// 1. js/modules/mymodule.js erstellen
import { state, elements } from './state.js';
import { logToTerminal } from './utils.js';

export function initMyModule() {
  logToTerminal('MyModule initialisiert', 'info');
}

// 2. In script.js importieren
import { initMyModule } from './js/modules/mymodule.js';

// 3. Während Initialisierung aufrufen
initMyModule();

13.2 Debugging

  • Debug-Logging aktivieren: localStorage.setItem('debug', 'true')
  • Chrome DevTools: Vollständige Source-Map-Unterstützung für ES-Module
  • Network-Tab: Überwacht API-Anfragen und -Antworten
  • Console: Alle Fehler mit Kontext protokolliert

13.3 KI-Integration testen

// KI-Verbindung von der Console testen
const response = await fetch('http://localhost:5004/api/proxy', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    model: 'test-model',
    messages: [{role: 'user', content: 'Hallo'}]
  })
});
console.log(await response.json());

13.4 Cache-Busting

Alle JS-Module verwenden den ?v=APP_VERSION Query-Parameter für Cache-Busting. Aktualisieren Sie APP_VERSION in config.js nach dem Machen von Änderungen.

14. Fehlerbehebung

Gewöhnliche Probleme und Lösungen

14.1 Monaco-Editor lädt nicht

  • Problem: Editor zeigt Error-Overlay oder leer
  • Lösung: bash download-monaco.sh ausführen oder Netzwerk für CDN-Zugang prüfen

14.2 KI-Verbindung fehlgeschlagen

  • Problem: „Verbindung abgelehnt”-Fehler im LOG-Terminal
  • Lösung: Stellen Sie sicher, dass der KI-Modell-Server auf dem konfigurierten Port läuft und speichern Sie die Anbieter-Einstellungen erneut aus dem KI-Backend-Settings-Modal

14.3 Auth-Backend nicht verfügbar

  • Problem: Login/Registrierungs-Overlay meldet Auth-Backend nicht verfügbar
  • Lösung: Stellen Sie sicher, dass PostgreSQL läuft, die konfigurierte codebase-Datenbank existiert und die XTEVISION_DB_*-Variablen mit der Server-Konfiguration übereinstimmen

14.4 Datei-Speichern funktioniert nicht

  • Problem: Ctrl+S zeigt Fehler
  • Lösung: Stellen Sie sicher, dass der Backend-Server läuft. Prüfen Sie die Browser-Console für CORS-Fehler

14.5 Shell-Befehle blockiert

  • Problem: „Befehl nicht erlaubt”-Fehler
  • Lösung: Befehl nicht in der Allowlist. Zu ALLOWED_SHELL_COMMANDS in server.py hinzufügen, falls nötig

14.6 Mixed-Content-Fehler

  • Problem: HTTPS-Seite blockiert HTTP-Anfragen
  • Lösung: Zugriff über http://localhost:5004 (kein HTTPS). shouldForceBackendProxy()-Erkennung verwenden

14.7 Safari-Datei-Zugang begrenzt

  • Problem: Kann nur ausgewählte Dateien zugreifen
  • Lösung: Safari unterstützt die File System Access API nicht. Server-basierten Modus verwenden oder zu Chrome/Edge wechseln

14.8 Agentur-Mod nicht ansprechend

  • Problem: Agentur-Loop hängt oder läuft Zeit ab
  • Lösung: Stellen Sie sicher, dass der KI-Modell Funktionsaufruf unterstützt. Timeout in AI_PROXY_TIMEOUT_SEC erhöhen