chat synthesize
chat synthesize nimmt eine einzelne Assistant-Antwort aus einer Konversation und schreibt sie als eigenständige Markdown-Notiz in den Vault. Das Modell formuliert die Antwort dabei in einem zweiten Pass um — ohne Bezug auf die Frage, ohne „du fragst …"-Wendungen — und schlägt einen Titel und einen Entitätstyp vor. Die zitierten NanoIDs landen als references: im Frontmatter.
Das ist der Akkumulations-Loop der Wissensarbeit: ein Dialog liefert eine Erkenntnis, die Erkenntnis wird zur Notiz, die Notiz wird Teil zukünftiger Dialoge.
Wofür ist das?
- Substanz behalten, Kontext verwerfen. Der Frage-Wortlaut interessiert dich nicht mehr; die Antwort ist die Erkenntnis.
chat synthesizemacht aus ihr eine eigenständig lesbare Notiz. - Eine Stelle aus dem Verlauf gezielt herausziehen. Mit
--turn=<position>wählst du eine bestimmte frühere Antwort statt der letzten. Die Positionsnummern stehen inchat show. - Eigene Reformulierung übernehmen. Mit
--no-rewriteübernimmst du die Antwort wörtlich (kein zweiter Modell-Pass) und musst Titel und Typ selbst setzen — sinnvoll, wenn die Antwort schon perfekt ist oder du den Pass aus Latenz-Gründen sparen willst.
Die Variante, die den gesamten Dialog als Notiz vom Typ conversation exportiert (mit Frage und Antwort als Sektionen), ist chat export.
Aufruf
apparat chat synthesize V1StGXAA apparat chat synthesize V1StGXAA --turn=4 --type=concept apparat chat synthesize V1StGXAA --no-rewrite --title="Auftraggeber-Cluster Tollwerk" --type=concept
| Argument / Option | Bedeutung |
|---|---|
id |
Pflicht. NanoID der Konversation. |
| `--vault=<name | path |
--turn=<n> |
Position der Assistant-Antwort, die übernommen werden soll. Default: die letzte Assistant-Antwort der Konversation. Eine Nicht-Assistant-Position wird mit klarer Fehlermeldung abgewiesen. |
--no-rewrite |
Überspringt den Reformulierungs-Pass und übernimmt die Antwort wörtlich. --title und --type sind dann Pflicht (im interaktiven Modus per Prompt nachfragbar). |
--title=<text> |
Überschreibt den vom Modell vorgeschlagenen Titel. |
--type=<type> |
Überschreibt den vom Modell vorgeschlagenen Entitätstyp. |
--language=<bcp47> |
Sprach-Tag der neuen Notiz. Default: der Wert von apparat.default_language. |
--created=<yyyy-mm-dd> |
Anlage-Datum der Notiz. Default: heute. |
--force |
Überspringt den Bestätigungs-Prompt. Pflicht in Verbindung mit --no-interaction. |
chat synthesize wird vom apparat-Wrapper transparent in den Container delegiert (Reformulierungs-Pass läuft über das Sprachmodell). Mit --no-rewrite ist die Delegation technisch nicht zwingend, der Wrapper delegiert trotzdem — Konsistenz schlägt hier Mikro-Optimierung.
Ein typischer Lauf
$ ./apparat chat synthesize V1StGXAA --vault=demo Conversation: V1StGXAA (turn #6) Title: Auftraggeber-Cluster Tollwerk Type: concept References: 3 (existing: 3, dropped: 0) Body preview: Drei der Projekte aus 2024 — WCAG-Kontrastregeln, Formular-Audit und Mobile-Touch-Targets — teilen einen gemeinsamen Auftraggeber: die Tollwerk GmbH. Die Verbindung läuft jeweils über Maria Beispiel als Projektleiterin, … … (12 more line(s)) Write "Auftraggeber-Cluster Tollwerk" to vault "demo"? [Y/n] y ✅ Synthesised conversation "V1StGXAA" turn #6 as entity "c9d4mNaA" (2026-05-02--auftraggeber-cluster-tollwerk--c9d4mNaA.md).
Die Vorschau zeigt:
- Title / Type — vom Modell vorgeschlagen, oder von
--title/--typeüberschrieben. - References: N (existing: M, dropped: K) — wie viele NanoID-Tokens das Modell genannt hat, wie viele davon noch im Graph existieren, wie viele nicht mehr. Nicht-auflösbare NanoIDs werden mit gelbem
⚠-Hinweis aufgeführt und nicht inreferences:aufgenommen. - Body preview — die ersten sechs Zeilen, mit
… (N more line(s))-Footer falls länger.
Aufbau der geschriebenen Notiz
--- type: concept created: 2026-05-02 title: "Auftraggeber-Cluster Tollwerk" language: de references: - V1StGXAA # Maria Beispiel - c9d4mNaA # Tollwerk GmbH - 7Hk2pQrS # Projekt Barrierefreiheit --- Drei der Projekte aus 2024 — WCAG-Kontrastregeln, Formular-Audit und Mobile-Touch-Targets — teilen einen gemeinsamen Auftraggeber: die Tollwerk GmbH. Die Verbindung läuft jeweils über Maria Beispiel als Projektleiterin …
Body-Links in der Antwort (z.B. [Maria Beispiel](V1StGXAA)) werden vor dem Schreiben in die kanonische Form ./<dateiname>.md gebracht — die Notiz ist damit sofort konsistent mit den restlichen Vault-Notizen, ohne dass entity edit noch einmal hinterher räumen muss.
Wenn das Modell das Marker-Format verfehlt
Der Reformulierungs-Pass erwartet vom Modell drei Marker (TITLE:, TYPE:, ___BODY___). Kleinere Modelle scheitern hier gelegentlich. In dem Fall bricht der Pass mit einer klaren Fehlermeldung ab (z.B. ❌ Synthesize response missing "___BODY___" marker.); Exit 1, keine Datei wird geschrieben. Ein Re-Run mit dem regulär konfigurierten Modell führt den Pass dann zu Ende. Wer den Pass komplett umgehen will, nutzt --no-rewrite.
Voraussetzungen
- Lokaler Sprachmodell-Dienst läuft und das Modell ist gepullt —
chat pingbestätigt beides. (Mit--no-rewriteentfällt diese Voraussetzung; das Kommando läuft dann auch ohne Sprachmodell.) - Graph-Index ist aktuell — sonst können zitierte NanoIDs nicht gegen den Bestand geprüft werden (
graph rebuild).
Exit-Codes
| Code | Bedeutung |
|---|---|
| 0 | Notiz wurde geschrieben. |
| 1 | Vault-Auflösung fehlgeschlagen, NanoID oder Turn-Position unbekannt, Reformulierungs-Pass gescheitert, Bestätigung abgelehnt, oder der Schreibvorgang ist gescheitert. |
Verwandt
chat export— den ganzen Dialog alsconversation-Notiz festhalten.chat show— die Positionsnummern (#0,#1, …) für--turn=<n>ablesen.entity show— die synthetisierte Notiz inspizieren.entity edit— die Notiz weiter ausbauen.