Vim と tmux で複数の AI エージェントを操作する

blog
tech
tech-vim
vim-jp

Vim と tmux で複数の AI エージェントの並列実行を実現するアイデアを共有します

Author

uma-chan

Published

2025-11-19

Modified

2025-11-19

Note

この記事は Vim 駅伝 の 2025-11-19 の記事です。

前回は 2025-11-17 ぺりー さんの ドットコマンドで再現可能な編集を設計する | Medium でした。

1. AIエージェント並行実行の現在地 (2025年11月時点)

Claude Code や Codex CLI を1つのタスクに対して複数起動させると便利ですが取り回しが難しいですよね。

この需要に応えたのが2025年10月29日にリリースされた Cursor 2.0 でした。

マルチエージェント

新しいエディタでエージェントを管理。サイドバーでエージェントとプランを一覧・操作できます。

1つのプロンプトで最大8つのエージェントを並列実行できます。ファイル競合を防ぐために、git worktree またはリモートマシンを使用します。各エージェントは、コードベースの独立したコピー上で個別に動作します。

新しいコード生成モデルとエージェントインターフェース · Cursor

これはかなり強力な機能追加ですが今のところ Cursor 以外で同様の体験を得るのは難しいです。

Vim と tmux で似たような操作を実現させるアイデアを共有するので、ターミナルでの AI エージェント操作についても盛り上げていきましょう!

2. 対象読者

  • 必須
    • Vim & tmux を利用できる方
  • 推奨
    • Vim 補完プラグイン ddc.vim を利用できる方

3. Vim と tmux による複数のAIエージェント操作実演

構築後の操作画面を先にお見せします。Claude Code * 1 と Codex CLI * 2 に同じプロンプトを送っている様子です。

4. 利用ツール等の解説

4.1. zeno.zsh

https://github.com/yuki-yano/zeno.zsh

動画の冒頭で vde-layout 起動時に利用している zeno.zsh のスニペット設定例を共有します。

~/.config/zeno/config.yml
snippets:
  - name: (vde-layout) dev
    keyword: vd
    snippet:
      vde-layout dev

  - name: (vde-layout) review
    keyword: vr
    snippet:
      vde-layout review

4.2. vde-layout

https://github.com/yuki-yano/vde-layout

vde-layout コマンドを実行することで予め設定した tmux レイアウトを適用できます。

設定ファイル例は以下となります。

~/.config/vde/layout.yml
presets:
  review:
    name: review
    description: review
    windowMode: current-window
    layout:
      type: horizontal
      ratio: [1, 1]
      panes:
        - type: vertical
          ratio: [3, 1]
          panes:
            - name: editor
              command: vim -c "execute 'edit' '.i9wa4/temp.md'->expand()"
              focus: true
            - name: codex
              command: codex --yolo
        - type: vertical
          ratio: [3, 1]
          panes:
            - name: claude
              command: claude --dangerously-skip-permissions
            - name: codex
              command: codex --yolo

4.3. ddc-source-slash-commands

https://github.com/i9wa4/ddc-source-slash-commands

Vim 補完プラグイン ddc.vim のソースプラグインです。

カスタムスラッシュコマンドを補完候補として表示するために利用します。

カスタムスラッシュコマンドに対応していない AI エージェントの場合はファイルのフルパスを送信すれば問題ないです。

柔軟にプロンプトを調整できるのが Vim で操作するメリットですね。

4.4. vim-tmux-send-to-ai-cli

https://github.com/i9wa4/vim-tmux-send-to-ai-cli

Vim から tmux 経由で AI エージェント起動中のペインにプロンプトを送信するためのプラグインです。

送信先:

  • (デフォルト) 同一ウインドウの中で最も小さい番号のペインに送信
  • 同一ウインドウの特定のペインに送信
  • 同一ウインドウの全てのペインに送信

送信内容:

  • カーソル行
  • 段落
  • 選択範囲
  • ファイル全体
  • 行範囲 (例: 10~20行目)

4.5. ペイン間の競合を回避するプロンプト

複数の AI エージェントを並行実行する際、中間生成するドキュメントの競合を避けるために .i9wa4/ ディレクトリ (私の環境で global gitignore されているディレクトリ) と tmux ペイン番号を活用します。

- 生成するファイル名は `YYYYMMDD-pN-xxxx.md` の形式とする
    - `YYYYMMDD`: 日付 (例: `20251105`)
    - `pN`: tmux ペイン番号 (例: `p0`, `p1`, `p2`)
    - `xxxx`: ファイルの目的 (例: `review`, `plan`, `memo`)
    - 例: `.i9wa4/20251105-p2-review.md`
- tmux ペイン番号Nは `tmux display-message -p -t "$${TMUX_PANE}" '#{pane_index}'` で取得する

このプロンプトによって AI エージェントが生成する中間ファイルが他ペインと競合しなくなります。

ちなみに global gitignore なディレクトリについては以下のポストを参考にしました。

5. おわりに

足りない部分を自作して補うことで Vim と tmux で複数の AI エージェントを操作するアイデアを共有しました。

今後もターミナルでの AI エージェント操作が盛り上がっていくことを願っています!