「また同じエラーを修正しようとしている…」と感じたことはありませんか。Antigravity のエージェントが同じ箇所を繰り返し修正し、気づいたらコードがどんどん壊れていく、あの状況です。
私自身、ある Next.js プロジェクトで型エラーを修正しようとしたとき、エージェントが1時間以上同じ型定義を書き直し続け、最終的に any の嵐になってしまった経験があります。あの徒労感は忘れられません。
このループは起きる原因がはっきりしており、それがわかれば対処も難しくありません。
ループには3種類ある
まず「何のループが起きているか」を見極めることが、解決の第一歩です。
修正ループ(Fix Loop): エージェントがエラーを修正するたびに別のエラーが生まれ、永遠に修正を続ける状態。TypeScript の型エラーや lint エラーでよく発生します。根本原因を取り除かず症状だけを直しているために起こります。
確認ループ(Verification Loop): エージェントがコードを変更した後、テストや型チェックを実行し、失敗したので再度修正…という繰り返し。テスト設計が壊れているか、テスト環境が誤った状態を返し続けている場合に起きます。
コンテキストループ(Context Loop): エージェントがどこまで作業したかを忘れ、同じファイルや同じ変更を何度も適用しようとする状態。コンテキストウィンドウが限界に近づいているとき、またはプロジェクトが大きすぎてエージェントが自分の変更を追えなくなったときに発生します。
どれが起きているかを確認するには、エージェントの出力を2〜3ターン見るだけで判断できます。「同じファイルを繰り返し編集しているか」「修正後に同じエラーが再現しているか」「変更の理由が毎回変わっているか」——この3点が目安です。
まず「手を止める」ことが最優先
ループに気づいたら、まずエージェントを止めてください。続けさせてもコードが悪化するだけです。
Antigravity のエージェントは Esc キーまたは停止ボタンで中断できます。中断したら、チェックポイントをすぐに確認してください。左サイドバーの「Checkpoints」から、ループが始まる前の状態に戻れます。
# チェックポイントで戻れない場合は git で状態確認
git status
git diff HEAD
git log --oneline -5ループ中にエージェントが加えた変更を全部取り消したい場合は、以下で戻れます:
# ループ前の最後のコミットまで戻す
git stash
# または
git checkout -- .いきなり変更を消すのが不安な場合は、現状を一時保存してから戻すのがおすすめです:
git stash push -m "agent-loop-state"
git stash list # 保存されたことを確認根本原因を断つ
ループを止めたら、なぜループが起きたかを30秒だけ考えてください。ここをスキップして「もう一度やり直す」と、同じループが繰り返されます。
修正ループの場合
型エラーや lint エラーの修正ループは、たいていエージェントに「エラーを消せ」という指示しか与えていないのが原因です。エラーの根本(例えば依存ライブラリのバージョン不一致、設計上の型の不整合)は伝えていません。
再開するときは、エラーの内容を貼り付けて、こう聞くと効果的です:
以下のエラーが繰り返し発生しています。
修正するたびに別のエラーが生まれるため、表面的な修正ではなく
根本原因を特定してほしいです。修正を始める前に原因の仮説を教えてください。
[エラーメッセージをここに貼る]
「修正を始める前に原因の仮説を」というフレーズが重要です。これによりエージェントが分析フェーズを経てから手を動かすようになり、ループ率が大幅に下がります。
確認ループの場合
テスト失敗のループは、テスト環境が壊れているまま実行し続けていることが多いです。
# テスト環境をクリーンにリセット
rm -rf node_modules/.cache
rm -rf .next
npm run test -- --clearCache 2>/dev/null || jest --clearCache
# 問題のあるテストだけを単独で実行して確認
npx jest path/to/failing.test.ts --verbose環境問題ではなくテスト自体が壊れている場合、エージェントに「このテストは現在の設計では通らない前提のはずか?」と確認するのが早道です。削除すべきテストを修正しようとしているケースも少なくありません。
コンテキストループの場合
エージェントが自分の変更を追えなくなっている場合、新しい会話を始めるのが最も確実です。
その際、現在の状態を簡潔にまとめたコンテキストを渡すと効果的です:
現在のプロジェクト状態:
- 作業対象: src/components/UserProfile.tsx
- 達成済み: 型定義の修正(完了)、API連携(完了)
- 未完了: テストの更新
- 注意点: UserProfile は User 型と Profile 型を分離して管理している
今から「テストの更新」だけをお願いします。
スコープを明確にすることで、エージェントが「何をすべきか」を迷わなくなります。
ループを防ぐプロンプト設計
事後対処だけでなく、ループが起きにくい作業の進め方があります。
変更を小さく区切る: 「全部一気に修正して」という指示はループを招きやすいです。「まず型エラーだけ修正して」「次にテストを通して」のように段階を分けると、各ステップでエージェントが迷うことが減ります。
確認ポイントを設ける: 大きな変更の前に「変更する前に、どのファイルを変更する予定か教えてください」と聞く習慣が有効です。想定外の変更に早めに気づけます。
エラーを直接渡す: エラーが出たら、エラーメッセージをそのままコピーしてエージェントに渡してください。「動かない」「エラーが出た」だけでは情報が足りず、エージェントが推測で修正を試みてループに入りやすくなります。
エージェントに Plan Mode を使ってもらう
Antigravity の Plan Mode(Shift+Enter で計画を提示させる)は、ループ予防に非常に効果的です。
修正が複雑そうなとき、いきなり実行させるのではなく「計画を立てて」と伝えてみてください:
このエラーを修正したいのですが、まず変更計画を教えてください。
実行は計画を確認してからにします。
エラー: [内容]
計画の時点でおかしな方向に進んでいれば修正を指示できます。ループが始まる前に軌道修正できるのが最大のメリットです。
それでもループが続く場合
上記を試してもループが止まらないなら、以下を確認してください:
プロジェクトが大きすぎてエージェントのコンテキストに収まっていない可能性があります。AGENTS.md(または GEMINI.md)にプロジェクトの構成を簡潔にまとめ、エージェントが参照できる状態にしておくと安定します。
また、Antigravity 自体の一時的な不具合の場合もあります。IDE を再起動して同じ作業を試すだけで解決することもあります。
修正ループは「エージェントが頭が悪い」のではなく、「指示とコンテキストが足りていない」ことがほとんどです。止め方と再開の仕方さえ覚えておけば、ループに焦る必要はなくなります。
次回ループに入ったら、まず Esc で止め、チェックポイントを確認し、30秒だけ原因を考えてから再スタートしてみてください。それだけでだいぶ変わります。