Lab 4: Hooks per Chat

Hooks erstellen, testen und verstehen

← Zurück zur Übersicht

Modus: Chat + Agent Hooks Dauer: ca. 15-20 Minuten Zeigt: was ein Hook ist, manuell vs. Agent

Komplett ohne externe Tools. Die Hooks werden per Chat erstellt (natürliche Sprache) und sind Agent-Hooks — plattformunabhängig, kein Python, keine Runtime, keine Installation nötig.

Dieses Lab besteht aus zwei Übungen. In der ersten erstellst du einen einfachen Hook, der dich mit deinem Namen begrüßt. In der zweiten geht es um den entscheidenden Punkt: Warum ein Hook nur dann feuert, wenn der Agent handelt, nicht wenn du selbst etwas tust.

Übung 1: Ein Hook, der dich begrüßt

Wir bauen einen kleinen Hook und schauen uns an, was Kiro daraus macht. Setze deinen eigenen Namen ein statt des Platzhalters. Formuliere im Chat (oder über das Kiro-Panel → Agent Hooks → + → Ask Kiro to create a hook):

Erstelle einen Hook, der bei jedem Prompt ausgelöst wird und dich anweist,
mich in der Antwort immer mit "Hallo [DEIN NAME]" anzusprechen.

Ersetze [DEIN NAME] durch deinen Vornamen. Beispiel: „Hallo Sabine“.

Hook anschauen & testen

  • Kiro erzeugt daraus die Hook-Konfiguration (Trigger + Aktion) und legt sie an.
  • Im Kiro-Panel (Ghost-Icon) → Agent Hooks den neuen Hook öffnen und ansehen:
    • Trigger: UserPromptSubmit (bei jedem Prompt)
    • Action: ein agent-Prompt (eine KI-Aktion)
    • Optional die Datei unter .kiro/hooks/ öffnen und den JSON-Aufbau ansehen.
  • Danach eine beliebige Frage im Chat stellen → die Antwort beginnt mit deiner Begrüßung, z. B. „Hallo Sabine“.
  • Zum Weiterarbeiten den Hook wieder deaktivieren oder löschen (im Panel → Agent Hooks).

Merke: trigger = wann, action = was passiert. Hooks lassen sich komplett in natürlicher Sprache erstellen — kein JSON von Hand nötig.

Übung 2: CSV, Hook auf Speichern und der Beweis

Jetzt kommt der spannende Teil. Wir bauen einen Hook, der auf das Speichern einer CSV-Datei reagiert. Dann testen wir ihn auf zwei Wegen und sehen einen wichtigen Unterschied.

Schritt 1 – Testdaten anlegen

Lege eine Datei data.csv an:

name,abteilung,stunden
Anna,Entwicklung,38
Ben,Design,32
Carla,Entwicklung,40
David,Vertrieb,25

Schritt 2 – CSV-Viewer per Prompt erzeugen

Wir lassen Kiro eine kleine Seite bauen, die eine CSV im Browser anzeigt:

Erstelle eine einzige HTML-Datei (index.html) mit Vanilla JavaScript und CSS,
ohne externe Bibliotheken. Sie soll:
- einen Datei-Auswahl-Button haben, mit dem ich eine CSV-Datei auswähle
- die CSV im Browser einlesen (FileReader) und als Tabelle anzeigen
- die erste Zeile als Spaltenüberschriften behandeln
- unten die Anzahl der Datenzeilen und die Summe der Spalte "stunden" anzeigen

index.html im Browser öffnen, data.csv auswählen → Tabelle und Summe erscheinen.

Schritt 3 – Einen Hook erstellen, der auf Speichern reagiert

Erstelle einen Agent-Hook: Immer wenn eine CSV-Datei gespeichert wird,
soll Kiro die geänderte Datei lesen und eine kurze Zusammenfassung geben
(Anzahl Zeilen, Spaltennamen und die Summe der Spalte "stunden").

Den erzeugten Hook im Panel anschauen: Trigger PostFileSave, Dateimuster *.csv, agent-Action.

Schritt 4 – Die Datei von Hand ändern

Jetzt der erste Test. Öffne data.csv im Editor, ändere eine Zahl (z. B. Annas Stunden von 38 auf 40) und speichere mit Strg+S. Schau, ob der Hook läuft.

Beobachtung: Der Hook wird NICHT ausgeführt.

Obwohl die CSV-Datei gespeichert wurde, passiert nichts. Keine Zusammenfassung, keine Reaktion. Viele erwarten an dieser Stelle, dass der Hook anspringt — tut er aber nicht. Das ist kein Fehler.

Schritt 5 – Warum ist das so? Agent-Hooks erklärt

Der Grund steckt schon im Namen: Es sind Agent-Hooks. Ein solcher Hook feuert nur, wenn Kiro selbst (der Agent) die Datei schreibt oder speichert. Wenn du dieselbe Datei von Hand im Editor speicherst, zählt das nicht.

Das ist bewusst so gebaut, aus zwei Gründen:

  • Kontrolle über die Kosten: Würde ein Hook auf jede beliebige Dateiänderung reagieren, liefe er viel zu oft. Ein Beispiel: Du holst dir per Pull aus Git oder CodeCommit die Arbeit deiner Kollegen. Dabei ändern sich auf einen Schlag vielleicht hunderte Dateien. Der Hook würde hundertfach eine KI-Aktion starten.
  • Kein Ausufern im großen Stil: Im Data-Engineering-Umfeld, wo ein einziger Lauf tausende Dateien anfassen kann, wäre das noch drastischer: tausende Hook-Ausführungen, enormer Verbrauch an Kontext und Credits, und im schlimmsten Fall eine Kette von Aktionen, die sich immer weiter selbst auslösen.

Deshalb die klare Regel: Ein Hook reagiert nur auf das, was der Agent tut. So bleibt vorhersehbar und kontrollierbar, wann und wie oft ein Hook läuft.

Schritt 6 – Der Beweis: der Agent speichert

Jetzt lassen wir Kiro dieselbe Datei ändern und speichern. Bitte den Agenten im Chat:

Füge der Datei data.csv zwei weitere Zeilen mit erfundenen Mitarbeitern hinzu
(Name, Abteilung, Stunden) und speichere die Datei.

Beobachtung: Sobald Kiro die Datei speichert, greift der Hook und die Zusammenfassung erscheint automatisch (Anzahl Zeilen, Spaltennamen, Summe der Stunden). Genau derselbe Speichervorgang wie in Schritt 4, aber diesmal durch den Agenten ausgelöst — und nur deshalb feuert der Hook.

Das ist die Kernaussage des Labs: Nicht der Speichervorgang an sich löst den Hook aus, sondern wer speichert. Nur Aktionen des Agenten zählen.

Denkanstoß: Hook vs. Steering

Der Begrüßungs-Hook aus Übung 1 ist als Demo super, aber als Dauerlösung eigentlich nicht die klügste Wahl: Er feuert bei jedem Prompt (UserPromptSubmit) und startet jedes Mal eine KI-Aktion — nur um dich mit Namen zu begrüßen. Das kostet unnötig Kontext und Credits und ist überdimensioniert.

Für so etwas eignet sich Steering viel besser. Statt eines Hooks legt man eine kleine Steering-Regel an, z. B.:

# Persönliche Präferenzen
- Der Benutzer heißt Sabine und wird gerne mit Namen angesprochen.

Merksatz: Hooks sind für Aktionen bei Ereignissen (z. B. „bei gespeicherter CSV → zusammenfassen“). Dauerhaftes Verhalten oder Präferenzen gehören ins Steering (siehe Lab 5).