Schnelle Iteration · APIs und Doku können sich ändern
Liri Logo

Liri

Linglong Bird · Persönlicher KI-Assistent · Lokal zuerst · Sicherheit von Anfang an

v0.5.22 · MIT-Lizenz · Veröffentlicht am 2026-10-28 Schnelle Iteration · APIs und Doku können sich ändern
4,109 TS-Dateien 69 integrierte Werkzeuge 5 Sicherheitsebenen 27 Messaging-Kanäle 18 Buddy-Arten
$ git clone https://github.com/cocosoft/Liri.git
BUILD LOG

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.

156 Tage 116 Releases 20+ Architekturprüfungen
Die ganze Geschichte lesen

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

🧠
Kern

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
🛡️
Sicherheit

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
🛠️
Breite

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
🌐
Multiplattform

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

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
🔌
Flexibel

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
🏠
Datenschutz

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
🚦
Routing

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

  • 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

  • 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

  • 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

  • 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

  • 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

37
Regeln für gefährliche Befehle
AST-Level-Abgleich über bash / PowerShell / cmd
14
Injektionserkennungsregeln
Deckt Zero-Width-Zeichen, vergiftete Umgebungsvariablen und mehr ab
6
Sandbox-Backends
Landlock / macOS / Windows / Docker / SSH / PTY
51
Sandbox-Implementierungsdateien
TypeScript-Implementierungen unter app/src/sandbox

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)

💻
Coding
Codegenerierung, Debugging, Review
✍️
Schreiben
Doku, Texte, Übersetzung
📊
Analyse
Datenanalyse, Schlussfolgern, Planung
🔧
Werkzeuge
Dateien, Suche, Systemoperationen
🌐
Übersetzung
Mehrsprachige Übersetzung und Lokalisierung
🔍
Suche
Websuche und Informationsbeschaffung
🎨
Kreativ
Brainstorming, Design, Ideenfindung
💬
Chat
Alltägliche Konversation

Entscheidungspipeline mit 5 Stufen

1 L1: Router-Schalter Wenn aus, gehen Anfragen direkt an das Standardmodell ohne weitere Prüfung
2 L2: Schnellpfad Einfache Aufgaben oder Präfixregeln gehen direkt an das Modell der niedrigen Stufe
3 L3: Sitzungsbindung Ein Modell pro Gespräch bleibt erhalten, damit nicht ständig gewechselt wird
4 L4: LLM-Klassifikator Ein kleines Modell bewertet Aufgabentyp und Schwierigkeit und vergibt eine Stufe
5 L5: Stufenauflösung Ordnet simple/medium/complex/reasoning konkreten Modellen zu

Anbieter-Fallback-Kette

Primäres Modell nicht verfügbar → automatischer Fallback → Degradierung ohne Unterbrechung

Primär Primärer Anbieter · Modell der aktuellen Stufe
Fallback 1 Backup-Anbieter derselben Stufe
Fallback 2 Fallback-Anbieter einer anderen Stufe
Fallback 3 Jeder weitere konfigurierte Anbieter
Letzte Instanz Lokales Ollama / llama.cpp

Sprachinteraktion

Mehr als Tippen — Bedarf aussprechen, Liri versteht, handelt und antwortet

🎤

Spracheingabe

Lokal faster-whisper und SenseVoice oder OpenAI Whisper in der Cloud

Lokal faster-whisper
SenseVoice
OpenAI Whisper
Streaming-Erkennung
🔊

Sprachausgabe

Lokal Piper oder Edge / OpenAI in der Cloud, auch ein eigener Befehl

Lokal Piper
Edge TTS
OpenAI TTS
Eigener Befehl
⚡

Werkzeugnativ

Sprache ist selbst ein Werkzeug, das das Modell bei Bedarf aufruft

tts-Werkzeug
audio_play-Werkzeug
Spracheingabe
Wiedergabe der Antwort
📱

Überall verfügbar

Desktop und Terminal teilen denselben Sprachdienst

Tauri-Desktop
CLI-Terminal
HTTP API

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

Ebene 1: Wissensbasis

Wissensbasis

Markdown auf der Platte plus semantischer Index, mit Quellenangabe in jedem Ergebnis

Markdown auf der Platte Semantischer Index JSONL Stichwortsuche Vektorsuche RRF-Fusion
Ebene 2: Gedächtnis

Gedächtnissystem

Gestuftes Gedächtnis plus SQLite-Vektortabellen, mit Relevanzgewichtung abgerufen

Gestuftes Gedächtnis memory_vectors Relevanzgewichtung Gedächtnisbereinigung Kontextinjektion
Ebene 3: Quelle der Wahrheit

Sitzungs-Ereignisprotokoll

Alles, was in eine Modellanfrage eingeht, wird zu einem wiederholbaren Sitzungsereignis

Nur anhängendes events.jsonl Vor dem Schreiben persistiert Sitzungswiedergabe Auditierbarer Verlauf Registrierung zur Compile-Zeit

Ordnen & Verwalten

Wissen im Leerlauf kuratieren, Kontext bei Überlauf komprimieren — zwei echte Hintergrundpipelines

DreamEngine-Pipeline in fünf Stufen

01 Gather
Sammeln
Sitzungen und Dokumente sammeln, die kuratiert werden müssen
02 Analyze
Analysieren
Themen und wiederverwendbare Schlüsse extrahieren
03 Generate
Erzeugen
Notizen für die darüberliegenden Ebenen erstellen
04 Write
Schreiben
In Wissensbasis und Gedächtnis schreiben
05 Index
Indexieren
Vektor- und Stichwortindex neu aufbauen
🧠

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.

Geschichtete Fensterung
Alte Runden zuerst kürzen, wenn der Kontext überläuft
Abruf bei Bedarf
Originaltext seitenweise zurückholen
Dreistufige Komprimierung
Tier 1/2 inline + Tier 3 im Hintergrund
🔄

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.

Plan
Automatisch zerlegen
Do
Schrittweise ausführen
Check
Automatisch prüfen
Act
Automatisch korrigieren

Desktop-Client

Gebaut mit Tauri 2.11 + React 19 · 429 TSX-Komponenten · 32 Funktionsseiten · eine vollständige Desktop-Erfahrung

Liri Desktop · Tauri 2.11
💬
Chat-Panel
Liri · Linglong Bird
Hallo! Ich bin Liri — wobei kann ich helfen?
Bitte die Daten in diesem Projekt analysieren
Gerne, die Analyse läuft...
Nachricht eingeben und Enter zum Senden drücken...

Darstellung des Interface-Aufbaus, kein echter Screenshot

💬
Chat-Panel
Mehrere Gesprächsrunden
🤖
Modellverwaltung
Zwischen Modellen wechseln
📚
Wissensbasis
Dateien durchsuchen
🧠
Gedächtnis
Verlauf ansehen
⏰
Geplante Aufgaben
Cron-Zeitpläne
🔌
MCP-Anbindung
Server finden und installieren
💰
Kostenzentrum
Nutzung und Ausgaben
🎭
Buddy
Aussehen und Wachstumsdaten

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.

Messaging
Telegram
Discord
Slack
WhatsApp
Signal
Matrix
IRC
Line
Zalo
Plattformen in China
WeChat
WeCom
DingTalk
Feishu
QQ
Yuanbao
Kollaboration & Social
Microsoft Teams
Google Chat
Mattermost
Facebook Messenger
Twitter/X
Weitere Kanäle
Email
SMS
Webhook
Nostr
Claude
iMessage
Mobiler Zugang

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

GitHub
npm
Offizielles Verzeichnis
Smithery
Mitgelieferte Dienste
🧩

Plugin-Marktplatz

Lokal, npm und entfernte Verzeichnisse

Plugin-SDK + Adapter
Lebenszyklus & Hot Reload
Signaturprüfung
Konfigurationsendpunkte + CLI
5 Build-Varianten
⚡

Drei Skill-Quellen

Integriert, Nutzer und Drittanbieter — physisch getrennt

11 integrierte Skills
Nutzerdefinierte Skills
ClawHub als Drittquelle
Bedingte Orchestrierung
Skill-Komposition & -Zuordnung
📚

Templates & Protokolle

Agent- und Dokumentvorlagen, direkt einsetzbar

Agent-Template-Marktplatz
Dokument-Template-Marktplatz
MCP / ACP / A2A / LSP
Kombinierbare Plugins und Skills
Parametrisierte Template-Wiederverwendung

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.

18 Arten 8 Hüte 6 Augen 5 Seltenheitsstufen
🧾

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.

Preistabelle model_registry echte usage Buch pro Aufruf Tagesbudget
🎯

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.

Entwickler Sicherheitsverantwortliche Ops-Teams Alle anderen

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 ausstehend

5 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 Feinarbeit

429 TSX-Komponenten und 32 Seiten stehen; Tastenkürzel, Animationen und Randfälle werden weiter angepasst.

Marktplatz-Katalog ist noch klein

In Arbeit

Plugin-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

1

Abhängigkeiten installieren

$ git clone https://github.com/cocosoft/Liri.git
$ cd Liri/app && bun install
2

API-Key konfigurieren

$ cp .env.example .env
$ # .env bearbeiten und API-Key eintragen
3

Liri starten

$ bun run dev

Open Source · Community

Liri ist Open Source, jede Mitwirkung ist willkommen

GitHub

Projekt auf GitHub verfolgen, Issues öffnen oder PRs senden

github.com/cocosoft/liri

Community beitreten

An der Diskussion teilnehmen, Issues öffnen oder PRs senden