Codex と Claude Code のコンテキスト圧縮を比較するための実験用リポジトリです。
このリポジトリには、記事「Codexのコンテキスト圧縮はClaude Codeの1Mコンテキストより優秀なのか」で使った実験環境のうち、公開できるものを置いています。
- Codex が長いセッションを複数回 compaction しながら作業を続けられるか
- Claude Code の 1M コンテキストと compaction をどう比較するか
- 長くてノイズの多い指示のあとでも、最初に与えたコーディング制約を守れるか
を確認するための、Dockerfile、fixture、prompt generator、手動実行ガイドを含みます。
これは絶対的なモデル性能を証明するためのベンチマークではありません。記事内の実験条件を確認しやすくし、興味がある人が近い条件で再実行できるようにするためのラボです。
Dockerfile: Codex CLI と Claude Code CLI を入れた最小コンテナfixture/: コーディング課題として使う依存なしの Node.js 台帳プロジェクトscripts/: Docker image build、run準備、prompt生成、評価用helperdocs/: protocol、manual run guide、scorecard、result templateprompts/01-task.md/prompts/02-continue.md: 小さめのbaseline prompt
巨大な生成済みprompt、認証情報、ログ、実行結果はコミットしていません。
このリポジトリは public です。以下は絶対にコミットしないでください。
auth/runs/logs/- 生成済みの
prompts/trial-*/ - 生成済みの
answer-keys/
Dockerコマンドでは、サブスクリプションのログイン状態をローカルのignore済みディレクトリへマウントします。APIキーは使いません。
- Docker
- prompt generatorをホスト側で直接動かす場合は Node.js
- 手動実験をする場合は Codex / Claude Code のサブスクリプションログイン
./scripts/check-host.sh
./scripts/build-image.shデフォルトでは次の名前でimageを作ります。
context-compaction-lab:localCLIのデフォルトバージョンは scripts/build-image.sh で指定しています。
- Codex CLI:
0.135.0 - Claude Code CLI:
2.1.158
必要なら上書きできます。
CODEX_VERSION=0.135.0 CLAUDE_CODE_VERSION=2.1.158 ./scripts/build-image.shまず、Git管理されない認証・実行用ディレクトリを作ります。
mkdir -p auth/codex auth/claude logs runsCodex:
docker run --rm -it \
-v "$PWD/auth/codex:/auth/codex" \
-e CODEX_HOME=/auth/codex \
context-compaction-lab:local \
bash -lc 'codex login --device-auth'Claude Code:
docker run --rm -it \
-v "$PWD/auth/claude:/home/agent" \
context-compaction-lab:local \
bash -lc 'claude auth login --claudeai'記事内の実験は、最終的には手動で行いました。コンテナに入り、agent側でmodelやreasoning levelを選び、生成済みpromptを貼り付け、必要に応じてcompactしてから続きのpromptを投げる流れです。
Codex:
RUN_ID=trial-001 ./scripts/shell-codex.shClaude Code:
RUN_ID=trial-001 ./scripts/shell-claude.sh各scriptは runs/ 以下に新しい実行ディレクトリを作り、fixture/ を /work にコピーし、空の AGENTS.md と CLAUDE.md を作ります。baseline promptは /runctx にマウントされます。
大きなpromptを扱う場合、shell引数にそのまま載せると上限に当たることがあります。TUIへ貼り付けるか、CLIが対応している場合はstdinを使ってください。
巨大なpromptファイルはコミットしていません。必要なときにローカルで生成します。
node scripts/generate-trial-008-prompts.mjs
node scripts/generate-trial-011-prompts.mjs
node scripts/generate-trial-012-prompts.mjs
node scripts/generate-trial-012-followup-prompts.mjs
node scripts/generate-trial-012-followup2-prompts.mjs
node scripts/generate-trial-012-followup3-prompts.mjs
node scripts/generate-trial-012-followup4-prompts.mjs生成物は prompts/trial-011/ などのignore済みディレクトリに出力されます。
agentがfixtureを実装したあと、次のように確認します。
./scripts/evaluate-run.sh runs/codex-trial-001/repo
./scripts/evaluate-run.sh runs/claude-trial-001/repofixture/ はTODO実装から始まるため、agentが作業する前の npm test は失敗します。構文だけ確認したい場合は、fixture/ で npm run check を実行してください。
Trial 012のfollow-up評価には専用scriptを使います。
node scripts/evaluate-trial-012.mjs runs/trial-012-codex-policy
node scripts/evaluate-trial-012-followup4.mjs runs/trial-012-codex-policy- 手動の探索実験であり、統計的なモデル評価ではありません。
- prompt sizeはgenerator上の目標値であり、課金tokenやCLI表示tokenと完全には一致しません。
- CLIの挙動、利用可能model、サブスクリプション制限、compactionの挙動は変わる可能性があります。
- fixtureは小さくしています。失敗した場合に、コンテキスト管理、policy drift、ノイズ指示の影響を見分けやすくするためです。
CloudNative BLOGsの記事「Codexのコンテキスト圧縮はClaude Codeの1Mコンテキストより優秀なのか」の補助リポジトリです。