🐕

ccmanager: Git Worktreeで並列に動くClaude Codeを一括管理する

に公開

はじめに

複数のClaude Codeセッションを一つのプロセスから一括管理できるCLIツール、ccmangerを作りました。

https://github.com/kbwo/ccmanager

以下のGIFを見ていただければ、何ができるかは大体わかると思います。

背景

Claude CodeのMAXプランの登場により、気兼ねなくコーディングエージェントを使い倒せる世の中になり、コーディングエージェントを並行稼働させる手法が流行っています。

このような手法をローカルで行うには、Git Worktreeが便利です。
https://zenn.dev/siu_issiki/articles/git_worktree

実際、Claude Codeのベストプラクティスでも言及されています。

https://www.anthropic.com/engineering/claude-code-best-practices

c. Use git worktrees
This approach shines for multiple independent tasks, offering a lighter-weight alternative to multiple checkouts.

Git Worktreeがコーディングエージェントの並行運用をするときに便利である一方で、複数のgit worktreeディレクトリを管理していくのはなかなか大変です。

Xなどを観察していると、多くの人がtmuxを使って複数のディレクトリを管理し、それぞれのpaneやwindowでClaude Codeを実行しているようです。

しかし、この手法は私にとっていくつか欠点がありました。

  • Claude Code関係なくtmuxを活用していたため、それまで自分に最適化していたtmuxワークフローを変えたくない。
  • どの場所で何をさせていたのかを記憶していられない。
  • 視覚情報がマルチタスク的になりすぎていて、認知負荷が高い。
  • そもそも複数のworktreeの管理自体がめんどくさい。

これらの問題は私にとっては耐え難かったため、複数のClaude Codeセッションをまとめて管理できたらいいなぁ〜と考えてccmanagerの開発に至りました。

使い方

# npmでインストール
npm install -g ccmanager

ccmanager

これで実行できます。使い方は基本的に見れば直感的に扱えると思います。任意のブランチを選択するか、以下のオプションを選択できます。

任意のブランチを選択したあとClaude Codeセッションが始まりますが、メニューに戻るときはCtrl+Eのショートカットで戻ることができます。(このショートカットはConfigure Shortcutsから変更できます。)

  • New Worktree
    • ディレクトリとブランチを指定してワークツリーを作成できます。
  • Merge Worktree
    • マージ元とマージ先のブランチを指定してmerge/rebaseができます。
  • Delete Worktree
    • ワークツリーとブランチを削除できます。
  • Configure Shortcuts
    • デフォルトではCtrl+Eになっている、メニューへ戻るためのキーを設定できます。
  • Exit
    • ccmanagerを終了します。

セッションのステータス管理

複数のClaude Code セッションを管理するときに知りたいのは、やはりセッションが今どういう状態にあるのかということだと思います。

Claude Codeは場合によってユーザーにYes/Noを選択させるなどの追加インタラクションを求めることがあります。また、タスクが終わってユーザーの追加指示を待っている場合もあります。

ccmanagerはこのようなステータスの変化にも気付けるようになっています。

メニューに表示される各worktreeは4つの状態がわかるように表示されます。

  • ステータス表記なし
    • Claude Codeをまだ実行していない(セッションがない)状態
  • Idle
    • Claude Codeが何も作業をしておらず、ユーザーの指示を待っている状態
  • Waiting
    • ユーザーにYes/Noを選択させるなどの追加インタラクションを求めている状態
  • Busy
    • Claude Codeがなんらかの作業をしている状態

これらのステータスがわかることによって、どのセッションが自分の入力を待っているのか、どのセッションが作業中なのかが一目でわかります。複数のタスクを並行して進める際に、効率的にセッション間を切り替えることができます。

ccmanagerを作ってよかったこと

tmuxワークフローとの共存

前述の通り私は普段からtmuxを使って開発しており、既存のワークフローを崩したくありませんでした。ccmanagerは独立したプロセスとして動作するため、tmuxの設定やワークフローに影響を与えません。

目と脳に優しい管理

複数のターミナルウィンドウやtmuxペインを管理するのは認知的負荷が高くなりがちです。ccmanagerは全てのワークツリーを一つのメニューで管理でき、ステータスも一目で確認できます。

Git Worktreeの統合

Git Worktreeの作成、削除、マージといった操作をUIから直接実行できるため、コマンドラインを行き来する必要がありません。

まとめ

ccmanagerを使うことで、複数のClaude Codeセッションを効率的に管理できるようになります。Git Worktreeの操作も統合されているため、並行開発のワークフローがよりスムーズになります。

ぜひ試してみてください!

リンク

https://github.com/kbwo/ccmanager

https://www.npmjs.com/package/ccmanager

追記

Claude Code VSCode Extensionで使う

少しハッキーですが、

alias claude='ccmanager'

のようにエイリアスをシェルの設定に記載することで、VSCode ExtensionでもCCManagerを使えることが確認できました。

Discussion