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
## 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
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
| Ereignisse | Beschreibung |
|---|---|
on_tool_call | Auslöser vor Tool-Aufruf |
on_task_start | Auslöser bei Aufgabenbeginn |
on_task_complete | Auslöser bei Aufgabenabschluss |
on_error | Auslöser bei Fehler |
on_message | Auslöser bei Empfang einer Nachricht |
Hook-Aktionen
| Aktion | Beschreibung |
|---|---|
allow | Vorgang fortsetzen zulassen |
deny | Aktionen blockieren |
notify | Benachrichtigungen senden |
log | Logs aufzeichnen |
custom | Benutzerdefiniertes 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
| Funktionen | Regeln | Hook |
|---|---|---|
| Zeitpunkt | Wenn die Konversation startet | Wenn ein Ereignis ausgelöst wird |
| Hauptzweck | Coding-Standards definieren | Automatisierungsaktionen |
| Konfigurationsspeicherort | rules/-Verzeichnis | hooks.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