Codex ルールとフック

ルール(Rules)とフック(Hooks)を使用すると、Codex の動作をカスタマイズして、ワークフローにより適合させることができます。このセクションでは、これら2つの機能について詳しく説明します。


ルール(Rules)

ルールを使用すると、Codex にカスタムの動作ガイドラインを定義でき、すべての会話に適用されます。

ルールファイルの場所

Codex は以下の場所からルールを読み込みます:

  • ~/.codex/rules/- ユーザーレベルのルール
  • {项目}/.codex/rules/- プロジェクトレベルのルール

ルールファイルの形式

ルールファイルの作成

# コーディングルール

## コードスタイル
- インデントはスペース4文字
- 1行は最大100文字
- 常に const/let を使用し、var は使わない

## コメント規約
- 公開関数には JSDoc コメントを含める
- 複雑なロジックにはインラインコメントで説明を追加する
- デバッグ用の console.log はすべて削除する

## テスト要件
- すべての新機能にテストケースを含める
- テストファイルの命名:*.test.js または *.spec.js

## Git コミット
- コミットメッセージは Conventional Commits 形式を使用する
- コミット前に lint とテストを実行する

ルールの有効化

設定でルールを有効化

[features]
codex_hooks = true
ルールは各会話のシステムプロンプトに注入され、Codex が常にあなたのコーディング規約に従うことを保証します。

フック(Hooks)

フックを使用すると、特定のイベント発生時にカスタム操作を実行できます。

フックファイルの場所

フックは~/.codex/hooks.jsonで設定します:

フック設定の作成

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

利用可能なイベント

イベント説明
on_tool_callツール呼び出しの前にトリガー
on_task_startタスク開始時にトリガー
on_task_completeタスク完了時にトリガー
on_errorエラー発生時にトリガー
on_messageメッセージ受信時にトリガー

フック操作

操作説明
allow操作の続行を許可
deny操作をブロック
notify通知を送信
logログを記録
customカスタムスクリプトを実行
フック機能を有効にするには設定が必要です[features].codex_hooks = true

実践例

例1:テストの自動実行

Codex がファイルを変更するたびにテストを自動実行します:

自動テストフック

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

例2:コードレビューの強制

コミット前にコードレビューを強制します:

コードレビューフック

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

例3:ログの記録

すべてのコマンド実行を記録します:

ログフック

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

ルールとフックの違い

特性ルールフック
作用するタイミング会話開始時イベント発火時
主な用途コーディング規約の定義操作の自動化
設定場所rules/ ディレクトリhooks.json
ルールとフックは組み合わせて使用できます:ルールは「どうやるか」を定義し、フックは「いつやるか」を定義します。

ベストプラクティス

ルールのベストプラクティス

  • ルールは簡潔かつ明確に保つ
  • 過度に厳しい制限は避ける
  • プロジェクトの要件に応じてルールを調整する

フックのベストプラクティス

  • 長時間実行されるフックは避ける
  • 適切なタイムアウト時間を設定する
  • フックの動作をテストする
フックを過度に使用すると Codex のパフォーマンスに影響する可能性があります。本当に必要なフックだけを追加してください。

よくある質問

Q: ルールが反映されない?

ルールファイルが正しい場所にあり、次の機能が有効になっていることを確認してくださいcodex_hooks機能。

Q: フックの実行が失敗すると操作はブロックされますか?

フックの設定によります。一部のフックは失敗すると後続の操作をブロックします。

Q: ルールを動的に有効化/無効化できますか?

はい、設定ファイルまたは環境変数で制御できます。

その他の拡張機能