Aider — 终端里的 AI 结对编程工具,详细介绍
一、项目概览
Aider(aider.chat)是一个开源的 AI 结对编程工具,完全运行在终端中。它让大语言模型(LLM)直接参与你的 Git 仓库,理解代码库结构,并生成可追溯的原子提交。项目由 Paul Gauthier 创建和维护,采用 Apache 2.0 许可证。
截至 2026 年中的关键数据:
| 指标 | 数据 |
|---|---|
| GitHub Stars | ~44,000 |
| PyPI 安装量 | 680 万+ |
| 每周 Token 消耗 | 150 亿 |
| 当前版本 | v0.86.x |
| 支持编程语言 | 100+(包括 R) |
二、核心工作原理
2.1 Repository Map(仓库地图)— Aider 的"导航系统"
这是 Aider 区别于普通聊天机器人的核心机制。当你打开 Aider 时,它会自动为你的整个 Git 仓库构建一张精简的结构地图,包含:
各文件中最重要的类名、函数签名、类型定义 文件间的依赖关系图(基于标识符引用构建有向图,使用图排序算法选出最关键的节点)
这张地图会随每次对话自动注入到 LLM 的上下文中。LLM 看到函数签名后,有两种策略:
仅凭签名就能完成任务(比如调用一个已知接口) 识别出需要深入查看哪些具体文件,然后请求获取完整源码
Token 预算控制:默认 --map-tokens 为 1024 个 token。Aider 会根据对话状态动态调整——当没有文件加入聊天时,地图会自动扩大以提供更广泛的仓库上下文。
2.2 编辑格式(Edit Formats)
Aider 支持多种让 LLM 返回代码修改的方式,不同模型适配不同格式:
diff — 让模型输出标准 diff 补丁,Aider 应用到文件。主流模型(Claude、GPT-4o、DeepSeek)的首选格式 whole — 让模型输出完整的修改后文件内容。适合上下文窗口大但 diff 格式支持不好的模型 architect — 架构师模式,使用两个模型协作:一个负责设计方案(写出修改计划),另一个负责实际编辑代码 diff-fenced — 用围栏代码块包裹的 diff,Gemini 等模型使用此格式
2.3 原子 Git 提交
Aider 的每次代码修改都会自动生成一个语义化的 Git 提交。具体流程:
LLM 修改代码后,Aider 调用 git diff查看变更将 diff 发送给 LLM(默认用 --weak-model,即较便宜的模型)生成提交信息自动 git commit,并附带Co-authored-by: aider <aider@aider.chat>标记如果修改导致 lint 或测试失败,Aider 会自动尝试修复(需配置相应命令)
这意味着你的 Git 历史始终保持干净、可追溯——每条提交对应一次有意义的代码变更。
三、安装与配置
3.1 安装
要求 Python 3.8–3.13,推荐方式:
# 一键安装(推荐)
python -m pip install aider-install
aider-install
# 或直接用 pip
pip install aider-chat
安装完成后需要 Git 和至少一个 LLM API key。
3.2 四种配置方式
Aider 提供四种等价的配置途径,可按需混合使用:
| 方式 | 示例 |
|---|---|
| 命令行参数 | aider --model sonnet --dark-mode |
| YAML 配置文件 | 项目根目录或 ~/.aider.conf.yml 中写 model: sonnet |
| 环境变量 | export AIDER_MODEL=sonnet |
| .env 文件 | 项目根目录 .env 中写 AIDER_MODEL=sonnet |
3.3 常用 API Key 配置
# Anthropic Claude
aider --model sonnet
# OpenAI
aider --model gpt-4o
# DeepSeek
aider --model deepseek --api-key deepseek=<your-key>
# 本地 Ollama 模型
aider --model ollama/qwen2.5-coder:32b
# Gemini
aider --model gemini/gemini-2.5-pro
四、核心功能详解
4.1 多文件编辑与上下文管理
# 启动时指定要编辑的文件
aider src/main.py src/utils.py
# 运行中动态添加/移除文件
/add src/new_module.py # 添加文件到聊天
/drop src/old_file.py # 从聊天移除(不删除文件)
# 只读文件——提供上下文但不允许修改
/read README.md docs/api.md
4.2 Architect 模式(架构师模式)
aider --architect --model o3 --editor-model sonnet
这启动了一个双模型流水线:
架构师模型( --model):分析需求,设计修改方案,不直接碰代码编辑模型( --editor-model):按架构师的方案执行实际代码修改
适用于复杂重构、跨模块修改等需要"先想清楚再动手"的场景。排行榜上 o3 (high) + gpt-4.1 的 architect 组合能达到 78.2% 的通过率。
4.3 自动 Lint 和测试
# .aider.conf.yml
auto-lint: true
auto-test: true
lint-cmd:
- "ruff check {file_list}" # Python
- "Rsc ript -e 'lintr::lint(\"{file_list}\")'" # R
test-cmd: "pytest tests/"
每次 AI 修改代码后,Aider 自动运行 lint 和测试。如果失败,会把错误信息反馈给 LLM 让它修复,形成自动修复循环。
4.4 语音输入
aider --voice-language zh # 中文语音输入
支持 wav/webm/mp3 格式(后两者需 ffmpeg),可通过 --voice-input-device 指定麦克风。让你用嘴"说"出代码修改需求。
4.5 多模态输入
在聊天中可以直接:
粘贴图片:截图 UI 让 Aider 分析并生成对应的前端代码 提供 URL:Aider 自动抓取网页内容作为参考( --detect-urls默认开启)添加图片文件: /add screenshot.png
4.6 IDE 注释工作流(Watch Files 模式)
aider --watch-files
启动后 Aider 监视文件变化。你在编辑器里写注释:
# TODO: aider 请把这个函数重构为使用异步 IO
async def fetch_data(url):
...
保存文件后 Aider 自动检测到注释,执行指令,完成后删除注释并提交。这个工作流让你不离开编辑器就能使用 Aider。
4.7 浏览器界面
aider --gui # 或 --browser
在终端里运行 Aider,但通过浏览器窗口交互,获得更好的阅读体验。
4.8 单次执行模式
# 直接给一条指令,执行完退出
aider -m "给所有函数添加类型注解"
# 从文件读取指令
aider -f refactor_plan.txt
# 只生成提交信息然后退出
aider --commit
五、支持的 LLM 提供商
Aider 支持 15+ 个提供商,几乎覆盖了所有主流 API:
| 提供商 | 代表模型 |
|---|---|
| Anthropic | Claude 3.7 Sonnet, Claude Opus |
| OpenAI | o3, o4-mini, GPT-4.1, GPT-4o |
| DeepSeek | R1, V3 |
| Gemini 2.5 Pro | |
| xAI | Grok 4 |
| Ollama(本地) | 任意本地模型(如 Qwen2.5-Coder) |
| OpenRouter | 聚合多模型,部分免费 |
| 其他 | Azure, Vertex AI, Bedrock, Cohere, GROQ, LM Studio, GitHub Copilot |
还支持任何兼容 OpenAI API 格式的自定义端点,通过 --openai-api-base 配置。
5.1 模型排行榜
Aider 维护了公开的代码编辑基准测试(225 道 Exercism 练习题,覆盖 C++/Go/Java/JS/Python/Rust),每次给模型两次机会。当前(2026 年中)头部排名:
| 排名 | 模型 | 正确率 | 单次成本 | 编辑格式 |
|---|---|---|---|---|
| 1 | gpt-5 (high) | 88.0% | $29.08 | diff |
| 2 | o3-pro (high) | 84.9% | $146.32 | diff |
| 3 | gemini-2.5-pro (32k think) | 83.1% | $49.88 | diff-fenced |
| 4 | grok-4 (high) | 79.6% | $59.62 | diff |
| 5 | o3 + gpt-4.1 (architect) | 78.2% | $17.55 | architect |
性价比之选:gpt-5 (low) 以 $10.37 达到 81.3%,DeepSeek V3 则更便宜且表现不俗。
六、R 语言使用指南
Aider 对 R 有良好的原生支持,识别 .R 和 .Rmd 文件。几个实用场景:
6.1 数据分析脚本开发
cd ~/my-r-project
aider analysis.R dataCleaning.R --model deepseek
在对话中用中文直接说需求:
请把 analysis.R 中的 lm() 回归替换为 glm(),加入 family = binomial,
并添加模型摘要的输出到控制台
6.2 R Markdown 文档
aider report.Rmd
Aider 能理解 R Markdown 的结构(YAML 头、代码块、Markdown 文本),可以:
修改代码块中的 R 代码 调整文档结构和文字 添加新的分析章节
6.3 与 R 生态的 lint 集成
# .aider.conf.yml
lint-cmd:
- "Rsc ript -e 'lintr::lint(\"{file_list}\")'"
七、常用斜杠命令(Slash Commands)
在 Aider 聊天中输入 / 可查看所有命令:
| 命令 | 功能 |
|---|---|
/add <file> |
将文件加入聊天(可编辑) |
/read <file> |
将文件加入聊天(只读) |
/drop <file> |
从聊天移除文件 |
/diff |
查看当前未提交的变更 |
/commit |
手动触发提交 |
/undo |
撤销最后一次 AI 修改(git reset) |
/clear |
清空聊天历史 |
/tokens |
显示当前 token 使用量 |
/help |
帮助信息 |
/quit |
退出 |
八、与其他 AI 编程工具的对比
| 特性 | Aider | Claude Code | Cursor | GitHub Copilot |
|---|---|---|---|---|
| 运行环境 | 终端 | 终端 | IDE(VS Code) | IDE 插件 |
| 开源 | ✅ Apache 2.0 | ❌ | ❌ | ❌ |
| 模型选择 | 任意模型 | 仅 Claude | 限定几个 | 限定几个 |
| 自动 Git 提交 | ✅ 原子提交 | ✅ | 部分 | ❌ |
| 仓库地图 | ✅ 图排序算法 | ✅ | ✅ | 部分 |
| 本地模型 | ✅ Ollama 等 | ❌ | ❌ | ❌ |
| 架构师模式 | ✅ 双模型 | ❌ | Agent 模式 | ❌ |
| 语音输入 | ✅ | ❌ | ❌ | ❌ |
| 价格 | API 费用自付 | $20/月起 | $20/月 | $10/月 |
Aider 的独特优势:模型自由度最高(可以用 DeepSeek、本地 Ollama 等低成本方案)、完全开源透明、终端原生适合 SSH 远程开发、原子 Git 提交保持仓库整洁。
九、局限性与注意事项
需要 Git 仓库:Aider 强依赖 Git,所有修改通过 git diff 追踪,非 Git 项目无法使用 模型能力门槛:低于 GPT-3.5 水平的模型难以正确返回结构化编辑,排行榜上低于 50% 的模型体验较差 上下文窗口限制:单次加入聊天的文件总量受模型上下文窗口约束,超大单文件可能需要拆分 发布节奏放缓:社区在 GitHub Issue #4584 中讨论了 2025 年末至 2026 年初版本发布速度下降的问题 无内置终端执行:Aider 本身不直接运行 shell 命令(不像 Claude Code 有完整的 shell 权限),它聚焦于文件编辑和 Git 操作
十、快速上手推荐配置
对于 R/数据科学用户,推荐的 .aider.conf.yml 起步配置:
# 模型选择——DeepSeek 性价比高,Claude 质量最好
model: deepseek
# 或 model: sonnet
# 中文交互
chat-language: zh
commit-language: zh
# Git 行为
auto-commits: true
attribute-co-authored-by: true
show-diffs: true
# 自动 lint
auto-lint: true
# 终端风格
dark-mode: true
pretty: true
# R 项目常用只读文件
# read: data/dictionary.md
# 启动
cd your-r-project
aider analysis.R utils.R report.Rmd
进入聊天后直接用自然语言描述需求即可。Aider 会自动读取仓库地图、理解你的代码结构、生成修改、并创建带语义信息的 Git 提交。


雷达卡




京公网安备 11010802022788号







