chat retitle
chat retitle benennt eine bestehende Konversation neu. Der Titel entsteht durch einen kurzen Sprachmodell-Pass aus der ersten Frage und der ersten Antwort der Konversation — derselbe Pass, der auch nach der ersten Antwort einer neuen Konversation automatisch läuft.
Wofür ist das?
- Alte Konversationen nachträglich benennen. Konversationen, die noch ohne den automatischen Naming-Pass entstanden sind, erscheinen in
chat listals(untitled). Ein einzelnerchat retitle-Aufruf vergibt einen sprechenden Titel. - Einen bestehenden Titel ersetzen. Wenn der automatische Titel das Thema verfehlt hat oder die Konversation in eine neue Richtung gegangen ist, überschreibt der Aufruf den vorhandenen Titel.
- Nach einer fehlgeschlagenen Auto-Vergabe nachziehen. Schlägt der automatische Pass nach der ersten Antwort fehl (Sprachmodelldienst kurz weg, Markerformat verfehlt), bleibt der Titel leer —
chat retitlestartet den Pass erneut.
Apparat vergibt Titel nicht für laufende Konversationen mehrfach: einmal nach der ersten Antwort, danach gilt der Titel als gesetzt. Wer ihn aktualisieren will, ruft chat retitle auf.
Aufruf
apparat chat retitle V1StGXAA
apparat chat retitle V1StGXAA --vault=demo
| Argument / Option | Bedeutung |
|---|---|
id |
Pflicht. NanoID der Konversation. |
| `--vault=<name | path |
chat retitle wird vom apparat-Wrapper transparent in den Container delegiert (der Naming-Pass läuft über das Sprachmodell).
Ein typischer Lauf
$ ./apparat chat retitle V1StGXAA --vault=demo Old title: (untitled) New title: WCAG-Kontrast für Fließtext ✅ Conversation "V1StGXAA" renamed.
Die Ausgabe zeigt den alten Titel (oder (untitled), wenn keiner gesetzt war) und den neuen.
Was der Pass tut
- Liest die erste User-Frage und die erste Assistant-Antwort der Konversation.
- Schickt beides in einem werkzeugfreien zweiten Pass an dasselbe Sprachmodell, das auch den Haupt-Dialog beantwortet — kein zweites Modell, kein zusätzlicher Pull-Footprint.
- Erwartet vom Modell genau eine Zeile im Format
TITLE: <text>und nimmt den Wert daraus auf. - Schreibt den neuen Titel in
<vault>/.apparat/conversations.sqliteund aktualisiert das Änderungsdatum der Konversation, sodasschat listsie an die richtige Stelle sortiert.
Der Pass hat ein kleines Token-Budget (rund 500 Tokens Eingabe, ~50 Tokens Ausgabe); lange Antworten werden vor dem Aufruf gekürzt, damit das Limit eingehalten bleibt.
Wenn der Pass scheitert
Schlägt der Pass fehl — Sprachmodelldienst nicht erreichbar, Markerformat verfehlt, Antwort leer — bricht das Kommando mit einer klaren Fehlermeldung ab (Exit 1) und der vorhandene Titel bleibt unverändert. Ein Re-Run nach behobener Ursache führt den Pass zu Ende.
Hat die Konversation noch keine Assistant-Antwort (nur eine User-Frage), bricht der Pass mit einer entsprechenden Meldung ab — der Naming-Pass braucht beides als Eingabe.
Voraussetzungen
- Lokaler Sprachmodell-Dienst läuft und das Modell ist gepullt —
chat pingbestätigt beides. - Mindestens eine User-Frage und eine Assistant-Antwort in der Konversation.
Exit-Codes
| Code | Bedeutung |
|---|---|
| 0 | Titel wurde aktualisiert. |
| 1 | Vault-Auflösung fehlgeschlagen, NanoID unbekannt, Konversation hat keine Assistant-Antwort, oder der Naming-Pass ist gescheitert. |
Verwandt
chat list— zeigt alle Konversationen samt Titel;(untitled)markiert die noch unbenannten.chat show— Header und Verlauf inspizieren, um zu prüfen, ob eine Umbenennung lohnt.chat start— vergibt nach der ersten Antwort automatisch einen Titel.