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 聊天