109. 终端福音 aider
简介
Aider是一款为软件开发者设计的终端AI编程工具,它允许开发者与大型语言模型 (LLMs) 配对编程,直接在本地git仓库编辑代码。它支持多种编程语言,提供 code、ask、architect和 help四种聊天模式,用户可通过特定命令切换。它具备自动提交代码更改、生成合理提交消息、支持多文件编辑和实时更新等核心功能,还支持语音编码及处理图像和URL。在SWE Bench测试中表现卓越,集成 GPT-4 和 Claude 3.5 Sonnet 等大语言模型可以显著提升编码效率和生产力。
Aider的功能特点
- 配对编程:Aider的核心功能是允许开发者与大语言模型 (LLMs) 协同工作,开发者可以直接利用Aider启动项目、添加新功能、编辑代码、更新文档等操作。
- 自动生成和提交信息:Aider 不仅能修改代码,还能自动提交更改,并生成合理的提交信息,大大提升了代码管理的效率
- 多语言多模型支持:Aider 支持多种编程语言,覆盖了大多数主流的编程语言。Aider 提供三种不同的聊天模式,开发者可以通过 /code、/ask 和 /help 命令方便地切换模式
- 多LLM集成:Aider 集成了众多大语言模型,包括 GPT-4 和 Claude 3.5 Sonnet 等,可以选择最适合自己的 LLM
- 多文件编辑和实时更新:Aider 支持多文件编辑,可以同时处理多个文件,满足复杂请求的需求,并且Aider 会始终使用代码的最新版本,实时更新文件,提升开发者效率
- 语音增强体验:Aider 提供语音编码功能,让开发者可以通过语音与 Aider 进行交互。
优势
Aider是一个Python终端命令依赖库,安装简易,随处可用,如可以在本地、Github Codespaces、Replit等平台上使用
限制
- Aider是以文件目录和Git管理的文件的,Aider建议最好在一个目录下启动服务且初始化git
- Aider没有实现某些大模型的代理,使用如gemini时需要科学上网


官网
官网地址:https://aider.chat

安装Aider
官网安装地址:https://aider.chat/docs/install.html
官方提供了多种安装方式,可以根据自己的情况选择,具体差异如下

我本地安装的有python3.10版本且我不想安装python3.12,安装方式如下:
1 | python -m pip install -U --upgrade-strategy only-if-needed aider-chat |
安装完成后,输入命令
1 | aider --version |
打印如下信息表示安装成功

基本使用
命令行帮助
1 | aider --help |
查看模型列表
1 | aider --list-models gpt |

启动Aider
不同LLMs的使用方式参考官方文档:https://aider.chat/docs/llms.html
以 DeepSeek 为例,在终端中执行(Aider建议使用这种方式)
1 | export DEEPSEEK_API_KEY=<key> |
Aider中也提供了快捷启动方式
1 | [--opus] [--sonnet] [--haiku] [--4] [--4o] [--mini] [--4-turbo] [--35turbo] [--deepseek] [--o1-mini] [--o1-preview] |
使用方式如下
1 | aider --deepseek --openai-api-key your-deepseek-api-key |
也可以通过手动指定模型名称来启动
1 | aider --model gpt-4o --openai-api-key your-openai-api-key |
Aider启动成功后就可以看到如下信息
提示词缓存
Aider 支持提示缓存以节省成本并加快编码速度。目前,Anthropic 为 Sonnet 和 Haiku 提供缓存,而 DeepSeek 为 Coder 提供缓存。开启提示词缓存,需在启动命令后添加 –cache-prompts
1 | aider --deepseek --cache-prompts |
聊天内命令
命令官方文档地址:https://aider.chat/docs/usage/commands.html
aider中内置了丰富的指令,通过这些指令可以快速与Aider进行准确交互
/add
add命令可以将文件添加到上下文

添加文件需要模型支持,如果模型不支持就会出现如下错误
/commit
添加功能修改文件时,Aider会默认保存和提交commit,如果没有自动提交,可以手动执行commit命令



/voice
voice功能应该是默认使用了OpenAI的能力

/ls
查看本地仓库所有的文件,与 /run ls效果一样

/paste
paste命令可以将剪切板中的图像/文本粘贴到聊天中

/copy
将最后一条助手消息复制到剪贴板

/copy-context
将当前聊天上下文复制为 markdown,适合粘贴到 Web UI 中
1 | Here are summaries of some files present in my git repository. |
/diff
显示自上一条消息以来的更改差异

/drop
从聊天会话中删除文件以释放上下文空间,drop命令后不跟参数默认删除所有上下文,drop命令后跟文件名从上下文中删除指定文件

/undo
撤销上一个git提交及修改(Aider创建的commit)

/run
运行shell指令,并可以选择性地讲输出添加到聊天在中

/web
抓取网页,转为markdown格式并发送消息

/reset
删除所有文件并清楚所有聊天记录

聊天模式
Aider提供了 code、architect、ask、help 4种聊天模式:
- code: Aider 将更改您的代码以满足您的请求
- architect:Aider 首先会提出一个解决方案,然后询问您是否希望它将该提案转化为对文件的编辑
- ask:Aider 将回答有关您的代码的问题,但绝不会对其进行编辑
- help:Aider 将回答有关使用 aider、配置、故障排除等的问题
切换聊天模式,可以在终端直接使用 /code、/architect、/ask、/help 快速切换
/ask

/help
该命令好像需要科学上网环境,本人只有科学环境成功获取成功
首次使用help命令需要额外安装 aider-chat[help]依赖库获取其他缺失的依赖,等安装完成后即可正常使用help命令。

/code
code命令可以创建文件,并对文件进行修改保存以及执行操作


/architect


自动补全模式
启动Aider时添加 –watch-files可以监听文件更改,Aider会查找单行注释 (# …或 // …)以 AI、AI! 或 AI?开头或结尾,对该注释部分进行代码自动补全
1 | aider --model gemini/gemini-2.0-flash-exp --watch-files |
启动服务后,在 number_play.py中新增一个函数定义并添加单行注释,然后点击保存,格式如下:

Aider查找到单行注释后就会根据注释对该函数进行补全操作

浏览器模式
启动Aider浏览器模式,需要在启动命令后添加 –browser 参数
1 | aider --model gemini/gemini-2.0-flash-exp --browser |
首次启动需要安装 aider-chat[browser]依赖库

启动成功后就会在浏览器中自动打开,服务地址:http://localhost:8501

选择上下文后,就可以在输入框中输入提示词进行聊天了

Aider会自动修改文件、保存、commit

浏览器模式下,可以看到文件修改记录,并能对文件进行undo操作

常见问题
安装缓慢
解决方案:使用阿里云镜像
1 | python -m pip install -U --upgrade-strategy only-if-needed aider-chat -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com |
No Matching distribution found for aider-chat

解决方案:关闭科学上网环境
tokenizers版本与本地冲突

解决方案:暂时卸载transformers,使用aider-chat默认的版本
1 | pip uninstall transformers |
总结
整体使用下来,Aider是相当不错的,有种越用越喜欢的感觉。
- Aider安装简易,只要支持Python环境的地方都可以使用
- Aider提供了命令行模式、文件监听补全模式以及浏览器可视化模式,可针对不同需求切换
- Aider会自动根据需求对文件进行修改、保存、commit提交,支持undo一键会退操作
- Aider覆盖了大量的LLMs,可以轻松切换模型
- Aider使用成本也很低,熟悉一遍基本操作就可以上手了。