Spirit Agent
Télécharger

Hooks

Exécutez des scripts lors d'événements de session, d'outil et de sous-agent. Ils peuvent autoriser, refuser ou demander.

Les hooks sont des scripts que Spirit exécute à des points fixes. Ils peuvent autoriser un outil, le refuser ou forcer une demande d'approbation (ask).

Événements

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

preToolUse retournant ask vous invite toujours même en mode approbation automatique ou contournement.

Où ils se trouvent

PortéeConfigScripts
Utilisateur{spiritDataDir}/hooks.json{spiritDataDir}/hooks/
Espace de travail{workspace}/.spirit/hooks.json{workspace}/.spirit/hooks/

Sur le même événement, les entrées utilisateur et les entrées d'espace de travail sont concaténées dans cet ordre. Elles ne se remplacent pas mutuellement.

Gérez-les dans Paramètres → Hooks. Validez depuis la CLI avec spirit hooks list et spirit hooks validate. La compétence intégrée create-hook rédige un hook.

Champs du fichier

L'objet racine doit inclure version et hooks. version n'accepte actuellement que 1.

ChampDescription
versionRequis. Doit être 1
hooksRequis. Objet. Les clés sont les noms d'événements ; les valeurs sont des tableaux de hooks pour cet événement

Chaque hook

ChampDescription
commandRequis. Chemin du script. Un chemin relatif est résolu par rapport au répertoire de configuration et doit rester à l'intérieur de celui-ci
timeoutOptionnel. Délai d'expiration en secondes. Doit être un nombre positif. Par défaut : 30
failClosedOptionnel. Indique si le blocage doit se produire lorsque le script plante, expire ou écrit du JSON invalide sur stdout. Par défaut : pas de blocage
matcherOptionnel. Expression régulière non vide. Correspond au nom de l'outil sur preToolUse / postToolUse, ou au type de sous-agent sur subagentStart / subagentEnd

Exemple

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