Spirit Agent
Herunterladen

Hooks

Führen Sie Skripte bei Sitzungs-, Tool- und Subagent-Ereignissen aus. Sie können erlauben, verweigern oder nachfragen.

Hooks sind Skripte, die Spirit an festgelegten Punkten ausführt. Sie können ein Tool erlauben, es verweigern oder eine Genehmigungsabfrage (ask) erzwingen.

Ereignisse

  • sessionStart
  • sessionEnd
  • submitPrompt
  • preToolUse
  • postToolUse
  • subagentStart
  • subagentEnd

Wenn preToolUse ask zurückgibt, werden Sie auch bei Auto-Genehmigung oder Umgehung zur Eingabe aufgefordert.

Wo sie sich befinden

GültigkeitsbereichKonfigurationSkripte
Benutzer{spiritDataDir}/hooks.json{spiritDataDir}/hooks/
Arbeitsbereich{workspace}/.spirit/hooks.json{workspace}/.spirit/hooks/

Beim gleichen Ereignis werden Benutzereinträge und Arbeitsbereichseinträge in dieser Reihenfolge verkettet. Sie überschreiben sich nicht gegenseitig.

Verwalten Sie sie unter Einstellungen → Hooks. Validieren Sie sie über die CLI mit spirit hooks list und spirit hooks validate. Die integrierte Skill create-hook erstellt einen Hook-Entwurf.

Dateifelder

Das Root-Objekt muss version und hooks enthalten. version akzeptiert derzeit nur 1.

FeldBeschreibung
versionErforderlich. Muss 1 sein
hooksErforderlich. Objekt. Schlüssel sind Ereignisnamen; Werte sind Arrays von Hooks für dieses Ereignis

Jeder Hook

FeldBeschreibung
commandErforderlich. Skriptpfad. Ein relativer Pfad wird relativ zum Konfigurationsverzeichnis aufgelöst und muss innerhalb desselben bleiben
timeoutOptional. Timeout in Sekunden. Muss eine positive Zahl sein. Standardwert ist 30
failClosedOptional. Ob blockiert werden soll, wenn das Skript abstürzt, eine Zeitüberschreitung auftritt oder ungültiges JSON auf stdout schreibt. Standardmäßig wird nicht blockiert
matcherOptional. Nicht-leerer regulärer Ausdruck. Entspricht dem Toolnamen bei preToolUse / postToolUse oder dem Subagent-Typ bei subagentStart / subagentEnd

Beispiel

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "command": "hooks/guard.sh",
        "timeout": 10,
        "failClosed": true,
        "matcher": "^shell$"
      }
    ],
    "sessionEnd": [
      {
        "command": "hooks/log.sh"
      }
    ]
  }
}