Przejdź do treści
← Kurs M10L01 · Hooki i Automatyzacja 🏗️
🏗️ Architekt M10L01 M10 · Lekcja 1 z 3 8 min

Czym są hooki w GitHub Copilot

Wprowadzenie do systemu hooków Copilot - jak pozwalają uruchamiać automatyczne akcje przed i po operacjach AI bez opuszczania VS Code.

Czego się nauczysz

  • Czym hook różni się od promptu, instructions i zwykłego tool approval
  • Jakie momenty cyklu życia agenta można przechwycić hookiem
  • Kiedy hooki są świetnym narzędziem, a kiedy są tylko zbędną komplikacją

Hook to nie jest “sprytniejszy prompt”

To najważniejsze rozróżnienie na start.

Instructions i prompt files wpływają na to, jak agent myśli i jak interpretuje zadanie. Hook działa inaczej: uruchamia Twój kod w konkretnym momencie pracy agenta.

To znaczy, że hook nie prosi modelu o lepsze zachowanie. Hook wymusza zachowanie.

Jeśli chcesz, żeby agent zawsze uruchamiał formatter po edycji pliku, to instrukcja może pomóc, ale nie daje gwarancji. Hook daje.

Dlaczego hooki w ogóle istnieją

Aktualna dokumentacja VS Code podaje kilka bardzo praktycznych powodów:

  • egzekwowanie polityk bezpieczeństwa
  • automatyzacja jakości kodu
  • budowanie audit trail
  • wstrzykiwanie dodatkowego kontekstu do sesji
  • kontrola approvali dla narzędzi

Wspólny mianownik jest prosty: są rzeczy, których nie chcesz zostawiać tylko dobrej woli modelu.

Hooki siedzą w cyklu życia sesji agenta

VS Code obsługuje osiem eventów hooków:

  • SessionStart
  • UserPromptSubmit
  • PreToolUse
  • PostToolUse
  • PreCompact
  • SubagentStart
  • SubagentStop
  • Stop

Nie wszystkie są równie ważne na początku.

W praktyce najczęściej myślisz o trzech grupach:

  • start sesji i wstrzykiwanie kontekstu
  • kontrola działań narzędzi przed i po wykonaniu
  • zamknięcie sesji albo subagenta

To wystarcza, żeby zbudować większość sensownych automatyzacji.

Gdzie hooki są przechowywane

Dokumentacja pokazuje kilka lokalizacji:

  • workspace: .github/hooks/*.json
  • user level: hooki prywatne w profilu użytkownika
  • kompatybilne lokalizacje Claude Code
  • hooki osadzone w custom agencie
  • hooki dostarczane przez plugin

To ważne, bo hook nie musi być tylko lokalnym eksperymentem. Może być:

  • polityką repozytorium
  • osobistym workflow developera
  • częścią konkretnego agenta
  • elementem większego pluginu

Minimalny model działania jest prosty

Hook dostaje przez stdin ustrukturyzowany JSON z kontekstem zdarzenia. Może też zwrócić JSON na stdout, żeby wpłynąć na zachowanie agenta.

To oznacza, że hook może:

  • niczego nie zmieniać i tylko logować
  • przekazać dodatkowy komunikat do modelu
  • zablokować operację
  • wymusić ask, allow albo deny dla wywołania narzędzia

To jest pełnoprawna warstwa kontroli, a nie dekoracja.

Hook vs instructions vs approval

Najprostszy filtr decyzyjny wygląda tak:

  • instructions: gdy chcesz ustawić regułę zachowania
  • approval: gdy chcesz podjąć decyzję ręcznie w danym momencie
  • hook: gdy chcesz zautomatyzować decyzję albo akcję deterministycznie

Przykład:

  • instructions mówią agentowi, żeby uważał na wrażliwe pliki
  • approval pozwala Ci ręcznie kliknąć Allow albo Deny
  • hook sprawdza parametry wywołania i sam blokuje niebezpieczny przypadek

Hooki są mocne, ale nie darmowe

To nie jest funkcja, którą warto włączać tylko dlatego, że brzmi zaawansowanie.

Hook ma sens, gdy:

  • masz powtarzalny problem jakościowy albo bezpieczeństwa
  • chcesz zmniejszyć liczbę ręcznych kliknięć
  • potrzebujesz spójności między sesjami i członkami zespołu

Hook nie ma sensu, gdy:

  • reguła jest rzadko potrzebna
  • prościej byłoby zawęzić toolset
  • automatyzacja jest bardziej skomplikowana niż problem, który rozwiązuje

Trzeba też znać cenę tej automatyzacji

Docs bardzo uczciwie podkreślają, że hooki uruchamiają shell commands z uprawnieniami VS Code.

To oznacza dwie rzeczy:

  • hook może realnie przyspieszyć pracę
  • hook może też powiększyć promień błędu albo nadużycia

Dlatego hooki najlepiej traktować jak kod infrastrukturalny dla agenta: wersjonowany, czytelny, świadomie ograniczony.

Kluczowe wnioski

  • Hooki to deterministyczna warstwa automatyzacji i kontroli nad agentem.
  • Nie zastępują promptów ani instrukcji, tylko uzupełniają je tam, gdzie potrzebna jest gwarancja działania.
  • Najważniejsze eventy na start to zwykle PreToolUse, PostToolUse i zdarzenia początku albo końca sesji.
  • Hooki mają sens tylko wtedy, gdy rozwiązują realny, powtarzalny problem.

Co dalej

Skoro masz już model działania hooków, następny krok jest praktyczny: jak zbudować konkretne pre i post akcje do formatowania, testów, lintowania i blokowania ryzykownych operacji.