ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
基本設定

OpenClaw設定ファイルopenclaw.json5完全ガイド

· 17 分で読了

はじめに

OpenClaw のコア設定ファイルは openclaw.json5 で、デフォルトでは ~/.config/openclaw/openclaw.json5 に保存されています。このファイルは JSON5 フォーマットを採用しており、コメントやより柔軟な構文をサポートしているため、設定作業がよりスムーズになります。本記事では、すべての設定セクションとオプションを一つ一つ解説します。

JSON5フォーマットの紹介

JSON5 は JSON のスーパーセットで、主に以下の特徴が追加されています。

{
  // 単一行コメントをサポート
  /* 複数行コメントもサポート */

  // キー名に引用符が不要
  gateway: {
    port: 18789,
  },

  // 末尾のカンマをサポート
  tags: [
    "ai",
    "assistant",
  ],

  // シングルクォート文字列をサポート
  name: 'OpenClaw',

  // 複数行文字列をサポート
  prompt: "1行目\
    2行目",
}

JSON5 に馴染みがない方は、「コメントが書ける JSON」と考えていただければ大丈夫です。

設定ファイルのパス

プラットフォーム デフォルトパス
Linux ~/.config/openclaw/openclaw.json5
macOS ~/.config/openclaw/openclaw.json5
Windows %USERPROFILE%\.config\openclaw\openclaw.json5
Docker /app/config/openclaw.json5(ボリュームマッピング経由)

環境変数でカスタムパスを指定することもできます。

export OPENCLAW_CONFIG=/path/to/your/openclaw.json5
openclaw up

設定構造の全体像

{
  gateway: { /* ゲートウェイ設定 */ },
  models: { /* モデル設定 */ },
  channels: { /* チャネル連携 */ },
  skills: { /* スキルプラグイン */ },
  persona: { /* AIペルソナ */ },
  logging: { /* ログ設定 */ },
  security: { /* セキュリティ設定 */ },
  advanced: { /* 詳細オプション */ },
}

以下、各設定セクションを詳しく解説します。

gateway:ゲートウェイ設定

ゲートウェイは OpenClaw のコアエントリーポイントで、すべてのHTTPリクエストとチャネルメッセージを処理します。

{
  gateway: {
    // リッスンポート、デフォルト18789
    port: 18789,

    // リッスンアドレス
    // "127.0.0.1" ローカルマシンのみアクセス可能
    // "0.0.0.0" すべてのネットワークからアクセスを許可
    host: "0.0.0.0",

    // Dashboardパスワード(本番環境では設定を推奨)
    dashboardPassword: "your-strong-password",

    // APIキー(外部からOpenClaw APIを呼び出す際に使用)
    apiKey: "your-api-key",

    // リクエストタイムアウト(ミリ秒)
    timeout: 120000,

    // 最大リクエストボディサイズ
    maxBodySize: "10mb",

    // CORS設定
    cors: {
      enabled: true,
      origins: ["*"],
    },
  },
}

主要パラメータの説明

パラメータ デフォルト値 説明
port number 18789 ゲートウェイポート
host string "127.0.0.1" リッスンアドレス
dashboardPassword string なし Dashboardアクセスパスワード
apiKey string なし API認証キー
timeout number 120000 リクエストタイムアウト(ms)
maxBodySize string "10mb" 最大リクエストボディ

models:モデル設定

モデル設定は、OpenClaw がどのAIモデルを使用し、どのように呼び出すかを定義します。

{
  models: {
    // デフォルトで使用するモデルプロバイダ
    default: "claude",

    // 各モデルプロバイダの設定
    providers: {
      claude: {
        apiKey: "sk-ant-xxxxx",
        model: "claude-sonnet-4-20250514",
        maxTokens: 4096,
        temperature: 0.7,
        baseUrl: "https://api.anthropic.com",  // 任意、カスタムAPIエンドポイント
      },

      openai: {
        apiKey: "sk-xxxxx",
        model: "gpt-4o",
        maxTokens: 4096,
        temperature: 0.7,
        baseUrl: "https://api.openai.com/v1",
      },

      ollama: {
        baseUrl: "http://localhost:11434",
        model: "llama3.1",
        maxTokens: 2048,
      },

      gemini: {
        apiKey: "AIzaSyxxxxx",
        model: "gemini-2.0-flash",
        maxTokens: 4096,
      },

      openrouter: {
        apiKey: "sk-or-xxxxx",
        model: "anthropic/claude-sonnet-4-20250514",
        baseUrl: "https://openrouter.ai/api/v1",
      },
    },

    // モデルルーティングルール(マルチモデル切り替えチュートリアルを参照)
    routing: {
      rules: [],
      fallback: "claude",
    },
  },
}

各プロバイダの必須パラメータ

プロバイダ 必須パラメータ 任意パラメータ
Claude apiKey, model maxTokens, temperature, baseUrl
OpenAI apiKey, model maxTokens, temperature, baseUrl
Ollama baseUrl, model maxTokens, temperature
Gemini apiKey, model maxTokens, temperature
OpenRouter apiKey, model maxTokens, baseUrl

channels:チャネル連携

チャネル設定は、OpenClaw がどのメッセージングプラットフォームに接続するかを定義します。

{
  channels: {
    whatsapp: {
      enabled: true,
      phoneNumber: "+86138xxxx",
      // WhatsApp Business API設定
      accessToken: "your-access-token",
      verifyToken: "your-verify-token",
      webhookPath: "/webhook/whatsapp",
    },

    telegram: {
      enabled: true,
      token: "123456:ABC-DEF...",
      // 任意:許可するユーザーを制限
      allowedUsers: [12345678, 87654321],
      // 任意:許可するグループを制限
      allowedGroups: [-100123456789],
    },

    discord: {
      enabled: true,
      token: "your-discord-bot-token",
      allowedChannels: ["general", "ai-chat"],
    },

    slack: {
      enabled: true,
      appToken: "xapp-xxxxx",
      botToken: "xoxb-xxxxx",
    },

    // その他のチャネル...
    // imessage, signal, teams, googlechat, matrix, line, irc
  },
}

skills:スキルプラグイン

スキルは OpenClaw の拡張メカニズムで、SKILL.md ファイル形式で ~/.openclaw/skills/ ディレクトリに格納されます。

{
  skills: {
    // スキルファイルの格納ディレクトリ
    directory: "~/.openclaw/skills",

    // 有効なスキルリスト(空の場合はすべて有効)
    enabled: [
      "weather",
      "calculator",
      "translator",
    ],

    // 無効なスキルリスト
    disabled: [],

    // MCP Server統合
    mcpServers: {
      filesystem: {
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/documents"],
      },
      web: {
        command: "npx",
        args: ["-y", "@anthropic/mcp-server-web"],
      },
    },
  },
}

persona:AIペルソナ

ペルソナ設定は、AIアシスタントの性格と返答スタイルを決定します。

{
  persona: {
    // システムプロンプト
    systemPrompt: "あなたはフレンドリーでプロフェッショナルなAIアシスタント「小智」です。簡潔で分かりやすい中国語で質問に答えます。",

    // ペルソナ名
    name: "小智",

    // 返答言語(autoで自動検出)
    language: "zh-CN",

    // トーンスタイル:formal, casual, friendly, professional
    tone: "friendly",

    // チャネルごとの個別ペルソナ(グローバル設定を上書き)
    channelOverrides: {
      telegram: {
        systemPrompt: "あなたはTelegramグループの管理アシスタントです...",
        tone: "casual",
      },
      slack: {
        systemPrompt: "あなたはチームの業務アシスタントです。返答はプロフェッショナルで簡潔に...",
        tone: "professional",
      },
    },
  },
}

logging:ログ設定

{
  logging: {
    // ログレベル:debug, info, warn, error
    level: "info",

    // ログファイルパス(空の場合はコンソールのみに出力)
    file: "~/.openclaw/logs/openclaw.log",

    // ログファイルの最大サイズ
    maxSize: "10m",

    // 保持するログファイル数
    maxFiles: 5,

    // コンソールにカラーログを出力するか
    colorize: true,

    // ログフォーマット:json, text
    format: "text",
  },
}

security:セキュリティ設定

{
  security: {
    // リクエストレート制限を有効化
    rateLimit: {
      enabled: true,
      maxRequests: 60,     // 毎分の最大リクエスト数
      windowMs: 60000,     // ウィンドウ時間(ミリ秒)
    },

    // IPホワイトリスト(空の場合は制限なし)
    ipWhitelist: [],

    // IPブラックリスト
    ipBlacklist: [],

    // HTTPSを有効化(証書の提供が必要)
    tls: {
      enabled: false,
      cert: "/path/to/cert.pem",
      key: "/path/to/key.pem",
    },
  },
}

advanced:詳細オプション

{
  advanced: {
    // ワーカースレッド数(0で自動)
    workers: 0,

    // メッセージキューサイズ
    queueSize: 100,

    // コンテキストメモリの最大メッセージ数
    maxContextMessages: 20,

    // コンテキストメモリの最大トークン数
    maxContextTokens: 8000,

    // データストレージバックエンド:memory, sqlite, redis
    storage: "sqlite",

    // SQLiteデータベースパス
    dbPath: "~/.openclaw/data/openclaw.db",

    // Redis接続(storageがredisの場合)
    redis: {
      url: "redis://localhost:6379",
      db: 0,
    },
  },
}

環境変数によるオーバーライド

設定ファイル内の一部の機密フィールドは、環境変数でオーバーライドすることで、キーを直接ファイルに記載することを避けられます。

# モデルAPIキー
export OPENCLAW_CLAUDE_API_KEY="sk-ant-xxxxx"
export OPENCLAW_OPENAI_API_KEY="sk-xxxxx"

# チャネルトークン
export OPENCLAW_TELEGRAM_TOKEN="123456:ABC-DEF..."
export OPENCLAW_DISCORD_TOKEN="your-discord-token"

# ゲートウェイパスワード
export OPENCLAW_DASHBOARD_PASSWORD="your-password"

設定ファイル内で $env を使って参照します。

{
  models: {
    providers: {
      claude: {
        apiKey: "$env:OPENCLAW_CLAUDE_API_KEY",
        model: "claude-sonnet-4-20250514",
      },
    },
  },
}

設定の検証

設定ファイルを変更した後、起動前に設定が正しいかどうかを検証できます。

# 設定ファイルの構文と必須項目をチェック
openclaw doctor

# 設定ファイルのみ検証(サービスは起動しない)
openclaw doctor --config-only

最小構成の例

最も基本的な機能のみ必要な場合、設定ファイルは非常にシンプルにできます。

{
  models: {
    default: "claude",
    providers: {
      claude: {
        apiKey: "sk-ant-xxxxx",
        model: "claude-sonnet-4-20250514",
      },
    },
  },
  channels: {
    telegram: {
      enabled: true,
      token: "your-telegram-bot-token",
    },
  },
}

明示的に設定されていないオプションはデフォルト値が使用されます。

まとめ

openclaw.json5 は OpenClaw のコア設定ファイルで、人に優しい JSON5 フォーマットを採用し、コメントや柔軟な構文をサポートしています。各設定セクションの役割を理解すれば、実際のニーズに合わせて OpenClaw の動作を正確に調整できます。最小構成から始めて、必要に応じて機能モジュールを段階的に追加することをお勧めします。設定変更後は openclaw doctor で検証し、openclaw restart で再読み込みすることをお忘れなく。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応