# 5.1 設定ファイルの説明

## CC Switch のデータストレージ

### ストレージディレクトリ

デフォルトの場所：`~/.cc-switch/`

設定で場所をカスタマイズ可能です（クラウド同期用）。

### ディレクトリ構造

```
~/.cc-switch/
├── cc-switch.db      # SQLite データベース（SSOT）
├── settings.json     # デバイスレベルの設定
├── skills/           # スキル SSOT ディレクトリ
├── skill-backups/    # スキルバックアップ（アンインストール時に作成）
└── backups/          # データベースバックアップ
```

### データベースの内容

`cc-switch.db` は SQLite データベースで、以下を保存しています：

| テーブル | 内容 |
|-----|------|
| providers | プロバイダー設定 |
| provider_endpoints | プロバイダーエンドポイント候補リスト |
| mcp_servers | MCP サーバー設定 |
| prompts | プロンプトプリセット |
| skills | スキルのインストール状態 |
| skill_repos | スキルリポジトリ設定 |
| proxy_config | プロキシ設定 |
| proxy_request_logs | プロキシリクエストログ |
| provider_health | プロバイダーヘルスステータス |
| model_pricing | モデル料金 |
| settings | アプリ設定 |

### デバイス設定

`settings.json` はデバイスレベルの設定を保存します：

```json
{
  "language": "zh",
  "theme": "system",
  "windowBehavior": "minimize",
  "autoStart": false,
  "claudeConfigDir": null,
  "codexConfigDir": null,
  "geminiConfigDir": null,
  "opencodeConfigDir": null,
  "openclawConfigDir": null,
  "hermesConfigDir": null
}
```

これらの設定はデバイス間で同期されません。

### 自動バックアップ

`backups/` ディレクトリに自動バックアップが保存されます：

- 設定インポートのたびに自動作成
- 最新の 10 件のバックアップを保持
- ファイル名にタイムスタンプを含む

## Claude Code の設定

### 設定ディレクトリ

デフォルト：`~/.claude/`

### 主要ファイル

```
~/.claude/
├── settings.json     # メイン設定ファイル
├── CLAUDE.md         # システムプロンプト
└── skills/           # スキルディレクトリ
    └── ...
```

### settings.json

```json
{
  "env": {
    "ANTHROPIC_API_KEY": "sk-xxx",
    "ANTHROPIC_BASE_URL": "https://api.anthropic.com"
  },
  "permissions": {
    "allow_file_access": true
  }
}
```

| フィールド | 説明 |
|------|------|
| `env.ANTHROPIC_API_KEY` | API キー |
| `env.ANTHROPIC_BASE_URL` | API エンドポイント（任意） |
| `env.ANTHROPIC_AUTH_TOKEN` | 代替認証方式 |

### MCP 設定

MCP サーバーの設定は `~/.claude.json` にあります：

```json
{
  "mcpServers": {
    "mcp-fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    }
  }
}
```

## Codex の設定

### 設定ディレクトリ

デフォルト：`~/.codex/`

### 主要ファイル

```
~/.codex/
├── auth.json         # 認証設定
├── config.toml       # メイン設定 + MCP
└── AGENTS.md         # システムプロンプト
```

### auth.json

```json
{
  "OPENAI_API_KEY": "sk-xxx"
}
```

### config.toml

```toml
# 基本設定
base_url = "https://api.openai.com/v1"
model = "gpt-4"

# MCP サーバー
[mcp_servers.mcp-fetch]
command = "uvx"
args = ["mcp-server-fetch"]
```

## Gemini CLI の設定

### 設定ディレクトリ

デフォルト：`~/.gemini/`

### 主要ファイル

```
~/.gemini/
├── .env              # 環境変数（API Key）
├── settings.json     # メイン設定 + MCP
└── GEMINI.md         # システムプロンプト
```

### .env

```bash
GEMINI_API_KEY=xxx
GOOGLE_GEMINI_BASE_URL=https://generativelanguage.googleapis.com
GEMINI_MODEL=gemini-pro
```

### settings.json

```json
{
  "mcpServers": {
    "mcp-fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    }
  }
}
```

| フィールド | 説明 |
|------|------|
| `mcpServers` | MCP サーバー設定 |

## OpenCode の設定

### 設定ディレクトリ

デフォルト：`~/.config/opencode/`

### 主要ファイル

```
~/.config/opencode/
├── opencode.json     # メイン設定ファイル
├── AGENTS.md         # システムプロンプト
└── skills/           # スキルディレクトリ
    └── ...
```
## Hermes の設定

### 設定ディレクトリ

デフォルト：`~/.hermes/`

### 主要ファイル

```
~/.hermes/
├── config.yaml       # メイン設定、プロバイダー、MCP 設定
├── .env              # API キーとシークレット
├── SOUL.md           # Profile identity/persona
├── memories/
│   ├── MEMORY.md     # エージェント記憶
│   └── USER.md       # ユーザープロファイル記憶
├── skills/           # 有効なスキルディレクトリ
├── state.db          # SQLite セッションデータベース
└── sessions/         # Gateway transcript と任意の JSON snapshot
```

### config.yaml

Hermes は YAML 設定を使用します。CC Switch は MCP サーバーを `mcp_servers` に書き込み、編集可能なプロバイダーエントリを `custom_providers` に書き込み、Hermes の `providers` dict にある読み取り専用エントリを読み取り、プロバイダー切り替え時に `model.provider` / `model.default` を更新します。

## OpenClaw の設定

### 設定ディレクトリ

デフォルト：`~/.openclaw/`

### 主要ファイル

```
~/.openclaw/
├── openclaw.json     # メイン設定ファイル（JSON5 形式）
└── skills/           # スキルディレクトリ
    └── ...
```

### openclaw.json

OpenClaw は JSON5 形式の設定ファイルを使用し、主に以下のセクションを含みます：

```json5
{
  // モデルプロバイダー設定
  models: {
    mode: "merge",
    providers: {
      "custom-provider": {
        baseUrl: "https://api.example.com/v1",
        apiKey: "your-api-key",
        api: "openai-completions",
        models: [{ id: "model-id", name: "Model Name" }]
      }
    }
  },
  // 環境変数
  env: {
    ANTHROPIC_API_KEY: "sk-..."
  },
  // Agent デフォルト設定
  agents: {
    defaults: {
      model: {
        primary: "provider/model"
      },
      workspace: "~/.openclaw/workspace"
    }
  },
  // ツール設定
  tools: {}
}
```

| フィールド | 説明 |
|------|------|
| `models.providers` | プロバイダー設定（CC Switch の「プロバイダー」にマッピング） |
| `env` | 環境変数設定 |
| `agents.defaults` | Agent デフォルトモデル設定 |
| `tools` | ツール設定 |
| `agents.defaults.workspace` | ワークスペースディレクトリパス |

## 設定の優先順位

CC Switch が設定を変更する際の優先順位：

1. **CC Switch データベース** - 単一事実源 (SSOT)
2. **Live 設定ファイル** - プロバイダー切り替え時に書き込み
3. **バックフィル機能** - 現在のプロバイダーの編集時に Live ファイルから読み取り

## 手動での設定編集

### 手動編集可能なもの

- CLI ツールの設定ファイル（CC Switch がバックフィルする）
- CC Switch の `settings.json`

### 手動編集を推奨しないもの

- `cc-switch.db` データベースファイル
- バックアップファイル

### 編集後の同期

CLI ツールの設定を手動で編集した場合：

1. CC Switch を開く
2. 対応するプロバイダーを編集
3. 手動変更の内容がバックフィルされていることを確認
4. 保存してデータベースに同期

## 設定の移行

### 旧バージョンからの移行

CC Switch v3.7.0 で JSON ファイルから SQLite に移行しました：

- 初回起動時に自動的に移行
- 移行成功後に通知を表示
- 旧設定ファイルはバックアップとして保持

### デバイス間の移行

1. 移行元のデバイスで設定をエクスポート
2. 移行先のデバイスで設定をインポート
3. またはクラウド同期機能を使用

## 設定のバックアップに関するアドバイス

### 定期的なバックアップ

定期的に設定をエクスポートすることを推奨します：

1. 設定 → 詳細 → データ管理
2. 「エクスポート」をクリック
3. 安全な場所に保存

### バックアップに含まれる内容

エクスポートファイルには以下が含まれます：

- すべてのプロバイダー設定
- MCP サーバー設定
- Prompts プリセット
- アプリ設定

### 含まれない内容

- 使用量ログ（データ量が大きいため）
- デバイスレベルの設定（デバイス間の移動に適さないため）
