aider.el :Emacs 內部的 aider(AI 結對程式設計)
介紹
- 您喜歡 Cursor AI 程式碼編輯器的 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 緩衝區。
- 基於區域的解釋/重構支持
- 解釋:(aider-region-explain):您可以在檔案中選擇一個區域(例如,程式碼區塊)並要求aider對其進行解釋。
- Refactor: (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/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”。
- 啟動並開啟輔助緩衝區:
[SPC] A o
- 用
[SPC] A ac
新增目前文件
選修的
- 您可能想嘗試 aider-helm.el。該文件添加了對命令歷史記錄和 helm 完成的支援。
- 如果您喜歡在單獨的檔案中編寫 aider 命令並將它們傳送到 aider 會話,就像處理 python 或 R 腳本並將程式碼區塊傳送到 REPL 一樣,您可能想嘗試 aider-minor-mode。預設情況下,它綁定 Cc Cn 將目前行傳送到 aider 會話,並綁定 Cc Cc 將目前區域傳送到 aider 會話。
- 自動對檔案名稱中包含 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 shell + Org Babel
- copilot.el:GitHub Copilot 的 Emacs 插件
- copilot-chat.el:在 Emacs 中與 GitHub Copilot 聊天