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、長セッション分割 | 新セッションでも同じ制約を守る |
大規模プロジェクトで「コンテキスト消失」とは何か?
まず概念を揃えます。長いコンテキストウィンドウは「この瞬間、これだけ token を入れられるか」;有効コンテキストは「この推論回の判断でどの事実が使われたか」。大規模リポではこの差が拡大します——詳しくはAIコーディングの持続記憶を参照。
エンジニアが口にする「忘れた」は、だいたい次の3類型に収まります:
| 類型 | 表象 | よくある根因 | 優先切り分け |
|---|---|---|---|
| A. セッション切り詰め | 同スレッドで話すほど逸れる、直前の制約を覆す | 多回のツール出力が早期指示を押し出す;compact / 要約で詳細消失 | ステップ 2、5 |
| B. 索引ミス | 「某モジュールが見つからない」「このテーブルがないと思っている」 | ignore 過剰、索引未更新、リポが大きすぎて検索ノイズ | ステップ 3、4 |
| C. ルール未読込 | 新セッションで命名スタイル・禁止パスをすべて忘れる | 約束がチャットのみ、AGENTS.md 欠如または長すぎて無効 | ステップ 5 |
ステップ 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コーディング実測のメモリ結論と一致。
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.md と CLAUDE.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 | 新セッションでも制約忘却 → 類型 C | AGENTS.md なしを確認 | 根因特定 |
| ステップ 3 | .cursorignore が packages/auth を誤除外 | ignore 修正 + Reindex | Agent が 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 でカバー。