aider.el : Emacs 内の aider (AI ペアプログラミング)
導入
- Cursor AI Code Editor の AI 機能は気に入っていますが、Emacs 内に留まりたいですか?
- Aider はよく知られており、ターミナル内での非常に優れた AI ペア プログラミングです。
- aider.el は、emacs で Aider と通信するための対話型インターフェースを提供します。
- このリポジトリ内の Elisp コードのほとんどは aider / aider.el によって生成されました。
Emacs で aider.el を使用する理由
- ポップアップ メニュー: コマンドを覚える必要はありません。 (補助一時メニュー)
- Emacs の Git リポジトリ固有のエイダー セッション: 現在のファイルの Git リポジトリを自動的に識別し、そのための新しいエイダー セッションを作成します。異なる Git リポジトリに対して複数のエイダー セッションが存在できます。
- ファイルを補助バッファーに追加するその他の方法
- 現在のバッファ ファイルを追加: (aider-add-current-file)
- 現在のウィンドウにすべてのバッファを追加します: (aider-add-files-in-current-window)
- dired バッファーからファイルをバッチ追加する (aider-batch-add-dired-marked-files): 複数の Dired マーク付きファイルを Aider バッファーに追加します。
- リージョンベースのExplain/リファクタリングのサポート
- 説明: (aider-region-explain): ファイル内の領域 (コード ブロックなど) を選択し、aider に説明を依頼できます。
- リファクタリング: (aider-region-refactor): 入力指示に応じて aider にリファクタリングを依頼します
- その他: 独自の Elisp 関数を追加して、ユースケースをサポートします。確かに aider / aider.el にそれを依頼することができます。
インストール
バニラ Emacs のインストール
- 補助装置を設置する
- パッケージ マネージャーを使用して、依存関係 Transient をインストールします。
- 次のコードを使用して aider.el をインストールします。
( use-package aider
:straight ( :host github :repo " tninja/aider.el " :files ( " aider.el " ))
:config
; ; Use claude-3-5-sonnet cause it is best in aider benchmark
( setq aider-args '( " --model " " anthropic/claude-3-5-sonnet-20241022 " ))
( setenv " ANTHROPIC_API_KEY " anthropic-api-key)
; ; Or use chatgpt model since it is most well known
; ; (setq aider-args '("--model" "gpt-4o-mini"))
; ; (setenv "OPENAI_API_KEY" <your-openai-api-key>)
; ; ;;
Optional: Set a key binding for the transient menu
( global-set-key ( kbd " C-c a " ) 'aider-transient-menu ))
Doom のインストールと構成
- 次のコードを doom/packages.el に追加します。
(package! aider :recipe ( :host github :repo " tninja/aider.el " :files ( " *.el " )))
- 次のコードを調整して doom/config.el に追加します。
( use-package aider
:config
( setq aider-args '( " --model " " gpt-4o-mini " )))
補助者の接頭辞は「A」です。
- aider バッファを開始して開きます:
[SPC] A o
-
[SPC] A ac
で現在のファイルを追加します
オプション
- aider-helm.el を試してみるとよいでしょう。このファイルにより、helm からのコマンド履歴と補完のサポートが追加されました。
- Python や R スクリプトで作業してコード ブロックを REPL に送信するのと同じように、別のファイルに aider コマンドを記述して aider セッションに送信するのが好きな場合は、aider-minor-mode を試してみるとよいでしょう。デフォルトでは、Cc Cn をバインドして現在の行をエイダー セッションに送信し、Cc Cc をバインドして現在の領域をエイダー セッションに送信します。
- ファイル名内に aider が含まれるファイルに対して aider-minor-mode を自動的に有効にするには
( add-hook 'find-file-hook
( lambda ()
( when ( and ( buffer-file-name )
( string-match-p " aider " ( buffer-file-name )))
(aider-minor-mode 1 ))))
スクリーンショット
- 上のスクリーンショットでは、aider は aider-help 関数を生成し、対応するエントリをメニュー (右上のウィンドウ) に追加するように求められています。
- aider はコマンドを受け取り、それに対するコミットを生成しました (左下)。
aider.el を使用して作成されたアプリケーションの例
その他のEmacs AIコーディングツール
- インスピレーションを得たもの、そして次のものに感謝します。
- ancilla.el: AI コーディング アシスタントのサポート コード生成 / コード書き換え / ディスカッション
- chatgpt-shell: ChatGPT および DALL-E Emacs シェル + Org Babel
- copilot.el: GitHub Copilot 用の Emacs プラグイン
- copilot-chat.el: Emacs で GitHub Copilot とチャットする