きっかけ:複数のVS Codeを行き来する非効率

複数の案件を切り替えながら作業することが多く、Visual Studio Code(以下、VS Code)を何個も立ち上げて、あっちのウィンドウで作業しつつ、AIの作業が終わるのを待っている間に別のウィンドウで別の作業をする、ということをしていました。
そうすると、いつの間にかさっきのAI作業が終わっていたのに気づかず放置してしまう、ということがよく起きていました。

「エディタを何枚も開いて行き来する」のではなく、「複数のエージェントを一箇所から回す」形に環境を変えたほうが良さそうだと思い、そのための環境を整えてみました。

いくつか試して、Orcaに落ち着いた

同じ用途のツールとして、cmuxWarp も試しました。どれも複数のエージェントを並行して扱えるという点では近いのですが、最終的に一番手に馴染んだのが Orca でした。

Orca は Stably AI が出しているMITライセンスのデスクトップアプリで、Claude Code・Copilotなど、ターミナルで動くCLIエージェントを横に並べて動かせます。エージェントの利用は自分の契約しているサブスクリプションのまま使えて、Orca のサーバーを経由するわけではありません。

決め手になったのは、次の3つでした。

1. worktreeでタスクを分離して並行実行

Orca は、タスクごとにgitのworktreeを切って、それぞれ独立した作業ディレクトリでエージェントを走らせます。

同じリポジトリでも、タスクAとタスクBがお互いのファイルを踏まないので、「片方のエージェントが編集している最中に、もう片方が同じファイルを触ってコンフリクトする」ということが起きません。ブランチを切り替えながら1つの作業ディレクトリを使い回す必要もないので、手が空いたセッションから順に確認していく、という進め方ができるようになりました。

同じお題を複数のエージェントに同時に投げて、出てきた結果を見比べてから採用するものを決める、という使い方もできます。

2. diffレビューと行コメント

AIにコードを書いてもらう場合でも、コミットする前には人の目で内容を確認しておきたいので、「どこで目視確認するか」はセットで考えたいところでした。

Orca にはdiffのビューアが内蔵されていて、変更内容をその場で確認できます。さらに、diffの行に直接コメントを付けて、そのままエージェントに投げ返せます。「ここはこう直して」を別のチャット欄に書き写す必要がなく、レビュー→修正指示→再確認が同じ画面で回せるのが便利でした。

3. 内蔵ブラウザとDesign Mode

Orca にはブラウザ(Chromium)も内蔵されていて、起動した開発サーバー(例: http://localhost:3000)をそのままペインで開いて確認できます。別のブラウザアプリに切り替える必要がありません。

さらにDesign Modeを使うと、そのブラウザ上でUIの要素をクリックするだけで、その要素のHTML・CSS・切り抜いたスクリーンショットをまとめてプロンプトに渡せます。「この見出しの余白を詰めて」といった指示を、セレクタや該当ファイルを自分で探して伝える手間なく出せるようになりました。

ローカルツール「diffity」を併用したレビュー環境

差分確認そのものは Orca だけでも完結しますが、レビューの見やすさの面では diffity も併用しています。

diffity は、PR・ブランチのdiffをブラウザで見やすく表示してくれるローカルツールです。ローカルで起動して http://localhost:5391/diff を開くと、Split表示でファイル一覧や変更行数(+114 -1など)を確認できます。

これも Orca の内蔵ブラウザでそのまま開けるので、外部のブラウザアプリに切り替えることなく、Orca の中で一通り完結します。

おまけ:GitHub Codespaces上で作業する場合

手元ではなくGitHub Codespaces上でエージェントを動かしたい場合、Orca のターミナルペインから gh codespace ssh で繋ぐこと自体は可能です。ただ、これは Orca の機能を使っているわけではなく、単に「ターミナルを開いてSSHしている」状態のため、私自身のワークフローでは十分に活用しきれないと感じる場面がありました。

まず、ひと手間かかります。gh にCodespaceスコープを付けておくこと、接続先のコンテナに sshd が入っていること、そしてSSHが切れるとエージェントのプロセスも道連れになるので tmux で永続化しておくこと。しかも sshdtmux もRebuildすると消えるので、devcontainer.json に仕込んでおかないと都度入れ直しになります。

そして手間をかけて繋いでも、この記事で挙げた Orca の良さはほとんど効きません。ターミナルの中で動いているだけなので、worktreeもdiffの行コメントもDesign Modeも、リモート側のコードには使えないからです。

Orca にはSSHワークツリーという専用の機能もあって、そちらならリモートのコードにも各種機能が効くのですが、Codespacesとは相性が良くないようです。作り直すたびに名前が変わるので繋ぎ先を登録し直すことになりますし、アイドルで自動停止するので常時接続を前提にした作りと噛み合いません。常時起動しているVPSなどが相手なら便利そうですが、Codespaces用途では工夫が必要そうです。

最近Codespacesで作業することも増えてきたのですが、起動を待つ時間や、止まっているものを立ち上げ直す待ち時間が長くなる傾向があるため、今後はCodespaces上でも手元と同等に快適な環境を構築できるよう、改善策を探っていきたいと考えています。

まとめ

VS Codeを何枚も行き来していた状態から、Orca で複数タスクを同時並行に進める形に変えたことで、AIの作業待ちで手が止まる時間が減りました。

worktreeで作業を分離できること、diffレビューと行コメントがその場で回せること、内蔵ブラウザとDesign Modeで確認と指示が完結すること。この3点が揃っているのが、cmuxWarp ではなく Orca に落ち着いた理由です。複数エージェントを効率よく管理したい方は、ぜひ試してみてください。