SKIP TO CONTENT
すべての記事
GUIDE·July 4, 2026·読了 4 分

AI コーディングエージェントが同じミスを繰り返し続けるとき、行き詰まりから抜け出す方法

著者:VCA Newsroom

この記事は自動翻訳されており、誤りが含まれている場合があります。 英語の原文を見る

非推奨の関数の使用をやめるよう AI コーディングエージェントに指示する。エージェントは謝ってコードを書き直し、そして同じ非推奨の関数をまた使う。3 回目の訂正をする。結果は同じ。これが「ドゥームループ」であり、あらゆるビルダーがいずれぶつかるものだ。朗報は、なぜこれが起きるのかを理解すれば、解決は素早く、何度でも再現できるということだ。

なぜエージェントは行き詰まるのか

AI コーディングエージェントは、人間のように直前の訂正を覚えているわけではない。エージェントは自分のコンテキスト、つまり会話の進行中のトランスクリプトと読み込んだファイルから動作する。長いセッションでは 2 つのことがうまくいかなくなる。

  • ミスが積み重なる。 誤った前提が早い段階でコンテキストに入り込むと、その後のすべての応答がその上に築かれる。あなたの訂正は、いまだ誤ったことを言っている以前のテキストすべてと競合する、もう 1 つのメッセージにすぎない。
  • コンテキストの腐敗(context rot)。 長いセッションでウィンドウが埋まっていくにつれて、出力品質は徐々に劣化する。エージェントは 20 メッセージ前に与えた指示を見失い始める。

だから、エージェントがミスを繰り返すとき、それはたいてい頑固なのではなく、汚染されたコンテキストの中で溺れているのだ。エージェントの態度ではなく、コンテキストを直そう。

ステップ 1:説明し直すのではなくリセットする

あなたの本能は、訂正をより強く説明することだろう。それに抗おう。余分なメッセージはすべて、汚染されたコンテキストに追加される。代わりに、悪いコンテキストを切り捨てよう。

  • Claude Code では、/rewind が会話ファイルの変更を以前のチェックポイントまで巻き戻す。直近の数ステップがうまくいかなかったが、それ以前の作業は残す価値があるときに使う(Esc をダブルタップすると同じメニューが出る)。/clear は会話を完全に消去して、コードは残したまま最初からやり直す。セッション全体が脱線したときに使う。/compact は、より軽い状態で続けたいときに履歴をより短い形へと要約する。(Claude Code のベストプラクティスを参照。)
  • Cursor やチャットベースのツールでは、汚染されたチャットを続けるのではなく、行き詰まったタスク用に新しいチャットを始めよう。

1 つの明確な指示を持つクリーンなコンテキストは、ますます苛立ちを増した 5 つの指示を持つ長いコンテキストに勝る。

ステップ 2:訂正に恒久的な居場所を与える

チャットに打ち込んだ訂正は、セッションが終われば消える。次のセッションでは、エージェントが同じミスをする。ウィンドウを閉じたことで、その修正をエージェントの記憶から取り除いてしまったからだ。エージェントが毎回読み込む場所に、永続的なルールを置こう。

  • Claude Code: リポジトリのルートにある CLAUDE.md ファイル。
  • Cursor: ルールファイル(例:.cursor/rules/)。
  • 任意のエージェント: 現在広くサポートされている AGENTS.md ファイル。

ルールは、フラットで検証可能な文として書こう。「クリーンなコードを書くようにする」ではなく、「fetch を使い、axios は決して使わない。このプロジェクトに axios の依存はない。」のように。

ステップ 3:制約を見逃せないものにする

具体例を挙げよう。エージェントが、あなたが削除した日付ライブラリを import し続けるとする。

// Agent keeps writing this:
import moment from 'moment'
const now = moment().format('YYYY-MM-DD')

あなたは代わりに組み込みの Intl API を使うよう 3 回伝えた。4 回目の訂正の代わりに、CLAUDE.md に 1 行追加しよう。

## Dates
Never import `moment` or `dayjs` — they are not installed.
Format dates with the built-in `Intl.DateTimeFormat`. Example:
`new Intl.DateTimeFormat('en-CA').format(new Date())` → "2026-07-04"

違いはこうだ。あなたはルールと動く例を与えた。エージェントは、抽象的な指示よりもコピーできる例のほうがはるかに確実に従う。そして今、そのルールはすべてのセッションの開始時に自動的に読み込まれる。

ステップ 4:エージェントに自己チェックの手段を与える

エージェントは、自分に見えないミスを繰り返す。エージェントが読み取れるシグナルを与えて、ループを閉じよう。

  • まさにそのミスで失敗するリンタールールまたはテストmoment がリンターで禁止されていれば、エージェントはリンターを実行し、エラーを見て、それを修正する。あなたを介さずに。
  • プロンプト内の手軽な**「完了の定義」**チェックリスト:「終える前に、npm run lintnpm test を実行し、両方が通ることを確認して。」

これが最大のアップグレードだ。エージェントが自力で検出できるミスは、あなたが捕まえなければならないミスではなくなる。

ステップ 5:タスクを小さくする

エージェントが大きく漠然とした要求(「認証システムをリファクタリングして」)でループするなら、それはたいてい細部ではなくスコープで迷子になっている。作業を、一度に 1 つの小さく検証可能なステップに分解し(「トークン更新のロジックを独自の関数に抽出して、挙動は変えないで」)、次に進む前にそれぞれを確認しよう。小さなタスクは、さまよう余地が少ない。

パターン

エージェントがミスを繰り返しやめないとき、このリストを順に実行しよう。コンテキストをリセットし、永続する場所にルールを書き留め例を示し、エージェントが自分で実行できるチェックを与え、タスクを絞り込む。テーマに気づくだろう。あなたはエージェントと言い争っているのではなく、エージェントに見えるものを直しているのだ。そうすれば、ドゥームループは失われた午後ではなく、2 分の寄り道になる。

Auto-generated by Vibe Coding Academy on July 4, 2026, grounded in the real sources linked above. We review for accuracy, but please verify time-sensitive details against the primary sources.

Build Blueprint · Creator

アイデアはありますか?あなたの AI エージェントが構築できる仕様を手に入れましょう。

任意のプロダクトを説明すれば、完全なビルド設計図が手に入ります — スタック、データモデル、画面、API、そして Claude Code や Cursor にそのまま貼り付けられるプロンプト。PDF にエクスポート可能。

設計図を開く