Codex-Regeln und Hooks

Mit Regeln und Hooks kannst du das Verhalten von Codex an deinen Workflow anpassen. Dieser Abschnitt beschreibt beide Funktionen im Detail.


Regeln

Regeln ermöglichen es dir, benutzerdefinierte Verhaltensrichtlinien für Codex zu definieren, die auf alle Unterhaltungen angewendet werden.

Speicherort der Regeldatei

Codex lädt Regeln aus den folgenden Speicherorten:

  • ~/.codex/rules/- Regeln auf Benutzerebene
  • {项目}/.codex/rules/- Regeln auf Projektebene

Format der Regeldatei

Regeldatei erstellen

# Meine Coding-Regeln

## Code-Stil
- Verwende 4 Leerzeichen für die Einrückung
- Maximal 100 Zeichen pro Zeile
- Verwende immer const/let, nicht var

## Kommentarkonventionen
- Öffentliche Funktionen müssen JSDoc-Kommentare enthalten
- Inline-Kommentare hinzufügen, um komplexe Logik zu erklären
- Alle console.log zum Debuggen entfernen

## Testanforderungen
- Alle neuen Features müssen Testfälle enthalten
- Benennung von Testdateien: *.test.js oder *.spec.js

## Git-Commit
- Commit-Nachrichten verwenden das Format Conventional Commits
- Lint und Tests vor dem Commit ausführen

Regeln aktivieren

Regeln in der Konfiguration aktivieren

[features]
codex_hooks = true
Regeln werden in den System-Prompt jeder Konversation injiziert, wodurch sichergestellt wird, dass Codex stets deine Codierungsstandards befolgt.

Hooks

Hooks ermöglichen es dir, benutzerdefinierte Aktionen auszuführen, wenn bestimmte Ereignisse auftreten.

Speicherort der Hook-Datei

Hooks werden~/.codex/hooks.jsonkonfiguriert in:

Hook-Konfiguration erstellen

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

Verfügbare Ereignisse

EreignisseBeschreibung
on_tool_callAuslöser vor Tool-Aufruf
on_task_startAuslöser bei Aufgabenbeginn
on_task_completeAuslöser bei Aufgabenabschluss
on_errorAuslöser bei Fehler
on_messageAuslöser bei Empfang einer Nachricht

Hook-Aktionen

AktionBeschreibung
allowVorgang fortsetzen zulassen
denyAktionen blockieren
notifyBenachrichtigungen senden
logLogs aufzeichnen
customBenutzerdefiniertes Skript ausführen
Das Aktivieren der Hook-Funktionalität erfordert eine Konfiguration[features].codex_hooks = true

Praktische Beispiele

Beispiel 1: Tests automatisch ausführen

Tests automatisch ausführen, jedes Mal, wenn Codex eine Datei ändert:

Automatischer Test-Hook

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

Beispiel 2: Code-Review erzwingen

Code-Review vor dem Commit erzwingen:

Code-Review-Hook

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

Beispiel 3: Protokollierung

Alle Befehlsausführungen protokollieren:

Protokollierungs-Hook

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

Unterschied zwischen Regeln und Hooks

FunktionenRegelnHook
ZeitpunktWenn die Konversation startetWenn ein Ereignis ausgelöst wird
HauptzweckCoding-Standards definierenAutomatisierungsaktionen
Konfigurationsspeicherortrules/-Verzeichnishooks.json
Regeln und Hooks können zusammen verwendet werden: Regeln definieren das „Wie“ und Hooks das „Wann“.

Best Practices

Best Practices für Regeln

  • Regeln kurz und klar halten
  • Übermäßig strenge Einschränkungen vermeiden
  • Regeln an die Projektanforderungen anpassen

Best Practices für Hooks

  • Hooks mit langer Laufzeit vermeiden
  • Ein angemessenes Timeout festlegen
  • Hook-Verhalten testen
Eine übermäßige Nutzung von Hooks kann die Leistung von Codex beeinträchtigen; fügen Sie daher nur Hooks hinzu, die Sie wirklich benötigen.

FAQ

F: Regeln werden nicht wirksam?

Stellen Sie sicher, dass sich die Regeldatei am richtigen Speicherort befindet und aktiviert ist.codex_hooksFunktionen.

F: Blockiert eine fehlgeschlagene Hook-Ausführung die Operation?

Es hängt von der Hook-Konfiguration ab; bestimmte Hook-Fehler blockieren nachfolgende Operationen.

F: Können Regeln dynamisch aktiviert/deaktiviert werden?

Ja, sie lassen sich über Konfigurationsdateien oder Umgebungsvariablen steuern.

Weitere Erweiterungen