Wendov1.0 · iOS i Android
Polski

Poradniki

Powiadomienia i zatwierdzenia Claude Code na telefonie

Claude Code ma hooki: miejsca, w których uruchamia twoje polecenie. To wystarcza, żeby zbudować alert na moment, gdy prosi o zgodę albo kończy, a nawet odpowiedzieć na niego z telefonu. Oto jak to działa od środka i jak używa tego Wendo.

Czym jest hook Claude Code

Hook to polecenie, które Claude Code uruchamia, gdy coś się dzieje: zaczyna się sesja, wysyłasz prompt, potrzebuje zgody, kończy odpowiedź. Deklarujesz je w ~/.claude/settings.json, jedno zdarzenie na klucz, każde wskazuje polecenie:

{
  "hooks": {
    "Stop": [
      { "hooks": [{ "type": "command", "command": "~/.wendo/wendo-hook.sh" }] }
    ]
  }
}

Claude Code uruchamia to polecenie i przekazuje na standardowe wejście dokument JSON z danymi zdarzenia: nazwą zdarzenia, katalogiem roboczym, identyfikatorem sesji i, zależnie od przypadku, narzędziem, którego chce użyć. Polecenie robi z tym, co chce. Dla niektórych zdarzeń może też zapisać odpowiedź na standardowe wyjście, i tak Claude Code dowiaduje się o decyzji.

Zdarzenia, które rejestruje hook Wendo

Instalator dodaje ten sam skrypt do sześciu zdarzeń:

  • PermissionRequest: Claude Code zaraz poprosi o twoją zgodę.
  • Notification: komunikat Claude Code, który wymaga uwagi.
  • Stop: skończył odpowiadać.
  • UserPromptSubmit: wysłałeś prompt, więc pracuje.
  • SessionStart i SessionEnd: sesja się zaczyna lub kończy.

Każde zdarzenie trafia jako linia do ~/.wendo/events.jsonl na komputerze. Aplikacja czyta ten plik przez SSH twoim kluczem, więc nie ma serwera pośredniczącego ani konta. To, co widzisz w Skrzynce, pochodzi stamtąd.

Żeby to zainstalować, jedno polecenie:

curl -fsSL https://wendo.lirafy.dev/install.sh | sh

Przed ruszeniem settings.json zapisuje kopię jako settings.json.bak-wendo, a możesz uruchamiać go wielokrotnie bez dublowania wpisów. Hooki, które już masz, zostają nietknięte. Opcje i konfiguracja ręczna są na stronie o alertach i zatwierdzeniach; szerszy opis budowania całego środowiska jest w jak używać Claude Code z telefonu.

Jak działa zatwierdzenie

PermissionRequest to jedyne zdarzenie, przy którym hook zostaje i czeka. Gdy Claude Code prosi o zgodę, skrypt zapisuje prośbę jako oczekującą, a Skrzynka w aplikacji pokazuje wiersz z przyciskami zatwierdzenia lub odrzucenia. Gdy stukniesz jeden, aplikacja zostawia odpowiedź w pliku na komputerze, hook ją odbiera i przekazuje decyzję Claude Code.

Oczekiwanie trwa 90 sekund. Jeśli do tego czasu nie odpowiesz, hook nic nie wypisuje, a Claude Code pokazuje zwykły prompt w terminalu, jakby Wendo nie było. To ważne: jeśli telefon padnie albo stracisz zasięg, nic nie zostaje zablokowane, po prostu wracasz do tego, jak działało zawsze.

Jeśli odpowiesz w terminalu przed telefonem, to też zostanie zapisane, jako rozstrzygnięte lokalnie.

Kilka zmiennych środowiskowych to dostraja, ustawia się je przed poleceniem hooka:

  • WENDO_APPROVAL_TIMEOUT: sekundy oczekiwania. timeout hooka w settings.json (120 w zainstalowanej konfiguracji) musi być większy.
  • WENDO_BLOCKING=0: tylko alertuje, bez czekania na odpowiedź.
  • WENDO_HOST: nazwa, pod jaką aplikacja zna komputer, jeśli różni się od hostname -s.

Pytania Claude (AskUserQuestion) i zatwierdzanie planów (ExitPlanMode) nie blokują. Proszą o wybór, a nie o tak lub nie, więc odpowiadasz na nie w widoku czatu.

Alerty przy zamkniętej aplikacji: ntfy

Gdy Wendo jest otwarte, aplikacja czyta skrzynkę co kilka sekund. Przy zamkniętej aplikacji coś musi dostarczyć alert na telefon, i tym czymś jest ntfy: prosta usługa powiadomień push, do której publikujesz zwykłym żądaniem HTTP.

  1. Wstaw NTFY_TOPIC przed poleceniem hooka w settings.json:
NTFY_TOPIC=a-long-random-topic ~/.wendo/wendo-hook.sh
  1. Zainstaluj aplikację ntfy na telefonie i zasubskrybuj ten sam temat.
  2. Wpisz temat także w Wendo, w Ustawienia › Agenci › Powiadomienia.

Żeby wygenerować temat, którego nikt nie zgadnie:

openssl rand -hex 16

Temat działa jak hasło. Na publicznym serwerze ntfy każdy, kto zna nazwę tematu, może czytać to, co w nim opublikowano, i publikować własne wiadomości, więc nie używaj czegoś w rodzaju claude-john. Alerty zawierają projekt i fragment wiadomości lub polecenia, tyle by podjąć decyzję, i nie jest to coś, co chcesz, by czytali obcy.

Jeśli wolisz nie zależeć od publicznego serwera, NTFY_URL kieruje hooka na twój własny serwer ntfy. Domyślnie jest to https://ntfy.sh. Stuknięcie alertu otwiera panel tmux, zellij lub herdr, w którym działa agent, o ile uruchamiasz go w jednym z nich (zobacz stronę o tmux).

Na Androidzie jest też sprawdzanie w tle co najmniej co 15 minut. Do ntfy trafiają tylko alerty o zgodzie, powiadomieniu i zakończonym zadaniu; hook nie wysyła startu sesji, końca sesji ani każdego promptu.

Ograniczenia

  • Na razie tylko Claude Code. Hook nie jest rejestrowany w innych agentach.
  • Potrzebuje jq na komputerze. curl jest potrzebny tylko dla ntfy.
  • Bez multipleksera aplikacja nie wie, w którym panelu jest Claude, i nie może zabrać cię prosto do niego.
  • Plan darmowy obejmuje 5 próbnych zatwierdzeń ze Skrzynki; w Pro nie ma limitu.
  • Wendo nie ma jeszcze w sklepach: wkrótce pojawi się w App Store i Google Play.