先に、私の結論

新セッション用の初期化は最初の1回に限定し、同じセッションでは直前から変わった差分だけを見る。

固定ルール、現在仕様、今回の進捗、自動確認を別々に置き、節目ごとに短いチェックポイントを残す。

私は「新セッションの準備」を何度も繰り返していた

私は以前、新しいセッションを始めたときにAIエージェントが迷わないよう、開始時に使うスクリプトを書きがちでした。

最初に現在地をそろえる考え自体は、悪くなかったと思います。

ただ、問題は使うタイミングでした。

同じセッションで開発を続けているのに、次の依頼へ進むたびに「まずこのスクリプトを使う」という形にしていました。

その結果、直前に確認したことまで、また最初から調べる流れになりました。

  • すでに読んだ資料をもう一度探す
  • 変わっていない範囲まで確認する
  • 成功済みのチェックを理由なく繰り返す
  • 現在の作業より、開始準備の説明が長くなる

私が混ぜていたのは、次の2つです。

新セッション:過去の会話を前提にできないので、現在地を読み直す
同じセッション:直前までの流れを使い、変わった部分だけを確認する

新しく始めるための仕組みを、続きの作業にも毎回使っていたわけです。

結論は「全部読み直す」から「差分を引き継ぐ」へ変える

同じセッションの継続開発では、毎回ゼロから理解し直してもらうより、直前から何が変わったかを渡すほうが分かりやすくなります。

見るものは、主にこの4つです。

  1. 今回もゴールは同じか
  2. 直前までに何が完了したか
  3. 何が未完了か
  4. コード、環境、失敗結果のどこが変わったか

ここで変化がなければ、同じ探索やチェックをもう一度始める理由は少なくなります。

反対に、コードを変えた、環境が変わった、前回の確認が途中で終わった、新しい失敗が出た場合は再確認します。

大事なのは「二度と確認しない」ではなく、再確認する理由を現在の変化と結び付けることです。

公式情報で確認できた、長いセッションの注意点

ここからは、2026年8月28日にOpenAI公式資料で確認した内容です。

OpenAIのモデルガイダンスでは、長いセッションは、繰り返された指示やツール説明の影響を大きくしやすいと案内されています。

あわせて、指示は一度だけ書くこと、必要なツールだけを見せること、セッションの開始時だけでなく進行中もコンテキストを追うことが勧められています。

OpenAI公式:Model guidance

また、CodexのAGENTS.mdは、実行を始めるときにグローバルから作業フォルダまでの指示を集め、1つの指示チェーンを作ります。

公式資料では、TUIの場合は通常、起動したセッションごとに1回と説明されています。

OpenAI公式:Custom instructions with AGENTS.md

ここから私が気を付けたいのは、AGENTS.mdを同じセッションの進捗帳として何度も書き換えないことです。

AGENTS.mdは毎回守る固定ルールへ寄せ、今回どこまで進んだかは別の短いチェックポイントへ分けます。

おすすめは、情報を4つの置き場所へ分ける構成

私なら、継続開発の情報を次の4つへ分けます。

置き場所 入れるもの 更新するタイミング
AGENTS.md 毎回守る共通ルール、権限、テスト方針 ルール自体が変わったとき
docs/features/<機能名>.md 現在の仕様、処理経路、残る制約 機能の仕様や状態が変わったとき
セッションのチェックポイント 今回のゴール、完了、未完了、次の一手 節目や依頼の区切り
テスト・確認スクリプト 機械的に判定できる合否 判定条件が変わったとき

この分け方なら、「ルール」「現在の正解」「今の進捗」「合否判定」が混ざりにくくなります。

新セッション用スクリプトは、これらの入口として使います。

ただし、すべてを毎回読み直して長文を出すのではなく、次のような短い情報に絞ります。

- 現在のブランチと基準コミット
- 未コミット差分の有無
- 対象機能の現在仕様
- 直近の完了事項
- 未完了事項
- 最後に成功した確認と、その条件

開始、継続、節目、終了の4段階に分ける

同じスクリプトや指示を何度も使わないために、作業を4段階へ分けます。

1. 新セッション開始:現在地を読むのは1回だけ

新しく始めたときは、現在地が分かりません。

ここで初めて、開始用スクリプトや引き継ぎメモを使います。

  • Gitの状態
  • 今回のゴール
  • 対象機能の現在仕様
  • 既知の制約
  • 最後に確認できた状態

開始用スクリプトは、まず読み取り中心にします。

勝手にファイルを直す、依存関係を更新する、全テストを始めるところまで含めると、「現在地を見るだけ」のつもりが大きな作業になってしまいます。

2. 同じセッションの継続:差分だけを見る

次の依頼では、直前のチェックポイントから変わった部分を確認します。

同じゴールの続き
  ↓
直前の完了と未完了を確認
  ↓
変わったコード・条件・失敗だけを見る
  ↓
今回の成功条件まで進める

ここでは、新セッション用スクリプトを自動では呼びません。

「同じセッションです」「前回の完了事項はここまでです」「今回はこの機能だけです」と短く固定するほうが、やることを絞りやすくなります。

3. 節目:短いチェックポイントを残す

機能が1つ完成したとき、公開前、外部APIへ進む前などに、短いチェックポイントを残します。

## 現在のゴール
プロフィール編集を、保存後の再読み込みまで完成させる

## 完了
- 入力画面
- 保存API
- 成功・エラー表示

## 未完了
- 再読み込み後の表示確認

## 今回の差分
- src/pages/profile.tsx
- src/api/profile.ts

## 確認
- 単体テスト成功
- 本番環境は未確認

## 次の一手
- 保存済みデータを再取得して表示する

これは長い作業日記ではありません。

次の依頼で「どこから再開するか」を数十秒でつかむための現在地です。

4. 終了:残す情報と捨てる情報を分ける

セッションを終えるときは、すべての会話を永続化しません。

今後も使う現在仕様は機能メモへ、毎回守るルールはAGENTS.mdへ、確認できる条件はテストへ移します。

一時的な相談、採用しなかった案、途中の言い換えまで残すと、次のAIエージェントがどれを現在の正解として読めばいいか迷います。

残すのは、次の作業で判断に必要なものだけにします。

新セッション用スクリプトは3つの条件を付ける

私が次に作るなら、開始用スクリプトには次の条件を付けます。

実行条件を明記する

実行する:新しいセッション、別担当への引き継ぎ、別ブランチへ移動した直後
実行しない:同じセッションで、同じゴールを続けている途中

「便利だから毎回使う」ではなく、いつ使うかを先に固定します。

同じ結果なら短く終わる

前回とブランチ、コミット、差分、対象機能が同じなら、長い説明を繰り返さず「変化なし」と出せる形が便利です。

これは、スクリプトを何度実行しても壊れにくくするだけでなく、同じ情報を会話へ何度も積み上げないためでもあります。

自動変更を入れない

開始用スクリプトの役割は、現在地を見つけることです。

ファイル修正、依存関係の更新、全テスト、デプロイまで自動で始めず、必要な次の操作を候補として出すところで止めます。

変更する作業は、現在地を確認した後の依頼で進めます。

同じセッションを続けるか、新しくするかの目安

同じセッションを長くすれば、いつでも効率が上がるわけではありません。

私は、次のように分けるのが分かりやすいと思います。

同じセッションを続ける 新しいセッションへ切り替える
ゴールと対象機能が同じ ゴールや対象機能が大きく変わる
同じブランチと環境で作業する 別ブランチ、別環境、別リポジトリへ移る
直前の決定をそのまま使う 以前の前提をいったん外したい
未完了の一本道を続ける 前の作業が完了し、独立した次の仕事へ進む

同じセッションでも、現在地が長文でしか説明できなくなったら、いったんチェックポイントを作る合図です。

短い引き継ぎを作って新しく始めるほうが、古い途中経過を抱え続けるより分かりやすい場合もあります。

既存の記事で分けて考えたいこと

今回の話は、同じセッションの進め方です。

すでに直った問題を古い記録から何度も拾う場合は、AIエージェントが解決済みの問題を何度も拾う原因で、Git、現在仕様、作業ルール、テストの役割を分けています。

アプリをどの順番で作るか迷う場合は、AIエージェントでアプリを作る順番のように、1機能ずつ入口から再読み込みまでつなぐ考え方も一緒に使えます。

まとめ:新しく始める仕組みと、続ける仕組みを分ける

私が同じことを繰り返した原因は、新セッションのために作った仕組みを、同じセッションの途中でも毎回使っていたことでした。

次からは、次の形に分けます。

  • 新セッション開始時だけ、現在地を読み直す
  • 同じセッションでは、直前から変わった差分だけを見る
  • 固定ルール、現在仕様、今回の進捗、自動確認を別々に置く
  • 節目ごとに、完了・未完了・確認結果・次の一手を短く残す
  • 再確認は、コード、環境、条件、失敗結果が変わったときに行う
  • 目的や環境が大きく変わったら、短い引き継ぎを作って新しく始める

開始用スクリプトを捨てる必要はありません。

最初の1回で現在地をそろえる役割に戻し、同じセッションの途中ではチェックポイントと差分で進める。この分け方なら、準備を何度もやり直す状態を減らしやすくなります。

コピーして使えます

同じセッションで重複作業を減らす指示

この依頼は、現在のセッションで進めている同じ開発の続きです。新セッション用の初期化スクリプトや、完了済みの全体調査は繰り返さないでください。 最初に、現在のゴール、直前までに完了したこと、未完了のこと、現在の未コミット差分を短く確認してください。そのうえで、直前のチェックポイントから変わったコード、条件、失敗結果だけを調べてください。 すでに成功した確認は、対象コードや環境が変わった、結果が不完全だった、新しい失敗経路が見つかった、のいずれかがある場合だけ再実行してください。再実行する場合は理由を先に示してください。 今回の対象は「<機能名>」、成功条件は「<確認できる結果>」、変更しない範囲は「<対象外>」です。 完了時は、今回変えたこと、実行した確認、実行していない確認、次に続ける項目を4つに分け、次の依頼で読める短いチェックポイントを残してください。

ついでに気になったこと

同じセッションなら、最初の確認は全部省いていい?

全部は省きません。現在のゴール、未コミット差分、直前の完了事項は短く確認します。ただし、条件が変わっていない全ファイル探索や完了済みテストを毎回やり直す必要はありません。

新セッション用スクリプトは作らないほうがいい?

作って構いません。新しいセッションで現在地を読む用途に絞り、同じセッション中は自動で再実行しない構造にします。読み取り中心にして、実行条件と出力を明確にすると扱いやすくなります。

AGENTS.mdへ進捗も全部書けば分かりやすい?

進捗は変化が速いため、毎回守る固定ルールと混ぜないほうが分かりやすくなります。AGENTS.mdには固定ルール、機能メモには現在仕様、セッションのチェックポイントには今回の進捗を置きます。

途中でAGENTS.mdを直したら、同じセッションにも反映される?

現在の公式資料では、Codexは実行開始時にAGENTS.mdの指示チェーンを作ります。そのため、途中で更新した内容が現在の実行へ自動で読み直される前提にはせず、必要な変更はその場でも伝えるか、新しいセッションで確認します。

いつ新しいセッションへ切り替えたほうがいい?

目的や対象機能が大きく変わるとき、別ブランチや別環境へ移るとき、古い前提が増えて現在地を短く説明できないときが切り替えの目安です。同じ目的と範囲なら、チェックポイントを残しながら続けます。