コンテキストポイズニング
コンテキストポイズニングとは何か、Bob Shellセッションでそれを認識する方法、新しいセッションの開始やコンテキストの整理で回復する方法を学びます。
コンテキストポイズニングについて
コンテキストポイズニングとは、誤った情報や無関係な情報がコンテキストウィンドウに入り込み、トランスクリプトに残り続けることです。Bobはフォローアップのプロンプトでその情報を事実として扱います。返答がずれていきます。ツールの呼び出しが不正確になります。作業目標が失われます。
これは単一の誤った回答とは異なります。不正なデータはMessages(またはファイルの読み取り、コマンド出力の貼り付け、古いコメントを通じて入ってきた)に残り続けます。BobはリセットするかセッションをReset新しく始めるまで、すべてのプロンプトで再送信します。
ウィンドウがどのように埋まっていくか、いつ新しいセッションを始めるべきかについては、コンテキストウィンドウ管理を参照してください。
症状
以下のいずれかに気づいた場合、コンテキストポイズニングが発生している可能性があります:
- 出力の悪化:提案が繰り返される、ずれる、またはリポジトリと一致しなくなる。
- 誤ったツール使用:トランスクリプトのツールステップが求めたものと一致しなくなる。
- マルチステップ作業の停滞:長いマルチプロンプトのフローがループするか停止する。
- 短命の修正:修正プロンプトが一度は効くが、その後問題が戻ってくる。
- ツールの混乱:ツール定義が変更されていないにもかかわらずBobがツールを誤用する。
Messagesがすでに大きい場合は、まずtoken使用量を確認してください。ポイズニングとウィンドウの超過は一緒に発生することがよくあります。
一般的な原因
| 原因 | 何が起こるか |
|---|---|
| セッション内の誤った事実 | Bobが何か誤ったことを述べる。その後の交換でMessages内でそれが真実として扱われる。 |
| 古いまたは誤ったリポジトリテキスト | 古いコメント、READMEの断片、または生成されたドキュメントがファイルの読み取りを誤らせる。 |
| 大きすぎる貼り付け | ノイズ、切り捨て、または隠れた文字を含むログやスニペットがMessagesに入る。 |
| 要約 | Bobが古いMessagesを要約する。有用な詳細が消える。残ったものがセッションを支配することがある。 |
| 無関係なコンテキスト | 無関係なファイル、古い計画、または以前の作業目標がトランスクリプトにまだ存在する。 |
不正なコンテキストが一度Messagesに入ると、それ以降のすべてのプロンプトにわたって持続します。Bobは間違っているからといってもっともらしいテキストを信頼性高く無視しません。
修正プロンプトの限界
ツール定義、ルール、または厳格な修正プロンプトを会話に貼り付けると、1〜2回の交換は問題をマスクできるかもしれません。ポイズニングされたMessagesの履歴はまだそこにあります。次の的外れな質問が同じ失敗を引き起こす可能性があります。
信頼できる修正は新しいセッションです:終了してbobを再実行して新鮮に始めます。これによりRulesとプロジェクトファイルをディスクに保持したまま、ポイズニングされたMessagesをクリアします。
回復
- 新しいセッションを開始する:終了して
bobを再実行します。これによりRulesとプロジェクトファイルをディスクに保持したまま、ポイズニングされたMessagesをクリアします。 - 貼り付けを減らす。Bobが必要なログの行やエラーのみを送信します。大きなダンプはMessagesを増やし、リスクを高めます。
- 作業目標を分割する。無関係なステップには別々のセッションを使用して、古いトランスクリプトが引き継がれないようにします。
- ツール出力を確認する。ツールがゴミを返した場合、BobがMessagesでそれを基に構築するのではなく、停止して新しいセッションを開始します。
- テキストよりテストを信頼する。コメントとコードが食い違う場合、Bobを実行可能なチェックに向けます。これはコンテキストウィンドウのベストプラクティスと同じガイダンスです。
予防
ほとんどの予防は優れたコンテキストの整理の結果です:
- リポジトリ探索の前に作業目標を絞り込む(コンテキストウィンドウ管理)。
AGENTS.mdとRulesを短く操作的に保つ。- 前もってではなく、必要に応じてファイルとログを追加する。
- 進捗なしにMessagesが大きくなったらリセットする。
リポジトリ全体の読み取りには、subagentを使用して、セッションがMessagesのすべてのツールステップではなくsubagentの結果を見るようにします。