最近、Claude Codeを触る機会が増えてきて、雰囲気で理解?したつもりでいた、コンテキストについて改めて学んだので、自分なりに解釈を残して置く。
ClaudeCodeベースで書いているが、コンテキスト自体はどのAIでも考え方とか同じなので、参考になると思います。
忙しい人はまとめの見出しに飛んでください。
当記事の対象読者
- コンテキストってそもそも何??
- AIと対話していて回答の精度が落ちたのが気になる人
- コンテキストの肥大化を抑える方法を探している人
そもそもコンテキストとは何か
上記で結論書いてしまったが、コンテキストはAIがアウトプットを出すための作業記憶という理解が自分は一番しっくりきた。
コンテキストに下記のような内容が含まれている。
- これまでの会話履歴
- Agentが読み込んだファイルの内容
- コマンドの内容と実行結果
- CLAUDE.mdなどの指示ファイル
上記は一部だが、大部分はこんなところ。
コンテキストの必要
コンテキストについては理解したが、コンテキストがなんで必要かというと、コンテキストがないとAIはまともないアウトプットを出力できない。
例えば、AIは大規模な知識を有してはいるが、いきなり「商品管理システム設計書を作って」といっても、商品情報やお店、倉庫などの情報が何もないので、AIが元々搭載している、設計書を作る機能をベースにした、テンプレートしか作れない。
「商品管理システム設計書を作って」という前に、商品A〜Dがあって、お店はA店とB店があって、倉庫はAという倉庫があるんだよねって話していた場合、AIはその情報をコンテキストとし、コンテキストからユーザが求めている設計書と近いものをアウトプットとして出してくれる。
コンテキストの肥大化とその弊害
AIはコンテキストがないとまともなアウトプットを出してくれないが、コンテキストが多すぎても、AIはまともなアウトプットを出してくれなくなる。
このような問題を「コンテキストの肥大化」と呼ぶ。
コンテキストの肥大化が起きると、AIがコンテキストの中から必要な情報を正確に拾い出す精度が落ちる。
それに伴い下記のような事象が発生したりする。
- 指示した内容と関係ないファイルを修正
- 指示した内容とは別に昔指示した内容で実行
- 同じ質問に対して回答が毎回違くなる
記載した内容は一部であり、これ以外にも様々な問題が発生したりする。
ではなぜ、コンテキストの肥大化が起きるとこのようなことが起きるかは、AIは肥大化したコンテキストの中から必要な情報を正確に拾い出す精度が落ちてくる。
また、会話中に試行錯誤などした場合があると、コンテキストの中にはその試行錯誤の情報がノイズとして入っていることになる。
補足として、コンテキストは無限ではないので、コンテキスが肥大化しすぎるとAIの回答までのスピード劣化にもつながる。
自分なり感覚ではあるが、HDDの使用率が30%と70%では30%の方が読み込み書き込み速度が早いと同じような感じだと思ってる。
使用率は/contextと打つことで、そのセッションでのコンテキストの利用状況を見ることができる。
コンテキストの肥大化を防ぐ予防策
コンテキストの肥大化を防ぐための方法としては、下記のような方法がある。
- CLAUDE.mdに共通のルールや前提知識を記載しておく
- 特定の作業に必要な知識や手順をまとめたSkillsを用意しておく
- メインで会話しているセッションとは別に、Sub Agentを用意し、コンテキストを完全に分離する
※SkillsとSub Agentに関しては少し内容が濃いので、別の記事で詳細に記載する予定。
CLAUDE.mdを使うことによって、都度都度プロジェクト概要を載せる必要がなくなるので、ノイズが減る。
Skillsで特定の作業に必要な情報だけをコンテキストに追加されるので、不要な情報がコンテキストに追加されづらくなる。
Sub Agentはメインセッションとはコンテキストが完全に分離されたサブセッションで、動くため、メインセッションに余計なコンテキストが追加されづらくなる。
コンテキストが肥大化した場合の対策
コンテキストが肥大化してしまった場合の対処としては、下記のような方法がある。
- /compactでコンテキストを圧縮する
- /clearでコンテキストを完全リセットする
/compactを使うことで、コンテキストが要約圧縮されるので、コンテキストを圧縮しつつ会話を継続することができる。
/clearでコンテキストを完全リセットされるので、完全にクリーンな状態で、新しい作業をすることができる
補足だが、ブログを書く際に情報集めなどに使っているClaude Codeのセッションで、/compactを実行したら、35%->19%に減ったので、結構効果ありそう。
まとめ
コンテキストは「AIが情報を溜めていく作業記憶」で、作業記憶がでかくなりすぎると、コンテキストの肥大化が起きる。
コンテキストの肥大化が起こると、回答精度や回答速度に影響が出る。
コンテキストの肥大化を起こさないためには、CLAUDE.mdやSkills、Sub Agentなどを利用し、不要なコンテキストを極力入れないようにする。
それでもどうしても、コンテキストが肥大化してしまった場合は、/compactや/clearでコンテキストの圧縮、クリアなどを行なって、コンテキストの効率化を行う。
参考サイト



コメント