# 3.4 セッションマネージャー

セッションマネージャーでは、対応するすべての CLI ツールの会話セッションを一か所で閲覧、検索、管理できます。

## 対応アプリ

| アプリ | セッション保存場所 |
|------|----------|
| Claude Code | `~/.cache/claude/projects/*.jsonl` |
| Codex | Codex 設定のセッションディレクトリ |
| OpenCode | `~/.local/share/opencode/`（JSON または SQLite） |
| OpenClaw | `~/.openclaw/agents/<agent>/sessions/*.jsonl` |
| Gemini CLI | `~/.cache/gemini/tmp/<project_hash>/chats/` |

## セッションマネージャーを開く

メインナビゲーションバーの **セッション** ボタンをクリックします。

> **注意**：セッションボタンは対応する 5 つのアプリすべてで表示されます。

## インターフェースのレイアウト

セッションマネージャーは **2 カラムレイアウト** を採用しています：

- **左パネル**：検索とフィルターツールバー付きのセッションリスト
- **右パネル**：選択したセッションの詳細と会話履歴

### セッションリスト（左パネル）

各セッションエントリには以下が表示されます：
- プロバイダーアイコン
- セッションタイトル
- 最終アクティブ時間（相対形式、例：「5分前」）

### セッション詳細（右パネル）

セッションを選択すると、右パネルに以下が表示されます：
- **タイトル**：セッションタイトル、プロジェクトディレクトリ名、またはセッション ID から取得
- **最終アクティブ日時**：完全なタイムスタンプ
- **プロジェクトディレクトリ**：クリックでフルパスをコピー（ベース名とツールチップでフルパスを表示）
- **再開コマンド**：利用可能な場合、モノスペースフォントで表示
- **会話履歴**：メッセージの全文記録

## 検索とフィルタリング

### 全文検索

左パネル上部の検索ボックスを使用して、以下の項目を横断的に検索できます：
- セッション ID
- タイトル
- サマリー
- プロジェクトディレクトリ
- ソースファイルパス

前方一致検索に対応し、リアルタイムで結果をフィルタリングします。**Esc** で検索をクリアできます。

### プロバイダーフィルター

左パネル右上のプロバイダーフィルタードロップダウンをクリックして、アプリ別にフィルタリングします：
- **すべて** — すべてのプロバイダーのセッションを表示
- **Claude Code**
- **Codex**
- **OpenCode**
- **OpenClaw**
- **Gemini CLI**

フィルターは検索と組み合わせて使用できます。

### 更新

更新ボタン（循環矢印アイコン）をクリックすると、すべてのプロバイダーディレクトリを再スキャンして新しいセッションや削除済みセッションを検出します。

## セッション操作

### セッションの再開

選択したセッションの **再開** ボタン（再生アイコン）をクリックして、会話を続行します。

**macOS の場合：**
- CC Switch は設定済みのターミナルで再開コマンドを起動します
- ターミナルはセッションのプロジェクトディレクトリで開きます
- ターミナルの起動に失敗した場合、コマンドがクリップボードにコピーされます

**対応ターミナル（macOS）：** Terminal.app、iTerm2、Ghostty、Kitty、WezTerm、Alacritty

**その他のプラットフォーム：**
- 再開コマンドがクリップボードにコピーされます
- ターミナルに貼り付けてセッションを再開してください

> 再開コマンドが利用できないセッションでは、再開ボタンは無効になります。

#### ディレクトリピッカー（Claude ターミナル再開）

v3.13.0 より、**Claude セッション** の再開前に **ディレクトリピッカー** が表示され、デフォルトのプロジェクトディレクトリを上書きできます。以下のシナリオに対応します：

- **プロジェクトが移動された**：元のプロジェクトディレクトリが移動・リネームされた
- **シンボリックリンク切れ**：元のパスにアクセスできない
- **一時的なディレクトリ変更**：異なる作業ディレクトリで会話を続けたい

**使用方法**：

1. Claude セッションの **再開** ボタンをクリック
2. 表示されるディレクトリピッカーで、デフォルトのディレクトリを確認するか、新しいディレクトリを選択
3. CC Switch が選択したディレクトリで Claude ターミナルセッションを起動します

> **ヒント**：Codex / Gemini / OpenCode / OpenClaw のセッション再開フローには現在ディレクトリピッカーは含まれず、セッション元のプロジェクトディレクトリを使用します。

### セッションの削除

**削除** ボタン（ゴミ箱アイコン）をクリックすると、セッションファイルが完全に削除されます。削除前に確認ダイアログが表示されます。

> ローカルソースパスのないセッション（不変のセッションなど）は削除できません。

### 一括操作

複数のセッションを一度に管理するには：

1. 左パネルツールバーの **一括モード** ボタン（チェックボックスアイコン）をクリック
2. 表示されるチェックボックスでセッションを選択
3. **すべて選択** でフィルタリング結果をすべて選択、または **クリア** で選択解除
4. **一括削除**（赤いゴミ箱アイコン）をクリックして選択したすべてのセッションを削除

削除前に件数を表示する確認ダイアログが表示されます。結果には成功した削除件数と失敗件数が報告されます。

## 会話履歴

### メッセージの表示

メッセージは役割ごとに色分けされます：
- **ユーザー** メッセージ：緑、左寄せ
- **AI**（アシスタント）メッセージ：青、右寄せ
- **システム** メッセージ：アンバー
- **ツール** メッセージ：パープル

### 目次

長い会話の場合、目次機能が利用できます：
- **デスクトップ（XL+ 画面）**：右側のサイドバーにユーザーメッセージのプレビューを表示
- **小さい画面**：右下のフローティングボタン（リストアイコン）をクリックするとダイアログが開く

エントリをクリックすると該当メッセージにスクロールし、一時的にハイライト表示されます。

## ヒント

- セッションは最終アクティブ時間の新しい順にソートされます
- セッション数バッジは検索やフィルタリングに応じて更新されます
- OpenCode のセッションは JSON ファイルと SQLite データベースの両方から取得される場合があります（重複は自動的に除去されます）
