🤖

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など、ターミナルで動くものなら何でも行けます。

特徴

  • 主な操作はEmacsから行う
  • エージェントのTerminal Windowは表示専用
  • Emacsからプロンプトを送信し、結果を *ai* バッファで受け取る

仕組み

以下のような仕組みで実現しています。

  • 自動tmux監視:tmuxセッションを2秒ごとに監視し、AIエージェントの状態をリアルタイムで把握
  • スマートなプロンプト検出:コンテンツの変化を監視してAIエージェントのプロンプト状態を自動検出
  • 非侵入的なバッファ表示:フォーカスを奪わずに*ai*バッファを表示し、作業の流れを妨げない
  • コンテキスト認識:送信されるテキストに自動的にファイルパスと行番号を含めて、AIエージェントに正確な位置情報を提供
  • 簡単なテキスト送信:選択したリージョンやインラインコマンドで素早くAIエージェントにテキストを送信

使い方

基本的なワークフロー

1. 選択リージョンをAIエージェントに送信

M-x send-to-ai

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

2. インライン@aiコマンド

まず入力モードを有効化: (init.elなどに書いておいてください)

M-x emacs-ai-agent-bridge-input-mode

その後、@aiプレフィックスを使用してクイックプロンプトを送信します。

単一行プロンプト:

@ai このコードを最適化してください [Enter]

結果、プロンプト周辺のコードが最適化されます。
「@ai このコードを最適化してください」という文章は自動的に消えます。

複数行プロンプト:

@ai-begin
この関数についての説明をコメントとして埋め込んでください:
1. 引数の意味
2. 戻り値の説明
3. 使用例
@ai-end [この行でEnterを押す]

結果、プロンプト周辺の関数の説明がコメントとして埋め込まれます。

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

╭───────────────────────────────────────────────────────────────────────────────────────╮
│ 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*バッファ上で、1キーや2キーを押すと選択肢を選んで応答できます。

インストールと設定

基本インストール

(require 'emacs-ai-agent-bridge)

推奨設定

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

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

;; ふだんエージェントに編集してもらうモードで@ai入力モードを有効化
(add-hook 'text-mode-hook 'emacs-ai-agent-bridge-input-mode)
(add-hook 'markdown-mode-hook 'emacs-ai-agent-bridge-input-mode)
(add-hook 'emacs-lisp-mode-hook 'emacs-ai-agent-bridge-input-mode)

;; コーディングエージェントが編集したファイルを検知して自動的にリロード
(global-auto-revert-mode 1)
;; WSL環境だとWindowsアプリで編集したファイルをUbuntuで監視するにはポーリングが必要なのでこれが必要
(setq auto-revert-use-notify nil)

必要要件

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

最後に

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

Discussion