OpenCode 設定ファイル

OpenCode は JSON 形式を使用して設定します。

まずグローバル設定ファイルを見てみましょう~/.config/opencode/opencode.json:

touch ~/.config/opencode/opencode.json

モデルプロバイダーと設定情報が含まれています:

{
  // JSON Schema(用于编辑器校验和自动补全)
  "$schema": "https://opencode.ai/config.json",

  "provider": {
    // 自定义 Provider 名称(使用时:deepseek/xxx)
    "deepseek": {

      // 使用 OpenAI 兼容适配器(适用于 DeepSeek 这类兼容接口)
      "npm": "@ai-sdk/openai-compatible",

      "options": {
        // API 基础地址(必须是 OpenAI 兼容格式)
        "baseURL": "https://api.deepseek.com/v1",

        // API Key
        "apiKey": "sk-xxxx",

        // 是否强制设置缓存 key(提升缓存命中率,降低成本)
        "setCacheKey": true
      },

      "models": {
        // 本地模型别名(CLI/TUI 中使用:deepseek/Deepseek-v4)
        "Deepseek-v4": {
          // 实际调用的模型名称(API 层)
          "name": "deepseek-v4-pro"
        }
      }
    }
  }
}

最小限の動作可能な設定例

{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-5",
  "autoupdate": true,
  "theme": "default"
}

一般的なグローバル設定項目:

設定項目 型 説明
model string デフォルトのメインモデル
small_model string 軽量タスク用モデル(例:タイトル生成)
autoupdate boolean / "notify" 自動更新ポリシー
theme string UIテーマ
provider object モデルプロバイダー設定

プロバイダー例:

{
  "provider": {
    "anthropic": {
      "options": {
        "timeout": 600000,
        "setCacheKey": true
      }
    }
  }
}

設定の「マージメカニズム」を理解する

OpenCode の設定は上書きではなく、階層的なマージ。

読み込み順序(低→高)
順序 ソース 説明
1 リモート.well-known/opencode 組織のデフォルト設定
2 グローバル設定 ~/.config/opencode/opencode.json
3 カスタムパス OPENCODE_CONFIG
4 プロジェクト設定 プロジェクト内のopencode.json
5 .opencode/ディレクトリ 拡張機能
6 インライン設定 OPENCODE_CONFIG_CONTENT

マージルール

  • 競合しないフィールド:すべて保持
  • 競合するフィールド:後者が前者を上書き

例

グローバル設定:

{
  "autoupdate": true
}

プロジェクト設定:

{
  "model": "anthropic/claude-sonnet-4-5"
}

最終結果:

{
  "autoupdate": true,
  "model": "anthropic/claude-sonnet-4-5"
}

プロジェクト設定

プロジェクトのルートディレクトリに作成:

opencode.json

機能:

  • プロジェクト固有のAI動作を定義
  • Gitにコミット可能
  • グローバル設定を上書き

例:プロジェクトレベルの設定
{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-5",
  "tools": {
    "write": true,
    "bash": true
  }
}

コア設定モジュールの詳細

{
  "model": "anthropic/claude-sonnet-4-5",
  "small_model": "anthropic/claude-haiku-4-5"
}

モデルとプロバイダー

{
  "model": "anthropic/claude-sonnet-4-5",
  "small_model": "anthropic/claude-haiku-4-5"
}
フィールド 説明
model メインタスクモデル
small_model 低コストタスクモデル

ツール制御

{
  "tools": {
    "write": false,
    "bash": false
  }
}
ツール 機能
write ファイル書き込み
bash コマンド実行

これはセキュリティ制御の第一層。

権限制御

{
  "permission": {
    "edit": "ask",
    "bash": "ask"
  }
}
值 意味
allow 自動実行
ask 毎回確認
deny 禁止

エージェント(中核機能)

{
  "agent": {
    "code-reviewer": {
      "description": "代码审查",
      "model": "anthropic/claude-sonnet-4-5",
      "prompt": "You are a code reviewer",
      "tools": {
        "write": false
      }
    }
  }
}

本質:AIに役割 + 能力範囲を定義する

コマンド(自動化プロンプト)

{
  "command": {
    "test": {
      "template": "Run tests and fix failures",
      "description": "运行测试"
    }
  }
}

本質:プロンプトテンプレートシステム

TUI設定

{
  "tui": {
    "scroll_speed": 3,
    "scroll_acceleration": {
      "enabled": true
    },
    "diff_style": "auto"
  }
}

サーバー設定(API / Web)

{
  "server": {
    "port": 4096,
    "hostname": "0.0.0.0",
    "mdns": true
  }
}

コンテキスト圧縮(トークン最適化)

{
  "compaction": {
    "auto": true,
    "prune": true,
    "reserved": 10000
  }
}

プラグインシステム

{
  "plugin": [
    "opencode-helicone-session",
    "@my-org/custom-plugin"
  ]
}

MCP(拡張エコシステム)

{
  "mcp": {}
}

外部ツール(Jira、データベースなど)を接続するために使用

命令システム(AIルール)

{
  "instructions": [
    "CONTRIBUTING.md",
    "docs/*.md"
  ]
}

プロバイダー制御

{
  "enabled_providers": ["anthropic"],
  "disabled_providers": ["openai"]
}

優先順位:

disabled > enabled

変数システム

環境変数:

{
  "model": "{env:OPENCODE_MODEL}"
}

ファイル参照

{
  "apiKey": "{file:~/.secrets/key}"
}

ディレクトリ拡張メカニズム

OpenCode は JSON 設定だけでなく、ディレクトリ拡張もサポートしています:

.opencode/
├── agents/
├── commands/
├── plugins/
├── tools/
├── themes/

機能:

  • Markdownでエージェントを定義
  • ファイルレベルのコマンド
  • プラグイン拡張

おすすめの入門設定

{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-5",
  "small_model": "anthropic/claude-haiku-4-5",
  "autoupdate": "notify",
  "tools": {
    "write": true,
    "bash": true
  },
  "permission": {
    "bash": "ask"
  },
  "compaction": {
    "auto": true,
    "prune": true
  }
}

まとめ(アーキテクチャの視点)

OpenCode の設定は4層構造として理解できます:

配置层(多级 merge)
    ↓
能力层(agent / tools / mcp)
    ↓
执行层(model / provider)
    ↓
交互层(tui / server / web)

本質的には、これは単純な設定ファイルではなく、次のようなものです:

プログラマブルAIエージェントOSの設定センター

その他の拡張