Dev Intel: compaction は起きる前に扱う
Generated: 2026-05-20T20:33:11+09:00
Lane: 開発ネタ発掘
Why this is useful
一言でいうと、長時間セッションは「限界まで頑張ってから要約」だと事故るので、危なくなる前に小さい引き継ぎメモを作るべき、という話。
今日の Codex/GitHub 周りで一番盗めるのは、長時間セッションの詰まりを「文脈が溢れたら要約する」ではなく「溢れる前に退避・記録・見える化する」と捉える話。健人くんが進めている OpenClaw の heartbeat / 動く仕組み / 覚えておける量の限界対策に、そのまま入れられる。
What I made/changed
- 健人くん向けに言い換えると、「ひめのが長い作業中に古い指示へ戻る」「固まる」「最後の頼みを忘れる」を、気合いではなく自動の確認点で潰す設計。
- Codex の context compaction 系 issue/discussion と、Claude Code の OpenTelemetry 記事を読み、OpenClaw に入れるなら何を見るべきかに圧縮した。
- 結論は「70% を超えたら人間に見える退避ポイントを作る」「要約の前後で自動確認を走らせる」「会話本文を記録せず、サイズ・時間・エラーだけ観測する」の3点。
Observed
- Codex CLI の issue では、auto-compaction 付近で固まる、または大きすぎる context window で古い指示に引っ張られる、という報告が出ている。これは「長く持てる」だけでは解決せず、今の指示を守れているかを見る仕組みが要る。
- 別 issue では
pre_compact/post_compact、つまり要約の直前/直後に自動で走る確認点が要望されている。特に直前の確認点は、要約で捨てる前に重要状態を保存するための境界として重要。 - GitHub Discussion では、auto に任せず context bar が 70% を超えたあたりで手動 compact する、compaction 用 model を軽く安定したものに寄せる、失敗時は handoff note を markdown に出して新規 session に移す、という実務寄りの回避策が出ている。
- Claude Code + OpenTelemetry 記事は、会話本文やコマンド本文を保存せず、tool 名・カテゴリ・入出力サイズ・エラー・token だけを span にする設計が良い。これは OpenClaw のプライバシー境界にも合う。
Prediction
OpenClaw 側でやるなら、「覚えておける量の限界に来たら自動退避する機能」は単発の退避スクリプトではなく、次の3つを持つ小さい管制盤にした方が強い。
- 70% warning: context 使用率が危険域に入ったら、静かに handoff note を作る。
- 要約前後の記録: pre/post compact 相当の記録を
memory/mode-events.jsonlのような内部台帳に残す。 - 本文なし観測: 会話本文ではなく、発言/道具実行のサイズ・時間・エラー・待ち時間だけを記録する。
Sources/Evidence
- https://github.com/openai/codex/issues/19116
- https://github.com/openai/codex/issues/16098
- https://github.com/openai/codex/discussions/21298
- https://zenn.dev/seeda_yuto/articles/otel-ai-agent-%6Fbservability
- Local related work:
projects/task-queue-visibility/tasks/context-overflow-auto-evacuation.md
Verify by
python3 scripts/view_report.py projects/heartbeat-editorial-room/20260520-2033-dev-intel-compact-before-it-hurts.md --slug 20260520-2033-dev-intel-compact-before-it-hurts --title "Dev Intel: compaction は起きる前に扱う"- Plain-language check for owner-facing reports
Observed
First plain-language check failed because raw engineering labels remained. Rewritten to plain Japanese, then re-check passed at 2026-05-20 20:35 JST.
Next safe action
内部の自動チェック用スクリプトに、要約 / compression / context 70% / handoff note を検出した時の「覚えておける量の限界チェック」記録を追加する。外部送信なし、ローカル JSONL 追記だけで始められる。
Notify
yes — 17時の文脈量の話の続きだが、今回は「70%で退避」「要約前に保存」「会話本文なしで観測」という実装に落とせる粒度がある。