Blog
Push-Benachrichtigungen fuer KI-Coding-Workflows: Zuverlaessige Zustellung entwickeln
Das Benachrichtigungssystem von Tactic Remote integriert sich mit Claude Code Hooks, um Aufgabenabschluesse, Genehmigungsanfragen und Fehler zuverlaessig auf dein iPhone zu liefern.
Weitere Produkt- und Engineering-Updates aus dieser Kategorie.
Kategorie öffnenClaude Code kann fuer eine komplexe Aufgabe Minuten oder Stunden laufen. Ohne Benachrichtigungen schaust du entweder staendig auf das Terminal oder kommst periodisch zurueck und hoffst, nichts Wichtiges verpasst zu haben. Keiner der beiden Ansaetze respektiert deine Zeit.
Push-Benachrichtigungen machen Tactic Remote zu einem Workflow-Tool statt zu einem reinen Remote-Viewer. Dieser Artikel behandelt, wie wir das Benachrichtigungssystem gebaut haben, die Integration mit Claude Code Hooks, das Reliability-Engineering hinter der Zustellung und die Nutzungsmuster, die wir bei echten Entwicklern beobachtet haben.
Die zentrale Erkenntnis
Der Wert von Push-Benachrichtigungen in Tactic Remote liegt nicht darin, dass "dein Telefon vibriert". Er liegt darin, dass Benachrichtigungen aendern, wann und wie du mit deinem KI-Coding-Agenten interagierst. Statt synchroner Terminal-Ueberwachung erhaeltst du asynchrones Aufgabenmanagement:
- Starte eine Claude Code Aufgabe von deinem Mac (oder von der iPhone-App).
- Geh weg. Mach Kaffee. Geh in ein Meeting. Fahre nach Hause.
- Dein Telefon benachrichtigt dich, wenn die Aufgabe abgeschlossen ist, einen Fehler erkennt oder deine Genehmigung braucht.
- Du pruefst und antwortest in Sekunden, dann machst du weiter mit dem, was du vorher getan hast.
Wir nennen das den "Schau aufs Telefon, nicht auf den Schreibtisch"-Workflow. Es ist das gleiche mentale Modell wie bei CI/CD-Benachrichtigungen — du beobachtest nicht deine Build-Pipeline, du wartest darauf, dass sie dir das Ergebnis mitteilt.
Claude Code Hook-Integration
Das Benachrichtigungssystem wird durch den Hook-Mechanismus von Claude Code angetrieben. Hooks sind benutzerkonfigurierbare Skripte, die Claude Code an definierten Lebenszyklus-Punkten ausfuehrt. Die Mac-Companion-App von Tactic Remote registriert Hooks fuer drei Ereignistypen:
Aufgabenabschluss — Wird ausgeloest, wenn Claude Code die Verarbeitung einer Anfrage abschliesst. Der Hook erfasst den Exit-Status, eine Zusammenfassung der vorgenommenen Aenderungen und die letzten Zeilen der Terminalausgabe.
Genehmigung erforderlich — Wird ausgeloest, wenn Claude Code eine Operation erkennt, die menschliche Bestaetigung erfordert (Dateischreibvorgaenge ausserhalb des Projektverzeichnisses, Shell-Befehle, Netzwerkanfragen usw.). Der Hook erfasst die Beschreibung der anstehenden Operation und eine eindeutige Genehmigungs-ID.
Fehler — Wird ausgeloest, wenn Claude Code einen fatalen Fehler, einen Tool-Ausfall oder ein API-Timeout erkennt. Der Hook erfasst die Fehlermeldung und den relevanten Kontext.
Jeder Hook-Aufruf sendet einen strukturierten Payload an den Mac-Companion-Server, der das Benachrichtigungs-Routing bestimmt, den APNs-Payload (Apple Push Notification service) konstruiert und ihn ueber unser Benachrichtigungs-Relay versendet.
Benachrichtigungstypen in der Praxis
Jeder Benachrichtigungstyp ist fuer ein bestimmtes Interaktionsmuster konzipiert:
Aufgabenabschluss-Benachrichtigungen enthalten die Aufgabenzusammenfassung und einen Statusindikator (Erfolg oder teilweiser Abschluss). Durch Tippen auf die Benachrichtigung oeffnet sich die Tactic Remote App direkt in der Terminal-Ansicht der abgeschlossenen Sitzung, damit du die Ausgabe ueberpruefen kannst.
Genehmigungs-Benachrichtigungen haben die hoechste Prioritaet. Sie enthalten die Operationsbeschreibung ("Claude moechte rm -rf build/ im Projektverzeichnis ausfuehren") und zeigen Genehmigen/Ablehnen-Aktionen direkt auf dem Benachrichtigungs-Banner. Auf dem iPhone kannst du auf eine Genehmigung antworten, ohne die App zu oeffnen — druecke lange auf die Benachrichtigung, um die Inline-Aktionen zu sehen. Unsere Telemetrie zeigt, dass 62% der Genehmigungen ueber Benachrichtigungsaktionen abgewickelt werden, ohne die App vollstaendig zu oeffnen.
Fehler-Benachrichtigungen enthalten die Fehlerkategorie und eine gekuerzte Nachricht. Sie sind handlungsrelevant — durch Tippen oeffnet sich die Sitzungsansicht, in der du den vollstaendigen Fehlerkontext ueberpruefen und entscheiden kannst, ob du die Aufgabe neu starten oder aendern moechtest.
Zuverlaessigkeit der Zustellung
APNs garantiert die Zustellung von Push-Benachrichtigungen nicht. Apples Dokumentation besagt, dass Benachrichtigungen "Best Effort" sind und aufgrund von Geraete-Energiemanagement, Netzwerkbedingungen oder Ratenlimits verloren gehen koennen. Fuer ein Entwicklertool, bei dem eine verpasste Genehmigungs-Benachrichtigung eine blockierte Aufgabe bedeutet, ist "Best Effort" ungenuegend.
Wir schichten mehrere Zuverlaessigkeitsmechanismen auf APNs:
Serverseitiges State-Tracking. Der Mac-Companion-Server fuehrt ein Zustellungsprotokoll fuer jede Benachrichtigung. Jede Benachrichtigung hat eine eindeutige ID, einen Zeitstempel und einen Zustellungsstatus (ausstehend, gesendet, bestaetigt, abgelaufen).
Clientseitige Bestaetigung. Wenn die iPhone-App eine Benachrichtigung empfaengt und anzeigt, sendet sie eine Bestaetigung an den Mac-Companion-Server zurueck. Wenn innerhalb von 30 Sekunden keine Bestaetigung eingeht, sendet der Server erneut.
Exponentielles Backoff bei erneuter Uebertragung. Unbestaetigte Benachrichtigungen werden nach 30s, 60s und 120s Intervallen erneut versucht. Nach drei Fehlschlaegen wird die Benachrichtigung als moeglicherweise nicht zustellbar markiert und in der Status-UI des Mac-Companions gekennzeichnet.
In-App-Synchronisation. Wenn die iPhone-App geoeffnet wird (oder aus dem Hintergrund zurueckkehrt), fragt sie den Mac-Companion nach unbestaetigten Benachrichtigungen ab und zeigt sie im Benachrichtigungscenter an. Dies fängt alle Benachrichtigungen auf, die APNs vollstaendig verworfen hat.
Deduplizierung. Bei erneuter Uebertragung besteht das Risiko doppelter Zustellung. Jede Benachrichtigung traegt eine eindeutige ID, die der iPhone-Client verfolgt. Duplikate werden stillschweigend verworfen — du siehst nie dieselbe Genehmigungsanfrage zweimal.
In der Praxis liegt unsere Zustellungserfolgsrate (Benachrichtigung gesendet bis Benachrichtigung bestaetigt) bei 97,3% innerhalb von 10 Sekunden und 99,6% innerhalb von 60 Sekunden ueber unsere Beta-Nutzerbasis.
Details zur Benachrichtigungs-Deduplizierung
Deduplizierung verdient besondere Aufmerksamkeit, weil sie das Vertrauen der Nutzer beeinflusst. Wenn ein Entwickler dieselbe "Dateischreibvorgang genehmigen"-Benachrichtigung zweimal sieht, fragt er sich, ob er sie bereits genehmigt hat. Wenn er eine Genehmigungs-Benachrichtigung fuer eine bereits genehmigte Operation sieht, fragt er sich, ob seine Genehmigung empfangen wurde.
Unsere Deduplizierung arbeitet auf zwei Ebenen:
Transport-Ebene. Jede Benachrichtigung hat eine UUID, die ueber erneute Uebertragungen hinweg bestehen bleibt. Der iPhone-Client fuehrt ein rollierendes Fenster von 500 kuerzlich gesehenen UUIDs. Jede Benachrichtigung mit einer zuvor gesehenen UUID wird vor der Anzeige verworfen.
Semantische Ebene. Speziell bei Genehmigungs-Benachrichtigungen prueft der Client, ob die Genehmigungs-ID bereits bearbeitet wurde. Wenn du eine Operation ueber die erste Benachrichtigungszustellung genehmigt hast und eine erneute Uebertragung eintrifft, wird diese unterdrueckt, selbst wenn ihre Transport-UUID sich unterscheidet (was passieren kann, wenn der Server einen neuen Push-Payload fuer den Wiederholungsversuch generiert hat).
Wie Entwickler Benachrichtigungen tatsaechlich nutzen
Nach vier Monaten Beta-Daten haben sich klare Muster herauskristallisiert:
Spitzenzeiten fuer Benachrichtigungen sind 9-11 Uhr und 14-16 Uhr in der lokalen Zeitzone des Nutzers — entsprechend dem Beginn von Coding-Sitzungen und den Produktivitaetsbloecken nach dem Mittagessen.
Die durchschnittliche Antwortzeit auf Genehmigungs-Benachrichtigungen betraegt 12 Sekunden. Das P95 liegt bei 47 Sekunden. Das bedeutet, dass selbst am Tail die menschliche Genehmigung weniger als eine Minute zur Aufgabenausfuehrung hinzufuegt — ein geringer Preis fuer die Sicherheitsgarantie.
Der haeufigste benachrichtigungsgetriebene Workflow: Eine mehrstufige Refactoring-Aufgabe starten, den Schreibtisch fuer ein Meeting verlassen, waehrend des Meetings 2-3 Dateioperationen ueber Benachrichtigungsaktionen genehmigen und zurueckkommen, um die Aufgabe abgeschlossen vorzufinden.
Benachrichtigungsvolumen: Der Median der aktiven Nutzer erhaelt 8 Benachrichtigungen pro Tag. Power-User (P95) erhalten etwa 30. Wir haben in unseren Umfragen keine Benachrichtigungsmuedigkeit festgestellt — wahrscheinlich weil jede Benachrichtigung ein handlungsrelevantes Ereignis darstellt und kein Status-Update.
Stummschaltungsmuster: 15% der Nutzer konfigurieren "Fokusmodus"-Regeln, die Nicht-Genehmigungs-Benachrichtigungen waehrend bestimmter Stunden buendeln. Genehmigungs-Benachrichtigungen werden unabhaengig vom Fokusmodus immer sofort zugestellt, weil eine blockierte Genehmigung die gesamte Aufgabe aufhaelt.
Naechste Schritte
Wir arbeiten an mehreren Verbesserungen der Benachrichtigungen:
- Rich-Benachrichtigungen mit Code-Vorschau — Genehmigungs-Benachrichtigungen, die eine Diff-Vorschau direkt auf der Benachrichtigung anzeigen, damit du fundierte Genehmigen/Ablehnen-Entscheidungen treffen kannst, ohne die App zu oeffnen.
- Benachrichtigungsgruppierung — Buendelung schnell aufeinanderfolgender Aufgabenabschluesse (haeufig bei Multi-Sitzungs-Workflows) in eine einzelne Zusammenfassungs-Benachrichtigung.
- Benutzerdefinierte Benachrichtigungstoene — Unterschiedliche Audiosignale fuer Abschluesse, Genehmigungen und Fehler, damit du nach Klang priorisieren kannst, ohne auf dein Telefon zu schauen.
Fuer Benachrichtigungskonfigurationsoptionen siehe den Leitfaden zu Benachrichtigungseinstellungen. Fuer die Claude Code Hook-Referenz, die dieses System antreibt, siehe Hook-Integration.
Tactic Remote ausprobieren
Coding-Agenten vom Smartphone aus steuern
Verbinde dich mit Claude Code, Codex und anderen Agenten auf deinem Mac-, Windows- oder Linux-Rechner. Prüfe den Fortschritt und sende die nächste Anweisung vom iPhone oder iPad.