harukary

ChatGPTとCodexのコンテキストはどう違うか

ChatGPTで観測できた履歴の残り方と、Codexの公開実装を、保存・コンテキスト構築・モデル入力の3層に分けて整理する。

aichatgptcodexcontext
目次

ChatGPTとCodexで、過去の会話やTool callが次のターンにどう残るかを整理したメモ。結論は、単純な「ChatGPTはTool callを忘れ、Codexは覚える」ではない。

ChatGPTとCodexの履歴・コンテキスト・モデル入力の違い

まず3つを分ける

「覚えている」という表現には、異なる3層が混ざっている。

保存されていても毎回モデルへ全文が入るとは限らない。逆に、モデルから参照できたからといって、永続化方法まで分かるわけではない。

ChatGPTで今回観測できたこと

同一チャット内でMCPツールを実行し、後続ターンから確認した。

観測項目結果
過去のユーザー・アシスタント発言参照できた
過去ターンのMCP Tool call名参照できた
MCPへ渡した引数参照できた
MCP Tool resultのフィールドと値参照できた
複数ターン経過後のMCP履歴参照できた
組み込みWeb検索のターン間保持未確認
組み込みPythonのターン間保持未確認

したがって、少なくとも今回のChatGPTでは、概念的に次の履歴が参照可能だった。

システム・開発者指示

ユーザー 1
アシスタントの途中メッセージ
MCP Tool call
MCP Tool result
アシスタントの最終回答 1

ユーザー 2
アシスタントの最終回答 2

最新のユーザー
現在ターンのTool call / Tool result
アシスタントの最新回答

以前試したPythonについては、実際にはPythonツールが呼ばれておらず、アシスタント回答にテスト値を書いただけだった。そのため、組み込みPythonの履歴が消えたという証拠にはならない。

古い回答にWeb引用が残り、検索の生ログが見えない場合も、組み込みWeb検索だけが除外されたとは断定できない。古い部分が会話要約として渡された可能性や、引用を含む最終回答だけが残った可能性もある。

ChatGPT製品が、ツール種別ごとに何を保存し、何ターン後まで、どの粒度でモデルへ再投入するかは公開されていない。今回分かったのは、MCP履歴が過去ターンから実際に参照できたことまでである。

Codexで公開されていること

Codexは、履歴の保存構造が公式ドキュメントと公開ソースコードで確認できる。

App Serverのthread itemには、次の種類などがある。

thread/readでturn履歴を読み、thread/turns/listではitemを notLoadedsummaryfull から選べる。thread/items/listでは永続化されたitemをページングできる。

公開実装の RolloutRecorder は、Codexのsession rolloutをJSONLへ記録し、後から再生・検査できるようにしている。record_canonical_itemsRolloutItem を追加し、resume時は load_rollout_itemsで読み戻し、get_rollout_historyから再開用履歴を構成する。実装上も会話だけではなく、canonical item列を保存する設計である。

概念的には次のようになる。

JSONL rollout / thread store

SessionMeta
TurnContext
User message
ResponseItem: tool call
ResponseItem: tool output
Event / completed item
Agent message
...
Compacted item
...

ただし、Codexでも「保存された全itemが、毎ターンそのままモデル入力へ入る」とは限らない。model_contextはrolloutを走査し、compactionやturn境界を考慮して、モデルに使う履歴範囲を組み立てる。App Serverにも contextCompaction itemと、明示的な thread/compact/start がある。

Codexについて確実に言えるのは、Tool callを含む実行履歴が構造化itemとして永続化され、取得・再開・圧縮の仕組みが公開されていることである。

現時点の比較

観点ChatGPTCodex
会話履歴参照できるthread / rolloutへ保存
MCP Tool callとresult今回は過去ターンから参照できたmcpToolCallなどとして保存
コマンド・ファイル変更接続ツールとChatGPT内部構成に依存専用itemとして定義
Web検索履歴ターン間保持の詳細は未確認webSearch itemとして定義
履歴の公開取得APIChatGPT内部仕様は非公開turn/itemをsummary・fullで取得可能
永続化形式非公開JSONL rolloutとthread store
長い履歴の処理選択・要約方法は非公開compactionとmodel-context構築を確認可能
外部状態接続したツール次第worktree・Git・テストも復元手段になる

違いの中心は、Tool callを持つかどうかではない。

ChatGPTは、どの履歴が保存・再投入されるかの内部仕様が見えない。Codexは、実行履歴の永続化・取得・圧縮・再開が製品仕様とソースコードで明示されている。

実務上の扱い

どちらでも、過去のTool resultだけを現在状態の証拠にしない。

Codexが長期作業を続けやすいのは、thread履歴に加えて、リポジトリ・Git・テストという第二の復元経路を持つためでもある。

関連: ChatGPTから複数のCodex運用を調整する

参考

参照