コンテキスト汚染
コンテキスト汚染とは何か、Bob との会話でそれをどう見分けるか、そして新しい task を始めたりコンテキスト衛生を改善したりしてどう回復するかを学びます。
コンテキスト汚染について
コンテキスト汚染とは、誤った情報や無関係な情報が context window に入り込み、transcript に残り続けることです。Bob はその情報を後続の prompt で事実として扱います。返答はずれていきます。tool の呼び出しは不正確になります。work goal は見失われます。
これは単に 1 回悪い答えが返るのとは違います。悪いデータは Messages に残ります(あるいは file の読み取り、log の貼り付け、古いコメントから入り込みます)。Bob はリセットするか condense するまで、毎回の prompt でそれを再送します。
window がどう埋まっていくか、そしていつやり直すべきかについては、Context window management を参照してください。実際にリセットする手順は Create a new context window を参照してください。
症状
次のようなことに気づいたら、コンテキスト汚染が起きている可能性が高いです。
- 出力の悪化: 提案が繰り返しになったり、話がそれたり、repository に合わなくなったりする。
- tool の使い方が不正確: transcript 内の tool の手順が、あなたの依頼内容と合わなくなる。
- 複数ステップの作業が止まる: 長い複数 prompt の流れがループしたり停滞したりする(Agent mode で)。
- 修正が長続きしない: 修正用の prompt が一度は効いても、そのあと問題が戻る。
- tool の混乱: Tool definitions が変わっていないのに、Bob が tool を誤って使う。
Messages がすでに大きいなら、まず context window breakdown を確認してください。汚染と window の過密は一緒に起こることがよくあります。
よくある原因
| 原因 | 何が起きるか |
|---|---|
| スレッド内の誤った事実 | Bob が何か誤ったことを述べ、その後のやり取りでそれが Messages の中で事実として扱われる。 |
| 古い、または誤った repository のテキスト | 古いコメント、README の断片、生成された docs が file 読み取りを誤らせる。 |
| 大きすぎる貼り付け | ノイズ、欠落、隠れた文字を含む log や snippet が Messages に入る。 |
| Condensation | Bob は 古い Messages を要約します。有用な詳細が消え、残ったものがスレッドを支配することがある。 |
| 無関係なコンテキスト | 関係ない file、古い plan、以前の work goal がまだ transcript に残っている。 |
悪いコンテキストが Messages に入ると、その後のすべての prompt にまたがって残り続けます。Bob は、もっともらしく見えるテキストが間違っているという理由だけでは、確実には無視してくれません。
修正 prompt の限界
会話に Tool definitions、ルール、厳しい修正用 prompt を貼り付けると、1〜2 回のやり取りでは問題を覆い隠せることがあります。でも汚染された Messages の履歴自体は残ったままです。次に話がそれた質問をすると、同じ失敗がまた起きることがあります。
確実な解決策は新しい task です。チャットパネルで +(New task)をクリックしてください。詳しくは Create a new context window を参照してください。
回復
- +(New Task)で 新しい task を始める。これで汚染された Messages は消えますが、Rules と disk 上の project files はそのまま残ります。
- 貼り付けを減らす。Bob に必要な log の行や error だけを送ってください。大きな貼り付けは Messages を増やし、リスクも増やします。
- work goal を分割する。関係のない手順は別の task に分けて、古い transcript を引きずらないようにします。
- tool の出力を確認する。tool がごみのような結果を返したら、Bob が Messages の中でそれを土台にする前に止めてリセットしてください。
- テキストよりテストを信頼する。コメントと code が食い違うなら、Bob を実行可能な確認に向けてください。これは context window best practices と同じ考え方です。
予防
予防の大半は、良いコンテキスト衛生から生まれます。
- repository を探索する前に work goal を絞る(context window management)。
AGENTS.mdと Rules は短く、実務的に保つ。- file と log は必要になってから追加し、最初から全部入れない。
- 進捗がないまま Messages が増えるならリセットする。
repository 全体を読むときは subagents を使ってください。そうすれば task が見るのは subagent results であり、Messages 内のすべての tool 手順ではありません。