> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# システムプロンプト

OpenClaw はエージェント実行ごとに独自のシステムプロンプトを構築します。ランタイムのデフォルトプロンプトはありません。

組み立ては 3 つの層で構成されます。

* `buildAgentSystemPrompt` は明示的な入力からプロンプトをレンダリングします。これは純粋なレンダラーのままであり、グローバル設定を直接読み取りません。
* `resolveAgentSystemPromptConfig` は、特定のエージェント向けに、設定に基づくプロンプト調整項目（所有者表示、TTS ヒント、モデルエイリアス、メモリ引用モード、サブエージェント委任モード）を解決します。
* ランタイムアダプター（組み込み、CLI、コマンド/エクスポートプレビュー、Compaction）は、ライブ情報（ツール、サンドボックス状態、チャンネル機能、コンテキストファイル、プロバイダーのプロンプト寄与）を収集し、設定済みのプロンプトファサードを呼び出します。

これにより、すべてのランタイム詳細を 1 つの巨大なビルダーに押し込むことなく、エクスポート/デバッグ用のプロンプトサーフェスをライブ実行と揃えられます。

プロバイダー Plugin は、OpenClaw が所有するプロンプトを置き換えずに、キャッシュを意識したガイダンスを寄与できます。プロバイダーランタイムは次のことができます。

* 3 つの名前付きコアセクションのいずれかを置き換える: `interaction_style`、`tool_call_style`、`execution_bias`
* プロンプトキャッシュ境界の上に **安定したプレフィックス** を注入する
* プロンプトキャッシュ境界の下に **動的なサフィックス** を注入する

モデルファミリー固有の調整には、プロバイダー所有の寄与を使用します。従来の `before_prompt_build` フックは、互換性または本当にグローバルなプロンプト変更のために取っておきます。

バンドルされた OpenAI/Codex GPT-5 ファミリーのオーバーレイ（`resolveGpt5SystemPromptContribution`）は、この仕組みを使用します。つまり、`stablePrefix` の振る舞い契約（実行ポリシー、ツール規律、出力契約、完了契約）に加え、より親しみやすいトーンのための任意の `interaction_style` オーバーライドです。これは、OpenAI または Codex Plugin を経由してルーティングされる任意の `gpt-5*` モデル ID に適用され、`agents.defaults.promptOverlays.gpt5.personality`（`"friendly"`/`"on"` または `"off"`）で制御されます。

## 構造

プロンプトはコンパクトで、固定セクションを持ちます。

* **ツール関連**: 構造化ツールの信頼できる情報源に関するリマインダーと、ランタイムのツール使用ガイダンス。実験的な `update_plan` ツールが有効な場合（`tools.experimental.planTool`）、そのツール自身の説明に次が追加されます。重要な複数ステップ作業にのみ使うこと、`in_progress` のステップは最大 1 つに保つこと、単純な 1 ステップ作業では省略すること。
* **実行バイアス**: 実行可能な依頼はそのターン内で対応し、完了またはブロックされるまで続行し、弱いツール結果から回復し、変更され得る状態はライブで確認し、最終応答前に検証します。
* **安全性**: 権力追求的な振る舞いや監督の迂回に対する短いガードレールのリマインダー。
* **Skills**（利用可能な場合）: 必要に応じてスキル指示を読み込む方法をモデルに伝えます。
* **OpenClaw Control**: 設定/再起動作業では `gateway` ツールを優先します。CLI コマンドをでっち上げないでください。
* **OpenClaw Self-Update**: `config.schema.lookup` で設定を安全に検査し、`config.patch` でパッチを適用し、`config.apply` で設定全体を置き換え、明示的なユーザー要求がある場合にのみ `update.run` を実行します。エージェント向けの `gateway` ツールは、保護されたパスに正規化される従来の `tools.bash.*` エイリアスを含め、`tools.exec.ask` / `tools.exec.security` の書き換えを拒否します。
* **ワークスペース**: 作業ディレクトリ（`agents.defaults.workspace`）。
* **ドキュメント**: ローカルのドキュメント/ソースパスと、それを読むタイミング。
* **ワークスペースファイル（注入済み）**: ブートストラップファイルが下に含まれていることを示します。
* **サンドボックス**（有効な場合）: サンドボックス化されたランタイム、サンドボックスパス、昇格 `exec` の可用性。
* **現在の日付と時刻**: タイムゾーンのみ（キャッシュ安定。ライブ時計は `session_status` から来ます）。
* **アシスタント出力指示**: コンパクトな添付、ボイスメモ、返信タグ構文。
* **Heartbeats**: デフォルトエージェントで Heartbeat が有効な場合の Heartbeat プロンプトと確認応答の振る舞い。
* **ランタイム**: ホスト、OS、node、モデル、リポジトリルート（検出時）、思考レベル（1 行）。
* **推論**: 現在の可視性レベルと `/reasoning` トグルのヒント。

**プロジェクトコンテキスト** を含む大きな安定コンテンツは、内部プロンプトキャッシュ境界の上に残ります。ターンごとに変動するセクション（Control UI 埋め込みガイダンス、**メッセージング**、**音声**、**グループチャットコンテキスト**、**リアクション**、**Heartbeats**、**ランタイム**）はその境界の下に追加されるため、プレフィックスキャッシュを持つローカルバックエンドは、チャンネルターン間で安定したワークスペースプレフィックスを再利用できます。受け入れられるスキーマがそのランタイム詳細をすでに保持している場合、ツール説明では現在のチャンネル名を埋め込むのを避けるべきです。

ツール関連には、長時間作業のガイダンスも含まれます。

* 将来のフォローアップ（`check back later`、リマインダー、定期作業）には、`exec` の sleep ループ、`yieldMs` の遅延トリック、または繰り返しの `process` ポーリングではなく cron を使用する
* `exec` / `process` は、今開始してバックグラウンドで継続するコマンドにのみ使用する
* 自動完了ウェイクが有効な場合、コマンドを一度開始し、プッシュベースのウェイクパスに依存する
* 実行中コマンドのログ、ステータス、入力、または介入には `process` を使用する
* 大きめのタスクでは `sessions_spawn` を優先する。サブエージェントの完了はプッシュベースで、依頼者へ自動通知される
* 完了待ちだけのために `subagents list` / `sessions_list` をループでポーリングしない

`agents.defaults.subagents.delegationMode`（デフォルトは `"suggest"`）は、これを強化できます。`"prefer"` は専用の **サブエージェント委任** セクションを追加し、メインエージェントに、応答性の高いコーディネーターとして動作し、直接返信より複雑なものは `sessions_spawn` に回すよう伝えます。これはプロンプトのみの設定です。`sessions_spawn` が利用可能かどうかは、引き続きツールポリシーが制御します。

システムプロンプト内の安全ガードレールは助言であり、強制ではありません。強制には、ツールポリシー、exec 承認、サンドボックス化、チャンネル許可リストを使用します。オペレーターは設計上、プロンプトガードレールを無効化できます。

ネイティブの承認カード/ボタンを持つチャンネルでは、プロンプトはエージェントにその UI をまず使うよう伝え、ツール結果がチャット承認を利用できない、または手動承認が唯一の経路であると示す場合にのみ、手動の `/approve` コマンドを含めるよう伝えます。

## プロンプトモード

OpenClaw はサブエージェント向けに小さめのシステムプロンプトをレンダリングします。ランタイムは実行ごとに `promptMode` を設定します（ユーザー向け設定ではありません）。

* `full`（デフォルト）: 上記のすべてのセクション。
* `minimal`: サブエージェントで使用されます。メモリプロンプトセクション（**メモリ再呼び出し** としてバンドル）、**OpenClaw Self-Update**、**モデルエイリアス**、**ユーザー ID**、**アシスタント出力指示**、**メッセージング**、**サイレント返信**、**Heartbeats** を省略します。ツール関連、**安全性**、**Skills**（提供されている場合）、ワークスペース、サンドボックス、現在の日付と時刻（既知の場合）、ランタイム、注入済みコンテキストは引き続き利用できます。
* `none`: ベース ID 行のみを返します。

`promptMode=minimal` では、追加で注入されるプロンプトは **グループチャットコンテキスト** ではなく **サブエージェントコンテキスト** とラベル付けされます。

チャンネル自動返信実行では、直接、グループ、またはメッセージツール専用のコンテキストがすでに可視返信契約を所有している場合、OpenClaw は汎用の **サイレント返信** セクションを省略します。従来の自動グループ/チャンネルモードだけが `NO_REPLY` を表示します。直接チャットとメッセージツール専用返信では、サイレントトークンのガイダンスを省略します。

## プロンプトスナップショット

OpenClaw は、Codex ランタイムの正常系について、コミット済みプロンプトスナップショットを `test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/` に保持しています。これらは、選択されたアプリサーバーのスレッド/ターンパラメーターに加え、Telegram 直接、Discord グループ、Heartbeat ターン向けに再構築されたモデルバインド済みプロンプトレイヤースタックをレンダリングします。内容は、固定された Codex `gpt-5.5` モデルプロンプトフィクスチャ、Codex 正常系の権限開発者テキスト、OpenClaw 開発者指示、OpenClaw が提供する場合のターンスコープのコラボレーションモード指示、ユーザーターン入力、動的ツール仕様への参照です。

固定された Codex モデルプロンプトフィクスチャは、`pnpm prompt:snapshots:sync-codex-model` で更新します。デフォルトでは、`$CODEX_HOME/models_cache.json`、次に `~/.codex/models_cache.json`、次にメンテナーのチェックアウト慣例である `~/code/codex/codex-rs/models-manager/models.json` を探します。いずれも存在しない場合は、コミット済みフィクスチャを変更せずに終了します。特定の `models_cache.json` または `models.json` ファイルから更新するには、`--catalog <path>` を渡します。

これらのスナップショットは、OpenAI への生リクエストをバイト単位でそのままキャプチャしたものではありません。Codex は、OpenClaw がスレッドおよびターンパラメーターを送信した後に、ランタイム所有のワークスペースコンテキスト（`AGENTS.md`、環境コンテキスト、メモリ、アプリ/Plugin 指示、組み込みのデフォルトコラボレーションモード指示）を追加できます。

`pnpm prompt:snapshots:gen` で再生成し、`pnpm prompt:snapshots:check` で差分を検証します。CI は追加境界シャードと並行して差分チェックを実行するため、プロンプト変更とスナップショット更新は同じ PR で反映されます。

## ワークスペースブートストラップ注入

ブートストラップファイルはアクティブなワークスペースから解決され、そのライフタイムに合うプロンプトサーフェスへルーティングされます。

* `AGENTS.md`
* `SOUL.md`
* `TOOLS.md`
* `IDENTITY.md`
* `USER.md`
* `HEARTBEAT.md`
* `BOOTSTRAP.md`（まったく新しいワークスペースの場合のみ）
* 存在する場合は `MEMORY.md`

ネイティブ Codex ハーネスでは、OpenClaw は安定したワークスペースファイルをすべてのユーザーターンで繰り返すことを避けます。Codex は自身のプロジェクトドキュメント検出を通じて `AGENTS.md` を読み込みます。`TOOLS.md` は継承された Codex 開発者指示として転送されます。`SOUL.md`、`IDENTITY.md`、`USER.md` は、ネイティブ Codex サブエージェントがそれらを継承しないよう、ターンスコープのコラボレーション開発者指示として転送されます。`HEARTBEAT.md` の内容は直接注入されません。Heartbeat ターンでは、ファイルが存在し空でない場合に、そのファイルを指すコラボレーションモードの注記を受け取ります。`MEMORY.md` の内容も、ネイティブ Codex の各ターンへ貼り付けられるわけではありません。ワークスペースでメモリツールが利用可能な場合、Codex ターンは `memory_search` または `memory_get` へモデルを誘導する小さなワークスペースメモリ注記を受け取ります。ツールが無効、メモリ検索が利用不可、またはアクティブなワークスペースがエージェントメモリワークスペースと異なる場合、`MEMORY.md` は通常の境界付きターンコンテキストパスにフォールバックします。`BOOTSTRAP.md` は通常のターンコンテキストロールを維持します。

非 Codex ハーネスでは、ブートストラップファイルは既存のゲートに従って OpenClaw プロンプトに合成されます。デフォルトエージェントで Heartbeat が無効な場合、または `agents.defaults.heartbeat.includeSystemPromptSection` が false の場合、通常実行では `HEARTBEAT.md` は省略されます。注入されるファイルは簡潔に保ってください。特に非 Codex の `MEMORY.md` は、厳選された長期サマリーに留め、詳細な日次メモは `memory_search` / `memory_get` で必要に応じて取得できる `memory/*.md` に置くべきです。大きすぎる非 Codex の `MEMORY.md` ファイルはプロンプト使用量を増やし、下記のブートストラップファイル制限により部分的に注入されることがあります。

<Note>
  `memory/*.md` の日次ファイルは、通常のブートストラッププロジェクトコンテキストの一部では **ありません**。通常のターンでは、必要に応じて `memory_search` / `memory_get` でアクセスされるため、モデルが明示的に読むまではコンテキストウィンドウを消費しません。例外は素の `/new` および `/reset` ターンです。その最初のターンでは、ランタイムが最近の日次メモリを一回限りの起動コンテキストブロックとして先頭に追加できます。
</Note>

大きなファイルはマーカー付きで切り詰められます。

| 制限                              | 設定キー                                               | デフォルト    |
| ------------------------------- | -------------------------------------------------- | -------- |
| ファイルごとの最大文字数                    | `agents.defaults.bootstrapMaxChars`                | 20000    |
| すべてのファイル合計                      | `agents.defaults.bootstrapTotalMaxChars`           | 60000    |
| 切り詰め警告（`off`\|`once`\|`always`） | `agents.defaults.bootstrapPromptTruncationWarning` | `always` |

存在しないファイルは、短い欠落ファイルマーカーを注入します。詳細な生/注入済みのカウントは、`/context`、`/status`、doctor、ログなどの診断に残ります。

メモリファイルの場合、切り詰めはデータ損失ではありません。ファイルはディスク上にそのまま残ります。ネイティブ Codex では、`MEMORY.md` は利用可能な場合にメモリツールを通じて必要に応じて読み取られ、そうでない場合は境界付きプロンプトフォールバックが使われます。他のハーネスでは、モデルがメモリを直接読んだり検索したりするまで、短縮された注入コピーだけが見えます。`MEMORY.md` が繰り返し切り詰められる場合は、より短い永続サマリーへ要約するか、詳細な履歴を `memory/*.md` に移すか、意図的にブートストラップ制限を引き上げてください。

サブエージェントセッションは `AGENTS.md` と `TOOLS.md` だけを注入します（サブエージェントのコンテキストを小さく保つため、他のブートストラップファイルはフィルタリングされます）。

内部フックは `agent:bootstrap` イベント経由でこのステップをインターセプトし、注入されるブートストラップファイルを変更または置換できます（たとえば `SOUL.md` を別のペルソナに差し替えるなど）。

より汎用的でない口調にするには、[SOUL.md Personality Guide](/ja-JP/concepts/soul) から始めてください。

注入された各ファイルがどれだけ寄与しているか（raw と injected、切り詰め、ツールスキーマのオーバーヘッド）を確認するには、`/context list` または `/context detail` を使用します。[Context](/ja-JP/concepts/context) を参照してください。

## 時刻の扱い

**現在の日付と時刻** セクションはユーザーのタイムゾーンが既知の場合にのみ表示され、プロンプトキャッシュを安定させるため **タイムゾーン** のみを含みます（動的な時計や時刻形式は含みません）。

エージェントが現在時刻を必要とする場合は `session_status` を使用します。そのステータスカードにはタイムスタンプ行が含まれます。同じツールで、任意でセッションごとのモデル上書きも設定できます（`model=default` でクリアします）。

設定:

* `agents.defaults.userTimezone`
* `agents.defaults.timeFormat` (`auto` | `12` | `24`)

完全な挙動の詳細は [Timezones](/ja-JP/concepts/timezone) と [Date & Time](/ja-JP/date-time) を参照してください。

## Skills

対象となる Skills が存在する場合、OpenClaw は Skills ごとの **ファイルパス** とコンテンツ由来の `<version>sha256:...</version>` マーカーを含むコンパクトな `<available_skills>` リスト（`formatSkillsForPrompt`）を注入します。プロンプトは、記載された場所（ワークスペース、管理対象、またはバンドル済み）の SKILL.md を読み込むために `read` を使うようモデルに指示し、その `<version>` が前回のターンと異なる場合は Skill を再読み込みするよう指示します。対象となる Skills がない場合、Skills セクションは省略されます。

ネイティブ Codex ターンは、正確なスケジュール済みプロンプトを保持する軽量な cron ターンを除き、このリストをターンごとのユーザー入力ではなく、ターンスコープのコラボレーション開発者指示として受け取ります。他のハーネスは通常のプロンプトセクションを維持します。

場所は `skills/personal/foo/SKILL.md` のようなネストされた Skill を指すことがあります。ネストは整理のためだけのものです。プロンプトは `SKILL.md` フロントマターのフラットな Skill 名を使用します。

適格性には、Skill メタデータゲート、ランタイム環境/設定チェック、`agents.defaults.skills` または `agents.list[].skills` が設定されている場合の有効なエージェント Skill 許可リストが含まれます。Plugin バンドルの Skills は、その所有 Plugin が有効な場合にのみ対象となり、ツール Plugin がすべてのガイダンスを各ツール説明に埋め込まずに、より深い操作ガイドを公開できるようにします。

```xml theme={"theme":{"light":"min-light","dark":"min-dark"}}
<available_skills>
  <skill>
    <name>...</name>
    <description>...</description>
    <location>...</location>
    <version>sha256:...</version>
  </skill>
</available_skills>
```

これにより、ベースプロンプトを小さく保ちながら、対象を絞った Skill の使用を可能にします。サイズ管理は Skills サブシステムが担い、汎用的なランタイムの読み取り/注入サイズ管理とは分離されています。

| スコープ     | Skills プロンプト予算                                    | ランタイム抜粋予算                         |
| -------- | ------------------------------------------------- | --------------------------------- |
| グローバル    | `skills.limits.maxSkillsPromptChars`              | `agents.defaults.contextLimits.*` |
| エージェントごと | `agents.list[].skillsLimits.maxSkillsPromptChars` | `agents.list[].contextLimits.*`   |

ランタイム抜粋予算は、`memory_get`、ライブツール結果、Compaction 後の `AGENTS.md` 更新を対象にします。

## ドキュメント

**ドキュメント** セクションは、利用可能な場合はローカルドキュメント（Git チェックアウト内の `docs/` またはバンドル済み npm パッケージのドキュメント）を指し、それ以外の場合は [https://docs.openclaw.ai](https://docs.openclaw.ai) にフォールバックします。また、OpenClaw ソースの場所も列挙します。Git チェックアウトではローカルソースルートが公開され、パッケージインストールでは GitHub ソース URL と、ドキュメントが不完全または古い場合はそこでソースを確認するよう指示が示されます。

プロンプトは、モデルが OpenClaw の仕組み（メモリ/デイリーノート、セッション、ツール、Gateway、設定、コマンド、プロジェクトコンテキスト）を理解する前に、ドキュメントを OpenClaw の自己知識に関する権威として位置づけます。また、`AGENTS.md`、プロジェクトコンテキスト、ワークスペース/プロファイル/メモリノート、`memory_search` は OpenClaw の設計/実装知識ではなく、指示コンテキストまたはユーザーメモリとして扱うようモデルに伝えます。ドキュメントが沈黙している、または古い場合、モデルはその旨を述べてソースを調査するべきです。また、可能な場合はモデル自身が `openclaw status` を実行し、アクセスできない場合にのみユーザーに尋ねるよう伝えます。

設定については特に、正確なフィールド単位のドキュメントと制約を得るために、エージェントに `gateway` ツールアクション `config.schema.lookup` を参照させ、その後、より広いガイダンスとして `docs/gateway/configuration.md` と `docs/gateway/configuration-reference.md` を参照させます。

## 関連

* [Agent runtime](/ja-JP/concepts/agent)
* [Agent workspace](/ja-JP/concepts/agent-workspace)
* [Context engine](/ja-JP/concepts/context-engine)
