Notifications de Liu Terminal. Soyez averti quand les agents IA terminent des tâches, avec des hooks configurables et des alertes sonores.
liu-notify est un processus autonome facultatif, tandis que l’interface Liu peut héberger le même serveur dans son processus. Il accepte un en-tête v1 de 24 octets ou l’en-tête v2 actuel de 28 octets avec métadonnées facultatives sur un socket local, limite le débit, déduplique les événements et achemine son ou voix par paire (agent, événement).
# Compiler avec l'application principale
cmake --build build --target liu-notify
# Démarrer le démon
./build/liu-notify daemon
# Envoyer un événement ponctuel
./build/liu-notify send --tool=claude --event=stop
La configuration se trouve dans ~/.config/liu/notify.conf — séparée du config.json de l'application principale afin que le démon reste utilisable même sans que Liu ne fonctionne.
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.
Liu peut installer et supprimer des hooks de cycle de vie pour les agents ci-dessous pendant l’exécution de l’application. Le hook est écrit dans la configuration de l’agent et Liu supprime son entrée gérée à la fermeture de l’instance hôte.
| Agent | Surface du hook | Signaux | Notes |
|---|---|---|---|
| Claude Code | ~/.claude/settings.json | start · notify · complete | UserPromptSubmit drives the working state; Notification and Stop can alert you. |
| Codex | ~/.codex/config.toml | complete | The Stop hook reports a completed turn. Run /hooks in Codex once to trust it. |
| Grok | ~/.grok/hooks/liu-notify.json | notify · complete | Notification and top-level Stop events are handled; sub-agent completions stay silent. |
| OpenCode | ~/.config/opencode/plugins/liu-notify.js | complete | The managed plugin listens for top-level session.idle events. |
| Antigravity | ~/.gemini/config/hooks.json | complete | A named Stop hook reports when the top-level execution loop ends. |
| Command Code | ~/.commandcode/settings.json | complete | Its Claude-compatible settings schema is wired to the top-level Stop event. |
Copilot et custom sont acceptés par le protocole de notification bas niveau et la matrice sonore, mais Liu n’installe pas encore de hook automatique de cycle de vie pour eux. Les autres agents fonctionnent normalement dans les onglets Liu, sans recevoir de notifications automatiques de hook.
Configurez une règle sonore pour n'importe quelle combinaison. Les cellules non définies retombent sur la règle générale.
| start | stop | notify | error | complete | |
|---|---|---|---|---|---|
| claude | · | · | · | · | · |
| copilot | · | · | · | · | · |
| codex | · | · | · | · | · |
| custom | · | · | · | · | · |
L’en-tête v1 fait 24 octets; l’en-tête v2 actuel en fait 28 car il ajoute meta_len. La trame complète est limitée à 4096 octets. tests/fuzz_notify_validate.c teste la validation par fuzzing pour rejeter les trames malformées en toute sécurité.
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
La section de métadonnées v2 contient actuellement les lignes cwd=, session= et agent=. Les émetteurs de hooks s’en servent pour attribuer l’événement au bon volet; les clés inconnues sont ignorées pour la compatibilité future.
Même trame, haut-parleur différent. macOS utilise AVSpeechSynthesizer et Linux fait appel à notify-send. Chaque backend réside dans son propre fichier (platform_notify_macos.m, platform_notify_linux.c), de sorte que le remplacement ou le stub de l'un d'eux n'est qu'une modification d'un seul fichier.
English · Türkçe · 简体中文 · 한국어 · Español · Deutsch · Italiano · 日本語 · العربية