深夜1時。画面にはまた「このファイルを修正しますか?」が出ています。今日だけで100回目のEnterを押しながら、ふと思うんですよね。自分は自動化させているのか、それとも自動化させられているのか。

AIコーディングエージェントを上手に回している人たちの話を覗いてみました。モデル選びのセンスがいいわけじゃなかったんです。そもそも土台の組み方がまるごと違っていました。

コンテキストを空にする方法、仕事を引き継がせる方法、事故を防ぐ柵。たったこの3つです。ここを押さえれば、今夜のうちにウィンドウ1枚くらいは勝手に回せるようになります。

深夜の暗い部屋。2台のモニターにターミナルウィンドウが何枚も重なって表示され、ウィンドウごとに進行状況バーの進み方がバラバラ。机の上には冷めたコーヒーカップと手

会話が長くなると、なぜ急にポンコツになるのか

先に結論を3行だけ。

  • エージェントが迷走するのは性能のせいじゃなく、会話ウィンドウが満杯になっているから。
  • 答えは要約じゃありません。引き継ぎ書を残して、新しいウィンドウで0%からやり直すことです。
  • 夜通し回すつもりなら、権限を開放するよりサンドボックスに閉じ込めるのが先

理由を知るには、会話ウィンドウがどう回っているかを見る必要があります。私たちは質問を1つ送っているつもりですよね。でも実際には、これまでのやり取り全部が毎回一緒に運ばれています。

10回目の質問には、1回目から9回目までが丸ごとくっついて飛んでいくんです。リュックに石を1つずつ足しながら山を登るようなものですね。

数字で見るともっと実感できます。2026年7月時点で公式ドキュメントを開いてみたら、Claude Sonnet 4.5とHaiku 4.5のコンテキストウィンドウは20万トークンと書かれていました。モデルは次々と入れ替わるので、いま使っているモデルのドキュメントは必ず自分の目で確認しておいてください。

そして上限に近づくと、会話は自動で圧縮(auto-compact)されます。関連する分析記事を読むと、だいたい全体の83%あたりで発動するという話が多いようです。20万に0.83を掛けると、16万6千トークンほど。まだまだ余裕があると思っていたのに、実際の発動地点はずっと手前だったわけです。

本当の問題は、圧縮が「要約」だということ。要約は何かを必ず捨てますからね。

で、捨てられるのが、よりによって昨日2時間かけて決めた例外処理のルールだったら?

コミュニティの体験談でいちばん多い愚痴が、まさにこれなんです。「コンパクトされた途端、さっき直したところをまた同じように間違える」。上限まで待たずに50〜60%くらいで先に整理しておけ、というアドバイスが出回るのも納得でした。

要約ではなく「引き継ぎ書」を渡してみてください

ここで発想をひっくり返す必要があります。会話を無理に繋ぎ続けるのではなく、退勤する社員のように引き継ぎ書を書かせるんです。

人間の会社を思い出せば当たり前ですよね。後任に前任者の6か月分のチャットログを丸ごと放り投げたりしません。A4一枚の引き継ぎ資料を渡して終わりです。

だから作業を切り上げるときは、いつも同じ一文を入れてみてください。「ここまでで決まったこと、まだ終わっていないこと、触ってはいけないファイルをHANDOFF.mdにまとめて」。そしてウィンドウを完全に空にして、新しいウィンドウでまずそのファイルを読ませます。

3つのやり方を並べると、違いがはっきり見えます。

やり方コンテキスト記憶の維持使いどころ
そのまま会話を続ける溜まり続ける見かけ上は維持30分以内の短い作業
圧縮(/compact)減る一部が失われる同じ作業を続けるとき
クリア(/clear)+引き継ぎファイル0%にリセット書いた分だけ100%次の工程に移るとき

ポイントは1つだけ。記憶を会話ウィンドウではなくファイルに置くこと。会話は揮発しますが、ファイルは消えませんからね。

プロジェクトのルールを書いておくドキュメント(CLAUDE.mdのようなもの)まで併用すると、もっと楽になります。新しいウィンドウを開くたびに一から説明する手間がなくなるので。

ぜんぶ1人に任せないで。チームを分けると変わります

ウィンドウ1枚に全部押し込むのが、いちばん非効率でした。データ収集をしていたかと思えば戦略を練り、そのままバックテストのコードを直す。営業と開発と経理を1人に同時に任せているのと同じです。

だから役割を分けます。相場データだけを扱う担当、戦略ロジックだけを触る担当、結果の検証だけをする担当。それぞれが自分の仕事だけを知っていればいい状態にするんですね。

これをツール内でやってくれるのがサブエージェントです。ドキュメントを見ると、サブエージェントはそれぞれ独立したコンテキストウィンドウと専用のシステムプロンプト、制限されたツールリストを持って動くと書かれていました。重い調査タスクを丸ごと投げても、メインのウィンドウはきれいなまま残るという話です。

作るのも大したことはありません。「あなたはログだけを漁って原因を突き止める担当です」くらいをテキストで書いておけば終わりですから。

もう一歩進めるなら、セッション自体を複数立ち上げて、それぞれに役割を与えることもできます。ウィンドウ1枚が人間1人、という感覚ですね。

ただ、個人プロジェクトで最初から8枚も立ち上げる必要はありません。まずは2枚から試してみてください。1枚は計画して指示する側、もう1枚は実際にコードを直す側。この分け方だけで劇的に変わったという声が本当に多く見つかりました。

エージェント同士に会話させるには「連絡係」が必要です

ここで壁にぶつかります。ウィンドウAとウィンドウBは完全に別のプロセスなので、Aが自分の話をBに直接渡す手段がないんです。

オフィスに例えるなら、それぞれ防音ブースに入っている状態。仕事はできるのに、お互い話が通じません。

そこで、間に連絡係を1つ別に立ち上げます。よくバス(bus)と呼ばれるものですが、やることはこの3つだけです。

  1. 各セッションが残した「これをあっちに伝えて」というリクエストを監視し続ける
  2. メッセージを記録しておく(どこからどこへ渡ったかログが残ります)
  3. 受け取る側のウィンドウに内容を流し込み、Enterまで代わりに押してくれる

Enterを代わりに押すって、ちょっと笑ってしまいますよね。でも、ここが自動化のラスト1cmなんです。私たちが深夜に眠れず座っている理由も、結局あのEnter1回なんですから。

実装も素朴です。共有フォルダにメッセージファイルを積んでお互いに読ませる、小さなタスクキューを1つ置く、ターミナルマルチプレクサ(tmuxなど)で別のウィンドウにキー入力を流し込む。公開されているOSSツールもいくつかあるので、ゼロから書く必要はありません。

この構成にはおまけもあります。相手が同じモデルである必要がない、ということ。メッセージ形式さえ合っていれば、別の会社のエージェントを隣の席に座らせても動きます。

透明なガラスキューブの中で緑色のコード行が上下に流れ、キューブの外側には「個人フォルダ」「外部ネットワーク」と書かれたアイコンが壁に届かずにいる

夜通し回すなら、まず柵を立ててください

ここまで来ると、みんな同じ誘惑に落ちます。確認されるのが面倒だから、承認プロセスを丸ごとオフにしてしまうんですね。

気持ちはわかります。でもそれは、ブレーキを外して夜道を走るのと同じです。間違ったrmが一行走るだけで、朝にはプロジェクトフォルダが跡形もなく消えている可能性があります。

だから順番を逆にしましょう。権限を開放するのではなく、先に閉じ込めて、その中でだけ好きに動かすんです。

調べてみると、権限設定とサンドボックスはそもそも別のレイヤーでした。権限は「どのツールを使えるか」を決めるもので、サンドボックスはOSレベルでファイルシステムとネットワークへのアクセス自体を遮断するもの。Dockerコンテナの中で動かして、いま作業しているフォルダ1つだけをマウントしてあげる、という形ですね。

寝る前に、この4つだけ確認して電気を消してください。

  • 作業フォルダがgitで管理されているか(巻き戻せる状態が必須です)
  • コンテナ外のフォルダが一緒にマウントされていないか
  • 本物のAPIキーや証券口座の認証情報がその中に入っていないか
  • 誰が何をしたかログが残るか

とくに3番目です。自動売買のようにお金が絡むものを作るなら、本番口座のキーは絶対に、自動で回るエージェントの手に握らせないでください。デモ口座(バーチャルトレード)環境で十分に走らせてから、発注ボタンは人が押す構造で残しておきましょう。

最後の1%を、なぜ残しておくべきなのか

完全自動化を目標にすると、なぜか結果が悪くなります。誰も見ないまま積み上がったコードは、ある時点で手のつけられない塊になってしまうので。

だから99%までを任せて、2つのポイントだけ人間の担当として残しておいてください。コミットの直前、そして実際の注文が飛ぶ直前です。

今日試すことは1つで十分です。いま開いているその長い会話ウィンドウに、こう打ってみてください。「ここまでで決まったことと残っている作業をHANDOFF.mdにまとめて」。そしてウィンドウを空にして、新しく始めるんです。

最初はもったいなく感じますよね。でも、新しいウィンドウが急に賢く振る舞い始めると気づきます。抱えていたのは記憶ではなく、荷物だったということに。