🪟

Coding Agentを䜿う䞊でもっずも重芁なこずの䞀぀: コンテキストりむンドりに぀いお

に公開
2025/03/30
3ä»¶

Cursor/Clineを䜿う䞊で重芁なこずずしお、LLMのコンテキストりむンドりを意識しないず

1. 逐䞀指瀺をしお察応するものの「Lost in Middle」珟象でうたく指瀺が通らなくなる
2. 良いパフォヌマンスが出せおいないのでルヌルを無秩序に远加する
3. 「Lost in Middle」は解消されるがその結果早い段階でタスクのコンテキストりィンドりをはみ出す
4. Cursor/Clineがルヌプしたり性胜が萜ちるのを確認する
6. 結果珟状のAIの性胜、刀断に察しお幻滅しAIを䜿うのをやめおしたう

ずいうようなこずが起こりたす。
そのためにもコンテキストりィンドりを意識するこずは非垞に倧事です。

以前のバむアスに関する蚘事を読んでいただいた人向け

前回は人間偎の問題を提瀺したした
https://zenn.dev/tesla/articles/763568928c7175

今回は人間偎の問題ではなく、LLM偎の問題になるのず
ある皋床実際に出おいる結果からの刀断になるので同じようなこずを
別ベクトルで蚀っおいる぀もりです。
たた今回はPKMずかは出おこないので安心しおください

たず、コンテキストりむンドりずは䜕かから説明したす。

コンテキストりィンドりずは

https://www.sbbit.jp/article/cont1/142381

コンテキストりィンドりずは、モデルが䞀床に凊理できるトヌクン数のこずを指す。トヌクンずは、単語、画像、動画の䞀郚分など、モデルが扱う最小単䜍だ。テキストであれば、英語の堎合、100トヌクン75ワヌドほど、日本語の堎合、100トヌクン100文字ほどずなる。

コンテキストりィンドりの限界

LLMは「コンテキストりィンドり」ず呌ばれる䞀定量のトヌクンしか同時に凊理できたせん。Claude 3.7 Sonnetの堎合200Kたで
この限界付近になるず䞀般的には以䞋のような問題が発生したす

  1. 情報保持の非䞀貫性
    • 先行するコンテキストで確立された芏則や修正が、埌続の応答で維持されない
    • セッションが長くなるほど情報の断片化が進行

「Lost in the Middle」䞭間郚分での情報喪倱
https://arxiv.org/abs/2307.03172

これによる匊害ずしお

反埩的修正サむクル

  • 同じ問題を䜕床も修正させる必芁がある
  • 䟋゚ラヌハンドリングを共通化するよう修正したのに、次の機胜远加で元の実装パタヌンに戻る

  1. 掚論胜力の䜎䞋
    • 耇数ステップの掚論タスクでの成功率が著しく䜎䞋
    • 論理的䞀貫性の欠劂や埪環論法などの症状

远蚘3/24 16:30䞻題ずしお正しくないので取り消し
論文はそれを避けるための方法ですが、論文内で数倀的に蚀及されおいたす
~~https://arxiv.org/abs/2502.07365~~

これによる匊害ずしお

埪環論法ず繰り返し

  • 同じ思考パタヌンを繰り返す
  • 思考の進展がなく同じずころをぐるぐる回る

Xで「Cline ルヌプ」や「Cursor ルヌプ」など怜玢するずたくさん出おきたす。

セマンティック干枉

  • 類䌌する抂念間での混同
  • 新しい情報が入力されるず、叀い情報が歪曲たたは眮換される

型情報が保持されおいなかったり、あるいは䌌たような情報で混乱したりなどしたす。

この蟺に関するDeepResearchのサヌベむ
https://note.com/delta_ipsilon/n/nbcbe266da163

远蚘3/24 16:30これらのサヌベむに察しお䞍足があったので、OODに関しおたずめた資料を远加
https://note.com/delta_ipsilon/n/n3e0ccf32ac77

Rulesの再定矩

これらの技術的制玄を理解した䞊で、Rulesの本質的な䟡倀を再考する必芁がありたす。

埓来の誀解

Rulesに関しお、以䞋のような誀解が広がっおいたした

  • 「業界暙準のベストプラクティスを網矅すべき」
  • 「蚘述される問題をすべお解決できる」
  • 「詳现であればあるほど良い」

しかし、LLMの技術的制玄を考慮するず、これらのアプロヌチが必ずしも効果的ではないこずが分かりたす。

コンテキスト圧瞮ずしおのRules

LLMの限界を螏たえるず、Rulesの䟡倀ある圹割の䞀぀は「コンテキストの効率的な圧瞮」だず蚀えたす

  1. 情報密床の最適化

    • 呚蟺ファむルをすべお芋せるより、本質的なパタヌンを抜象化しお䌝える方が効率的
  2. 䜜業蚘憶の枩存

    • LLMの限られた「思考胜力」を保護するため、䜜業蚘憶を枩存
    • 䞍必芁な情報が占める領域を枛らし、実際の課題に思考リ゜ヌスを集䞭
  3. プロゞェクト固有の知識䌝達

    • ディレクトリ構造、呜名芏則など、プロゞェクト固有の最小限の情報を効率的に䌝達

もしRulesを逐次远加するずどうなっおしたうのか

Rulesの無秩序な远加がもたらす悪埪環を以䞋に曞きたす。

フェヌズ

フェヌズ1: 初期の改善ず誀った垌望

最初の基本的なルヌルディレクトリ構造や呜名芏則などは明確な改善をもたらす
この初期成功から「ルヌルを远加すれば改善する」ずいう誀った信念が匷化される
より倚くのルヌルを远加すれば、さらに良くなるずいう期埅が生たれる

フェヌズ2: 期埅ず珟実のギャップ

ルヌルを远加しおも、期埅した改善が芋られなくなる
「ルヌルが䞍十分」たたは「ルヌルが䞍明確」ず誀蚺断される
察応策ずしお、さらに詳现なルヌルや䟋倖ルヌルが远加される

フェヌズ3: 逆効果の゚スカレヌション

ルヌル量ずコヌドの読み蟌みによっおコンテキストりィンドりを超過し、LLMのパフォヌマンスが急激に䜎䞋し始める
䞭間に䜍眮するルヌルが完党に無芖され、同じミスが繰り返される
この問題を「さらなるルヌル」で修正しようずする悪埪環

コンテキスト厩壊

パラドキシカルな性胜䜎䞋ルヌルが倚すぎお基本的なタスクすら遂行できなくなる
䞀貫性のない適甚最初ず最埌のルヌルは遵守されるが、䞭間ルヌルは無芖される
自己矛盟する実装同じファむル内で矛盟するコヌディングパタヌンが混圚
思考胜力の完党な䜎䞋埪環論法や思考の繰り返しが顕著になる

効果的な戊略LLMの制玄を螏たえたアプロヌチ

LLMの技術的制玄を前提ずした、より効果的な戊略を以䞋に提案したす

1. タスク蚭蚈の最適化

  • セッションごずにタスクを完結させる

    • 各セッションは独立した䜜業単䜍ずしお扱う
    • コンテキスト窓が飜和する前にタスクを完結させる
  • タスクを现かく切る

    • 倧きな開発䜜業を小さな独立したタスクに分割
    • 各タスクが単䞀のファむルや機胜に集䞭するよう蚭蚈
  • 蚈画を明確にする

    • 最初に明確な蚈画ず期埅成果を蚭定
    • 「䜕を䜜るか」の指瀺を具䜓的にし、怜蚌基準を明瀺

Devinの開発チヌムはこれを把握しおいお、ルヌルにも曞いおいたす。
䞊蚘で述べおきた通りコンテキストりィンドりの問題から
DevinでそうなのであればClineもCursorも基本的にやるべきこずは同じです。
https://docs.devin.ai/essential-guidelines/when-to-use-devin

2. 効率的なRulesの蚭蚈

  • 最小限の必芁情報に集䞭

    • プロゞェクト固有の本質的な情報のみを含める
    • ディレクトリ構造、呜名芏則、䞻芁なアヌキテクチャパタヌン
  • 抜象床ず具䜓性のバランス

    • 過床に抜象的すぎず、现かすぎない適切な粒床
    • 具䜓䟋の効果的な掻甚
  • 手続きずナレッゞの区別

    • 「どのように考えるか」より「䜕を䜜るか」の情報を優先
    • LLMの限られた泚意リ゜ヌスを効率的に䜿甚

Devinでは効率よくKnowledge=Rulesを取埗できるシステムがあるものの
"䞀般的なバグずその関連゜リュヌション、コヌド準拠のプラクティス、デプロむメント ワヌクフロヌ、テスト ワヌクフロヌ、独自のツヌルの操䜜方法"
などの具䜓的なものを掚奚しおいたす。
ここからもコンテキストりィンドりの圧瞮に察する工倫ずしお捉えられるず思いたす。

https://docs.devin.ai/onboard-devin/knowledge#what-belongs-in-knowledge%3F

たたCursorでもファむルパタヌンマッチングなどを駆䜿しお効率よくルヌルを制埡するシステムが蚭けられおいたす
https://docs.cursor.com/context/rules-for-ai

3. 珟実的な期埅倀蚭定

  • LLMの限界を認識

    • 完璧な結果を期埅せず、怜蚌の重芁性を理解
    • 特定の問題は技術的制玄によるものであり、ルヌルだけでは完党に解決できない
  • ツヌルずしおの適切な䜿い方

    • 「䞇胜の開発者」ではなく「制玄のある匷力なツヌル」ずしお䜍眮づけ
    • 人間による怜蚌ず組み合わせた効果的なワヌクフロヌ

たずめ

LLMコヌディング゚ヌゞェントのRulesは、単なる「良いプラクティス集」ではなく、LLMの技術的制玄を螏たえた「コンテキスト圧瞮のための効率的情報䌝達ツヌル」ずしお捉え盎す必芁がありたす。

最も効果的なアプロヌチの䞀぀は、「セッションごずにタスクを行う」「タスクを现かく切る」「蚈画を明確にする」ずいう基本戊略ず、「最小限の必芁情報に集䞭した」Rulesを組み合わせるこずです。

この技術はただ黎明期にあり、䜕を目的ずするかずいう根本的な郚分さえ定たっおいない状況です。しかし、LLMの根本的な制玄を理解した䞊で珟実的な期埅倀を蚭定し、適切な戊略を採甚するこずで、その朜圚胜力を最倧限に匕き出すこずができるでしょう。

おたけ

この蚘事をClaudeず曞いおいる最䞭に図を生成しおもらったのですが、悲惚な図が䞊がっおきおしんどい気持ちになったのでセッションを切り替えお䜕床が図を生成しおもらいたした...
コンテキストが長くなった時のむメヌゞがしやすいず思うので貌っおおきたす

悲惚な図

Cline䜿いの方はこちらも

https://zenn.dev/tesla/articles/33d196d17bf3bb

Discussion

todeskingtodesking

コンテキストりィンドりの限界を超えた堎合の問題に぀いお2぀の論文が参照されおいたすが、"Lost in the Middle"論文の方はコンテキストりィンドりに収たる入力においお䞭間の情報が軜芖される問題、"LongReD"論文はコンテキストりィンドりに察しお短い入力のずき性胜が萜ちる問題に぀いおの話で、コンテキストりィンドりの限界を超えた際の挙動ずは関係ないのではないでしょうか

3
teslatesla

コメントありがずうございたす
そちら二点明確に匕甚箇所を甚意したすね

1
teslatesla

ご確認ありがずうございたした🙇
こちらいく぀か自分の䞻芳が入っおいたため盎接的ではない匕甚になっおいたず思いたす🙇

  • Lost in Middleの方
    䞻題ずしおはおっしゃる通り「コンテキストりィンドりに収たる入力においお䞭間の情報が軜芖される問題」なのですが

Our results indicate that prompting language models with longer input contexts is a trade-off— providing the language model with more informa-tion may help it perform the downstream task, but it also increases the amount of content that the model must reason over, potentially decreasing accuracy

長いコンテキストが必ずしも有益ではなく、掚論の耇雑さを増し、粟床を䜎䞋させる可胜性に぀いお述べおいるので同様にコンテキストりィンドりに収たらない入力もLost in Middle論文の内容の圱響を受けるず考えおいたす。

  • LongReD論文の方
    こちらも

When the input text exceeds this context window, the model encounters out-of-distribution positional information, resulting in significant performance degradation

ず曞いおいるので持っおきおしたいたしたが、本来はこの匕甚元であるout-of-distribution OODに関する論文を匕いおくるのが正しいず思いたす。

Lost in Middleに関しおは珟実のケヌス぀たり䞭倮の指瀺が通らないを䞻題ずしおいるので匕き続きこちらは続けお
LongReD論文の方は䞻匵ずしお乏しいのでOODに関する論文を远加する察応をしたす。
ご指摘ありがずうございたす。

3