コンテンツにスキップ
17.5k

Codex のプロンプトレイヤー

Codex は、独自の基本指示、プロジェクトのドキュメント、権限と環境のコンテキスト、 インストール済みのスキルなど、複数のレイヤーからプロンプトを組み立てます。 Codex Set → Prompt では、この構成、各レイヤーが占めるサイズを確認し、不要な部分を オフにできます。

各行には、組み立て順での位置、該当する場合はそのレイヤーを制御する設定キー、 実際に送信された内容のサイズが表示されます。

位置番号が連続していないのは意図的です。この番号は実際の組み立てインデックスであり、 そのうち 2 つは下の 遷移通知 に表示されます。グループごとに 1 から番号を振り直すと、 Codex が実際には使用しない順序を示すことになります。

種類 できること
ここで切り替え可能 実際のスイッチです。config.toml にキーを書き込みます。
機能フラグ制御 実在するレイヤーですが、このページではなく機能設定で変更します。
常に有効 Codex のどこにもオフにするスイッチはありません。
変更時に送信 遷移を通知するため、何かが変わったときだけ表示されます。
拡張レイヤー リストには表示できません。Codex が公開していません。

オフにするスイッチがないレイヤーには、無効なスイッチではなく、スイッチ自体が 表示されません。グレー表示のコントロールでは、機能は存在するものの一時的に 利用できないように見えますが、実際にはその機能が存在しないためです。

レイヤー名をクリックすると、送信されるテキストを確認できます。ダイアログは codex debug prompt-input から内容を読み取るため、説明ではなく実際の送信内容です。

表示する内容がない場合もあり、ダイアログに該当する理由が表示されます。

  • ファイルは存在しますが空です。 ~/.codex/AGENTS.md が 0 バイトのため、 レイヤーには送信する内容がありません。ダイアログにパスが表示されます。
  • 読み取ったターンでは何も送信されませんでした。 レイヤーは変更されたときだけ 再送信されるため、変更のないレイヤーは 1 回分のサンプルには含まれません。
  • 基本プロンプトはモデルカタログから読み取ります。 Codex は基本プロンプトを 読み取り可能なリストの外で送信するため、ダイアログは選択中のモデルのカタログ項目 から、model_instructions_file を設定している場合はそのファイルから読み取ります。 カタログに展開前のテンプレートしかない場合、そのテキストは Codex が実際に送信する 内容ではないため、表示しないと伝えます。
  • プロンプトを読み取れませんでした。 このマシンで確認処理が失敗しました。

内容は、ダッシュボードがたまたま実行されているディレクトリではなく、グローバルな Codex ホーム(~/.codex)から読み取られます。

+ Add layer を押すと、独自の指示が追加されます。カスタムレイヤーは developer_instructions に組み込まれます。このキーは追加方式なので、Codex 独自の 指示は維持され、ユーザーの指示が加わります。

カスタムレイヤーは、その順序で 1 つのセクションにまとめられるため、カスタムレイヤー 同士で番号が付けられます。組み込みレイヤーの間に挿入されることはありません。

行の矢印を使うか、行内のどこからでも Alt + Up / Alt + Down を押して 並べ替えられます。この順序が組み立て順です。

パネルには、有効なレイヤーの合計サイズが developer_instructions の 128 KiB 上限と比較して表示され、結合されたテキストを折りたたみ式のプレビューで確認 できます。セクションを上限超えにするレイヤーは、保存した後ではなく保存する 前に分かります。

レイヤーの削除は確認を求めてから、数秒間 元に戻す を提示します。レイヤーは 元の位置に戻るため、順序に依存する一覧も操作ミスに耐えられます。

+ Add layer には、簡潔な出力、編集前の計画、推論の説明、テスト優先、韓国語での 応答という 5 つの開始点があります。どれを選んでも通常のエディターが入力済みの 状態で開き、すべて編集できます。プリセットは開始点にすぎず、保存すると通常の カスタムレイヤーになります。

プリセットは、他者のプロンプトをコピーせず、アプローチを簡潔にまとめるために 独自に作成したテキストです。それぞれに出典が記載されています。

編集中にレイヤー間を移動する

Section titled “編集中にレイヤー間を移動する”

エディターには前へ/次へコントロールと位置インジケーターがあります。移動中も未保存の 編集内容は保持されるため、編集中に 2 つのレイヤーを比較し、入力内容を失わずに 元のレイヤーへ戻れます。

レイヤーの内容が記述どおりに動作しない場合、エディターに警告が表示されます。別の アイデンティティを名乗る、レジストリが定義するツール名を挙げる、展開されない テンプレートのプレースホルダーを使う、または Codex が後から生成する環境情報を 記述する場合が該当します。貼り付けられた認証情報(レイヤー内の API キーはリクエスト ごとに平文でモデルへ送られます)、モデルに以前の指示を捨てさせる表現、韓国語で書かれた Codex 以外のアイデンティティも警告対象です。

これらは警告であり、保存を妨げることはありません。意図的に Codex を上書きするなら、 そのまま実行できます。警告は、それが偶然ではなく意識的な判断になるよう促すだけです。

コミットの帰属表示 の行は、モデルが書いたコミットに Co-authored-by: Codex の トレーラーを、モデルが開いたプルリクエストに Generated with Codex. の行を追加するよう 指示します。

この行にスイッチはなく、[features] にもありません。Codex がアカウントの帰属表示 ポリシーから解決するためです。アカウント側でオフにしてもレイヤーは消えません。Codex は 代わりに 逆の 指示、つまりトレーラーを追加しないという指示を送ります。どちらの場合でも 何かが送信されるため、この行は常に有効ではなく、アカウントで決まるものとして表示されます。

基本プロンプトは唯一オフにできないレイヤーです。基本プロンプトのないモデルは、動作する エージェントではないためです。ただし 置き換える ことはできます。基本指示 の行にある スイッチがその操作を行います。

行を開くとピッカーが表示されます。オプション間の移動は、横方向のスワイプ、左右の矢印キー、 または矢印ボタンで行います。スクリーンリーダーが読み上げるのはこのボタンなので、 タッチパッドがなくてもページを操作できます。

オプション 内容 編集
Codex 自身の基本プロンプト 設定に model_instructions_file が存在しない状態 不可
自分のバリアント 自分で書いたプロンプト。~/.codex/opencodex-prompt-base/ に保存されます 可
2 つ目のバリアント 同じもので、最大 2 つまで 可

1 つ目のオプションには編集する対象も Save ボタンもなく、グレー表示のコントロールを 見せる代わりに、ダイアログがその理由を説明します。既定値は、opencodex が保存している Codex のプロンプトのコピーではなく、キーが 存在しない 状態そのものです。そのため 変更するテキストも削除するテキストもなく、これを選ぶと設定から model_instructions_file が再び削除されるだけです。

バリアントエディターにもカスタムレイヤーエディターと同じ保護があります。オプション 間を移動しても未保存の編集は保持され、編集中に閉じれば破棄の確認が表示され、入力中は 本文がバリアントごとの 64 KiB 上限と照合されます。

他のものがすでに基本プロンプトを置き換えている場合

Section titled “他のものがすでに基本プロンプトを置き換えている場合”

model_instructions_file が opencodex 以外の書いたファイルを指している場合、ピッカーは 動作せず、キーが指している場所を表示します。ユーザーや別のツールが設定したキーを、 黙って別の場所に向け直すことはありません。手動で消す必要はありません。バリアントとしてインポートはファイルを変換します。 プレビューにはインストールされるテキストがそのまま表示されます — バリアント名を含む # 見出し行と、 改行・タブを正規化した本文 — 確認前にタイトルを編集できます。本文は正規化後に最大 64 KiB まで使用でき (bodyBytes)、見出しを含めて実際に書き込まれるファイル全体は少し大きくなります(serializedBytes)。 確認はプレビューしたテキストにハッシュで結び付けられるため、間にファイルや選択したタイトルが変わると、 見ていないテキストをインストールせず拒否します。デフォルトから始めたい場合は、自分で消してください。

これは developer_instructions のインポートと同じ考え方です。パネルは見つけた内容を 報告し、判断はユーザーが行います。

切り替えは、このページの他の変更と同じく、新しく開始したセッションに適用されます。

opencodex の外部で記述された指示

Section titled “opencodex の外部で記述された指示”

developer_instructions がすでに存在し、opencodex が書き込んだ値でない場合、パネルは 上書きしません。代わりに、そのテキストをレイヤーとしてインポートする選択肢を 表示します。既存の値が先に表示され、確認するまでは何も書き込まれません。

保存済みのレイヤーと config.toml の値が一致しない場合、パネルはその状態を通知し、 自動で修正せず Repair を提示します。修復手順のうち 2 つはユーザーが書いた テキストを書き換えるため、明示的な操作として残されています。中断された書き込み (journal present)では、ロックを保持し、ジャーナルに記録されたファイルの状態だけを 使って復旧します。現在の一覧を再保存したり、欠けた内容を作り出したりはしません。 実際のファイルがどの記録状態にも一致しない場合、復旧を拒否して証拠を保全します。 更新されたパネルには残る不一致が表示されます。レイヤーファイルが見つからない場合、 修復処理は変更前にバックアップを作成します。

変更は新しく開始したセッションに適用されます。すでに実行中のセッションは、開始時の プロンプト設定を維持します。

このページが読み取るものと、読み取らないもの

Section titled “このページが読み取るものと、読み取らないもの”

opencodex が読み取る設定ファイルは、ユーザーの config.toml 1 つだけです。Codex は 複数のレイヤーから設定を解決するため、ここに表示される値はユーザーのファイルに 書かれた値であり、Codex が最終的に算出する値とは限りません。

これらは Codex の config.toml にあり、opencodex 自体の設定ではありません。

キー 既定値 レイヤー
include_permissions_instructions true 権限
include_collaboration_mode_instructions true コラボレーションモード
include_environment_context true 環境コンテキスト
include_apps_instructions true アプリ
skills.include_instructions true スキル
developer_instructions 未設定 カスタムレイヤーを順に連結した内容
model_instructions_file 未設定 バリアントを選択したときの基本プロンプト

書き込みは行単位の編集なので、コメントと書式はそのまま残り、opencodex が認識しないキーは削除せずそのままにします。

キーが無い場合は false ではなく既定値として読み取ります。パネルはファイルに実際に書かれている値を表示し、未設定であればそう伝えます。

明示的な値を持つ行には 既定値にリセット も表示されます。これは既定値を書き戻すのではなく キー行を削除します。Codex が後で既定値を変えても追従し続けるのはこの状態だけです — key = true と書くと今日の既定値がオーバーライドとして固定されます。

この単純値エディターは、キーの書き込みやリセット前に配列、インラインテーブル、複数行の文字列を拒否し、元のバイト列を保持します。インポートでは読み取れない設定を明示します。読み取り専用のタイトルプレビュー中も入力欄は編集可能で、確認にはそのタイトルに結び付いたプレビューが必要です。測定の HTTP やネットワーク障害は、別の測定が実行中という表示ではなく、失敗として表示します。