一、为什么你需要 Aider?

你有没有遇到过这种场景:一个简单的 CRUD 接口,切文件、写代码、调格式来回折腾了 20 分钟;或者改一个 Bug,在 5 个文件之间跳来跳去,最后发现少改了一个地方。

传统 IDE 的 AI 补全插件(Copilot、Codeium 等)解决了一部分问题,但它们的模式是 "你写代码,AI 给你补"——本质上你还是那个敲键盘的人。Aider 的思路完全相反:你说需求,AI 直接改你的代码,并且每一步修改都是一次 git commit,随时可以回滚。

Aider Logo

Aider 是一个终端里的 AI 结对编程工具,由 Paul Gauthier(前 Inktomi CTO)一人独立开发,GitHub 已斩获 **42,000+ Star**,Apache 2.0 开源协议。

它的核心能力可以用一句话概括:在终端输入自然语言,AI 直接修改你本地 git 仓库里的多个文件。它支持 GPT-4o、Claude Sonnet、DeepSeek、本地 Ollama 模型等几乎所有主流 LLM,覆盖 Python / JavaScript / TypeScript / Go / Rust / Java 等 100+ 编程语言。

更关键的是它和 Git 的深度绑定——每次 AI 修改代码都会自动产生一个独立 commit,你可以像翻书一样回看每一次变更。代码改坏了?一个 /undo 就回退。这个设计直接消除了"AI 瞎改代码"的恐惧心理,让你敢把真实项目的文件交给它编辑。

和同类工具对比,Aider 有几个不可替代的优势:

  • **Copilot / Cursor**:嵌入 IDE 的 Tab 补全,你仍是主要编辑者;Aider 是 AI 直接动手改文件
  • **ChatGPT / Claude 网页版**:需要手动复制粘贴代码,且无法感知项目全貌;Aider 能读取整个 git 仓库的上下文
  • **Claude Code / Codex CLI**:同为终端 AI 编程工具,但 Aider 开源更早、社区更活跃、模型兼容性更广

下面,我们从零开始,4 步把它装好、配好、跑起来。


二、环境准备

在开始前,确保你的机器满足以下条件:

| 依赖 | 版本要求 | 检查命令 |

|------|---------|---------|

| Python | ≥ 3.9(推荐 3.10+) | python --version |

| Git | 任意版本 | git --version |

| LLM API Key | OpenAI / Anthropic / DeepSeek | 去官网申请 |

💡 **没有 API Key 怎么办?** Aider 内置了 OpenRouter 接入能力,首次启动时会引导你使用 OpenRouter 的免费/付费通道,无需提前准备 Key。


三、步骤一:安装 Aider

Aider 提供了多种安装方式,推荐使用 pip 一键安装(Windows / macOS / Linux 通用)。

# 推荐方式:pip 直接安装
python -m pip install -U --upgrade-strategy only-if-needed aider-chat

运行结果:

Collecting aider-chat
  Downloading aider_chat-0.77.0-py3-none-any.whl (12.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.8/12.8 MB 8.2 MB/s
Collecting diskcache>=5.6.3
  Downloading diskcache-5.6.3-py3-none-any.whl (45 kB)
Installing collected packages: diskcache, aider-chat
Successfully installed aider-chat-0.77.0 diskcache-5.6.3

安装完成后验证:

aider --version

运行结果:

aider 0.77.0

🔧 **备选方案**:如果你习惯使用虚拟环境隔离依赖,可以用 `pipx install aider-chat` 或 `uv tool install aider-chat@latest`,效果相同但不会污染全局 Python 环境。


四、步骤二:配置 API 密钥

Aider 本身不包含 AI 模型,它需要连接到你选择的 LLM 服务。以下是三种主流配置方式:

方式一:环境变量(推荐)

# Linux / macOS
export ANTHROPIC_API_KEY="sk-ant-api03-your-key-here"

# Windows PowerShell
$env:ANTHROPIC_API_KEY = "sk-ant-api03-your-key-here"

方式二:命令行参数

# 使用 Claude Sonnet(推荐,性价比最高)
aider --model claude-sonnet-4-6 --api-key anthropic=sk-ant-api03-your-key

# 使用 GPT-4o
aider --model gpt-4o --api-key openai=sk-your-openai-key

方式三:.env 文件(持久化)

在项目根目录或 ~/.aider/ 下创建 .env 文件:

# ~/.aider/.env
ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
# 或者
OPENAI_API_KEY=sk-your-openai-key-here

⚠️ **安全提示**:务必把 `.env` 加入 `.gitignore`,不要在公开仓库中暴露 API Key。

Aider 支持的主流模型

此时运行 aider --list-models openai/ 可以看到所有可用模型列表:

aider --list-models openai/

运行结果(节选):

openai/gpt-4o              GPT-4o
openai/gpt-4o-mini         GPT-4o Mini
openai/gpt-4-turbo         GPT-4 Turbo
openai/o1                  o1
openai/o3-mini             o3-mini


五、步骤三:启动 Aider 并完成第一个任务

进入任意一个 git 仓库(没有就新建一个),直接运行 aider

# 创建一个测试项目
mkdir my-first-aider && cd my-first-aider
git init

# 启动 Aider(使用 Claude Sonnet)
aider --model claude-sonnet-4-6

运行结果:

──────────────────────────────────────────────────────────
Aider v0.77.0
Main model: claude-sonnet-4-6
Git repo: .git with 0 files
Repo-map: using 1024 tokens, auto-refresh
──────────────────────────────────────────────────────────
> 

看到 > 提示符,说明 Aider 已经在等待你的指令。现在试试第一个任务——让它生成一个 Flask Web 应用:

> 创建一个基于 Flask 的待办事项 API,包含添加、删除、列出三个接口,数据存储在内存中

Aider 会直接生成 app.py

# app.py —— Aider 自动生成的完整代码
from flask import Flask, request, jsonify

app = Flask(__name__)
todos = []
todo_id_counter = 1

@app.route("/todos", methods=["GET"])
def list_todos():
    return jsonify(todos)

@app.route("/todos", methods=["POST"])
def add_todo():
    global todo_id_counter
    data = request.get_json()
    todo = {"id": todo_id_counter, "title": data["title"], "done": False}
    todo_id_counter += 1
    todos.append(todo)
    return jsonify(todo), 201

@app.route("/todos/<int:todo_id>", methods=["DELETE"])
def delete_todo(todo_id):
    global todos
    todos = [t for t in todos if t["id"] != todo_id]
    return jsonify({"message": "deleted"}), 200

if __name__ == "__main__":
    app.run(debug=True)

运行测试:

# 终端1:启动服务
python app.py

运行结果:

 * Serving Flask app 'app'
 * Debug mode: on
 * Running on http://127.0.0.1:5000

# 终端2:测试接口
curl -X POST http://127.0.0.1:5000/todos \
  -H "Content-Type: application/json" \
  -d '{"title": "学习Aider"}'

curl http://127.0.0.1:5000/todos

运行结果:

{"id":1,"title":"学习Aider","done":false}

[{"done":false,"id":1,"title":"学习Aider"}]

每一次修改,Aider 都会自动执行 git commit,你可以随时用 /undo 回滚。


六、步骤四:多文件协作实战

Aider 的核心优势在于多文件协同编辑。假设我们要给上面的待办事项 API 添加一个 HTML 前端页面。

在 Aider 对话中直接说:

> 创建一个 templates/index.html 的前端页面,
  用原生 JavaScript 调用 http://127.0.0.1:5000/todos 接口,
  展示待办列表,支持添加和删除

Aider 自动生成 templates/index.html 并同步修改 app.py 以渲染该模板:

# app.py 新增的模板渲染部分
from flask import render_template  # Aider 自动补充导入

@app.route("/")
def index():
    return render_template("index.html")

<!-- templates/index.html —— Aider 自动生成的前端页面 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>待办事项</title>
    <style>
        body { font-family: Arial, sans-serif; max-width: 600px; margin: 50px auto; }
        .todo-item { display: flex; justify-content: space-between;
                     padding: 10px; border-bottom: 1px solid #eee; }
        button { background: #e74c3c; color: white; border: none;
                 padding: 5px 10px; cursor: pointer; border-radius: 3px; }
    </style>
</head>
<body>
    <h1>📋 待办事项</h1>
    <input type="text" id="titleInput" placeholder="输入新待办...">
    <button onclick="addTodo()" style="background:#2ecc71;margin-left:5px;">添加</button>
    <div id="todoList"></div>

    <script>
        const API = "http://127.0.0.1:5000/todos";

        async function loadTodos() {
            const res = await fetch(API);
            const todos = await res.json();
            document.getElementById("todoList").innerHTML = todos.map(
                t => `<div class="todo-item">
                        <span>${t.title}</span>
                        <button onclick="delTodo(${t.id})">删除</button>
                      </div>`
            ).join("");
        }

        async function addTodo() {
            const title = document.getElementById("titleInput").value;
            if (!title) return;
            await fetch(API, {
                method: "POST",
                headers: {"Content-Type": "application/json"},
                body: JSON.stringify({title})
            });
            document.getElementById("titleInput").value = "";
            loadTodos();
        }

        async function delTodo(id) {
            await fetch(`${API}/${id}`, {method: "DELETE"});
            loadTodos();
        }

        loadTodos();
    </script>
</body>
</html>

重新启动 app.py,打开浏览器访问 http://127.0.0.1:5000,就能看到一个功能完整的待办事项应用了。

Aider 多文件协作示意


七、常用命令速查

Aider 在对话中内置了一套 斜杠命令,让你随时控制会话:

| 命令 | 作用 | 示例 |

|------|------|------|

| /add | 将文件加入上下文 | /add src/api.py |

| /drop | 从上下文移除文件 | /drop src/utils.py |

| /undo | 撤销最后一次 AI 提交 | /undo |

| /diff | 查看最近一次修改的 diff | /diff |

| /run | 执行 shell 命令并查看输出 | /run pytest |

| /commit | 手动提交当前修改 | /commit |

| /voice | 切换到语音输入模式 | /voice |

| /help | 查看完整帮助 | /help |

三种对话模式

# 代码模式(默认):AI 直接修改代码
> /chat-mode code

# 架构师模式:AI 先提方案,你确认后再修改
> /chat-mode architect

# 问答模式:AI 只回答问题,不动代码
> /chat-mode ask


八、进阶配置:自动 Lint 与自动测试

在生产项目中,让 Aider 在每次修改后自动运行 linter 和测试,可以大幅减少引入的 Bug:

# Python 项目:自动 ruff 检查 + pytest 测试
aider --lint-cmd "ruff check --fix" --test-cmd "pytest -x" src/

# 前端项目:自动 ESLint + Jest
aider --lint-cmd "npx eslint --fix" --test-cmd "npx jest" src/

运行效果:

Applied edit to src/api.py
─────────────────────────────────────────────
Running lint: ruff check --fix ............ ✓ passed
Running test: pytest -x .................. ✓ 12 passed
─────────────────────────────────────────────
Committed: "feat: add user authentication middleware"

每次修改 → 自动 Lint → 自动测试 → 测试不通过则自动修复 → 全部通过后才提交。这套流程比很多团队的手动 Code Review 还严格。


九、常见问题与避坑指南

在实际使用过程中,有几个高频踩坑点值得提前了解。

9.1 "No git repo found" 错误

Aider 必须在 git 仓库中运行。如果你忘了 git init,会看到如下提示:

cd my-project
aider

运行结果:

Error: No git repository found.
Aider requires a git repository to track changes.
Please run: git init

解决:先执行 git init,至少做一次 git addgit commit,再启动 Aider。

9.2 API 调用超时或限流

国内网络访问 OpenAI / Anthropic API 可能会遇到连接超时。推荐两个方案:

# 方案1:使用 DeepSeek(国内可直接访问,价格极低)
export DEEPSEEK_API_KEY="sk-your-deepseek-key"
aider --model deepseek --api-key deepseek=$DEEPSEEK_API_KEY

# 方案2:配置代理
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
aider --model claude-sonnet-4-6

9.3 文件太大导致 Token 超限

如果你的项目文件特别大,Aider 会自动用 repo-map 只提取关键符号信息,而非加载整个文件。但有时仍需手动控制:

# 只加载核心文件,忽略工具类和大文件
aider src/main.py src/handlers.py --model claude-sonnet-4-6

会话内也可以用 /drop 移除不需要的文件来释放 token 预算。

9.4 AI 改错了怎么恢复

这正是 Aider 最让人安心的地方:

# 查看 Aider 的所有历史提交
git log --oneline

# 在 Aider 对话中一键回滚最近一次修改
> /undo

# 回滚到指定提交
git reset --hard <commit-hash>

每次修改都是一个独立 commit,commit message 由 AI 自动生成,清晰描述了改了什么。


十、总结

Aider 的核心理念是 "在终端里用自然语言驱动代码变更"——它不是一个代码补全插件,而是一个能听懂需求、直接改代码、并自动管理 Git 历史的 AI 协作者。无论是个人项目快速原型,还是团队开发中的代码重构与测试编写,它都能实实在在地节省时间。

回顾这 4 个核心步骤:

  • **安装**:`pip install aider-chat`,一行搞定
  • **配置**:设置 API Key,支持 OpenAI / Anthropic / DeepSeek / Ollama
  • **首次使用**:在 git 仓库中启动,用自然语言生成完整应用
  • **多文件协作**:让 AI 同时编辑前后端多个文件,保持一致性

对于个人开发者,Aider 是一个 7×24 小时待命的 Code Reviewer + 初级程序员;对于团队,它可以承担大量重复性的 CRUD、重构、测试编写工作。

下一步,建议你把它配到日常项目的 Makefile 里:

# Makefile
.PHONY: aider
aider:
	aider --model claude-sonnet-4-6 \
	      --lint-cmd "ruff check --fix" \
	      --test-cmd "pytest -x" \
	      src/

然后每当需要加功能,一句 make aider,输入你的需求,剩下的交给 AI。


📌 本文完成于 2026-07-08,基于 Aider v0.77.0。由于 AI 工具迭代极快,建议关注 [Aider 官网](https://aider.chat) 和 [GitHub 仓库](https://github.com/Aider-AI/aider) 获取最新信息。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐