原文(日本語訳)
多数のgit worktreeを持つリポジトリにおいて、セッションを名前で再開する場合、またはresumeピッカー(選択画面)を開く場合に、数分かかり大量のメモリを使用していた問題を修正しました。
原文(英語)
Fixed resuming a session by name, or opening the resume picker, taking minutes and using a large amount of memory in repositories with many git worktrees
概要
本バージョンは、claude --resume <name> などによるセッション名指定での再開や、/resume・claude --resume によるresumeピッカーの表示が、git worktreeを多数保持するリポジトリで極端に遅く、かつ大量のメモリを消費していたパフォーマンス上の不具合を修正したバグ修正です。Claude Codeのセッションピッカーはリポジトリと同一のworktree群を横断してセッションを探索する仕様になっているため、worktreeの数が増えるほど探索対象が線形以上に増加し、待ち時間とメモリ使用量が悪化していました。今回の修正により、多数のworktreeを運用する環境でも、セッション再開やピッカー表示が実用的な速度・メモリ使用量で動作するようになります。
基本的な使い方
セッション名で再開する
セッションに名前を付けておくと、claude --resume <name> または対話中に /resume <name> を実行することで、そのセッションに直接戻れます。名前は起動時、または /rename コマンドで設定できます。
# 起動時に名前を付ける
claude -n auth-refactor
# セッション中に名前を変更する
/rename auth-refactor
# 名前を指定して再開する
claude --resume auth-refactor名前が一致するセッションが1つに定まる場合は直接そのセッションへ再開し、複数該当する場合はその名前が検索語として入力された状態でresumeピッカーが開きます。
resumeピッカーを開く
引数なしで claude --resume を実行するか、セッション内で /resume を実行すると、対話式のセッションピッカーが開きます。
claude --resumeデフォルトでは現在のworktreeのセッションが表示されますが、Ctrl+W でリポジトリ内の全worktreeのセッションに表示範囲を広げることができます(もう一度押すと元に戻ります)。Ctrl+A を押すとマシン上の全プロジェクトのセッションまで表示範囲を広げられます。
実践例
多数のgit worktreeを並行運用しているリポジトリでの再開
複数の機能開発やバグ修正を並行して進めるために、1つのリポジトリに対して --worktree フラグや git worktree add で多数のworktreeを作成して運用しているケースを想定します。
# 複数のworktreeで並行してセッションを開始
claude --worktree feature-auth
claude --worktree bugfix-123
claude --worktree perf-tuningこのような環境では、/resume や claude --resume を実行するたびにClaude Codeが同一リポジトリの全worktree分のセッション情報を走査します。修正前はworktreeの数に比例して待ち時間とメモリ使用量が増大し、worktreeが数十単位になると再開に数分かかることがありました。この修正後は、同じ環境でもピッカーの表示や名前指定での再開が短時間・少ないメモリ消費で完了します。
名前を付けたセッションを別worktreeから直接呼び出す
セッションに名前を付けておけば、どのworktreeで作業していたかを覚えていなくても、リポジトリと同一のworktree群を横断して名前解決されます。
# worktree Aで作業していたセッションに、worktree Bにいる状態から戻る
claude --resume auth-refactor該当セッションが別のworktreeにあっても、そのまま該当worktreeで再開されます。今回の修正により、この名前解決処理自体が高速化され、worktreeが多い環境でも待ち時間が発生しにくくなりました。
注意点
- 本修正はパフォーマンスとメモリ使用量に関するバグ修正であり、
--resumeや/resumeの基本的な挙動(名前解決のルール、ピッカーのキーバインドなど)自体に変更はありません。 - resumeピッカーはデフォルトで現在のworktreeのセッションのみを表示し、
Ctrl+Wで全worktree、Ctrl+Aで全プロジェクトに表示範囲を広げる仕様は従来通りです。 - worktreeを大量に作成したまま放置すると、ディスク容量やリポジトリ管理の観点でも負荷が増えるため、不要になったworktreeは
git worktree removeなどで適宜整理することが推奨されます。 - 本修正の恩恵を受けるには、Claude Codeを最新バージョン(v2.1.202以降)に更新する必要があります。