Benachrichtigungen — Liu Terminal

Liu Terminal-Benachrichtigungen. Werden Sie benachrichtigt, wenn KI-Agenten Aufgaben beenden, mit konfigurierbaren Hooks und Tonalarmen.

liu-notify ist ein optionaler eigenständiger Prozess, während die Liu-GUI denselben Server im Prozess hosten kann. Er akzeptiert einen 24-Byte-v1- oder aktuellen 28-Byte-v2-Header mit optionalen Metadaten über einen lokalen Socket, drosselt per Token-Bucket, dedupliziert Ereignisse und leitet Ton oder Sprache pro (Agent, Ereignis)-Paar weiter.

Ausführen

# Neben der Haupt-App erstellen
cmake --build build --target liu-notify

# Den Daemon starten
./build/liu-notify daemon

# Einmaliges Ereignis senden
./build/liu-notify send --tool=claude --event=stop

Die Konfiguration befindet sich in ~/.config/liu/notify.conf – getrennt von der config.json der Haupt-App, sodass der Daemon auch ohne laufendes Liu nutzbar bleibt.

When Liu is running, its GUI hosts the notification server in-process; the CLI does not need to start a second daemon. If no server is listening, send exits without delivering an event. Use the standalone daemon only when notifications must work without Liu.

Unterstützte Agenten-Hooks

Liu kann während der Laufzeit der App Lebenszyklus-Hooks für die folgenden Agenten installieren und entfernen. Der Hook wird in die Konfiguration des Agenten geschrieben; beim Beenden der hostenden Instanz entfernt Liu seinen verwalteten Eintrag.

AgentHook-OberflächeSignaleHinweise
Claude Code~/.claude/settings.jsonstart · notify · completeUserPromptSubmit drives the working state; Notification and Stop can alert you.
Codex~/.codex/config.tomlcompleteThe Stop hook reports a completed turn. Run /hooks in Codex once to trust it.
Grok~/.grok/hooks/liu-notify.jsonnotify · completeNotification and top-level Stop events are handled; sub-agent completions stay silent.
OpenCode~/.config/opencode/plugins/liu-notify.jscompleteThe managed plugin listens for top-level session.idle events.
Antigravity~/.gemini/config/hooks.jsoncompleteA named Stop hook reports when the top-level execution loop ends.
Command Code~/.commandcode/settings.jsoncompleteIts Claude-compatible settings schema is wired to the top-level Stop event.

Copilot und custom werden vom Benachrichtigungsprotokoll und der Tonmatrix akzeptiert, aber Liu installiert dafür derzeit keinen automatischen Lebenszyklus-Hook. Andere Agenten laufen weiterhin normal in Liu-Tabs, erhalten jedoch keine automatischen Hook-Benachrichtigungen.

Werkzeug × Ereignis-Matrix

Konfigurieren Sie eine Tonregel für jede Kombination. Nicht gesetzte Zellen fallen auf die Sammelregel zurück.

startstopnotifyerrorcomplete
claude·····
copilot·····
codex·····
custom·····

Frame-Format

Der v1-Header ist 24 Byte groß; der aktuelle v2-Header ist wegen meta_len 28 Byte groß. Der vollständige Frame ist auf 4096 Byte begrenzt. tests/fuzz_notify_validate.c prüft per Fuzzing, sodass fehlerhafte Frames sicher abgewiesen werden.

offset  size  field
0       4     magic      ('N','T','F','Y')
4       2     version    (1 or current 2)
6       2     flags      (speak=1, bell=2)
8       1     tool_id    (claude=1, copilot=2, codex=3, custom=255)
9       1     event_id   (start=1, stop=2, notify=3, error=4, complete=5)
10      1     priority   (reserved)
11      1     source     (cli=0, stdin=1, test=2)
12      4     seq        (client nonce — for dedup)
16      4     title_len  (<= 256)
20      4     body_len   (<= 3072)
24      4     meta_len   (v2 only, <= 512)
payload         title, body, then metadata key=value lines
                total frame <= 4096 bytes

Der v2-Metadatenabschnitt enthält derzeit cwd=-, session=- und agent=-Zeilen. Hook-Sender ordnen damit ein Ereignis dem richtigen Bereich zu; unbekannte Schlüssel werden für Vorwärtskompatibilität ignoriert.

Plattform-Backends

Gleicher Frame, anderer Lautsprecher. macOS verwendet AVSpeechSynthesizer und Linux leitet an notify-send weiter. Jedes Backend befindet sich in einer eigenen Datei (platform_notify_macos.m, platform_notify_linux.c), sodass der Austausch oder Stub eines einzigen eine Ein-Datei-Änderung ist.

Nächste Konfiguration →

Dokumentation

Erste Schritte

Anleitungen

Referenz

Andere Sprachen

English · Türkçe · 简体中文 · 한국어 · Español · Italiano · Français · 日本語 · العربية