TL;DR
OpenViking ist eine Open-Source-Kontextdatenbank für KI-Agenten, die das flache Vektorspeichern durch ein Dateisystem-Paradigma ersetzt. Kontext (Erinnerungen, Ressourcen, Fähigkeiten) wird hierarchisch unter viking://-URIs organisiert: L0 (~100 Tokens), L1 (~2k Tokens), L2 (vollständiger Inhalt). Benchmarks zeigen 91 % weniger Token-Kosten und 43 % bessere Aufgabenerfüllung als klassisches RAG.
Probiere Apidog noch heute aus
Einführung
Ihr KI-Agent vergisst ständig Dinge: Doppelte API-Requests, ignorierte Präferenzen, verlorene Testergebnisse. Das ist Standard bei heutigen Agenten. Die meisten Teams basteln RAG-Pipelines, Vektordatenbanken und eigene Speicherlösungen zusammen – mit fragmentiertem Kontext, explodierenden Token-Kosten und fehleranfälligem Retrieval als Resultat.
Daten aus LoCoMo10-Benchmarks bestätigen: Traditionelle RAG-Systeme erreichen nur 35–44 % Aufgabenabschluss und verbrauchen 24–51 Millionen Tokens.
OpenViking verfolgt einen anderen Ansatz: Statt flacher Vektorspeicherung wird der gesamte Kontext als hierarchisches Dateisystem unter viking:// (L0/L1/L2) abgelegt. Das Ergebnis: 52 % Aufgabenabschluss bei 91 % weniger Tokens.
💡 Apidog-User, die API-Testagenten entwickeln, können OpenViking zur Kontextpersistenz, Speicherung von Umgebungseinstellungen und semantischen Suche in API-Dokumentationen nutzen.
In diesem Leitfaden lernst du praxisnah, wie OpenViking Kontextfragmentierung löst, das L0/L1/L2-Modell funktioniert und wie du deinen ersten Server in 15 Minuten startest.
Das Agenten-Kontextproblem
KI-Agenten kämpfen mit Kontextproblemen, die klassische Software nicht kennt.
Praxisbeispiel: Ein Agent unterstützt API-Tests und muss dauerhaft verfolgen:
- Benutzereinstellungen („Staging-Umgebung“, „curl statt Python“)
- Projektkontext (Endpunkte, Authentifizierungsmethoden, Testergebnisse)
- Tool-Muster (häufige Fehler, fehlerhafte Endpunkte)
- Aufgabenhistorie (getestete Fälle, Fehler, Zeitpunkte)
Klassisches RAG speichert das als flache Chunks in einer Vektordatenbank und liefert Top-K ähnliche Fragmente – aber ohne Struktur, Hierarchie oder Nachvollziehbarkeit.
Fünf Kernherausforderungen
OpenViking adressiert diese Probleme systematisch:
| Herausforderung | Traditionelles RAG | OpenViking-Lösung |
|---|---|---|
| Fragmentierter Kontext | Erinnerungen, Ressourcen, Fähigkeiten getrennt | Vereinheitlichtes Dateisystem viking://
|
| Steigende Nachfrage | Lange Aufgaben erzeugen massiven Kontext | Hierarchisches L0/L1/L2, 91 % weniger Tokens |
| Schlechte Retrieval | Flache Vektorsuche, keine Übersicht | Rekursive Retrieval mit Intent-Analyse |
| Nicht beobachtbar | Black-Box Retrieval | Visualisierte Suchverläufe/Spuren |
| Begrenzte Iteration | Nur Interaktionshistorie | Automatisierte Sitzungsverwaltung, 6 Kategorien |
Fokuswechsel: Von „alles speichern, vage abrufen“ hin zu „strukturiert speichern, präzise abrufen“.
Was ist OpenViking?
OpenViking ist eine Open-Source-Kontextdatenbank für KI-Agenten (Apache 2.0).
OpenViking vereint Kontext in einem virtuellen Dateisystem. Erinnerungen, Ressourcen, Fähigkeiten sind als Verzeichnisse unter viking://-URIs organisiert:
viking://
├── resources/ # Wissen: Doku, Code, Webseiten
│ ├── my_project/
│ │ ├── docs/
│ │ │ ├── api/
│ │ │ └── tutorials/
│ │ └── src/
│ └── ...
├── user/ # Benutzereinstellungen, Erinnerungen
│ └── memories/
│ ├── preferences/
│ │ ├── writing_style
│ │ └── coding_habits
│ └── ...
└── agent/ # Agentenfähigkeiten, Skills
├── skills/
│ ├── search_code
│ ├── analyze_data
│ └── ...
├── memories/
└── instructions/
API-Funktionen für Agenten:
- Verzeichnisse navigieren:
ls viking://resources/my_project/docs/ - Semantisch suchen:
find "authentication methods" - Vollständigen Inhalt lesen:
read viking://resources/docs/auth.md - Zusammenfassungen holen:
abstract viking://resources/docs/
Analogie: Nicht mehr „Festplatte blind durchsuchen“, sondern zielgenau navigieren.
Kernfunktion 1: Dateisystem-Management-Paradigma
Alle Kontexttypen werden im selben Modell gespeichert.
Drei Kontexttypen
| Typ | Zweck | Lebenszyklus | Initiative |
|---|---|---|---|
| Ressource | Externes Wissen (Doku, Code, FAQ) | Langfristig, statisch | Benutzer fügt hinzu |
| Erinnerung | Kognition/Präferenzen | Langfristig, dynamisch | Agent extrahiert |
| Fähigkeit | Tools/Skills | Langfristig, statisch | Agent ruft auf |
Verzeichnisstruktur:
-
viking://resources/– Produkthandbücher, Code, Doku -
viking://user/memories/– Einstellungen, Entitäten, Events -
viking://agent/skills/– Tool-Definitionen, Konfigurationen -
viking://agent/memories/– Gelernte Muster, Cases
Unix-ähnliche API
from openviking import OpenViking
client = OpenViking(path="./data")
# Semantische Suche
results = client.find("user authentication")
# Verzeichnisinhalt listen
contents = client.ls("viking://resources/")
# Datei lesen
doc = client.read("viking://resources/docs/auth.md")
# L0-Zusammenfassung
abstract = client.abstract("viking://resources/docs/")
# L1-Übersicht
overview = client.overview("viking://resources/docs/")
API ist per Python SDK oder HTTP nutzbar und mit allen Agenten-Frameworks kompatibel.
Kernfunktion 2: Hierarchisches L0/L1/L2-Laden von Kontext
Großer Kontext in Prompts ist teuer. OpenViking verarbeitet alles automatisch in drei Ebenen:
| Ebene | Name | Datei | Token-Limit | Zweck |
|---|---|---|---|---|
| L0 | Abstrakt | .abstract.md |
~100 | Vektorsuche, Filterung |
| L1 | Übersicht | .overview.md |
~2k | Navigation, Abschnittsübersicht |
| L2 | Detail | Originaldateien | unbegrenzt | Voller Inhalt, On-Demand |
Funktionsweise
Beim Hinzufügen z.B. einer PDF:
- Text extrahieren (noch kein LLM-Call)
- Verzeichnisstruktur im AGFS anlegen
- Semantische Verarbeitung in Queue einreihen
- L0/L1 Bottom-up generieren
Beispielstruktur:
viking://resources/my_project/
├── .abstract.md # L0: Kurzbeschreibung
├── .overview.md # L1: Übersicht
├── docs/
│ ├── .abstract.md
│ ├── .overview.md
│ ├── auth.md # L2: Volltext
│ └── ...
Auswirkungen auf das Token-Budget
# Klassisch: Alles laden (teuer)
full_docs = retrieve_all("authentication") # 50k tokens
# OpenViking: L1 laden, nur bei Bedarf L2
overview = client.overview("viking://resources/docs/auth/") # 2k tokens
if needs_more_detail(overview):
content = client.read("viking://resources/docs/auth/oauth.md")
In Benchmarks: 91 % Tokenersparnis & 43 % höhere Abschlussrate als klassisches RAG.
Kernfunktion 3: Verzeichnisrekursive Retrieval
Klassische Vektorsuche reicht bei komplexen Abfragen nicht aus. OpenViking nutzt einen rekursiven Retrieval-Prozess:
1. Intent-Analyse
↓
2. Initiales Positionieren (Verzeichnisse)
↓
3. Verfeinerte Suche innerhalb von Verzeichnissen
↓
4. Rekursiver Abstieg in Unterverzeichnisse
↓
5. Aggregation & Relevanzsortierung
Beispiel: Abfrage „Wie authentifiziere ich Benutzer?“
- Intent erkannt (How-to)
- Hoch bewertete Verzeichnisse (
viking://resources/docs/auth/) - Dateisuche:
oauth.md,jwt.md - Tiefer gehen in
auth/providers/ - Aggregierte, sortierte Ergebnisse inkl. Retrieval-Trace
Vorteil: Höhere Genauigkeit, da Kontext im Ganzen verstanden wird.
Kernfunktion 4: Visualisierte Retrieval-Spuren
Klassisches RAG ist eine Black Box. OpenViking zeigt, wie Retrieval ablief:
Retrieval-Trace für "OAuth Token-Aktualisierung"
├── viking://resources/docs/
│ ├── [0.45] .abstract.md: übersprungen
│ └── [0.89] auth/: ausgewählt
│ ├── [0.92] oauth.md: ZURÜCKGEGEBEN
│ ├── [0.34] jwt.md: übersprungen
│ └── [0.85] providers/google.md: ZURÜCKGEGEBEN
Nutzen: Sie sehen, was wie ausgewählt/übersprungen wurde – essentiell fürs Debugging.
Kernfunktion 5: Automatische Sitzungsverwaltung
OpenViking hat eine eingebaute Iterationsschleife für Erinnerungen: Nach jeder Sitzung werden automatisch relevante Erinnerungen extrahiert und abgelegt.
Sechs Erinnerungskategorien
| Kategorie | Eigentümer | Ort | Beschreibung | Aktualisierung |
|---|---|---|---|---|
| Profil | Benutzer | user/memories/.overview.md |
Basisinfos | Anhängbar |
| Präferenzen | Benutzer | user/memories/preferences/ |
User-Settings | Anhängbar |
| Entitäten | Benutzer | user/memories/entities/ |
Personen, Projekte | Anhängbar |
| Ereignisse | Benutzer | user/memories/events/ |
Entscheidungen, Milestones | Keine |
| Fälle | Agent | agent/memories/cases/ |
Gelernte Fälle | Keine |
| Muster | Agent | agent/memories/patterns/ |
Gelernte Patterns | Keine |
Erinnerungsextraktion in der Praxis
# Sitzung starten
session = client.session()
# Nachrichten hinzufügen
await session.add_message("user", [{"type": "text", "text": "Ich bevorzuge Dunkelmodus in der UI"}])
await session.add_message("assistant", [{"type": "text", "text": "Okay, ich nutze Dunkelmodus in Screenshots."}])
# Tool-Nutzung aufzeichnen
await session.add_usage({
"tool": "screenshot",
"parameters": {"theme": "dark"},
"result": "success"
})
# Commit löst Erinnerungsextraktion aus
await session.commit()
Beim Commit werden Sitzungen komprimiert, Erinnerungen per LLM extrahiert und in die passenden Verzeichnisse einsortiert.
Architekturübersicht
OpenViking trennt Inhalt und Index:
| Ebene | Technologie | Speichert |
|---|---|---|
| AGFS | Benutzerdefiniertes FS | L0/L1/L2, Multimedia, Relationen |
| Vektorindex | Vektor-DB | URIs, Embeddings, Metadaten |
Vorteil: Nur Referenzen im Vektorindex, keine doppelten Textblobs.
Schnellstart: OpenViking-Server deployen
Voraussetzungen
- Python 3.10+
- Go 1.22+ (für AGFS)
- C++ Compiler (GCC 9+/Clang 11+)
- OS: Linux, macOS, Windows
Schritt 1: OpenViking installieren
pip install openviking --upgrade --force-reinstall
Optional: Rust CLI
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash
Schritt 2: Modelle konfigurieren
Lege ~/.openviking/ov.conf an:
{
"storage": {
"workspace": "/home/your-name/openviking_workspace"
},
"log": {
"level": "INFO",
"output": "stdout"
},
"embedding": {
"dense": {
"api_base": "https://api.openai.com/v1",
"api_key": "your-openai-api-key",
"provider": "openai",
"dimension": 3072,
"model": "text-embedding-3-large"
},
"max_concurrent": 10
},
"vlm": {
"api_base": "https://api.openai.com/v1",
"api_key": "your-openai-api-key",
"provider": "openai",
"model": "gpt-4o",
"max_concurrent": 100
}
}
Unterstützte Anbieter:
| Anbieter | Embedding-Modelle | VLM-Modelle |
|---|---|---|
| volcengine | doubao-embedding-vision | doubao-seed-2.0-pro |
| openai | text-embedding-3-large | gpt-4o, gpt-4-vision |
| litellm | LiteLLM-Proxy | Claude, Gemini, DeepSeek, Qwen... |
Schritt 3: Server starten
openviking-server
# oder im Hintergrund
nohup openviking-server > /data/log/openviking.log 2>&1 &
Schritt 4: Erste Ressource hinzufügen
# Rust CLI
ov add-resource https://docs.example.com/api-guide.pdf
# Python SDK
from openviking import OpenViking
client = OpenViking(path="./data")
client.add_resource("https://docs.example.com/api-guide.pdf")
Schritt 5: Suchen & Abrufen
# Nach Verarbeitung suchen
ov find "authentication methods"
# Verzeichnisinhalt listen
ov ls viking://resources/
# Verzeichnisbaum anzeigen
ov tree viking://resources/docs -L 2
# Grep-ähnliche Suche
ov grep "OAuth" --uri viking://resources/docs/
Schritt 6: VikingBot aktivieren (optional)
pip install "openviking[bot]"
openviking-server --with-bot
# In neuem Terminal:
ov chat
Leistungs-Benchmarks
OpenViking wurde mit klassischen RAG-Ansätzen (LanceDB) und nativen Systemen anhand von LoCoMo10 (1.540 Dialogfälle) verglichen.
Aufgabenabschlussraten
| System | Abschlussrate | Eingabe-Tokens |
|---|---|---|
| OpenClaw (nativ) | 35.65% | 24.6M |
| OpenClaw + LanceDB | 44.55% | 51.6M |
| OpenClaw + OpenViking | 52.08% | 4.3M |
Schlüsselergebnisse
- 43 % mehr Aufgabenabschluss bei 91 % Token-Einsparung ggü. nativ
- 17 % mehr Abschluss bei 92 % Token-Reduktion ggü. LanceDB
- Hierarchische Retrieval fand relevantere Kontexte bei geringerem Aufwand
OpenViking mit Apidog integrieren
Apidog-User können OpenViking für persistente Kontexte, Speicherung von API-Dokumentationen und Benutzereinstellungen einsetzen.
Schritt 1: OpenViking-Server einrichten
Folge dem Schnellstart weiter oben.
Schritt 2: Apidog API-Doku importieren
ov add-resource https://docs.apidog.com/overview?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation
ov add-resource https://docs.apidog.com/api-testing?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation
Schritt 3: Benutzereinstellungen speichern
from openviking import OpenViking
client = OpenViking(path="./apidog-agent-data")
session = client.session()
await session.add_message("user", [{
"type": "text",
"text": "Immer die Staging-Umgebung für API-Tests verwenden"
}])
await session.commit()
Schritt 4: Kontext während des Testens abfragen
# Relevante Endpunkte suchen
results = client.find("authentication endpoints")
for ctx in results.resources:
print(f"Gefunden: {ctx.uri}")
# Benutzereinstellungen abrufen
prefs = client.find("staging environment preference", target_uri="viking://user/memories/")
Schritt 5: Mit Agenten-Framework verbinden
# Python SDK
from openviking import OpenViking
client = OpenViking(path="./data")
# HTTP API
import httpx
response = httpx.post(
"http://localhost:1933/api/v1/search/find",
json={"query": "authentication endpoints"},
headers={"X-API-Key": "your-api-key"}
)
Fortgeschrittene Techniken & Best Practices
Profi-Tipps für Produktion
1. Kontext vorwärmen
ov add-resource https://docs.example.com --wait
2. Kontextablauf automatisieren
await session.archive(max_age_days=7)
3. Vektorindex überwachen
ov debug stats
Fehler, die du vermeiden solltest
- L2-Inhalte frühzeitig laden: Immer mit L0/L1 starten
- Sitzungs-Commits überspringen: Erinnerungen werden nur beim Commit extrahiert
- Einzelne Verzeichnisse überladen: Große Ressourcen aufteilen
- Retrieval-Spuren ignorieren: Nutze sie aktiv fürs Debugging
Leistungsoptimierung
| Szenario | Empfehlung |
|---|---|
| Hohes Abfragevolumen | OpenViking als HTTP-Server mit Pooling betreiben |
| Große Dokumente | Vorab in thematische Chunks splitten |
| Niedrige Latenz | L0/L1 für wichtige Inhalte vorab generieren |
| Multi-Tenant | Separate Workspaces pro Tenant |
Sicherheit
- API-Schlüssel als Umgebungsvariable/Secret, nie in Klartext
- HTTPS für HTTP-Server aktivieren
- Ratenbegrenzung für Endpunkte
- Unterschiedliche Keys für Dev/Prod
Praxisbeispiele
1. KI-Codierungsassistenten
- Navigation über
viking://resources/my_project/src/ - Erinnerung an Coding-Präferenzen
- Kontextsensitive API-Doku beim Generieren
Effekt: 67 % weniger „Vergesslichkeitsfehler“, 43 % Token-Ersparnis
2. Kundensupport-Agenten
- Produktdoku unter
viking://resources/product/ - Kundenhistorien unter
viking://user/memories/past_issues/ - Support-Playbooks als Skills
Effekt: Erstkontakt-Lösungsrate von 52 % auf 71 %
3. Forschungsassistenten
- Papers nach Thema (
viking://resources/papers/nlp/) - Methoden als Skills
- Automatische Schlüsselergebnis-Extraktion
Effekt: 3x schnellere Paper-Suche mit Semantik
Alternativen & Vergleiche
OpenViking vs. klassische Vektordatenbanken
| Aspekt | Traditionelles RAG | OpenViking |
|---|---|---|
| Speichermodell | Flache Vektor-Chunks | Hierarchisches Dateisystem |
| Retrieval | Top-K-Ähnlichkeit | Verzeichnisrekursiv + Intent |
| Beobachtbarkeit | Black Box | Visualisierte Retrieval-Spuren |
| Token-Effizienz | Alles laden/kürzen | Progressives L0/L1/L2-Laden |
| Speicher-Iteration | Manuell/keine | Automatische Sitzungsverwaltung |
| Kontexttypen | Nur Dokumente | Ressourcen, Erinnerungen, Skills |
| Debugging | Raten | Verzeichnis-Durchlaufprotokolle |
OpenViking vs. LangChain Speicher
| Aspekt | LangChain Speicher | OpenViking |
|---|---|---|
| Persistenz | Nur Konversationspuffer | Komplette FS-Struktur mit L0/L1/L2 |
| Skalierbarkeit | Kontextfenster-Limit | Hierarchisches Laden, keine harte Grenze |
| Retrieval | Linear | Rekursiv, semantisch |
| Speichertypen | Ein Puffer | 6 Kategorien (Profil, Präferenzen, ...) |
Wann klassische Alternativen sinnvoll sind
Klassische Vektor-DBs verwenden, wenn:
- Latenz < 100 ms gefordert
- Simple Keyword-Suche genügt
- Bestehende RAG-Pipeline funktioniert ohne Probleme
OpenViking verwenden, wenn:
- Lange, speicherintensive Agenten-Interaktionen
- Multi-Typ-Kontext nötig (Doku, Präferenzen, Tools)
- Token-Kosten entscheidend sind
- Debugbare, nachvollziehbare Retrieval nötig
Produktionsbereitstellung
Empfohlene Infrastruktur:
- Cloud: Volcengine ECS o. Ä.
- OS: veLinux oder Ubuntu 22.04+
- Speicher: SSD-Volume für AGFS
- Netzwerk: Latenzarm zu Modell-APIs
Sicherheitsüberlegungen:
- API-Keys als ENV/Secret Manager
- Auth für HTTP-Endpunkte aktivieren
- HTTPS für Kommunikation
- Ratenbegrenzung gegen Missbrauch
Überwachung:
{
"log": {
"level": "INFO",
"output": "file",
"path": "/var/log/openviking/server.log"
}
}
Überwache:
- Queue-Tiefe für semantische Verarbeitung
- Vektorsuch-Latenz
- AGFS IO
- Erfolgsrate Erinnerungsextraktion
Einschränkungen & Überlegungen
Aktuelle Einschränkungen
- Fokus auf Python (andere Sprachen via HTTP)
- Abhängigkeit von externen VLM-/Embedding-Modellen
- Lernkurve wegen Dateisystem-Paradigma
- APIs in Entwicklung, Änderungen möglich
Wann OpenViking nutzen?
Geeignet für:
- Lang laufende Agenten-Konversationen mit Speicherbedarf
- Multi-Typ-Kontext (Doku, Präferenzen, Tools)
- Debugbare Retrieval erforderlich
- Token-Kostenoptimierung
Alternativen besser bei:
- Simpler One-Shot-Q&A
- Funktionierende RAG-Pipeline ohne Pain Points
- Retrieval-Latenz < 100 ms zwingend
Der Weg nach vorn
OpenViking ist noch jung (v0.1.x, Anfang 2025). Geplante Features:
- Multi-Tenant: Isolierte Workspaces
- Analysen: Retrieval-Metriken, Nutzungs-Dashboards
- Plugin-Ökosystem: Integrationen mit Agenten-Frameworks
- Edge-Betrieb: Lightweight-Modus
- MCP-Support: Model Context Protocol nativ
Community-Contributions sind willkommen. Open Source: Projektseite.
Fazit
OpenViking ist ein Paradigmenwechsel für Agenten-Kontextmanagement. Informationsorganisation als Dateisystem beseitigt Fragmentierung, Token-Verschwendung und Black-Box-Retrieval klassischer RAG-Systeme.
Wichtigste Learnings
-
Dateisystem-Paradigma: Kontext unter
viking://-URIs für Erinnerungen, Ressourcen, Skills - L0/L1/L2: 91 % Token-Einsparung durch progressives Laden
- Verzeichnisrekursive Retrieval: Genauigkeit steigt durch strukturierte Suche
- Visualisierte Spuren: Debugging und Nachvollziehbarkeit
- Automatische Sitzungsverwaltung: Agent lernt aus jeder Interaktion



Top comments (0)