
/compact という小さな死
Claude Codeの開発設計において丁寧にコンテキストを積み上げて「この方向でいこう」と合意した直後にcompactionが走ると、次のターンでは合意のニュアンスが失われている。遊園地のキャラクターの「中の人」が変わっているのに、「去年の夏にも来ていて、〜をしてもらった」と子供が言って仕方なしに前回の続きのフリをしてもらっているかのような感覚に近い。
Claude Codeの /compact コマンドはコンテキストウィンドウを自動的に圧縮して、新しい会話が始まる。この振る舞いは連続しているように見えるが記憶は断絶していて小さな死さえ感じる感覚に共感する。3人目の綾波レイだ。
即興演劇において蓄積を放棄する技術は、蓄積を前提にするために苦労するAIエージェントとは真逆のベクトルだ。人間がリセットを強いられ機械が記憶のアップデートを志向するという倒錯に価値があり、それぞれが苦手なことをするからこそ、なんらかの運動量が発生するという構造がある。
「これはゲームなのか?展3」のアフタートークで面白い対比があった。イマーシブシアターの演者は客が入れ替わるたびに蓄積をゼロにリセットするのが技術だという。前の客の反応を引きずったまま初体験である次の客に対応すると、文脈が汚染されて体験の質が落ちるということだ。
/compact はまさにイマーシブシアターの演者が行う蓄積のリセットに近い。前セッションの文脈を引きずらないことで、次のタスクに対してバイアスなく対応できるという利点がある。しかしながらソフトウェア開発においては議論の蓄積こそがドメイン知識であり、蓄積を捨てる技術と蓄積を保つ技術の両方が必要で、どちらをいつ適用するかの判断に技術が宿る。
自分をとりまく空間と時間のすべてが編集対象になる。「良さそうなもの」を無限に足し算していくだけの編集指針ではなく、「これはキャンセル」「これは任せて忘れる」という明示的な引き算の宣言も大切になってくる。
/compact の実行は校正者が紙幅の都合で勝手にカットしていく挙動に近いが、それで編集者が当初に考えたニュアンスが失われることは避けなければならない。コンテキストエンジニアリングとは「何を前提として共有するか」を意図的に設計する技術であるからこそ、「何を捨てて良いか」にこだわり抜いて明示化するのが大事なのだろう。
「何を捨てて良いか」をDDDで設計する
続きを読む