简介
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时需要科学上网
官网
官网地址:aider.chat
安装Aider
官网安装地址:aider.chat/docs/instal...
官方提供了多种安装方式,可以根据自己的情况选择,具体差异如下
我本地安装的有python3.10版本且我不想安装python3.12,安装方式如下:
scss
$ python -m pip install -U --upgrade-strategy only-if-needed aider-chat
// 其他依赖库,也可以后续使用到时安装,需要时Aider会有提示
/// 帮助命令依赖库
$ python -m pip install --upgrade --upgrade-strategy only-if-needed 'aider-chat[help]'
/// URL抓取相关依赖库
$ python -m pip install --upgrade --upgrade-strategy only-if-needed 'aider-chat[playwright]'
/// 浏览器模式依赖库
$ python -m pip install --upgrade --upgrade-strategy only-if-needed 'aider-chat[browser]'
安装完成后,输入命令
css
$ aider --version
打印如下信息表示安装成功
基本使用
命令行帮助
shell
$ aider --help
查看模型列表
css
$ aider --list-models gpt
启动Aider
不同LLMs的使用方式参考官方文档:aider.chat/docs/llms.h...
以 DeepSeek 为例,在终端中执行(Aider建议使用这种方式)
shell
$ export DEEPSEEK_API_KEY=<key>
$ aider --deepseek
Aider中也提供了快捷启动方式
css
[--opus] [--sonnet] [--haiku] [--4] [--4o] [--mini] [--4-turbo] [--35turbo] [--deepseek] [--o1-mini] [--o1-preview]
使用方式如下
vbnet
$ aider --deepseek --openai-api-key your-deepseek-api-key
$ aider --4 --openai-api-key your-openai-api-key
$ aider --4o --openai-api-key your-openai-api-key
$ aider --sonnet --anthropic-api-key your-anthropic-api-key
也可以通过手动指定模型名称来启动
css
$ aider --model gpt-4o --openai-api-key your-openai-api-key
$ aider --model gemini/gemini-1.5-pro-latest
$ aider --model deepseek/deepseek-chat --openai-api-key your-deepseek-api-key
Aider启动成功后就可以看到如下信息
提示词缓存
Aider 支持提示缓存以节省成本并加快编码速度。目前,Anthropic 为 Sonnet 和 Haiku 提供缓存,而 DeepSeek 为 Coder 提供缓存。开启提示词缓存,需在启动命令后添加 --cache-prompts
css
$ aider --deepseek --cache-prompts
聊天内命令
命令官方文档地址:aider.chat/docs/usage/...
aider中内置了丰富的指令,通过这些指令可以快速与Aider进行准确交互
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| |
|
/add
add命令可以将文件添加到上下文
添加文件需要模型支持,如果模型不支持就会出现如下错误
/commit
添加功能修改文件时,Aider会默认保存和提交commit,如果没有自动提交,可以手动执行commit命令
/voice
voice功能应该是默认使用了OpenAI的能力
/ls
查看本地仓库所有的文件,与 /run ls 效果一样
/paste
paste命令可以将剪切板中的图像/文本粘贴到聊天中
/copy
将最后一条助手消息复制到剪贴板
/copy-context
将当前聊天上下文复制为 markdown,适合粘贴到 Web UI 中
vbnet
Here are summaries of some files present in my git repository.
Do not propose changes to these files, treat them as *read-only*.
If you need to edit any of these files, ask me to *add them to the chat* first.
.gitignore
20250107165331.jpg
number_play.py:
│def factorial(n):
⋮...
│def fibonacci(n):
⋮...
│def fibonacci_iterative(n):
⋮...
│def factorial_iterative(n):
⋮...
Don't try and edit any existing code without asking me to add the files to the chat!
Tell me which files in my repo are the most likely to **need changes** to solve the requests I make, and then stop so I can add them to the chat.
Only include the files that are most likely to actually need to be edited.
Don't include files that might contain relevant context, just files that will need to be changed.
Just tell me how to edit the files to make the changes.
Don't give me back entire files.
Just show me the edits I need to make.
/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?开头或结尾,对该注释部分进行代码自动补全
css
$ aider --model gemini/gemini-2.0-flash-exp --watch-files
启动服务后,在 number_play.py 中新增一个函数定义并添加单行注释,然后点击保存,格式如下:
Aider查找到单行注释后就会根据注释对该函数进行补全操作
浏览器模式
启动Aider浏览器模式,需要在启动命令后添加 --browser 参数
css
$ aider --model gemini/gemini-2.0-flash-exp --browser
首次启动需要安装 aider-chat[browser] 依赖库
启动成功后就会在浏览器中自动打开,服务地址:http://localhost:8501
选择上下文后,就可以在输入框中输入提示词进行聊天了
Aider会自动修改文件、保存、commit
浏览器模式下,可以看到文件修改记录,并能对文件进行undo操作
常见问题
安装缓慢
解决方案:使用阿里云镜像
css
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默认的版本
php
$ pip uninstall transformers
总结
整体使用下来,Aider是相当不错的,有种越用越喜欢的感觉。
- Aider安装简易,只要支持Python环境的地方都可以使用
- Aider提供了命令行模式、文件监听补全模式以及浏览器可视化模式,可针对不同需求切换
- Aider会自动根据需求对文件进行修改、保存、commit提交,支持undo一键会退操作
- Aider覆盖了大量的LLMs,可以轻松切换模型
- Aider使用成本也很低,熟悉一遍基本操作就可以上手了。
友情提示
本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。