Fundamentals

システムプロンプト

OpenClaw は、すべてのエージェント実行に対してカスタムシステムプロンプトを構築します。このプロンプトは OpenClaw が所有しており、pi-coding-agent のデフォルトプロンプトは使用しません。

プロンプトは OpenClaw によって組み立てられ、各エージェント実行に注入されます。

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

  • 名前付きの少数のコアセクション(interaction_styletool_call_styleexecution_bias)を置き換える
  • プロンプトキャッシュ境界の上に 安定したプレフィックスを注入する
  • プロンプトキャッシュ境界の下に 動的なサフィックスを注入する

モデルファミリー固有の調整には、プロバイダー所有の寄与を使用してください。従来の before_prompt_build プロンプト変更は、通常のプロバイダー動作ではなく、互換性または真にグローバルなプロンプト変更のために残してください。

OpenAI GPT-5 ファミリーのオーバーレイは、コア実行ルールを小さく保ちつつ、ペルソナのラッチ、簡潔な出力、ツール規律、並列ルックアップ、成果物の網羅性、検証、不足しているコンテキスト、端末ツールの衛生に関するモデル固有のガイダンスを追加します。

構造

プロンプトは意図的にコンパクトで、固定セクションを使用します。

  • ツール: 構造化ツールの信頼できる情報源のリマインダーと、ランタイムのツール使用ガイダンス。
  • 実行バイアス: コンパクトなフォロースルーガイダンス。実行可能なリクエストにはターン内で対応し、完了またはブロックされるまで続行し、弱いツール結果から回復し、可変状態をライブで確認し、最終化前に検証します。
  • 安全性: 権力追求的な振る舞いや監督の回避を避けるための短いガードレールリマインダー。
  • Skills(利用可能な場合): 必要に応じてスキル指示を読み込む方法をモデルに伝えます。
  • OpenClaw 自己更新: config.schema.lookup で設定を安全に検査し、config.patch で設定にパッチを適用し、config.apply で設定全体を置き換え、明示的なユーザーリクエストがある場合にのみ update.run を実行する方法。所有者専用の gateway ツールも、保護された exec パスに正規化される従来の tools.bash.* エイリアスを含め、tools.exec.ask / tools.exec.security の書き換えを拒否します。
  • ワークスペース: 作業ディレクトリ(agents.defaults.workspace)。
  • ドキュメント: OpenClaw ドキュメントへのローカルパス(リポジトリまたは npm パッケージ)と、それを読むタイミング。
  • ワークスペースファイル(注入済み): ブートストラップファイルが下に含まれていることを示します。
  • サンドボックス(有効な場合): サンドボックス化されたランタイム、サンドボックスパス、昇格された exec が利用可能かどうかを示します。
  • 現在の日付と時刻: タイムゾーンのみ(キャッシュ安定。ライブクロックは session_status から取得)。
  • 返信タグ: サポートされるプロバイダー向けの任意の返信タグ構文。
  • Heartbeats: デフォルトエージェントで Heartbeat が有効な場合の Heartbeat プロンプトと ack 動作。
  • ランタイム: ホスト、OS、Node、モデル、リポジトリルート(検出された場合)、思考レベル(1 行)。
  • 推論: 現在の可視性レベル + /reasoning トグルのヒント。

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

ツールセクションには、長時間実行される作業のためのランタイムガイダンスも含まれます。

  • 将来のフォローアップ(check back later、リマインダー、定期作業)には、exec の sleep ループ、yieldMs の遅延トリック、または process の反復ポーリングではなく、Cron を使用する
  • 今すぐ開始してバックグラウンドで実行し続けるコマンドにのみ exec / process を使用する
  • 自動完了ウェイクが有効な場合は、コマンドを一度だけ開始し、出力を発行するか失敗したときのプッシュベースのウェイクパスに依存する
  • 実行中のコマンドを検査する必要がある場合は、ログ、ステータス、入力、介入に process を使用する
  • タスクが大きい場合は、sessions_spawn を優先する。サブエージェントの完了はプッシュベースで、リクエスト元に自動通知される
  • 完了を待つためだけに subagents list / sessions_list をループでポーリングしない

実験的な update_plan ツールが有効な場合、ツールセクションは、非自明な複数ステップの作業にのみ使用すること、in_progress ステップを正確に 1 つだけ保つこと、各更新後に計画全体を繰り返さないこともモデルに伝えます。

システムプロンプト内の安全ガードレールは助言です。モデルの振る舞いを導きますが、ポリシーを強制するものではありません。強制には、ツールポリシー、exec 承認、サンドボックス化、チャネル許可リストを使用してください。オペレーターは設計上、これらを無効化できます。

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

プロンプトモード

OpenClaw は、サブエージェント向けにより小さなシステムプロンプトをレンダリングできます。ランタイムは各実行に promptMode を設定します(ユーザー向け設定ではありません)。

  • full(デフォルト): 上記のすべてのセクションを含みます。
  • minimal: サブエージェントで使用されます。SkillsMemory RecallOpenClaw Self-UpdateModel AliasesUser IdentityReply TagsMessagingSilent RepliesHeartbeatsを省略します。ツール、安全性、ワークスペース、サンドボックス、現在の日付と時刻(既知の場合)、ランタイム、注入されたコンテキストは引き続き利用できます。
  • none: ベースのアイデンティティ行のみを返します。

promptMode=minimal の場合、追加で注入されるプロンプトは Group Chat Context ではなく Subagent Context とラベル付けされます。

チャネルの自動返信実行では、直接/グループチャットコンテキストに解決済みの会話固有の NO_REPLY 動作がすでに含まれている場合、OpenClaw は汎用の Silent Replies セクションを省略できます。これにより、グローバルシステムプロンプトとチャネルコンテキストの両方でトークン機構を繰り返すことを避けられます。

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

OpenClaw は、Codex ランタイムの正常系向けにコミット済みプロンプトスナップショットを test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/ 配下に保持します。これらは、選択されたアプリサーバーのスレッド/ターンパラメーターに加え、Telegram ダイレクト、Discord グループ、Heartbeat ターン向けに再構築されたモデルバウンドのプロンプトレイヤースタックをレンダリングします。そのスタックには、Codex のモデルカタログ/キャッシュ形状から生成されたピン留め済み Codex gpt-5.5 モデルプロンプトフィクスチャ、Codex 正常系の権限開発者テキスト、OpenClaw 開発者指示、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 指示、組み込みの Default コラボレーションモード指示など、ランタイム所有のワークスペースコンテキストを追加できます。

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

これらのファイルはすべて、ファイル固有のゲートが適用されない限り、すべてのターンで コンテキストウィンドウに注入されます。HEARTBEAT.md は、デフォルトエージェントで Heartbeat が無効になっている場合、または agents.defaults.heartbeat.includeSystemPromptSection が false の場合、通常の実行では省略されます。注入されるファイルは簡潔に保ってください。特に MEMORY.md は時間とともに増大し、予期しない高いコンテキスト使用量や、より頻繁な Compaction につながる可能性があります。

セッションがネイティブ Codex ハーネス上で実行される場合、Codex は独自のプロジェクトドキュメント探索を通じて AGENTS.md を読み込みます。OpenClaw は引き続き残りのブートストラップファイルを解決し、Codex 設定指示として転送するため、SOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.mdMEMORY.md は、AGENTS.md を重複させずに同じワークスペースコンテキストの役割を維持します。

大きなファイルはマーカー付きで切り詰められます。ファイルごとの最大サイズは agents.defaults.bootstrapMaxChars(デフォルト: 12000)で制御されます。ファイル全体の注入ブートストラップコンテンツの合計は、agents.defaults.bootstrapTotalMaxChars(デフォルト: 60000)で上限が設定されます。欠落しているファイルは、短い欠落ファイルマーカーを注入します。切り詰めが発生した場合、OpenClaw は簡潔なシステムプロンプト警告通知を注入できます。これは agents.defaults.bootstrapPromptTruncationWarningoffoncealways。デフォルト: once)で制御します。詳細な生/注入済みカウントは、/context/status、doctor、ログなどの診断に保持されます。

サブエージェントセッションでは、AGENTS.mdTOOLS.md のみが注入されます(他のブートストラップファイルは、サブエージェントコンテキストを小さく保つためにフィルターされます)。

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

エージェントの響きをより汎用的でないものにしたい場合は、SOUL.md パーソナガイド から始めてください。

注入された各ファイルの寄与量(生 vs 注入済み、切り詰め、ツールスキーマのオーバーヘッドを含む)を調べるには、/context list または /context detail を使用します。コンテキスト を参照してください。

時刻処理

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

エージェントが現在時刻を必要とする場合は session_status を使用してください。ステータスカードにはタイムスタンプ行が含まれます。同じツールで、任意にセッション単位のモデルオーバーライドを設定することもできます(model=default でクリア)。

設定項目:

  • agents.defaults.userTimezone
  • agents.defaults.timeFormat (auto | 12 | 24)

完全な動作の詳細については、日付と時刻 を参照してください。

Skills

適格なスキルが存在する場合、OpenClaw は各スキルの ファイルパスを含むコンパクトな 利用可能な Skills リストformatSkillsForPrompt)を注入します。プロンプトはモデルに、一覧にある場所(ワークスペース、管理対象、またはバンドル済み)の SKILL.md を読み込むために read を使用するよう指示します。適格なスキルがない場合、Skills セクションは省略されます。

適格性には、スキルメタデータゲート、ランタイム環境/設定チェック、agents.defaults.skills または agents.list[].skills が設定されている場合の有効なエージェントスキル許可リストが含まれます。

Plugin にバンドルされた Skills は、その所有 Plugin が有効な場合にのみ適格です。これにより、ツール Plugin は、そのガイダンスすべてを各ツール説明に直接埋め込まずに、より深い操作ガイドを公開できます。

<available_skills>
  <skill>
    <name>...</name>
    <description>...</description>
    <location>...</location>
  </skill>
</available_skills>

これにより、対象を絞ったスキル使用を可能にしながら、ベースプロンプトを小さく保てます。

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 status を自分で実行するようモデルに伝えます(アクセス権がない場合のみユーザーに尋ねます)。特に設定については、正確なフィールドレベルのドキュメントと制約を確認するために gateway ツールアクション config.schema.lookup を参照し、その後、より広範なガイダンスとして docs/gateway/configuration.mddocs/gateway/configuration-reference.md を参照するようエージェントに示します。

関連