# コンテキスト管理

Claude Code の各セッションは**コンテキストウィンドウ**内で実行されます。コンテキストの仕組みを理解することで、Claude をより効率的に使用し、コンテキストオーバーフローによるエラーを防ぐことができます。

## コンテキストウィンドウの理解

Claude Code はデフォルトで **20万 token** のコンテキストウィンドウを使用します。Opus 4.8 および Sonnet 4.6 モデルは **100万 token（1M context）** への拡張をサポートしています。

コンテキストには以下が含まれます：
- すべての会話履歴（あなたの質問 + Claude の回答）
- `@` で参照したファイルの内容
- ツール呼び出しの入力と出力
- システムプロンプトと CLAUDE.md の内容

会話が進むにつれてコンテキストは増大し続けます。コンテキストが上限に近づくと、Claude の応答速度が低下し、最終的に自動圧縮が起動するかエラーが発生します。

## コンテキストの圧縮：/compact

`/compact` コマンドは現在の会話履歴を簡潔な要約に圧縮し、重要な情報を保持しながらコンテキストスペースを解放します。

```
/compact
```

カスタム指示を追加して圧縮の焦点を制御することもできます：

```
/compact すべてのコード例と完了済みのタスクリストを保持してください
```

**自動圧縮メカニズム**：Claude Code はデフォルトでコンテキストが **95% の容量**に達したときに自動的に圧縮を起動します。コンテキストが 70〜80% に達した時点で積極的に `/compact` を実行し、最後まで待つことを避けましょう。

## 履歴のクリア：/clear

`/clear` コマンドはすべての会話履歴をクリアし、完全に新しいセッションを開始します：

```
/clear
```

> **注意**：`/clear` はプロジェクトに関して Claude が把握した情報を含む、すべてのコンテキストを削除します。まったく関係のない新しいタスクに切り替える際に使用してください。

## コンテキスト状態の確認：/context

`/context` コマンドを使用して現在のコンテキストの使用状況を確認します：

```
/context
```

## @ でファイルを参照

`@` 記号を使用してファイルの内容をコンテキストに追加します：

```
@src/main.ts このファイルの機能を説明してください
@package.json 依存関係のバージョンを確認してください
@README.md
```

**ベストプラクティス**：
- 現在のタスクに関連するファイルのみを参照し、不要なコンテキストを持ち込まないようにする
- 大きなファイルはコンテキストスペースを素早く消費するため、重要なファイルを優先的に参照する
- 毎回の会話で繰り返し貼り付けるのではなく、`CLAUDE.md` を使用してプロジェクトの背景を提供する

## パイプ入力

パイプを通じてコマンドの出力やファイルの内容を Claude に渡します：

```bash
# ファイルの内容を渡す
cat error.log | claude "このエラーを分析してください"

# コマンドの出力を渡す
git diff | claude "コミットメッセージを生成してください"

# 複数行の入力
echo "以下のコードを分析してください：
$(cat src/utils.ts)" | claude
```

## 長いセッションでのオーバーフロー防止

### 症状：E015 Internal server error

会話コンテキストがモデルの容量上限（〜95%）に近づくと、Anthropic API は 500 エラーを返します。QCode.cc はこれを 429 レスポンスとしてラップします：

```
429 {"error":{"code":"E015","message":"Internal server error"},"status":500}
```

これは Anthropic API の既知の動作です（QCode.cc 固有の問題ではありません）。QCode.cc が上流の 5xx エラーを 429 レスポンスとしてラップするのは、Claude Code に内蔵されたリトライメカニズムを活用するためです。

### 解決手順

1. **`/compact` を試みる**：
   - 成功した場合、会話を通常通り続けることができます
   - `/compact` 自体もエラーになる場合（圧縮リクエストも完全なコンテキストの送信が必要なため）、次の手順に進みます

2. **Claude Code を終了して再起動する**：
   ```bash
   # Ctrl+C を押すか /exit と入力する
   # その後再起動する
   claude
   ```

### 予防の推奨事項

- **定期的な圧縮**：オーバーフローを待つのではなく、コンテキストが 70〜80% に達した時点で積極的に `/compact` を実行する
- **タスクの分割**：大きなタスクを複数の小さなタスクに分割し、各タスクで独立したセッションを使用する
- **繰り返しの貼り付けの代わりに CLAUDE.md を使用**：プロジェクトの背景を `CLAUDE.md` に記述しておけば、Claude 起動時に自動的に読み込まれるため、毎回の会話で繰り返し提供する必要がなくなります
- **大きなファイルの参照を避ける**：大きなファイルを参照するたびに大量のコンテキストが消費されるため、重要な部分を優先的に参照する
- **`/cost` で監視**：`/cost` コマンドで現在のセッションの token 消耗状況を確認できます

## 関連コマンドのクイックリファレンス

| コマンド | 機能 |
|------|------|
| `/compact` | コンテキストを圧縮（要約を保持） |
| `/clear` | すべてのコンテキストをクリア |
| `/context` | コンテキストの状態を確認 |
| `/cost` | token 消耗を確認 |
| `@ファイルパス` | ファイルをコンテキストに参照 |
## コンテキストエンジニアリングの階層

「コンテキストエンジニアリング」とは、Claude が各リクエストで読み取る内容を意図的に整理すること——価値が高く安定した情報を前面に置き、ノイズを排除すること——を指します。Claude Code のコンテキストは明確な**優先順位の階層**（高い順から低い順）に従います：

1. **エンタープライズ / 管理ポリシー**——組織から一括で配布されるルール。優先度が最も高く、個人が上書きすることはできません。
2. **プロジェクトメモリ `CLAUDE.md` / `AGENTS.md`**——リポジトリのルートにあるプロジェクトレベルの指示で、コード規約、ビルドコマンド、プロジェクトの背景を記述します。
3. **パススコープのルール**——サブディレクトリ内のネストされた `CLAUDE.md` や `.claude/rules`。そのパス配下の作業にのみ適用されます。
4. **リアルタイムの会話履歴**——現在のセッションでのあなたと Claude のやり取り。優先度が最も低く、最も膨張しやすい部分です。

この階層を理解することで、指示を**適切な場所**に配置できます：汎用的な規約はプロジェクトレベルの `CLAUDE.md` へ、ディレクトリ固有の取り決めはパススコープのルールへ書き込み、毎回の会話で繰り返し述べないようにします。

### 実用的なポイント

- **指示は簡潔かつ高シグナルに**：`CLAUDE.md` が洗練されているほど Claude は従いやすくなります。冗長で本題から外れた内容は重要な指示を薄めてしまいます。
- **論理的な区切りで `/compact`**：一区切りついた段階で履歴を圧縮します。長く発散した会話は正確性を低下させます。
- **無関係なタスクの間で `/clear`**：まったく無関係な新しいタスクに切り替える際は履歴を消去し、古いコンテキストが干渉しないようにします。
- **貼り付けの代わりにパスで参照**：`@ファイルパス` を使って Claude に必要に応じてファイルを読み取らせ、大きなブロックを会話に詰め込まないようにします——コンテキストを節約し、正確性も向上します。
- **安定した内容を最前面に置く**：システムプロンプト、`CLAUDE.md`、大きな背景情報などの変化しない内容は前部に置き、頻繁に編集しないようにします。そうすれば**プロンプトキャッシュ**にヒットします（キャッシュ読み取りのコストは通常の入力の約 10%）。これこそが、簡潔で安定した `CLAUDE.md` とセッションの再利用がコスト削減につながる根本的な理由です。

要するに：安定した価値の高い内容を階層の上位に沈めて変更せず、変動しやすい会話履歴は定期的に収束させましょう。さらに詳しくは [CLAUDE.md プロジェクトメモリ](/docs/usage/claude-md) と [コスト最適化](/docs/usage/cost-optimization) を参照してください。