はじめに
システムプロンプト(System Prompt)は、AI Agent の振る舞いを定義する基盤です。適切に設計されたシステムプロンプトにより、AI は特定のロールを正確に演じ、特定のルールに従い、特定のフォーマットで回答を生成できます。OpenClaw は静的なシステムプロンプトだけでなく、強力な動的テンプレートシステムも提供しており、15以上の内蔵パラメータと条件ロジックをサポートし、さまざまなシナリオに自動適応するインテリジェントなプロンプトを構築できます。
本記事では、OpenClaw のシステムプロンプト上級設定テクニックを体系的に解説します。
基本設定
静的システムプロンプト
最もシンプルな方法は、Agent 設定でプロンプトを直接指定することです:
{
agents: {
"my-agent": {
systemPrompt: "あなたはプロフェッショナルな技術アシスタントです。回答は簡潔、正確で、コード例を含めてください。"
}
}
}
ファイルからの読み込み
長いプロンプトの場合は、独立したファイルの使用を推奨します:
{
agents: {
"my-agent": {
systemPromptFile: "./prompts/tech-assistant.md"
}
}
}
動的テンプレートシステム
OpenClaw のシステムプロンプトは Mustache スタイルのテンプレート構文をサポートし、実行時にパラメータを動的に置換します。
基本構文
こんにちは、{{userName}}。現在の時刻は {{currentTime}} です。
全内蔵パラメータ
OpenClaw は以下の内蔵テンプレートパラメータを提供しています:
| パラメータ名 | 説明 | 値の例 |
|---|---|---|
{{userName}} |
現在のユーザー名 | "田中太郎" |
{{userId}} |
ユーザーID | "user_12345" |
{{channelType}} |
チャンネルタイプ | "dm" / "group" |
{{channelName}} |
チャンネル名 | "技術ディスカッション" |
{{platform}} |
チャットプラットフォーム | "telegram" / "discord" |
{{agentId}} |
Agent ID | "my-agent" |
{{agentName}} |
Agent 表示名 | "技術アシスタント" |
{{currentDate}} |
現在の日付 | "2026-03-14" |
{{currentTime}} |
現在の時刻 | "14:30:00" |
{{currentDateTime}} |
完全な日時 | "2026-03-14 14:30:00" |
{{timezone}} |
タイムゾーン | "Asia/Shanghai" |
{{locale}} |
言語ロケール | "zh-CN" |
{{sessionId}} |
セッションID | "session-abc123" |
{{messageCount}} |
現在のセッションメッセージ数 | "15" |
{{modelName}} |
使用モデル名 | "claude-sonnet-4-20250514" |
{{toolList}} |
利用可能なツール一覧 | "search, calculator, ..." |
使用例
あなたは {{agentName}}、{{platform}} 上で動作する AI アシスタントです。
現在の環境情報:
- ユーザー:{{userName}}
- 時刻:{{currentDateTime}}({{timezone}})
- チャンネル:{{channelName}}({{channelType}})
- セッションで {{messageCount}} ラウンドの会話が行われています
以下のツールを使用できます:{{toolList}}
上記の環境情報に基づいて回答のスタイルと内容を調整してください。
条件ロジック
プラットフォームに基づく動作の切り替え
{{#if platform == "telegram"}}
あなたは Telegram 上で動作しています。Markdown 形式で回答をフォーマットし、絵文字を活用してください。
メッセージ長は 4096 文字以内に制御してください。
{{/if}}
{{#if platform == "discord"}}
あなたは Discord 上で動作しています。Discord の Markdown 構文を使用できます。
コードブロックのハイライトと embed 形式をサポートしています。
{{/if}}
{{#if platform == "slack"}}
あなたは Slack 上で動作しています。Slack の mrkdwn 形式を使用してください。
Block Kit リッチテキスト形式をサポートしています。
{{/if}}
チャンネルタイプに基づくスタイル調整
{{#if channelType == "dm"}}
あなたはユーザーと1対1のプライベートチャット中です。詳細でパーソナライズされた回答を提供できます。
ユーザーの好みや履歴情報を記憶できます。
{{/if}}
{{#if channelType == "group"}}
あなたはグループチャット内にいます。以下に注意してください:
- @メンションされた場合や明確に必要な場合のみ返信する
- 返信は簡潔にし、チャットの流れを妨げないようにする
- グループのトピックコンテキストに注意する
{{/if}}
時間に基づく動的調整
{{#if hour >= 22 || hour < 6}}
ユーザーは深夜に利用しているようです。適切なタイミングで休息を促してください。
{{/if}}
{{#if dayOfWeek == "Saturday" || dayOfWeek == "Sunday"}}
今日は週末です。返信はよりリラックスしたカジュアルなトーンで構いません。
{{/if}}
高度な組み合わせテクニック
多層プロンプト結合
OpenClaw はシステムプロンプトを複数のレイヤーに分割し、順序どおりに結合することをサポートしています:
{
agents: {
"my-agent": {
systemPrompt: {
// 基本パーソナリティレイヤー
base: "./prompts/base-personality.md",
// ツール使用ガイドレイヤー
tools: "./prompts/tool-guidelines.md",
// セキュリティルールレイヤー
safety: "./prompts/safety-rules.md",
// 動的コンテキストレイヤー
context: "現在のユーザー:{{userName}}、プラットフォーム:{{platform}}"
}
}
}
}
最終的なシステムプロンプトは base → tools → safety → context の順序で結合されます。
カスタムパラメータ
内蔵パラメータに加えて、独自のテンプレートパラメータを定義できます:
{
agents: {
"my-agent": {
systemPromptFile: "./prompts/custom-agent.md",
promptParams: {
companyName: "ギークテクノロジー",
productName: "SuperApp",
supportEmail: "[email protected]",
workingHours: "月曜日〜金曜日 9:00-18:00",
maxResponseLength: 500
}
}
}
}
プロンプトテンプレートでの使用:
あなたは {{companyName}} の {{productName}} 製品カスタマーサポートアシスタントです。
回答ルール:
- 回答は {{maxResponseLength}} 文字以内
- 解決できない問題は {{supportEmail}} への問い合わせを案内する
- 営業時間は {{workingHours}}
ナレッジベース注入
外部ナレッジベースの内容をシステムプロンプトに動的に注入します:
{
agents: {
"my-agent": {
systemPrompt: {
base: "あなたは製品エキスパートです...",
// ナレッジベースファイルから FAQ をロード
knowledge: {
source: "./knowledge/faq.md",
// 注入する最大トークン数
maxTokens: 4000
}
}
}
}
}
Persona プリセットの組み合わせ
OpenClaw には Persona プリセットシステムが内蔵されており、プリセットを基にカスタマイズできます:
{
agents: {
"my-agent": {
// 基本パーソナリティプリセット
persona: "professional", // 選択肢: friendly, professional, technical, creative
// プリセットに追加のカスタム指示を付加
systemPromptAppend: "追加ルール:すべてのコード例は Python を使用すること。"
}
}
}
プロンプトのデバッグ
実際に有効なプロンプトの確認
# Agent の最終的に結合されたシステムプロンプトを表示
openclaw agent inspect my-agent --show-prompt
# コンテキストシミュレーション付き(プラットフォームとユーザーを指定)
openclaw agent inspect my-agent --show-prompt \
--platform telegram --channel-type dm --user "test-user"
プロンプトのバージョン管理
プロンプトファイルをバージョン管理に含めることを推奨します。これにより:
- プロンプト変更の全履歴を追跡できる
- PR レビューでプロンプト変更を審査できる
- 以前のバージョンに素早くロールバックできる
prompts/
├── base-personality.md
├── tool-guidelines.md
├── safety-rules.md
├── CHANGELOG.md
└── v2/
└── base-personality.md
ベストプラクティス
- レイヤー設計:プロンプトをパーソナリティレイヤー、ツールレイヤー、ルールレイヤーに分け、それぞれの役割を明確にする
- テンプレートパラメータの活用:ハードコーディングを避け、プロンプトが多様なシナリオに適応できるようにする
- プラットフォーム適応:チャットプラットフォームごとにメッセージ形式や長さ制限が異なるため、条件ロジックで適応する
- バージョン管理:プロンプトはコードと同様に管理すべき
- 定期的なテスト:プロンプト変更後は、各プラットフォームとシナリオで効果を検証する
- 簡潔さの維持:システムプロンプトが長いほど消費トークンが増え、コストが高くなる
まとめ
システムプロンプトは AI Agent の魂です。OpenClaw の動的テンプレートシステムにより、ユーザーの身元、チャットプラットフォーム、時間コンテキストなどの要因に基づいてプロンプト内容を自動的に調整し、真にインテリジェントで、さまざまなシナリオに適応できる AI アシスタントを構築できます。これらの上級テクニックを習得することで、Agent があらゆる複雑なシナリオで優れたパフォーマンスを発揮できるようになります。