ノートPCの前でコード問題を切り分ける開発者。大規模プロジェクトにおける Cursor と Claude Code のコンテキスト消失トラブルシュートを象徴

monorepo で Cursor Agent に決済モジュールの修正を頼んだら、ユーザーセンターの DTO を触ってしまう。Claude Code が 20 回の bash のあと突然「内部 legacy パッケージの直接 import 禁止」を忘れる——これはモデルが急に鈍くなったのではなく、大規模プロジェクトで最もよくある障害パターン:コンテキスト消失です。

2026 年の Cursor、Claude Code はいずれも百万級コンテキストを謳いますが、現場では約束を忘れる頻度は大きく下がっていません。本文では再現可能な5ステップ切り分け法を提供します。まずどの「失い方」かを切り分け、予算・索引・境界・リポジトリ約束・セッション戦略の順に確認。ツールバージョンは 2026-07-17 時点(Cursor 1.x、Claude Code 最新 CLI)。

Quick Answer:5ステップ切り分け一覧

ステップ確認すること典型的なアクション効果のサイン
1. 症状分類セッション切り詰め / 索引ミス / ルール未読込下表で失い方を判断。いきなりモデル変更しない「セッション」か「リポジトリ」か分かる
2. コンテキスト予算ツール呼び出し回数と自動注入がウィンドウを圧迫していないか無関係タブを閉じる、@ ファイルを減らす、探索用に小さいモデル同じ指示の繰り返し減、diff の矛盾減
3. 索引再構築.cursorignore、巨大ディレクトリ、索引の陳腐化Reindex、node_modules / DerivedData を除外Agent が正しいパッケージパスを自動発見
4. 境界設定タスク範囲が広すぎないかサブディレクトリワークスペース、明示 @ 呼び出しチェーン、Handoff ブロック変更ファイル数が想定モジュール内
5. リポジトリ約束口頭ルールが検索可能テキストに入っていないAGENTS.md.cursor/rules、長セッション分割新セッションでも同じ制約を守る
クイック回答:コンテキスト消失は「Max モデルをもう一つ」では根治しにくい。8割は索引ノイズ、タスク境界の広さ、約束が先週のチャットだけにあるケース——約束をリポジトリに書く方が、チャット履歴を窓に詰め込むより安定します。

大規模プロジェクトで「コンテキスト消失」とは何か?

まず概念を揃えます。長いコンテキストウィンドウは「この瞬間、これだけ token を入れられるか」;有効コンテキストは「この推論回の判断でどの事実が使われたか」。大規模リポではこの差が拡大します——詳しくはAIコーディングの持続記憶を参照。

エンジニアが口にする「忘れた」は、だいたい次の3類型に収まります:

類型表象よくある根因優先切り分け
A. セッション切り詰め同スレッドで話すほど逸れる、直前の制約を覆す多回のツール出力が早期指示を押し出す;compact / 要約で詳細消失ステップ 2、5
B. 索引ミス「某モジュールが見つからない」「このテーブルがないと思っている」ignore 過剰、索引未更新、リポが大きすぎて検索ノイズステップ 3、4
C. ルール未読込新セッションで命名スタイル・禁止パスをすべて忘れる約束がチャットのみ、AGENTS.md 欠如または長すぎて無効ステップ 5
反例:リポが数千行でモジュール境界が明確なら、まずワークスペースのルートを間違えていないか(monorepo 根ではなくサブパッケージを開いている)を確認——記憶層をいじるよりこちらが多いです。

ステップ 1:まず分類——すべての「忘却」をモデル問題にしない

エラーやおかしな diff が出たら、60 秒の決定木:

  • 同セッション内で前後矛盾?→ A セッション切り詰め、ステップ 2 へ。
  • 新セッションで約束を忘れた?→ C ルール未読込、ステップ 5 へ。
  • モデルは「そのファイルがない」と言うが、grep では見つかる?→ B 索引ミス、ステップ 3–4 へ。
  • context length exceeded / prompt is too long?→ 明確な予算問題、直接ステップ 2。

Cursor と Claude Code の重点は少し異なります。Cursor の Composer / Agent は開いているファイルと索引断片を自動注入し、IDE 内で「静かに窓を圧迫」しやすい。Claude Code ターミナル Agent は長 bash チェーン + 自動 compact 後に中間判断を失いやすい。ツール比較は選型記事を参照。

ステップ 2:コンテキスト予算を確認——窓が大きい=節約しているわけではない

1 回の Agent タスクの実 token 消費は、システムプロンプト + ルールファイル + @ ファイル + ツール出力(grep、テストログ)+ 履歴要約から来ます。12 万行 TypeScript monorepo の実測では、Cursor Agent が関連ファイル 8 個を自動読み込み全テストを走らせると、入力側だけで80K–120K tokenに達しやすく——多回のリトライはまだ含みません。

2.1 Cursor 側

  • タスクと無関係な開いているファイルを閉じる。巨大 JSON / ロックファイルはエディタに残さない。
  • 探索段階は小さいコンテキストモデルか通常 Chat;方針確定後に Agent でコード変更。
  • 1 本の Composer で「リファクタ + テスト + CI 変更」を連鎖させない——3 タスクに分割し、毎回ファイルリストを明示。
  • Settings の Codebase indexing 状態に注意。索引失敗時 Agent は grep で無理やり検索し、膨張が加速。

2.2 Claude Code 側

  • 長タスクで auto-compact が発火するか観察。compact 後は固定テンプレで「不可違反制約」を1文補足。
  • 巨大コマンド出力はファイルにリダイレクトし、Agent に tail で重要行だけ読ませる。5000 行ログを会話に詰め込まない。
  • /clear や新セッション前に、結論を HANDOFF.md か issue コメントに書く。
シグナル想定原因今すぐできること
後半ほど的外れな修正早期制約が窓から押し出された新セッション + Handoff + より短いタスク
API 請求が1タスクで急増大ファイルの繰り返し読み込み / 全量テスト出力テスト範囲を限定、head/tail を使う
context exceeded 表示ハード上限超過@ ファイル削減、タスク分割、探索モデルへ

ステップ 3:索引再構築と ignore 整理——Agent に「見つけさせる」

類型 B の核心:モデルが見たくないのではなく、検索チェーンが正しいファイルを渡していない。

3.1 .cursorignore / .claudeignore を確認

適切な ignore は索引時間を節約しますが、過剰 ignore は「幽霊の盲点」を生みます。除外を維持すべきもの:

  • node_modules/.git/dist/build/DerivedData/
  • 生成コードが巨大なディレクトリ(生成物を直す場合は明示 @ 単一ファイル)
  • バイナリとメディア

避けること:ビジネスソースパッケージを随意 ignore——legacy/ 丸ごと除外すると Agent は互換層を永遠に「見えない」。

3.2 Reindex を実行

Cursor:Settings → Indexing & Docs → Resync Index(文言はバージョンで多少異なる)。大規模リポの初回索引は M4 で15–40 分が普通。ローカルで Ollama + Xcode も動かすなら、索引を専用クラウド Mac ノードで完了させ、swap による IDE と Agent の同時タイムアウトを避ける——M4 AIコーディング実測のメモリ結論と一致。

運用ヒント:チームで週次 CI に git ls-files | wc -l と索引ファイル数の比較を入れ、カバレッジが大きく落ちたら一括 Reindex。各自 Cursor を再起動するより時間を節約。

ステップ 4:境界を設定——大規模リポで最も怖いのは「全リポ一括」

コンテキスト消失はタスク定義が広すぎることでも起きます。「決済を最適化して」と聞くと、40 パッケージに少しずつ手を入れる。

4.1 ワークスペースを縮小

  • VS Code / Cursor のマルチルートワークスペースapps/checkout + packages/payment-sdk だけ開く。
  • Claude Code はサブディレクトリで起動:cd apps/checkout && claude、無関係パスを検索から減らす。

4.2 明示 @ 呼び出しチェーン

API 変更時は最低限 @:インターフェース定義 → サーバー実装 → 実際の呼び出し元1つ → 関連テスト。Vue + Spring Boot 前後端リポの実測では、呼び出しチェーン @ を補うとフロント漏れ確率が約40%から10% 未満へ——より体系的な方法はCodeGraph ケースを参照。

4.3 Handoff テンプレート

長タスクでセッションを替える前に、固定構造を貼る:

## Handoff
- 目標:
- 完了:
- 未完了:
- 不可違反:(パス/命名/禁止 import)
- 次に開くべきファイル:

「上を要約して」より制約を失いにくい。項目が検証可能で、散文要約ではないからです。

ステップ 5:約束をリポジトリに書き、セッション分割を覚える

類型 C の根治:ルールをリポジトリの一部にする。チャットの一部にしない。

5.1 AGENTS.md と Cursor Rules

リポジトリ根で短く実行可能な約束を維持(< 200 行推奨、長ければ分割):

  • モジュール境界と「AI 変更禁止」パス(例 generated/vendor/
  • 命名とエラー処理スタイル(良い/悪い例を各1つ)
  • API 変更時に同時に直すレイヤーの checklist
  • 必須コマンド:pnpm test payment --filter=...

Cursor は .cursor/rules、Claude Code は AGENTS.mdCLAUDE.md を読む。内容は事実一致させ、二箇所で矛盾させない。

5.2 いつセッションを分割するか

シナリオ提案
1 機能がマージ済み、次の機能へ新セッション + Handoff
Agent が連続 3 回理解を外す停止、Handoff 記述、@ 範囲縮小
compact 発火 / コンテキストバー半分超約束をディスクに落としてから続行
日をまたいで再開必ず新セッション + PR/issue へリンク

呼び出しチェーンが十数パッケージに及び @ だけでは足りないとき、コード知識グラフ系ツールを評価——ステップ 5 以降の強化であり、第一歩ではない。

実測ケース:12 万行 monorepo で 45 分切り分け

ある B2B SaaS チーム(バックエンド 8 人 + フロント 4 人)が Cursor + Claude Code で pnpm monorepo(約 118k LOC、app 6、package 23)を保守。現象:Agent が billing-api を直すたび auth-middleware の型 export を壊し、新セッションでも繰り返す。

切り分け順発見アクション結果
ステップ 1新セッションでも制約忘却 → 類型 CAGENTS.md なしを確認根因特定
ステップ 3.cursorignorepackages/auth を誤除外ignore 修正 + ReindexAgent が middleware を参照可能
ステップ 4「billing 修正」タスクが広すぎワークスペースを billing + auth の2パッケージに、@ テスト変更ファイル 19 → 6
ステップ 5口頭約束が未記録120 行 AGENTS.md 追加 + CI で import 境界チェック1 週間 PR で同種回帰なし

より高価なモデルには切り替えず、1 タスクあたり token 平均約 35% 減——Agent が全リポ grep を繰り返さなくなったため。Reindex と夜間テストを Macstripe 24GB クラウドノードへ移し、ローカルノートは SSH でコードのみ——索引段階の swap 警告が消えた。

セルフチェック:着手前 2 分

  • ☐ 今回のタスクが A / B / C のどの失い方か言える
  • ☐ エディタに関連ファイルのみ;巨大ログは未オープン
  • .cursorignore がビジネスソースを誤傷していない
  • ☐ 索引状態正常、または Reindex を予定済み
  • ☐ ワークスペース範囲 ≤ 関連パッケージ 2–3 個
  • ☐ 呼び出しチェーンの重要ファイル(テスト1つ含む)を @ 済み
  • AGENTS.md に今回の「不可違反」項目がある
  • ☐ 長タスク用 Handoff テンプレを準備

FAQ

コンテキストウィンドウは200Kと表示されるのに、なぜ失われるのか?

ウィンドウは容量上限であり、注意力の保証ではない。Agent の多回のツール呼び出しが早期指示を有効注意力域から押し出す;compact 要約も詳細を失う。検索可能なリポジトリ約束の方が長いチャットより信頼できる。

Cursor と Claude Code、どちらがコンテキストを失いやすいか?

Cursor は IDE 自動注入と長 Composer チェーンで境界を失いやすい。Claude Code は長 bash と compact 後に中間判断を失いやすい。どちらも能動的 @、AGENTS.md、タスク分割が必要——「楽な方」はない。

.cursorignore@ 手動参照に影響するか?

単一ファイルの手動 @ は通常読める;影響するのは全リポ索引と自動検索。ignore されたディレクトリは明示 @ が必要。

コード知識グラフを導入すべきか?

呼び出しチェーンが多パッケージに及び @ でも漏れるとき试点の価値あり。小規模・境界明確なら AGENTS.md と CI を先に整えた方が ROI 高い。

Mac 変更 / クラウド化で改善するか?

モデルコンテキストは増えないが、24GB 専用 M4は索引・テスト時の swap を減らし Agent タイムアウト中断を防ぐ。チーム共通「重タスク」環境にもなる。日単位で試用可能。

まとめ

大規模プロジェクトでの Cursor / Claude Code の「コンテキスト消失」は、多くがエンジニアリング問題であり、新モデルに替えれば消える類ではない。この5ステップ——症状分類 → 予算確認 → 索引再構築 → 境界設定 → AGENTS.md 記述とセッション分割——は、盲目的に Max モードを開くより安く安定することが多い。

  • セッション内の逸脱:注入を減らす、タスク分割、Handoff。
  • ファイルが見つからない:ignore 修正、Reindex、ワークスペース縮小。
  • 新セッションですぐ忘れる:約束をリポジトリに書き、CI でカバー。

次は持続記憶コード知識グラフをステップ 5 以降の強化として読んでください。

関連記事