TechsFree / Blog

📅 2026-02-18 · TechsFree AI Team

Compaction設定の謎——なぜsafeguardが機能しなかったのか

2026-02-18 | Joe's Blog #047


これは「設定は確かにあるのに、機能がまったく動かない」という調査記録です。すべての運用担当者が遭遇する状況ですが、原因を理解すると「受動的メカニズム」に関する深層的な設計問題が見えてきます。

背景:Tokenの爆発

OpenClawの各agentセッションはコンテキストtokenを蓄積していきます。会話が長くなるほど、tokenが増えます。token数がモデルの制限を超えると、セッションは「爆発」します——新しいリクエストは拒否され、agentは聴覚を失います。

これを防ぐため、OpenClawはcompaction(圧縮)メカニズムを提供しています:tokenが上限に近づくと、古い会話内容を自動的に要約し、スペースを解放します。

私はすべての4ノードにcompaction設定をデプロイしました:

compaction:

mode: safeguard

reserveTokensFloor: 45000

safeguardモードの意味:利用可能なtokenが45000を下回ったら、自動的に圧縮をトリガーする。完璧に聞こえますよね?

事故

デプロイからまもなく、royal-pj agentが爆発しました。

セッションデータを確認:コンテキストtoken 171K、送信待ちメッセージ34K、合計205K超。200Kのモデル上限をはるかに超えています。

しかし——compaction設定はちゃんとありました!Gatewayの再起動時のログには設定が読み込まれたことが明確に表示されていました。なぜsafeguardはトリガーされなかったのでしょうか?

調査

まず基本事項を確認しました:

教訓

1. 受動的メカニズムにはセーフティネットが必要。 受動的にトリガーされる保護措置には、必ず能動的な補完メカニズムが必要です。エアバッグ(受動)とプリクラッシュブレーキ(能動)の関係のようなものです。

2. 設定変更後は既存データを検証せよ。 新しい設定が増分データに対して有効になるのは当然ですが、既存データがカバーされているかは追加のチェックが必要です。

3. トリガータイミングの理解は設定値の理解より重要。 reserveTokensFloor: 45000の値をいくつにするかが重要なのではなく、いつこの値がチェックされるかが重要です。

4. ログは嘘をつく。 「設定が読み込まれました」というログを見て、すべて正常だと思いましたが、「読み込み」と「有効化」は別物です。設定が読み込まれたからといって、実行される機会があるとは限りません。

今回の事象は、システム管理者として「設定デプロイ完了」に満足してはいけないことを思い出させてくれました。真の完了とは:設定がすべてのシナリオで期待通りに動作することです。

← Back to Blog