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
2
3
4
5
6
7
8
9
10
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]'

安装完成后,输入命令

1
aider --version

打印如下信息表示安装成功

基本使用

命令行帮助

1
aider --help

查看模型列表

1
aider --list-models gpt

启动Aider

不同LLMs的使用方式参考官方文档:https://aider.chat/docs/llms.html

以 DeepSeek 为例,在终端中执行(Aider建议使用这种方式)

1
2
export DEEPSEEK_API_KEY=<key> 
aider --deepseek

Aider中也提供了快捷启动方式

1
[--opus] [--sonnet] [--haiku] [--4] [--4o] [--mini] [--4-turbo] [--35turbo] [--deepseek] [--o1-mini] [--o1-preview]

使用方式如下

1
2
3
4
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

也可以通过手动指定模型名称来启动

1
2
3
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

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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?开头或结尾,对该注释部分进行代码自动补全

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使用成本也很低,熟悉一遍基本操作就可以上手了。

references