Skip to content

cloudnative-co/context-compaction-lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Context Compaction Lab

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生成、評価用helper
  • docs/: protocol、manual run guide、scorecard、result template
  • prompts/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 のサブスクリプションログイン

Docker imageをビルドする

./scripts/check-host.sh
./scripts/build-image.sh

デフォルトでは次の名前でimageを作ります。

context-compaction-lab:local

CLIのデフォルトバージョンは 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 runs

Codex:

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.sh

Claude Code:

RUN_ID=trial-001 ./scripts/shell-claude.sh

各scriptは runs/ 以下に新しい実行ディレクトリを作り、fixture//work にコピーし、空の AGENTS.mdCLAUDE.md を作ります。baseline promptは /runctx にマウントされます。

大きなpromptを扱う場合、shell引数にそのまま載せると上限に当たることがあります。TUIへ貼り付けるか、CLIが対応している場合はstdinを使ってください。

記事で使った大きなpromptを生成する

巨大な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済みディレクトリに出力されます。

完了したfixture runを評価する

agentがfixtureを実装したあと、次のように確認します。

./scripts/evaluate-run.sh runs/codex-trial-001/repo
./scripts/evaluate-run.sh runs/claude-trial-001/repo

fixture/ は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コンテキストより優秀なのか」の補助リポジトリです。

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors