综合介绍
Emigo 是一个专为 Emacs 设计的开源 AI 编程助手,由 MatthewZMD 在 GitHub 上开发。它通过集成大型语言模型(LLM),帮助程序员在 Emacs 中完成代码分析、生成、修改等任务。Emigo 的核心特点是“Agentic AI”(代理型 AI),不仅能生成文本,还能通过工具与项目互动,比如读取文件、写入代码或执行命令。它受到 Aider 和 Cline 等工具的启发,是 Aidermacs 的后续项目。目前,Emigo 处于 Beta 测试阶段,功能还在完善中,适合开发者试用和反馈。
功能列表
- 代理型工具使用:AI 根据任务需求选择并执行工具,比如读写文件或运行命令。
- 无缝集成 Emacs:操作界面和快捷键与 Emacs 原生体验一致。
- 支持多种 AI 模型:通过 LiteLLM 连接 OpenRouter、Deepseek 等模型,用户可自由选择。
- 上下文管理:自动记录对话历史和项目文件,确保会话连贯。
- 文件上下文添加:通过 "@" 符号快速将文件加入 AI 分析范围。
- 代码补丁生成与显示:AI 返回的代码更改以高亮形式展示,方便查看。
使用帮助
Emigo 是为 Emacs 用户打造的 AI 助手。以下是详细的安装和使用方法,确保你能快速上手。
安装流程
- 检查环境要求
- 需要 Emacs 28 或更高版本。可以在 https://www.gnu.org/software/emacs/ 下载安装。
- 需要 Python 3.x,已安装的用户可跳过,未安装的可从 https://www.python.org/ 获取。
- 下载 Emigo
在终端运行以下命令,将 Emigo 克隆到 Emacs 配置目录:
git clone https://github.com/MatthewZMD/emigo.git ~/.emacs.d/emigo
- 安装 Python 依赖
进入 Emigo 目录,运行:
cd ~/.emacs.d/emigo
pip install -r requirements.txt
这会安装必要的 Python 库,比如 LiteLLM。
- 配置 Emacs
打开 Emacs 配置文件(通常是~/.emacs.d/init.el
),添加以下代码:
(use-package emigo
:straight (:host github :repo "MatthewZMD/emigo")
:config
(emigo-enable) ;; 自动启动后台进程
:custom
(emigo-model "openrouter/deepseek/deepseek-chat-v3-0324") ;; 设置默认模型
(emigo-base-url "https://openrouter.ai/api/v1") ;; 设置 API 地址
(emigo-api-key (emigo-read-file-content "~/.config/openrouter/key.txt"))) ;; 加载 API 密钥
- 配置说明:
emigo-model
:选择 AI 模型,推荐 OpenRouter 的 Deepseek。emigo-base-url
:填写 API 服务地址。emigo-api-key
:从 OpenRouter(https://openrouter.ai)获取密钥,保存到指定路径。
- 验证安装
保存配置后,重启 Emacs。输入M-x emigo
,如果出现新缓冲区,说明安装成功。
如何使用
Emigo 的操作主要在 Emacs 中进行,结合快捷键和交互窗口。
启动 Emigo
- 在项目目录下输入
M-x emigo
,回车后打开专用缓冲区。 - 如果在 Git 仓库中,Emigo 会以仓库根目录作为会话路径。想用当前目录,可输入
C-u M-x emigo
。
输入提示
- 在缓冲区输入你的需求,比如:
请优化 @src/main.py 中的排序函数
- Emigo 会自动找到
src/main.py
并发送给 AI 处理。
添加文件到上下文
- 用 "@" 符号提及文件,比如
@src/utils.py
,Emigo 会将其加入上下文。 - 查看上下文文件:按
C-c C-l
(运行emigo-list-context-files
)。 - 删除文件:按
C-c C-f
(运行emigo-remove-file-from-context
)。
与 AI 交互
- 输入任务后,AI 会分析并返回结果。比如:
请帮我调试 @src/main.c 中的内存泄漏
- AI 返回的补丁会以高亮形式显示,如:
- free(ptr);
+ if (ptr) free(ptr);
工具使用流程
- Emigo 的代理型功能通过工具实现。AI 会根据任务选择工具,比如:
read_file
:读取文件内容。write_to_file
:写入文件。execute_command
:运行命令。- AI 可能提示:
我需要运行 gcc -o test main.c,同意吗?
- 按
y
确认,工具执行后结果会反馈到对话中。
会话管理
- 检查上下文:用
C-c C-l
查看当前文件列表。 - 重启会话:关闭缓冲区,重新运行
M-x emigo
。
开发状态提醒
- Emigo 目前是 Beta 版,可能存在 API 变动、功能不稳定或文档不全的情况。建议仅用于测试,并通过 GitHub 提交问题反馈。
应用场景
- 代码调试
在 C 项目中发现崩溃,输入“检查 @main.c 的错误”,AI 会分析并建议修复。 - 文件重构
输入“重构 @src/utils.py 的函数”,Emigo 会生成优化后的代码并显示补丁。 - 命令执行
在项目中输入“编译 @src/main.c”,AI 会选择execute_command
工具运行gcc
。
QA
- Emigo 支持哪些模型?
通过 LiteLLM 支持多种模型,如 OpenRouter 的 Deepseek、Anthropic 的 Claude 等,只需在配置中指定模型名称和 API。 - 为什么提示无响应?
可能是 API 密钥无效或网络问题。检查密钥文件路径和网络连接,确保emigo-base-url
可访问。 - 如何更新 Emigo?
在~/.emacs.d/emigo
目录运行git pull
,然后重启 Emacs。