Fundamentals
システムプロンプト
OpenClaw はエージェント実行ごとにカスタムシステムプロンプトを構築します。このプロンプトは OpenClaw 所有であり、ランタイムのデフォルトプロンプトは使用しません。
プロンプトは OpenClaw によって組み立てられ、各エージェント実行に注入されます。
プロンプトの組み立てには 3 つのレイヤーがあります。
buildAgentSystemPromptは明示的な入力からプロンプトをレンダリングします。これは 純粋なレンダラーのままにし、グローバル設定を直接読み取るべきではありません。resolveAgentSystemPromptConfigは、特定のエージェントについて、 所有者表示、TTS ヒント、モデルエイリアス、メモリ引用モード、サブエージェント 委任モードなど、設定に基づくプロンプト調整項目を解決します。- ランタイムアダプター(埋め込み、CLI、コマンド/エクスポートのプレビュー、Compaction)は、 ツール、サンドボックス状態、チャンネル機能、コンテキストファイル、 プロバイダープロンプト寄与などのライブ情報を収集し、設定済みのプロンプトファサードを呼び出します。
これにより、ランタイム固有の詳細をすべて 1 つの巨大なビルダーに押し込むことなく、 エクスポート/デバッグ用のプロンプトサーフェスをライブ実行と揃えられます。
プロバイダー Plugin は、OpenClaw 所有のプロンプト全体を置き換えることなく、 キャッシュを意識したプロンプトガイダンスを提供できます。プロバイダーランタイムは次のことができます。
- 名前付きの小さなコアセクション群(
interaction_style,tool_call_style,execution_bias)を置き換える - プロンプトキャッシュ境界より上に 安定したプレフィックスを注入する
- プロンプトキャッシュ境界より下に 動的なサフィックスを注入する
モデルファミリー固有の調整には、プロバイダー所有の寄与を使用してください。レガシーの
before_prompt_build プロンプト変更は、互換性または本当にグローバルなプロンプト変更のために残し、
通常のプロバイダー動作には使わないでください。
OpenAI GPT-5 ファミリーのオーバーレイは、コア実行ルールを小さく保ち、 ペルソナ固定、簡潔な出力、ツール規律、並列ルックアップ、成果物の網羅性、 検証、不足しているコンテキスト、端末ツールの衛生に関するモデル固有のガイダンスを追加します。
構造
プロンプトは意図的にコンパクトにされ、固定セクションを使用します。
- ツール使用: 構造化ツールが信頼できる情報源であることのリマインダーと、ランタイムのツール使用ガイダンス。
- 実行バイアス: コンパクトな完遂ガイダンス。実行可能な依頼はターン内で対応し、 完了またはブロックされるまで続け、弱いツール結果から回復し、 変化し得る状態をライブで確認し、最終化前に検証します。
- 安全性: 権力追求的な振る舞いや監督の迂回を避けるための短いガードレールリマインダー。
- Skills(利用可能な場合): 必要に応じてスキル指示を読み込む方法をモデルに伝えます。
- OpenClaw コントロール: 設定/再起動作業では
gatewayツールを優先し、 CLI コマンドを作り出さないようモデルに伝えます。 - OpenClaw セルフアップデート:
config.schema.lookupで設定を安全に検査し、config.patchで設定をパッチし、config.applyで設定全体を置き換え、 明示的なユーザー依頼がある場合にのみupdate.runを実行する方法。エージェント向けのgatewayツールは、保護された exec パスに正規化されるレガシーのtools.bash.*エイリアスを含め、tools.exec.ask/tools.exec.securityの書き換えも拒否します。 - ワークスペース: 作業ディレクトリ(
agents.defaults.workspace)。 - ドキュメント: OpenClaw ドキュメント/ソースへのローカルパスと、それらを読むタイミング。
- ワークスペースファイル(注入済み): ブートストラップファイルが下に含まれていることを示します。
- サンドボックス(有効な場合): サンドボックス化されたランタイム、サンドボックスパス、昇格 exec が利用可能かどうかを示します。
- 現在の日付と時刻: タイムゾーンのみ(キャッシュ安定。ライブクロックは
session_statusから取得します)。 - アシスタント出力ディレクティブ: コンパクトな添付、音声メモ、返信タグ構文。
- Heartbeats: デフォルトエージェントで Heartbeat が有効な場合の Heartbeat プロンプトと ack 動作。
- ランタイム: ホスト、OS、node、モデル、リポジトリルート(検出された場合)、思考レベル(1 行)。
- 推論: 現在の可視性レベル + /reasoning トグルのヒント。
OpenClaw は、プロジェクトコンテキストを含む大きく安定した内容を、 内部プロンプトキャッシュ境界より上に保持します。コントロール UI 埋め込みガイダンス、 メッセージング、音声、グループチャットコンテキスト、 リアクション、Heartbeats、ランタイムなどの揮発性のチャンネル/セッションセクションは、 その境界より下に追加されるため、プレフィックスキャッシュを持つローカルバックエンドは、 チャンネルターン間で安定したワークスペースプレフィックスを再利用できます。ツール説明も同様に、 受け入れられたスキーマがすでにそのランタイム詳細を運ぶ場合は、 現在のチャンネル名を埋め込むことを避けるべきです。
ツール使用セクションには、長時間実行される作業に関するランタイムガイダンスも含まれます。
- 将来のフォローアップ(
check back later、リマインダー、繰り返し作業)には、execの sleep ループ、yieldMsの遅延トリック、またはprocessの反復ポーリングではなく、 Cron を使用する - 今すぐ開始してバックグラウンドで実行され続けるコマンドにのみ、
exec/processを使用する - 自動完了ウェイクが有効な場合は、コマンドを 1 回だけ開始し、 出力を生成するか失敗したときにプッシュベースのウェイク経路に依存する
- 実行中のコマンドを検査する必要がある場合は、ログ、状態、入力、または介入に
processを使用する - タスクが大きい場合は
sessions_spawnを優先する。サブエージェントの完了は プッシュベースで、依頼者に自動通知される - 完了を待つためだけに
subagents list/sessions_listをループでポーリングしない
agents.defaults.subagents.delegationMode はこのガイダンスを強化できます。
デフォルトの suggest モードはベースラインの促しを維持します。prefer は専用の
サブエージェント委任セクションを追加し、メインエージェントに対して、
応答性の高いコーディネーターとして動き、直接の返信より複雑なものは
sessions_spawn に送るよう伝えます。これはプロンプトのみです。ツールポリシーは引き続き
sessions_spawn が利用可能かどうかを制御します。
実験的な update_plan ツールが有効な場合、ツール使用はさらに、
重要な複数ステップの作業にのみそれを使用し、in_progress ステップを必ず 1 つだけ保ち、
各更新後に計画全体を繰り返さないようモデルに伝えます。
システムプロンプト内の安全性ガードレールは助言です。モデルの振る舞いを導きますが、ポリシーは強制しません。強制には、ツールポリシー、exec 承認、サンドボックス化、チャンネル許可リストを使用してください。オペレーターは設計上、これらを無効化できます。
ネイティブ承認カード/ボタンを持つチャンネルでは、ランタイムプロンプトは現在、
まずそのネイティブ承認 UI に依存するようエージェントに伝えます。ツール結果がチャット承認を利用できない、
または手動承認が唯一の経路であると示す場合にのみ、手動の /approve コマンドを含めるべきです。
プロンプトモード
OpenClaw は、サブエージェント向けにより小さなシステムプロンプトをレンダリングできます。ランタイムは各実行に
promptMode を設定します(ユーザー向け設定ではありません)。
full(デフォルト): 上記のすべてのセクションを含みます。minimal: サブエージェントに使用されます。メモリ想起、OpenClaw セルフアップデート、モデルエイリアス、ユーザー ID、アシスタント出力ディレクティブ、 メッセージング、サイレント返信、Heartbeats を省略します。ツール使用、安全性、 提供された場合の Skills、ワークスペース、サンドボックス、現在の日付と時刻(既知の場合)、 ランタイム、注入済みコンテキストは引き続き利用できます。none: ベースの ID 行のみを返します。
promptMode=minimal の場合、追加で注入されるプロンプトは グループチャットコンテキストではなく
サブエージェントコンテキストとラベル付けされます。
チャンネル自動返信実行では、直接、グループ、またはメッセージツールのみのコンテキストが
可視返信契約を所有している場合、OpenClaw は汎用の サイレント返信セクションを省略します。
古い自動グループ/チャンネルモードのみが NO_REPLY を表示すべきです。直接チャットおよび
メッセージツールのみの返信は、サイレントトークンのガイダンスを受け取りません。
プロンプトスナップショット
OpenClaw は、Codex ランタイムのハッピーパス用にコミット済みのプロンプトスナップショットを
test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/ 以下に保持します。これらは、
Telegram 直接、Discord グループ、Heartbeat ターンについて、選択された app-server のスレッド/ターンパラメーターと、
再構築されたモデルバウンドのプロンプトレイヤースタックをレンダリングします。そのスタックには、
Codex のモデルカタログ/キャッシュ形状から生成された固定 Codex gpt-5.5 モデルプロンプトフィクスチャ、
Codex ハッピーパス権限の developer テキスト、OpenClaw developer 指示、
OpenClaw が提供する場合のターンスコープのコラボレーションモード指示、ユーザーターン入力、
および動的ツール仕様への参照が含まれます。
固定 Codex モデルプロンプトフィクスチャは
pnpm prompt:snapshots:sync-codex-model で更新します。デフォルトでは、スクリプトは
Codex のランタイムキャッシュを $CODEX_HOME/models_cache.json、次に
~/.codex/models_cache.json で探し、その後にのみメンテナー Codex
チェックアウト規約である ~/code/codex/codex-rs/models-manager/models.json にフォールバックします。
これらのソースが存在しない場合、コマンドはコミット済みフィクスチャを変更せずに終了します。
特定の models_cache.json または models.json ファイルから更新するには
--catalog <path> を渡してください。
これらのスナップショットは、それでも OpenAI へのリクエストをバイト単位でそのままキャプチャしたものではありません。Codex は、
OpenClaw がスレッドとターンパラメーターを送信した後、Codex ランタイム内で
AGENTS.md、環境コンテキスト、メモリ、アプリ/Plugin 指示、組み込みのデフォルト
コラボレーションモード指示など、ランタイム所有のワークスペースコンテキストを追加できます。
pnpm prompt:snapshots:gen で再生成し、
pnpm prompt:snapshots:check で差分を検証します。CI は追加の境界シャードで差分チェックを実行し、
プロンプト変更とスナップショット更新が同じ PR に紐づいたままになるようにします。
ワークスペースブートストラップ注入
ブートストラップファイルはアクティブなワークスペースから解決され、 そのライフタイムに一致するプロンプトサーフェスへルーティングされます。
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(完全に新しいワークスペースでのみ)- 存在する場合は
MEMORY.md
ネイティブ Codex ハーネスでは、OpenClaw はすべてのユーザーターンで安定したワークスペースファイルを
繰り返すことを避けます。Codex は独自のプロジェクトドキュメント探索を通じて
AGENTS.md を読み込みます。SOUL.md、IDENTITY.md、TOOLS.md、USER.md は
Codex developer 指示として転送されます。コンパクトな OpenClaw Skills リストも、
ターンスコープのコラボレーション developer 指示として転送されます。HEARTBEAT.md の内容は
注入されません。Heartbeat ターンは、ファイルが存在して空でない場合に、そのファイルを指す
コラボレーションモード注記を受け取ります。設定済みエージェントワークスペースの MEMORY.md 内容は、
すべてのネイティブ Codex ターンには貼り付けられません。そのワークスペースでメモリツールを利用できる場合、
Codex ターンはターンスコープのコラボレーション developer 指示内で小さなワークスペースメモリ注記を受け取り、
永続メモリが関連する場合は memory_search または memory_get を使用すべきです。ツールが無効な場合、
メモリ検索を利用できない場合、またはアクティブワークスペースがエージェントメモリワークスペースと異なる場合、
MEMORY.md は通常の境界付きターンコンテキスト経路にフォールバックします。アクティブな
BOOTSTRAP.md 内容は、現時点では通常のターンコンテキストロールを維持します。
非 Codex ハーネスでは、ブートストラップファイルは既存のゲートに従って引き続き
OpenClaw プロンプトへ合成されます。デフォルトエージェントで Heartbeat が無効な場合、または
agents.defaults.heartbeat.includeSystemPromptSection が false の場合、通常実行では
HEARTBEAT.md は省略されます。注入ファイルは簡潔に保ってください。特に非 Codex の
MEMORY.md は簡潔にしてください。MEMORY.md は、精選された長期サマリーのままであることを意図しています。
詳細な日次メモは memory/*.md に置くべきであり、memory_search と memory_get が必要に応じて取得できます。
大きすぎる非 Codex MEMORY.md ファイルはプロンプト使用量を増やし、下記のブートストラップファイル制限により
部分的に注入される可能性があります。
大きなファイルはマーカー付きで切り詰められます。ファイルごとの最大サイズは
agents.defaults.bootstrapMaxChars (デフォルト: 20000) で制御されます。ファイル全体で注入されるブートストラップ
コンテンツの合計は agents.defaults.bootstrapTotalMaxChars
(デフォルト: 60000) で上限設定されます。欠落しているファイルは短い欠落ファイルマーカーを注入します。切り詰めが
発生した場合、OpenClaw は簡潔なシステムプロンプト警告通知を注入できます。これは
agents.defaults.bootstrapPromptTruncationWarning (off, once, always;
デフォルト: always) で制御します。詳細な raw/注入済みカウントは
/context、/status、doctor、ログなどの診断に残ります。
メモリファイルでは、切り詰めはデータ損失ではありません。ファイルはディスク上で完全なまま残ります。
ネイティブ Codex では、利用可能な場合 MEMORY.md はメモリツールを通じてオンデマンドで読み取られ、
ツールを実行できない場合は制限付きプロンプトフォールバックが使われます。他の
ハーネスでは、モデルがメモリを直接読み取るか検索するまで、短縮された注入済みコピーだけが見えます。
そこで MEMORY.md が繰り返し切り詰められる場合は、より短い永続的な要約に凝縮し、
詳細な履歴を memory/*.md に移動するか、意図的にブートストラップ上限を引き上げてください。
サブエージェントセッションでは、AGENTS.md と TOOLS.md だけが注入されます (サブエージェントのコンテキストを小さく保つため、他のブートストラップファイル
は除外されます)。
内部フックは agent:bootstrap を介してこのステップに割り込み、
注入されるブートストラップファイルを変更または置換できます (たとえば SOUL.md を代替ペルソナに差し替えるなど)。
エージェントの口調をより汎用的でないものにしたい場合は、 SOUL.md パーソナリティガイド から始めてください。
各注入ファイルがどれだけ寄与しているか (raw と注入済み、切り詰め、さらにツールスキーマのオーバーヘッド) を調べるには、/context list または /context detail を使用します。コンテキスト を参照してください。
時刻の扱い
ユーザーのタイムゾーンが既知の場合、システムプロンプトには専用の 現在の日付と時刻 セクションが含まれます。 プロンプトキャッシュを安定させるため、現在は タイムゾーン だけが含まれます (動的な時計や時刻形式は含まれません)。
エージェントが現在時刻を必要とする場合は session_status を使用してください。ステータスカードには
タイムスタンプ行が含まれます。同じツールで、セッション単位のモデル
オーバーライドを任意で設定することもできます (model=default で解除)。
設定項目:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
完全な挙動の詳細は 日付と時刻 を参照してください。
Skills
対象となる Skills が存在する場合、OpenClaw はコンパクトな 利用可能な Skills 一覧
(formatSkillsForPrompt) を注入します。これには各 Skill の ファイルパス と、コンテンツ由来の
<version> マーカーが含まれます。プロンプトは、一覧にある場所 (ワークスペース、管理対象、またはバンドル済み) の SKILL.md を読み込むために read
を使うようモデルに指示し、その <version> が前のターンと異なる場合は Skill を再読込するよう指示します。対象となる
Skills がない場合、Skills セクションは省略されます。
ネイティブ Codex ターンでは、この一覧はターンごとのユーザー入力ではなく、ターンスコープのコラボレーション用 developer instructions として受け取ります。ただし、正確なスケジュール済みプロンプトを保持する軽量 Cron ターンは例外です。他のハーネスでは通常のプロンプト セクションを維持します。
場所は次のようなネストされた Skill を指すことができます。
skills/personal/foo/SKILL.md。ネストは整理のためだけのもので、プロンプトでは引き続き
SKILL.md frontmatter のフラットな Skill 名を使用します。
対象判定には、Skill メタデータゲート、ランタイム環境/設定チェック、
および agents.defaults.skills または
agents.list[].skills が設定されている場合の有効なエージェント Skill 許可リストが含まれます。
Plugin にバンドルされた Skills は、その所有 Plugin が有効な場合にのみ対象になります。 これにより、ツール Plugin は、そのガイダンス全体をすべてのツール説明に直接埋め込むことなく、 より深い操作ガイドを公開できます。
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> <version>sha256:...</version> </skill></available_skills>これにより、基本プロンプトを小さく保ちながら、対象を絞った Skill 利用を可能にします。
Skills 一覧の予算は Skills サブシステムが所有します。
- グローバルデフォルト:
skills.limits.maxSkillsPromptChars - エージェント単位のオーバーライド:
agents.list[].skillsLimits.maxSkillsPromptChars
汎用の制限付きランタイム抜粋では別のサーフェスを使用します。
agents.defaults.contextLimits.*agents.list[].contextLimits.*
この分離により、Skills のサイズ設定は、memory_get、ライブツール結果、Compaction 後の AGENTS.md 更新などの
ランタイム読み取り/注入サイズ設定から切り離されます。
ドキュメント
システムプロンプトには ドキュメント セクションが含まれます。ローカルドキュメントが利用可能な場合は、
ローカルの OpenClaw ドキュメントディレクトリ (Git チェックアウト内の docs/ またはバンドル済み npm
パッケージのドキュメント) を指します。ローカルドキュメントが利用できない場合は、
https://docs.openclaw.ai にフォールバックします。
同じセクションには OpenClaw ソースの場所も含まれます。Git チェックアウトでは、エージェントがコードを直接調べられるようにローカルの
ソースルートが公開されます。パッケージインストールでは GitHub
ソース URL が含まれ、ドキュメントが不完全または古い場合はそこでソースを確認するようエージェントに伝えます。プロンプトでは、公開ドキュメントミラー、コミュニティ Discord、Skills 発見のための ClawHub
(https://clawhub.ai) にも言及します。これは、モデルが OpenClaw の仕組みを理解する前の、OpenClaw 自己知識の
権威としてドキュメントを位置付けます。対象には、メモリ/日次ノート、セッション、ツール、Gateway、設定、コマンド、プロジェクト
コンテキストが含まれます。プロンプトはモデルに、まずローカルドキュメント (ローカルドキュメントが利用できない場合はドキュメントミラー) を使い、
AGENTS.md、プロジェクトコンテキスト、ワークスペース/プロフィール/メモリ
ノート、memory_search は、OpenClaw の設計や実装知識ではなく、指示コンテキストまたはユーザーメモリとして扱うよう伝えます。ドキュメントが何も述べていない、または古い場合、モデルはその旨を述べてソースを調べるべきです。プロンプトはまた、可能な場合はモデル自身で openclaw status を実行し、
アクセス権がない場合にのみユーザーに確認するよう伝えます。
設定については特に、正確なフィールドレベルのドキュメントと制約について gateway ツールアクション
config.schema.lookup を参照し、その後でより広範なガイダンスとして
docs/gateway/configuration.md と docs/gateway/configuration-reference.md
を参照するようエージェントに案内します。