Skip to content

原文(日本語に翻訳)

長時間の SDK/CCR セッションで会話メッセージが不必要に保持されていたメモリリークを修正しました

原文(英語)

Fixed memory leak in long-running SDK/CCR sessions where conversation messages were retained unnecessarily

概要

Claude Code SDK または Claude Code Remote(CCR)を使用した長時間のセッションで、会話メッセージが処理後も不必要にメモリに保持され続けるメモリリークがありました。セッションが長くなるほどメモリ消費量が増加し、最終的にはパフォーマンス低下やメモリ不足になる可能性がありました。修正後は、不要になった会話メッセージが適切にガベージコレクションされ、長時間セッションでもメモリ消費量が安定します。

基本的な使い方

この修正は自動的に適用されます。SDK/CCR を使った長時間セッションでのメモリ消費が改善されます。

javascript
// SDK を使った長時間セッション
// 修正後: メモリが正しく解放される
const claude = new Claude();
await claude.run(async (session) => {
  for (let i = 0; i < 1000; i++) {
    await session.send("次のタスクを実行してください...");
    // 修正後: 古いメッセージが GC される
  }
});

実践例

SDK を使った自動化スクリプトでの影響

javascript
// 長時間の自動化スクリプト例
const { Claude } = require('@anthropic-ai/claude-code');

async function processFiles(files) {
  const claude = new Claude();

  await claude.run(async (session) => {
    for (const file of files) {
      // 各ファイルを処理
      const result = await session.send(`${file} を分析してください`);
      console.log(result);

      // 修正前: 各ターンのメッセージが蓄積し続けた
      // 修正後: 不要なメッセージは GC され、メモリが安定
    }
  });
}

// 1000個のファイルを処理する場合など
processFiles(largeFileList);

メモリ消費の比較

修正前(1000ターンのセッション):
- 開始時: ~50MB
- 500ターン後: ~500MB
- 1000ターン後: ~1GB
- メモリ不足でクラッシュすることも

修正後(1000ターンのセッション):
- 開始時: ~50MB
- 500ターン後: ~60MB(安定)
- 1000ターン後: ~65MB(安定)

CCR(Claude Code Remote)での使用

bash
# CCR セッションでも同様にメモリが効率的に管理される
# 長時間の CI/CD パイプラインでも安定動作

# GitHub Actions 等での使用例
- name: Claude Code で自動レビュー
  uses: anthropics/claude-code-action@v1
  with:
    task: "すべての変更ファイルをレビューしてください"
  # 修正後: 長時間の処理でもメモリが安定

注意点

  • この修正は SDK および CCR(Claude Code Remote)を使用するケースに特に効果があります
  • 通常の対話型 CLI 使用でも同様の改善が適用されます
  • メモリ消費の改善により、長時間の自動化タスクがより安定して実行できます
  • /compact や自動コンパクション機能との組み合わせでさらに効果的です

関連情報