Agentic OS 技術スタックを下から読む 第44回:文脈の窓は、ノートではない ―― 溜めるほど悪くなる、だから絶えず整える
前回は、世界モデルが抽象の層で先を読む話をしました。結びでは、次回はまた別の層の急所へ降りる、と書きました。
Agentic OS 技術スタックを下から読む 第44回:文脈の窓は、ノートではない ―― 溜めるほど悪くなる、だから絶えず整える
世界モデルから、運行時へ
前回は、世界モデルが抽象の層で先を読む話をしました。結びでは、次回はまた別の層の急所へ降りる、と書きました。
今回は、もう一度、運行時へ降ります。
ここまで、この連載では文脈の窓を何度か見てきました。第34回では、文脈の窓を所有することを扱いました。第27回では、注意の予算を見ました。第38回では、委譲によって別の窓に分ける話をしました。
今回は、その窓の、走っている最中の手入れです。
長く走る処理では、窓にいろいろなものが溜まります。道具を呼んだ結果。試した手順。うまくいかなかった仮説。途中で作った下書き。すでに捨てたはずの計画。これらは、残しておけば役に立つように見えます。
しかし、そう単純ではありません。
文脈の窓は、書き足していくノートではありません。絶えず片づける作業机です。机の上に何でも積めば、必要なものへ手が届かなくなります。窓でも同じことが起きます。
窓は、ノートではない
素朴には、文脈の窓をノートのように考えがちです。
やり取りを残す。道具の出力を残す。失敗した命令も残す。読んだ資料も残す。あとで役に立つかもしれないから、すべて後ろへ足していく。長い履歴があればあるほど、判断の材料が増える。だから良くなる。
この考えは、半分だけ正しいです。
たしかに、必要な材料が窓に入っていなければ、モデルはそれを使えません。見えていない制約は守れません。見えていない結果は参照できません。だから、窓に入れること自体は大事です。
ただし、窓は有限です。
しかも、窓は紙のノートとは違います。ノートは厚くなっても、読む人が必要なページを開けば済みます。窓では、入っているもの全体が一度に処理の場へ上がります。そこに余計なものが増えると、必要なものだけが強く見えるわけではありません。
むしろ、ある点を越えると、足すほど悪くなります。
これは直感に反します。材料が増えたのに、答えが悪くなるからです。しかし、機構を見れば不思議ではありません。窓の中では、必要な情報と不要な情報が隣り合います。古い失敗も、今の方針も、同じ平面に置かれます。どれが本筋かを選ぶ負担が増えます。
つまり、窓は保存場所ではありません。作業場所です。
作業場所には、今使うものだけを置くべきです。
溜まるものは、場所を取るだけではない
長く走ると、窓には三種類のものが溜まりやすくなります。
一つ目は、生の結果です。道具を呼んだときの長い出力です。検索結果の一覧。ファイル全体。実行ログ。失敗時の長い表示。これらには役立つ部分もありますが、多くは一度見れば十分な細部です。
二つ目は、行き止まりです。試したけれど通らなかった方針です。存在しなかった関数を探した記録。使わないことに決めた設計。前提が違っていた調査結果。こうしたものは、結論だけ残ればよいことが多いです。
三つ目は、古い中間物です。途中の下書き。仮のまとめ。使い捨ての整理表。すでに新しい結論へ吸収された材料です。作った時点では必要でしたが、次の段階では重荷になります。
これらは、ただ窓の場所を取るだけではありません。
積極的に窓を汚します。
ここでいう汚れとは、文字が多いことそのものではありません。今の作業に関係が薄いものが、関係の濃いものと同じ場所に残っている状態です。机でいえば、今日使う部品の横に、昨日捨てた設計図と、空の箱と、別件の伝票が積まれている状態です。
この汚れには、はっきりした害があります。
害その一、注意が薄まる
第一の害は、注意が薄まることです。
第27回で、注意の予算を見ました。モデルが一度に保てる注意には上限があります。ここでいう注意とは、窓の中のどの部分をどれだけ重く見るか、という配分のことです。
窓が小さく、必要な材料だけが入っているときは、この配分が本筋へ向きやすくなります。いま直すべき箇所。守るべき制約。直前の失敗。求められている出力。これらが近く、濃く見えます。
ところが、窓が余計なもので膨らむと、同じ予算が広い範囲へ散ります。
たとえば、必要なのは関係する関数の数行だけなのに、ファイル全体を貼ったとします。モデルは、目的の数行だけでなく、周辺の関係ない設定、古い分岐、別の機能、コメント、使われていない補助処理まで同じ窓の中で見ることになります。
すると、肝心の数行は変わっていないのに、見え方が薄くなります。
これは、人間が長い会議の議事録から一つの決定事項を探すときに似ています。決定事項そのものは書かれています。けれども、雑談、保留、古い案、別件の報告が混ざると、読む側は本筋を見失います。
同じモデルでも、窓が散らかると出来が落ちます。
能力が落ちたのではありません。作業机が悪いのです。
害その二、古い迷いが残る
第二の害は、古い迷いが残ることです。
一度捨てた計画でも、窓に残っているかぎり、モデルにはまだ候補として見えます。失敗した方針も、明示的に死んだ案として整理されていなければ、まだ使える案のように見えます。
たとえば、最初は全面的に作り直す方針を考えたとします。その後、危険が大きいので小さく直す方針に変えました。ところが、最初の全面的な作り直し案が窓に長く残っていると、後の出力でまたその案が顔を出します。
理由は単純です。
窓の中にある文章は、現在の材料として扱われます。古い案であること、捨てた案であること、もう使わないことがはっきり書かれていなければ、ただの候補に見えます。
失敗した道具の結果も同じです。
ある方法でうまくいかなかった。だから別の方法へ移った。ここまではよいです。しかし、失敗した長い結果だけが残り、そこから何を学んだかが短く整理されていないと、窓には未処理の迷いが残ります。次の判断で、その迷いがまた混ざります。
長く走る処理で怖いのは、間違いそのものより、間違いが片づかずに残ることです。
片づいていない失敗は、後でまた判断を濁します。
害その三、今が埋もれる
第三の害は、今やっていることが埋もれることです。
長い処理では、作業の中心が移ります。最初は調査です。次は設計です。次は実装です。最後は確認です。各段階で必要な材料は違います。
ところが、窓をノートのように使うと、すべての段階が同じ場所に積まれます。調査中の候補。設計中の案。実装中の差分。確認時の失敗。これらが一つの窓に残ります。
すると、いま本当にやっていることが、大きな窓の中のほんの一片になります。
たとえば、最後に必要なのは「この三つの制約を守り、出力を五つの要点に絞る」ことだとします。しかし、窓の前半に十数個の古い論点が残っていると、最後の制約は目立ちません。求められている形が埋もれます。
この状態では、材料が多いほど良い、とは言えません。
むしろ、入れるものを絞って、窓を六割ほど小さくしたほうが、結果が良くなることがあります。必要な材料だけが濃く残るからです。捨てた案が消え、長い生の結果が畳まれ、今の指示が前に出ます。
少ないほうが良い場合がある。
これは、窓をノートだと思っていると出てこない結論です。作業机だと思えば自然です。机の上を六割片づけると、手が動きやすくなります。
入れる前に、選ぶ
では、どう手入れするか。
第一は、入れるものを選ぶことです。
ファイルを丸ごと貼らない。関係する一つの部分を入れる。つまずいている箇所の前後、数行だけを入れる。長い実行結果をそのまま残さない。失敗の種類と、次に避けるべきことだけを残す。
引き継ぎも同じです。
長い履歴を丸ごと渡す必要はありません。必要なのは、たいてい数行です。何をしたいのか。関係する場所はどこか。守る制約は何か。何を試して駄目だったか。どんな出力がほしいのか。
この数行があれば、作業は進みます。
逆に、この数行がなく、長い履歴だけがあると、読む側は自分で本筋を掘り出す必要があります。そこでずれます。重要でない失敗を重く見たり、すでに捨てた案を拾ったりします。
第38回で見た委譲も、同じ考えでした。重い探索を別の窓に渡すとき、全部を渡すのではありません。相手の作業に必要な一切れを渡します。
これは、自分の窓にも当てはまります。
外へ渡すときだけ選ぶのではありません。自分の次の一手のためにも、窓へ入れる前に選びます。入ってしまったものを後で無視するより、最初から入れないほうが強いです。
溜まったら畳み、用途で分ける
第二は、溜まったら畳むことです。
長くなった後ろを、短い要約に変えます。生の出力は捨てます。残すのは、次に効く要点だけです。
たとえば、長い調査結果があったとします。そのまま残すのではなく、次のように畳みます。
「候補は三つあった。二つは制約に合わない。残すのは一つ。理由は既存の構造を壊さずに済むため。試して駄目だった方法は、入力の形が合わなかったため使わない。」
これで十分なことが多いです。
第三は、混ぜないことです。
計画、実装、調査、確認を一つの窓に積み続けると、決まっていない案がいつまでも残ります。実装中なのに、調査中の候補が見えます。確認中なのに、計画段階の迷いが見えます。
だから、用途ごとに窓を分けます。
調査の窓では広く探します。実装の窓では決めた範囲だけを扱います。確認の窓では、期待される結果と実際の差だけを見る。こうして役割を分けると、それぞれの窓が汚れにくくなります。
第38回の委譲で、重い探索を別の窓に逃がした話と地続きです。分けるのは、並列に動かすためだけではありません。汚れを持ち込ませないためでもあります。
縛りで選ばせる
第四は、縛ることです。
やってはいけないことを、はっきり挙げます。作り直すな。新しい依存を足すな。この範囲の外を触るな。既存の名前を変えるな。出力は五つまでにせよ。
これは窮屈に見えます。
しかし、縛りは出来を上げます。理由は、縛りが選ぶことを強いるからです。
汚れた窓では、何でも少しずつ見えます。古い案も見えます。別の道も見えます。ついでに直せそうな場所も見えます。そこで、処理が広がります。広がるほど、肝心な作業から離れます。
縛りがあると、余計な候補を落とせます。
「新しい依存を足すな」とあれば、外から大きな仕組みを持ち込む案は消えます。「この範囲の外を触るな」とあれば、関係の薄い改修は消えます。「要点は五つまで」とあれば、長い説明を並べるのではなく、本当に必要なものを選ぶ必要が出ます。
つまり、縛りは単なる禁止ではありません。
窓の中で、何を前に出し、何を捨てるかを決める道具です。汚れた窓が失っていたのは、この選ぶ力です。縛りは、それを取り戻します。
文脈の手入れは、走り続けるための土台
まとめます。
文脈の窓は、書き足していくノートではありません。絶えず片づける作業机です。何でも積めば、肝心が埋もれます。古い迷いが残ります。注意が薄まります。
多いほど良いのではありません。
整っているほど良いのです。
だから、入れるものを選びます。溜まったら畳みます。用途で分けます。縛りで選ばせます。
第34回で見た、文脈の窓を所有することの中身は、一度きりの設計ではありませんでした。走っている間ずっと続く、手入れのことでした。
同じモデルでも、渡される机で出来は変わります。生の結果、行き止まり、古い中間物で埋まった机を渡すのか。必要なものだけが載った机を渡すのか。その差は、長く走るほど大きくなります。
机を片づけることは、派手ではありません。
けれども、長く走るエージェントを支える、地味で効く土台です。
次回は、また別の層の急所へ降ります。
← 一覧へ