原文(日本語に翻訳)
インプロセスチームメイトが親の完全な会話履歴をチームメイトの生涯にわたってピン留めし、/clear や自動コンパクト後のガベージコレクションを妨げていたメモリ保持の問題を修正しました
原文(英語)
Fixed memory retention in in-process teammates where the parent's full conversation history was pinned for the teammate's lifetime, preventing GC after /clear or auto-compact
概要
Claude Code のチームメイト機能では、「インプロセス」(同一プロセス内で動作する)チームメイトが利用されます。このチームメイトが起動されると、親(メイン Claude)の完全な会話履歴への参照が保持され続けるため、/clear(会話のクリア)や自動コンパクション後も古い会話データがガベージコレクションされない問題がありました。修正後はチームメイトの終了時に親の会話履歴への参照が解放されます。
基本的な使い方
この修正は自動的に適用されます。/clear や自動コンパクション後のメモリが正しく解放されるようになります。
bash
# /clear 後もメモリが正しく解放される
/clear
# 修正後: チームメイトが保持していた古い会話履歴が GC される実践例
問題が発生していたシナリオ
シナリオ: チームメイトを使用する長期セッション
1. 長い会話セッションを開始(会話履歴: 500ターン, 100MB)
2. @reviewer チームメイトを起動
→ チームメイトが 100MB の会話履歴への参照を保持
3. /clear で会話をクリア
→ 本体の会話履歴は解放
4. 問題(修正前):
→ チームメイトがまだ古い 100MB を参照したまま
→ GC されない(メモリに残り続ける)
5. 修正後:
→ チームメイトの終了時に参照が解放
→ /clear 後に GC が正常に動作
→ 100MB が解放されるチームメイトのライフサイクルと メモリ管理
bash
# チームメイトを使用したレビュー
> @code-reviewer このプルリクエストをレビューして
# チームメイトが作業完了
# 修正後: チームメイトが保持していたメモリが解放される
# セッションをクリア
/clear
# → メインの会話履歴 + チームメイトが保持していた参照 = 完全に解放メモリ解放の確認
bash
# 長いセッションでのメモリ管理
# 1. 長い会話(多数のターン)
# 2. チームメイトを数回使用
# 3. /clear を実行
# 修正後: /clear 後にメモリが大幅に解放される
# 修正前: /clear しても古い参照が残ってメモリが解放されなかった注意点
- 「インプロセス」チームメイトはアウトプロセス(別プロセス)チームメイトとは異なります
- この問題は特にチームメイトを繰り返し使用する長時間セッションで顕著でした
/clearはコンテキストをクリアしますが、修正前はチームメイトが参照を保持して GC を妨げていました- 自動コンパクション(
/compact)も同様に影響を受けていました