Règles et hooks de Codex

Grâce aux Règles et aux Hooks, vous pouvez personnaliser le comportement de Codex pour mieux l'adapter à votre flux de travail. Cette section détaille ces deux fonctionnalités.


Règles

Les Règles vous permettent de définir des lignes directrices de comportement personnalisées pour Codex, appliquées à toutes les conversations.

Emplacement du fichier de règles

Codex charge les règles depuis les emplacements suivants :

  • ~/.codex/rules/- Règles au niveau utilisateur
  • {项目}/.codex/rules/- Règles au niveau projet

Format du fichier de règles

Créer un fichier de règles

# Mes règles de codage

## Style de code
- Utiliser 4 espaces pour l'indentation
- Maximum 100 caractères par ligne
- Toujours utiliser const/let, pas var

## Conventions de commentaires
- Les fonctions publiques doivent inclure des commentaires JSDoc
- Ajouter des commentaires en ligne pour expliquer la logique complexe
- Supprimer tous les console.log de débogage

## Exigences de tests
- Toutes les nouvelles fonctionnalités doivent inclure des cas de test
- Nommage des fichiers de test : *.test.js ou *.spec.js

## Commit Git
- Les messages de commit utilisent le format Conventional Commits
- Exécuter le lint et les tests avant de commit

Activer les règles

Activer les règles dans la configuration

[features]
codex_hooks = true
Les règles sont injectées dans le prompt système de chaque conversation, ce qui garantit que Codex respecte toujours vos normes de codage.

Hooks

Les hooks vous permettent d'exécuter des actions personnalisées lorsque des événements spécifiques se produisent.

Emplacement du fichier de hook

Les hooks sont~/.codex/hooks.jsonconfigurés dans :

Créer une configuration de hook

{
  "hooks": [
    {
      "event": "on_tool_call",
      "match": "shell",
      "action": "allow"
    },
    {
      "event": "on_task_complete",
      "action": "notify",
      "command": "echo 'Task completed'"
    }
  ]
}

Événements disponibles

ÉvénementsDescription
on_tool_callDéclenchement avant l'invocation de l'outil
on_task_startDéclenchement au début de la tâche
on_task_completeDéclenchement à la fin de la tâche
on_errorDéclenchement en cas d'erreur
on_messageDéclenchement à la réception d'un message

Actions du hook

OpérationDescription
allowAutoriser la poursuite de l'opération
denyBloquer les actions
notifyEnvoyer des notifications
logEnregistrer les journaux
customExécuter un script personnalisé
L'activation de la fonctionnalité de hook nécessite une configuration[features].codex_hooks = true

Exemples pratiques

Exemple 1 : Exécuter automatiquement les tests

Exécuter automatiquement les tests chaque fois que Codex modifie un fichier :

Hook de test automatisé

{
  "hooks": [
    {
      "event": "on_tool_call",
      "match": "edit_file",
      "action": "custom",
      "command": "npm test",
      "timeout": 60
    }
  ]
}

Exemple 2 : Imposer la revue de code

Imposer la revue de code avant le commit :

Hook de revue de code

{
  "hooks": [
    {
      "event": "on_tool_call",
      "match": "git_commit",
      "action": "custom",
      "command": "/review",
      "require_approval": true
    }
  ]
}

Exemple 3 : Journalisation

Journaliser toutes les exécutions de commandes :

Hook de journalisation

{
  "hooks": [
    {
      "event": "on_tool_call",
      "match": "shell",
      "action": "log",
      "log_file": "/tmp/codex-commands.log"
    }
  ]
}

Différence entre les règles et les hooks

FonctionnalitésRèglesHook
MomentLorsque la conversation démarreLorsqu'un événement est déclenché
Objectif principalDéfinir des normes de codageActions d'automatisation
Emplacement de la configurationrépertoire rules/hooks.json
Les Règles et les Hooks peuvent être utilisés ensemble : les Règles définissent le « comment », et les Hooks définissent le « quand ».

Bonnes pratiques

Bonnes pratiques pour les Règles

  • Gardez les règles concises et claires
  • Évitez les restrictions trop strictes
  • Adaptez les règles aux exigences du projet

Bonnes pratiques pour les Hooks

  • Évitez les hooks de longue durée
  • Définir un délai d’attente raisonnable
  • Testez le comportement des hooks
Une utilisation excessive des Hooks peut affecter les performances de Codex, donc n'ajoutez que les Hooks dont vous avez vraiment besoin.

FAQ

Q : Les règles ne prennent pas effet ?

Assurez-vous que le fichier de règles se trouve au bon emplacement et qu'il est activé.codex_hooksFonctionnalités.

Q : L'échec d'exécution d'un Hook bloquera-t-il l'opération ?

Cela dépend de la configuration du Hook ; certains échecs de Hook bloqueront les opérations suivantes.

Q : Les règles peuvent-elles être activées/désactivées dynamiquement ?

Oui, vous pouvez les contrôler via des fichiers de configuration ou des variables d'environnement.

autres extensions