システムプロンプト
OpenClaw は、エージェントの実行ごとにカスタムのシステムプロンプトを構築します。このプロンプトは OpenClaw が管理 しており、pi-coding-agent のデフォルトプロンプトは使用しません。 このプロンプトは OpenClaw によって組み立てられ、各エージェント実行に注入されます。 プロバイダープラグインは、OpenClaw 管理の完全なプロンプトを置き換えることなく、キャッシュ対応のプロンプトガイダンスを提供できます。プロバイダーランタイムでは、次のことが可能です。- 少数の名前付きコアセクション(
interaction_style、tool_call_style、execution_bias)を置き換える - プロンプトキャッシュ境界の上に安定したプレフィックスを注入する
- プロンプトキャッシュ境界の下に動的なサフィックスを注入する
before_prompt_build によるプロンプト変更は、互換性のため、または本当にグローバルなプロンプト変更にのみ使い、通常のプロバイダー挙動には使わないでください。
構造
このプロンプトは意図的にコンパクトで、固定セクションを使用します。- Tooling: structured-tool の信頼できる情報源であることのリマインダーと、ランタイムのツール使用ガイダンス。
- Safety: 権力志向の挙動や監督の回避を避けるための短いガードレールのリマインダー。
- Skills(利用可能な場合): 必要に応じて skill の指示を読み込む方法をモデルに伝えます。
- OpenClaw Self-Update:
config.schema.lookupで安全に設定を調べる方法、config.patchで設定にパッチを当てる方法、config.applyで完全な設定を置き換える方法、および明示的なユーザー要求がある場合にのみupdate.runを実行する方法。owner 限定のgatewayツールは、tools.exec.ask/tools.exec.securityの書き換えも拒否します。これには、それらの保護された exec パスに正規化される旧来のtools.bash.*エイリアスも含まれます。 - Workspace: 作業ディレクトリ(
agents.defaults.workspace)。 - Documentation: OpenClaw ドキュメントのローカルパス(リポジトリまたは npm パッケージ)と、それを読むべきタイミング。
- Workspace Files (injected): ブートストラップファイルが以下に含まれていることを示します。
- Sandbox(有効な場合): サンドボックス化されたランタイム、サンドボックスパス、および権限昇格付き exec が利用可能かどうかを示します。
- Current Date & Time: ユーザーのローカル時刻、タイムゾーン、時刻形式。
- Reply Tags: 対応プロバイダー向けのオプションの返信タグ構文。
- Heartbeats: デフォルトエージェントで heartbeat が有効な場合の、heartbeat プロンプトと ack の挙動。
- Runtime: ホスト、OS、node、モデル、リポジトリルート(検出された場合)、thinking level(1 行)。
- Reasoning: 現在の可視性レベルと
/reasoning切り替えのヒント。
- 将来のフォローアップ(
check back later、リマインダー、定期作業)にはcronを使用し、execの sleep ループ、yieldMsの遅延トリック、繰り返しのprocessポーリングは使わない - 今すぐ開始してバックグラウンドで継続実行されるコマンドにのみ
exec/processを使用する - 自動完了 wake が有効な場合は、コマンドを一度だけ開始し、出力が出たときや失敗したときの push ベースの wake 経路に任せる
- 実行中コマンドのログ、状態、入力、介入を確認する必要がある場合は
processを使用する - タスクがより大きい場合は
sessions_spawnを優先する。サブエージェントの完了は push ベースで、要求元に自動通知される - 完了を待つためだけに
subagents list/sessions_listをループでポーリングしない
update_plan ツールが有効な場合、Tooling では、これを自明でない複数ステップの作業にのみ使用し、in_progress のステップをちょうど 1 つに保ち、更新のたびに計画全体を繰り返さないようモデルに伝えます。
システムプロンプト内の Safety ガードレールは助言的なものです。これらはモデルの挙動を導きますが、ポリシーを強制するものではありません。強制にはツールポリシー、exec 承認、サンドボックス、チャンネル allowlist を使用してください。オペレーターは設計上これらを無効化できます。
ネイティブの承認カードやボタンがあるチャンネルでは、ランタイムプロンプトは、まずそのネイティブ承認 UI に依存するようエージェントに伝えます。手動の /approve コマンドを含めるのは、ツール結果がチャット承認を利用できないと示している場合、または手動承認が唯一の経路である場合だけです。
プロンプトモード
OpenClaw は、サブエージェント向けにより小さいシステムプロンプトをレンダリングできます。ランタイムは各実行にpromptMode を設定します(ユーザー向けの設定ではありません)。
full(デフォルト): 上記のすべてのセクションを含みます。minimal: サブエージェントに使用されます。Skills、Memory Recall、OpenClaw Self-Update、Model Aliases、User Identity、Reply Tags、Messaging、Silent Replies、Heartbeats を省略します。Tooling、Safety、Workspace、Sandbox、Current Date & Time(既知の場合)、Runtime、および注入されたコンテキストは引き続き利用可能です。none: ベースとなる識別行のみを返します。
promptMode=minimal の場合、追加で注入されるプロンプトは Group Chat Context ではなく Subagent Context とラベル付けされます。
ワークスペースのブートストラップ注入
ブートストラップファイルは切り詰められたうえで Project Context の下に追加されるため、モデルは明示的に読まなくても識別情報とプロファイルコンテキストを把握できます。AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(新規ワークスペースでのみ)MEMORY.mdがある場合はそれを、ない場合は小文字のフォールバックとしてmemory.md
HEARTBEAT.md は、通常の実行では、デフォルトエージェントで heartbeat が無効な場合、または
agents.defaults.heartbeat.includeSystemPromptSection が false の場合に省略されます。注入されるファイルは簡潔に保ってください。特に MEMORY.md は時間とともに大きくなり、予想外にコンテキスト使用量が増えたり、compaction がより頻繁に発生したりする可能性があります。
注:大きなファイルはマーカー付きで切り詰められます。ファイルごとの最大サイズはmemory/*.mdの日次ファイルは、通常のブートストラップ Project Context の一部ではありません。通常のターンでは、これらはmemory_searchおよびmemory_getツールを通じて必要時にアクセスされるため、モデルが明示的に読むまでコンテキストウィンドウを消費しません。例外は素の/newおよび/resetターンで、この最初のターンに限り、ランタイムが最近の日次メモリをワンショットの起動コンテキストブロックとして前置できる場合があります。
agents.defaults.bootstrapMaxChars(デフォルト: 20000)で制御されます。ファイル全体にまたがる注入済みブートストラップ内容の総量は
agents.defaults.bootstrapTotalMaxChars(デフォルト: 150000)で上限が設定されます。欠落しているファイルには短い欠落ファイルマーカーが注入されます。切り詰めが発生した場合、OpenClaw は Project Context に警告ブロックを注入できます。これは
agents.defaults.bootstrapPromptTruncationWarning(off、once、always;デフォルト: once)で制御します。
サブエージェントセッションでは AGENTS.md と TOOLS.md のみが注入されます(サブエージェントのコンテキストを小さく保つため、他のブートストラップファイルは除外されます)。
内部フックは agent:bootstrap を介してこのステップを横取りし、注入されるブートストラップファイルを変更または置き換えできます(たとえば SOUL.md を別のペルソナに差し替えるなど)。
エージェントの口調をより汎用的でなくしたい場合は、まず
SOUL.md Personality Guide から始めてください。
各注入ファイルがどれだけ寄与しているか(生データと注入後、切り詰め、さらにツールスキーマのオーバーヘッド)を確認するには、/context list または /context detail を使用してください。Context を参照してください。
時刻の扱い
システムプロンプトには、ユーザーのタイムゾーンが既知の場合、専用の Current Date & Time セクションが含まれます。プロンプトキャッシュを安定させるため、ここには現在 タイムゾーン のみが含まれます(動的な時計や時刻形式は含みません)。 エージェントが現在時刻を必要とする場合はsession_status を使用してください。ステータスカードにはタイムスタンプ行が含まれます。同じツールでは、セッションごとのモデル上書きも任意で設定できます(model=default でクリアされます)。
設定は次で行います。
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Skills
対象となる skill が存在する場合、OpenClaw は available skills list のコンパクト版(formatSkillsForPrompt)を注入し、各 skill の ファイルパス を含めます。プロンプトは、列挙された場所(ワークスペース、管理対象、または同梱)にある SKILL.md を読み込むために read を使うようモデルに指示します。対象 skill がない場合、Skills セクションは省略されます。
対象判定には、skill メタデータのゲート、ランタイム環境 / 設定チェック、および agents.defaults.skills または
agents.list[].skills が設定されている場合の有効なエージェント skill allowlist が含まれます。
Documentation
利用可能な場合、システムプロンプトには Documentation セクションが含まれ、OpenClaw ドキュメントディレクトリのローカルパス(リポジトリ内のdocs/ または npm パッケージに同梱されたドキュメント)を示します。また、公開ミラー、ソースリポジトリ、コミュニティ Discord、および Skills を見つけるための ClawHub(https://clawhub.ai)にも触れます。プロンプトは、OpenClaw の挙動、コマンド、設定、またはアーキテクチャについては、まずローカルドキュメントを参照し、可能であれば自分で openclaw status を実行するようモデルに指示します(アクセス権がない場合にのみユーザーに尋ねます)。