chat
Der chat-Namespace ist der Dialog mit deinem Vault: ein lokal laufendes Sprachmodell beantwortet Fragen, indem es selbständig durch deine Notizen sucht — Volltext-, Bedeutungs- und Beziehungssuche, das Lesen einzelner Notizen, das Auffinden von Pfaden im Beziehungs-Graph, das Aufspüren von Lücken. Folgefragen werden verstanden; Quellen werden mit ihrer NanoID zitiert; die Antwort tickt Wort für Wort über die Konsole.
Eine Konversation ist eine geordnete Folge von Turns (deine Frage, die Antwort, ggf. zwischengeschaltete Werkzeug-Aufrufe). Jeder neue Turn baut auf dem vorigen auf — das Modell sieht den vollen relevanten Verlauf. Der Verlauf liegt in einem vault-lokalen Speicher unter <vault>/.apparat/conversations.sqlite; er ist nicht Teil deiner Markdown-Wahrheit, sondern ephemer und jederzeit löschbar.
Bedienkommandos
Dialog führen:
chat start— eine neue Konversation eröffnen (interaktive Schleife).chat continue— eine bestehende Konversation interaktiv fortsetzen.chat ask— einen einzelnen Turn anhängen und beenden, für Skripte und Pipes.
Konversationen verwalten:
chat list— Konversationen des Vaults tabellarisch auflisten.chat show— Header und Verlauf einer Konversation anzeigen.chat retitle— den Titel einer Konversation per Sprachmodell-Pass neu vergeben.chat delete— eine Konversation samt allen Turns aus dem Speicher entfernen.
Aus dem Dialog Wissen machen:
chat export— die ganze Konversation als Notiz vom Typconversationin den Vault schreiben.chat synthesize— die fachliche Substanz einer einzelnen Antwort als eigenständige Notiz speichern, mit Quellenangaben.
Diagnose:
chat ping— prüft, ob der konfigurierte Sprachmodell-Dienst erreichbar ist und das Modell geladen hat.
Wie der Dialog funktioniert
Beim ersten Turn baut Apparat einen System-Prompt zusammen, der dem Modell den Vault-Kontext gibt, ohne dass es dafür einen Werkzeug-Aufruf verbrennt: Anzahl der Entitäten, häufigste Typen, dominante Sprache(n), die Verhaltensregeln (Quellen zitieren, in der Sprache der Inhalte antworten, den Vault nicht verändern dürfen) und die Beschreibung der verfügbaren Werkzeuge.
Dieser Snapshot wird einmal beim Start einer Konversation eingefroren und über deren Lebensdauer nicht geändert. Neue Notizen, die du zwischen Start und Folge-Turn anlegst, bleiben damit für diese Konversation unsichtbar, bis du eine neue startest. Das ist Absicht: das Modellverhalten bliebe sonst zwischen Turns inkonsistent.
Während der Antwortgenerierung darf das Modell sieben Werkzeuge aufrufen — alle nur lesend:
- Suche im Vault — wahlweise nach Such-Begriff, nach thematischer Nähe zu einer Referenz-Entität, nach Typ als reiner Bestandsüberblick oder nach Lücken in einem Frontmatter-Feld.
- Lesen einer Notiz — Frontmatter, Body-Anriss oder eine bestimmte Section, jeweils mit den ein- und ausgehenden Beziehungen.
- Beziehungen einer Entität — direkte Nachbarn als Triples, optional gefiltert nach Beziehungstyp.
- Pfad zwischen zwei Entitäten — die kürzeste Verbindung im Beziehungs-Graph („wie hängen X und Y zusammen?").
Welches Werkzeug das Modell einsetzt, entscheidet es selbst auf Basis der Frage. Du siehst auf der Konsole nur einen knappen [tool: <name>]-Marker; mit -v (--verbose) erscheint zusätzlich nach jedem Aufruf ein [tool: <name> → ok]- oder [tool: <name> → <fehler>]-Hinweis und am Ende ein [tokens: prompt=<n>, response=<m>]-Footer.
Read-Only-Verbot
Kein Werkzeug schreibt in deinen Vault. Schreibvorschläge, die das Modell formuliert („soll ich diese Person als Entität anlegen?"), bekommst du als Antworttext — die Umsetzung läuft dann über die regulären Vault-Kommandos wie entity new oder entity link. Auch chat export und chat synthesize gehen denselben Schreibpfad: sie bereiten eine Notiz vor und legen sie nach deiner Bestätigung über denselben Mechanismus an, den auch entity new benutzt.
Das ist eine bewusste, harte Trennung: das Sprachmodell darf vorschlagen, niemals ausführen. Damit bleibt deine Markdown-Sammlung die Wahrheit — auch dann, wenn du dem Dialog einmal zu sehr vertraust.
Voraussetzungen
- Ein lokales Sprachmodell im Compose-Stack oder im LAN. Apparat liefert den Container mit; das Modell wird beim ersten Start einmalig gepullt, danach läuft alles offline.
- Ein gerebuildeter Graph (
graph rebuild) und ein gefüllter Vektor-Index (vector rebuild) — die Werkzeuge sprechen beide Indizes an.
chat ping bestätigt in einer Zeile, ob der Sprachmodell-Dienst läuft und das richtige Modell geladen ist.
Container-Delegation
Die Kommandos, die mit dem Sprachmodell sprechen — chat ping, chat start, chat continue, chat ask, chat synthesize und chat retitle — werden vom apparat-Wrapper automatisch im Container ausgeführt. Du tippst sie auf dem Host wie jedes andere Kommando; die Delegation ist transparent.
Die rein lokal arbeitenden Kommandos — chat list, chat show, chat delete und chat export — laufen direkt auf dem Host. Sie greifen nur auf die vault-lokale conversations.sqlite und (bei export) auf den Graph zu.
Privatsphäre
Konversations-Inhalte verlassen weder deinen Host noch dein LAN. Der Compose-Stack zieht keine Cloud-Endpunkte; wer den Sprachmodell-Dienst stattdessen auf einem dedizierten Inferenz-Host im LAN betreibt, bleibt in derselben Vertrauenszone. Konversationen sind außerdem ephemer per Default — nur explizit exportierte oder synthetisierte Inhalte werden Teil des Vaults und damit Teil deiner Backup- und Sync-Kette.