Liri
Linglong Bird · Persönlicher KI-Assistent · Lokal zuerst · Sicherheit von Anfang an
$ git clone https://github.com/cocosoft/Liri.git Ein Weg, der noch nicht zu Ende ist
Am 25. Mai 2026 war es ein einzelnes v0.1 mit 100 Commits. Fünf Monate später sind es über 4.000 Dateien und 27 Kanäle — und die Rechnung, die dazugehört: eine Datei mit 7.000 Zeilen, 105 überdimensionierte Dateien, die niemand registriert hatte, und eine „Dead-Code-Bereinigung“, die das gesamte Sandbox-Subsystem löschte.
Wir haben es wiederhergestellt und dann Löschen, Grenzen und Zustandsvokabulare Schritt für Schritt zu CI-Gates gemacht. Der Weg ist nicht zu Ende.
Was ist Liri
Liri ist ein persönlicher KI-Assistent auf einer TypeScript + Rust-Architektur.
Liri ist weit mehr als ein Chatbot — das System kann Absichten verstehen, Befehle ausführen, Aufgaben verwalten, Werkzeuge aufrufen und sogar mit anderen KI-Agenten zusammenarbeiten. Eine Engine versorgt alle Einstiegspunkte: Terminal, Desktop, IM und MCP.
71 modulare Subsysteme, 4,109 TypeScript-Dateien und 429 Desktop-Komponenten — je nach Build-Variante zuschneidbar.
Kernfunktionen
Acht unterscheidbare Fähigkeiten, jede im GitHub-Quellcode überprüfbar
Tiefe Agent-Engine
Eine eigene TAOR-Schleife mit Strategie, Gedächtnis und Checkpoints
- TAOR-Entscheidungszyklus (Think-Act-Observe-Reason)
- 4 Agent-Strategien: allgemein / Coding / Exploration / Planung
- Wiederaufnahme ab Checkpoint hält langlaufende Aufgaben nach Unterbrechungen fortsetzbar
- Geschichtete Kontextfenster mit dreistufiger automatischer Kompaktierung
- 8 Abbruchgründe plus Circuit Breaker pro Runde gegen Leerlaufschleifen
5 Ebenen Verteidigung in der Tiefe
Rust-AST-Analyse zur Compile-Zeit → fünf Verteidigungslinien → Sandbox-Isolation mit mehreren Backends
- Bash-Analyse zur Compile-Zeit über Rust-FFI-AST
- 37 Regeln für gefährliche Befehle + 14 Injektionsregeln
- Guardrail-Regelengine für Richtlinien
- AutoMode-Risikoklassifikator
- Sandbox-Abdeckung für Landlock / macOS / Windows / Docker / SSH / PTY
69 integrierte Werkzeuge
23 Kategorien für Dateien, Befehle, Netzwerk, Medien, Code und Zusammenarbeit
- Bash-Ausführung auf Rust-AST-Niveau
- Code-Intelligenz über LSP
- Web-Scraping und Suche
- Notebook-, Bild-, Audio- und Videoverarbeitung
- Vollständige MCP-Client- und Server-Unterstützung
27 Messaging-Kanäle
27 Kanaladapter, WeChat / WeCom / DingTalk / Feishu / QQ werden alle unterstützt
- Telegram / Discord / Slack / WhatsApp
- WeChat / WeCom / DingTalk / Feishu / QQ / Yuanbao
- Email / SMS / Webhook / IRC / Matrix
- Ein einheitlicher Kanalkatalog mit Gateway-Routing
- Kanäle zur Compile-Zeit zuschneidbar für kleinere Builds
Observability auf Enterprise-Niveau
OpenTelemetry-Anbindung, Alarmierung und Health Checks
- Tracing + Metriken nach den semantischen OTel-GenAI-Konventionen
- Gestuftes strukturiertes Logging
- Alarmregeln und Incident-Management
- Health Checks, Backups und Datenarchivierung
- Wiederholbare, auditierbare Sitzungsereignisse
Plug-in-Architektur
Plugin-SDK, Skill-System und vier Protokolle — je Build-Variante zuschneidbar
- 5 Build-Varianten: core / personal / coding / enterprise / headless
- Plugin-Marktplatz mit Hot Loading und Signaturprüfung
- Drei isolierte Skill-Quellen (integriert / Nutzer / Drittanbieter)
- Protokolle MCP / ACP / A2A / LSP
- Vierstufiger Start (T0–T3) mit Laden bei Bedarf
Lokal zuerst
Lokale Modelle über Ollama / llama.cpp, Daten bleiben standardmäßig auf dem eigenen Rechner
- Lokale Inferenz, vollständig offline lauffähig
- Eine einzige SQLite-Datei, die das Gerät nicht verlässt
- Sitzungen als nur anhängendes events.jsonl gespeichert
- Cloud-Anbieter als optionale Ergänzung
- Arbeitsbereich-isolierte Sandbox-Verzeichnisse
Smartes Routing
19 Aufgabenklassen × 4 Stufen × 5 Entscheidungsstufen, plus Anbieter-Fallback-Ketten
- 19 Aufgabentypen werden automatisch erkannt
- 4 Stufen: simple / medium / complex / reasoning
- 5 Entscheidungsstufen: Schalter → Schnellpfad → Sitzungsbindung → LLM-Bewertung → Stufe
- FallbackChain über Anbieter hinweg mit Retry-Richtlinien
- Preise und Kontextfenster stammen beide aus der Datenbank
Geschichtet wie ein Betriebssystem
Schlanker Kernel, Subsystem-Grenzen und Abhängigkeits-Gates; lokal zuerst ist der Standard, kein Schalter.
Kernel
@openliri/kernel ist ein eigenes Paket mit schlanker Schnittstelle, abgesichert durch die Gates K01–K08
Subsysteme
Werkzeuge, Kanäle, Gedächtnis, Routing, Sandbox und Aufgaben haben je eigene Einstiegspunkte und Grenzen
Gates
6 Ebenen Abhängigkeitsrichtung plus über 20 Architekturprüfungen — Verstöße blockieren die CI
Lokal zuerst
Daten bleiben standardmäßig auf dem eigenen Rechner; Modelle können vollständig lokal laufen
Fünf Ebenen Verteidigung in der Tiefe
Von der AST-Analyse zur Compile-Zeit bis zur Laufzeit-Sandbox: Regelanzahl, Schwellen und Rückfallstrategien stehen im Quellcode
🦀 Rust-AST-Analyse zur Compile-Zeit
Compile-Zeit Rust FFI führt eine AST-Analyse zur Sicherheit durch, bevor Code läuft, geprüft gegen 37 Regeln für gefährliche Befehle
Rust-AST-Analyse zur Compile-Zeit
Compile-ZeitRust FFI führt eine AST-Analyse zur Sicherheit durch, bevor Code läuft, geprüft gegen 37 Regeln für gefährliche Befehle
- Die Rust-FFI-Schicht parst den Bash-AST
- Bash-AST-Parsing mit 37 Regeln für gefährliche Befehle
- Erkennung von Variableninjektion und Blockieren von Pfad-Traversal
- Erkennung manipulierter Argumente mit Prüfung erlaubter Befehle
🔍 TypeScript-Semantikanalyse
Laufzeit Zusammengesetzte Befehle werden zur Laufzeit segmentweise bewertet, Ablehnungsgründe hängen an der genauen Anweisung
TypeScript-Semantikanalyse
LaufzeitZusammengesetzte Befehle werden zur Laufzeit segmentweise bewertet, Ablehnungsgründe hängen an der genauen Anweisung
- Zusammengesetzte Nur-Lese-Befehle passieren segmentweise statt pauschal abgelehnt zu werden
- 14 Injektionsmuster erkannt, darunter Zero-Width-Zeichen und vergiftete Umgebungsvariablen
- 10 Shell-spezifische Regeln (bash / PowerShell / cmd)
- Ablehnungsmeldungen nennen die echte Ursache und die betroffene Anweisung
⚙️ Guardrail-Regelengine
Richtlinie Ein konfigurierbares Richtlinien-Regelsystem mit feingranularer Autorisierung nach Werkzeug, Kanal und Nutzergruppe
Guardrail-Regelengine
RichtlinieEin konfigurierbares Richtlinien-Regelsystem mit feingranularer Autorisierung nach Werkzeug, Kanal und Nutzergruppe
- deny-by-default mit Allowlists
- Berechtigungsgranularität: Werkzeug → Regel → Fingerprint
- Regeländerungen greifen sofort, ohne Neustart
- Ablehnungen melden Regelquelle und die getroffene Anweisung
🤖 AutoMode-Klassifikator
Adaptiv Bewertet das Risiko aus Aufgaben- und Werkzeugkontext und entscheidet automatisch zwischen erlauben, nachfragen und ablehnen
AutoMode-Klassifikator
AdaptivBewertet das Risiko aus Aufgaben- und Werkzeugkontext und entscheidet automatisch zwischen erlauben, nachfragen und ablehnen
- Risikoeinstufung auf Basis von Befehlssemantik und Werkzeugkontext
- Befehle mit geringem Risiko werden per Richtlinie automatisch erlaubt
- Befehle mit hohem Risiko gehen in die Genehmigung und landen im Inbox
- Nicht vertrauenswürdige Befehle führen standardmäßig zur Rückfrage statt zur Ablehnung
🔒 Sandbox-Ausführung
Isolation 6 Isolations-Backends — Landlock / macOS / Windows / Docker / SSH / PTY — sodass übergriffige Befehle den Host nie erreichen
Sandbox-Ausführung
Isolation6 Isolations-Backends — Landlock / macOS / Windows / Docker / SSH / PTY — sodass übergriffige Befehle den Host nie erreichen
- Linux Landlock: Kernel-seitige Dateisystembeschränkungen
- macOS-Sandbox / Windows Low IL + Job-Objekt als Rückfallebene
- Docker: vollständige Isolation mit Ressourcen- und Netzwerkrichtlinien
- SSH-Fernausführung und kontrollierte PTY-Pfade
- Ehrliche Degradierung mit klarem Hinweis, wenn kein Backend verfügbar ist
Sicherheit in Zahlen
Rust-AST-Analyse zur Compile-Zeit · TypeScript-Semantikanalyse · Guardrail-Regelengine · AutoMode-Klassifikator · Sandbox-Ausführung
Smartes Routing
Wählt eine Modellstufe nach Aufgabentyp und Schwierigkeit und fällt bei nicht verfügbarem primären Anbieter in der konfigurierten Reihenfolge zurück
Erkennt 19 Aufgabentypen automatisch (8 häufige unten)
Entscheidungspipeline mit 5 Stufen
Anbieter-Fallback-Kette
Primäres Modell nicht verfügbar → automatischer Fallback → Degradierung ohne Unterbrechung
Sprachinteraktion
Mehr als Tippen — Bedarf aussprechen, Liri versteht, handelt und antwortet
Spracheingabe
Lokal faster-whisper und SenseVoice oder OpenAI Whisper in der Cloud
Sprachausgabe
Lokal Piper oder Edge / OpenAI in der Cloud, auch ein eigener Befehl
Werkzeugnativ
Sprache ist selbst ein Werkzeug, das das Modell bei Bedarf aufruft
Überall verfügbar
Desktop und Terminal teilen denselben Sprachdienst
Freihändige Bedienung · Multitasking · Barrierefreiheit · Sprachkürzel · Überall aussprechen, und es ist erledigt
Das zweite Gehirn
Wissensbasis → Gedächtnis → Sitzungsereignisse: drei abrufbare Kontextebenen, alle lokal gespeichert
Wissensbasis
Markdown auf der Platte plus semantischer Index, mit Quellenangabe in jedem Ergebnis
Gedächtnissystem
Gestuftes Gedächtnis plus SQLite-Vektortabellen, mit Relevanzgewichtung abgerufen
Sitzungs-Ereignisprotokoll
Alles, was in eine Modellanfrage eingeht, wird zu einem wiederholbaren Sitzungsereignis
Ordnen & Verwalten
Wissen im Leerlauf kuratieren, Kontext bei Überlauf komprimieren — zwei echte Hintergrundpipelines
DreamEngine-Pipeline in fünf Stufen
Geschichtete Kontextverwaltung
Läuft ein langes Gespräch über, werden zuerst die ältesten Runden verworfen; der Speicherbedarf zur Build-Zeit sinkt von O(Gesamt) auf O(Fenster). Ein Hinweis „Originaltext abrufbar“ überlebt den Schnitt, Details lassen sich seitenweise zurückholen, und Token-Wasserstände lösen eine automatische Komprimierung aus.
PDCA-Selbstverbesserungsschleife
Bei langlaufenden Aufgaben durchläuft Liri die Plan-Do-Check-Act-Schleife selbstständig: Aufgabe zerlegen → Schritte ausführen → Ergebnisse prüfen → Plan überarbeiten, bis die Aufgabe abgeschlossen ist oder eine Abbruchbedingung greift.
Desktop-Client
Gebaut mit Tauri 2.11 + React 19 · 429 TSX-Komponenten · 32 Funktionsseiten · eine vollständige Desktop-Erfahrung
Darstellung des Interface-Aufbaus, kein echter Screenshot
27 Messaging-Kanäle
Jeder der 27 Kanäle bringt einen passenden Adapter mit. Über die Umgebungsvariablen des Kanals wird er aktiviert, alternativ zur Build-Zeit entfernt.
27 Kanäle insgesamt · ein einheitlicher Katalog · Aktivierung pro Kanal · Zuschneiden zur Compile-Zeit
Ökosystem
Plugin-Marktplatz + MCP-Marktplatz + drei Skill-Quellen + Template-Marktplatz = ein kombinierbares Liri-Ökosystem
MCP-Marktplatz
5 Quelladapter, eine Suche
Plugin-Marktplatz
Lokal, npm und entfernte Verzeichnisse
Drei Skill-Quellen
Integriert, Nutzer und Drittanbieter — physisch getrennt
Templates & Protokolle
Agent- und Dokumentvorlagen, direkt einsetzbar
Mehr als eine Funktionsliste
Drei Dinge, die leicht übersehen werden und täglich im Einsatz sind.
Buddy-Persona
Kein Werkzeug, sondern ein Begleiter. Das Aussehen wird deterministisch aus einem Seed erzeugt, derselbe Buddy sieht also immer gleich aus; der Wachstumszustand wird gespeichert und über Sitzungen hinweg fortgeschrieben.
Transparente Kosten
Preise werden aus der Datenbank gelesen, die Zuordnung erfolgt über den vom Anbieter gemeldeten Modellnamen, jeder Aufruf wird in cost_records geschrieben; Budgets warnen, dann komprimieren sie, dann blockieren sie.
Vier Nutzergruppen
Entwickler führen Befehle aus und ändern Code; Sicherheitsverantwortliche erhalten AST-Level-Blockierung und Audit-Spuren; Ops-Teams betreiben es als Dienst; alle anderen erreichen es aus einer Chat-App.
Aktuelle Einschränkungen
Was in der schnellen Iteration noch nicht fertig ist — aufgeschrieben, damit es nicht selbst entdeckt werden muss.
Sicherheit wartet auf externes Audit
Externes Audit ausstehend5 Verteidigungsebenen und 6 Sandbox-Backends sind implementiert, mit 51 Sandbox-bezogenen Dateien zur Einzelprüfung — ein Sicherheitsaudit durch Dritte fehlt jedoch noch.
Desktop-Interaktionen werden noch verfeinert
In Feinarbeit429 TSX-Komponenten und 32 Seiten stehen; Tastenkürzel, Animationen und Randfälle werden weiter angepasst.
Marktplatz-Katalog ist noch klein
In ArbeitPlugin-Markt, MCP-Markt und Skill-Quellen funktionieren durchgängig, der installierbare Katalog wächst aber noch.
Erste Schritte
Drei Schritte: Abhängigkeiten installieren → API-Key konfigurieren → dev starten
Abhängigkeiten installieren
$ git clone https://github.com/cocosoft/Liri.git
$ cd Liri/app && bun install
API-Key konfigurieren
$ cp .env.example .env
$ # .env bearbeiten und API-Key eintragen Liri starten
$
bun run dev
Open Source · Community
Liri ist Open Source, jede Mitwirkung ist willkommen