🤖

EmacsとAIエージェントを橋渡しするemacs-ai-agent-bridge

に公開

はじめに

Emacsユーザーにとって、ターミナルウィンドウとEmacsのウィンドウを頻繁に行き来することは作業フローの中断を意味します。とにかくEmacsユーザーはホームポジションから指を離すことを極端に嫌がります。
最近、Claude CodeやGemini CLIといったAIコーディングエージェントが注目を集めていますが、これらはターミナルで動作するため、Emacsユーザーにとっては使いづらい面があります。EmacsユーザーがClaude Codeを使い始めたら、きっとEmacsの中から操作したいと思うはずです。
そこで、この問題を解決するためにemacs-ai-agent-bridgeを開発しました。

emacs_and_coding_agent.png

emacs-ai-agent-bridgeとは

emacs-ai-agent-bridgeは、tmuxで動いているAIコーディングエージェントとEmacsを連携させる拡張機能です。Claude CodeやGemini CLIなど、ターミナルで動くものなら何でも行けます。

特徴

  • 自動tmux監視:tmuxセッションを2秒ごとに監視
  • スマートなプロンプト検出:コンテンツの変化を監視してAIエージェントのプロンプト状態を検出
  • 非侵入型バッファ表示:フォーカスを奪わずに*ai*バッファを表示
  • 1回限りの通知:プロンプト検出ごとに1回だけバッファを表示
  • 簡単なテキスト送信:選択した領域を自動実行付きでAIエージェントに送信
  • コンテキスト認識:送信テキストにファイルパスと行番号を自動的に含める
  • セッション永続化:選択したtmuxセッションをEmacs再起動後も保持・復元

システムアーキテクチャ

使い方

準備:tmuxとAIエージェントの起動

この拡張機能を使用する前に、tmux内でAIエージェントを起動しておく必要があります。

  1. tmuxセッションを起動

    tmux
    

    または、セッション名を指定して起動:

    tmux new -s claude
    
  2. tmux内でAIエージェントを起動

    claude
    

    または他のAIコーディングエージェントを起動します。

  3. Emacsを起動:別のターミナル(またはtmuxの別のペイン)でEmacsを起動します。

  4. 複数のtmuxセッションがある場合

    • M-x emacs-ai-agent-bridge-select-sessionを使用してセッションを切り替え
    • または、モードラインの[tmux:0]表示をクリックしてポップアップメニューから選択
    • 選択したセッションは自動的に保存され、次回のEmacs起動時に復元されます

AIエージェントへのテキスト送信

方法1:選択した領域を送信

M-x send-to-ai

テキストリージョンを選択して上記コマンドを実行すると、AIエージェントにテキストが送信されます。
一緒にファイルパスと行番号も送信されるので「上の関数をリファクタリングしてください」や、
「下の表の行と列を入れ替えてください」などの指示ができます。

方法2:連続する行のブロックを送信 (C-c Return)

C-c <return> (Control+C の後に Return) を押して、カーソルより前の連続する行をAIエージェントに送信します。

  • カーソルより前の連続する空でない行をすべて送信
  • 最初の空行またはバッファの先頭で停止
  • コンテキスト情報(ファイル名と行番号)を含める

例:

1行目のテキスト
2行目のテキスト
3行目のテキスト  [カーソルはここ]

次の段落(送信されません)

3行目にカーソルがある状態で C-c <return> を押すと、3行すべてがAIエージェントに送信されます。

数字キーによる素早い応答

╭───────────────────────────────────────────────────────────────────────────────────────╮
│ Do you want to proceed?                                                               │
│ ❯ 1. Yes                                                                              │
│   2. Yes, and don't ask again for find commands                                       │
│   3. No, and tell Claude what to do differently (esc)                                 │
╰───────────────────────────────────────────────────────────────────────────────────────╯

AIエージェントが*ai*バッファに上記のような選択肢を表示した場合、*ai*バッファ上で数字キー(15)を押すと選択肢を選んで応答できます。Enterを押すと最初のオプション(デフォルト)を素早く選択できます。

インストールと設定

クイックスタート設定

(require 'emacs-ai-agent-bridge)
(emacs-ai-agent-bridge-start-monitoring)

完全な設定例

;; パッケージをロード
(require 'emacs-ai-agent-bridge)

;; オプション: 設定をカスタマイズ
(setq emacs-ai-agent-bridge-tmux-session nil)  ; セッションを自動検出
(setq emacs-ai-agent-bridge-tmux-pane "0")     ; ペイン0を監視
(setq emacs-ai-agent-bridge-monitor-interval 2) ; 2秒ごとにチェック

;; 自動的に監視を開始
(emacs-ai-agent-bridge-start-monitoring)

;; オプション: テキスト送信用のキーバインディングを設定
(global-set-key (kbd "C-c a s") 'send-to-ai)

;; 推奨: AIエージェントによって変更されたファイルを自動的にリロード
(global-auto-revert-mode 1)

;; 注意: WSL環境では、以下の設定も必要な場合があります:
;; (setq auto-revert-use-notify nil)

設定オプション

;; 監視するtmuxセッション(nilで自動検出)
(setq emacs-ai-agent-bridge-tmux-session nil)

;; 監視するペインID(デフォルト: "0")
(setq emacs-ai-agent-bridge-tmux-pane "0")

;; 監視間隔(秒)(デフォルト: 2)
(setq emacs-ai-agent-bridge-monitor-interval 2)

;; セッション保存先ファイルパス(デフォルト: "~/.emacs-ai-agent-bridge-session")
(setq emacs-ai-agent-bridge-session-file "~/.emacs-ai-agent-bridge-session")

必要要件

  • Emacs 25.1以降
  • tmux
  • tmuxで実行されているAIコーディングエージェント(例:Claude Code)

最後に

emacs-ai-agent-bridgeは、AIコーディングエージェントとEmacsを結びつけ、慣れ親しんだEmacsの環境で快適に開発やドキュメント編集を続けることができます。ぜひ試してみてください。

Discussion