Aider实战:4步安装AI编程助手,命令行写全栈项目
一、为什么你需要 Aider?
你有没有遇到过这种场景:一个简单的 CRUD 接口,切文件、写代码、调格式来回折腾了 20 分钟;或者改一个 Bug,在 5 个文件之间跳来跳去,最后发现少改了一个地方。
传统 IDE 的 AI 补全插件(Copilot、Codeium 等)解决了一部分问题,但它们的模式是 "你写代码,AI 给你补"——本质上你还是那个敲键盘的人。Aider 的思路完全相反:你说需求,AI 直接改你的代码,并且每一步修改都是一次 git commit,随时可以回滚。
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 --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 在对话中内置了一套 斜杠命令,让你随时控制会话:
| 命令 | 作用 | 示例 |
|------|------|------|
| /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 add 和 git 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) 获取最新信息。
更多推荐


所有评论(0)