这篇讲什么
30 分钟内把 Aider 的终端 AI 编程循环跑起来。Aider 是 CLI——cd 进 git repo、跑 aider、在 shell 里对话,每次改它都给你看 git diff、每个接受的改都自动 commit,全程不开浏览器。这篇讲怎么把这个循环跑顺,不是把所有 flag 抠一遍。它治的是这种痛:装上 Aider、贴 API key、要它”重构一下”、看到一堆 diff hunk 就吓跑——没意识到精髓就是”每次改都让你 accept / reject”。
核心概念:
- 每次改都是一个 git commit:每个接受的改都是单独 commit,可以
/undo。 /add和/drop:上下文你手动控——Aider 不会把整个仓库 index 进去。- Architect 模式:先用强模型出计划,再让 editor 模型写代码。
这篇适合谁看
活在终端里的开发者、SSH 进服务器干活的人、机器没 GUI 的人、或者就是不想给每个东西都装一个 Electron 应用的人。也适合想让 AI 编程循环可脚本化的人——Aider 有 headless 模式可以批量跑。想要图形 Composer 体验的,Cursor 新手 30 分钟跑通完整工作流是更好起点。
什么时候适合用
范围紧、想完全控上下文的改动——小重构、加测试、修一个具体 bug。也适合 CI 流:pre-commit 清理、脚本化迁移。和图形 agent 比,“探索代码库再提方案”的任务它弱,因为 Aider 等你 /add 把文件加进来。长时 shell agent 会话用 Claude Code 更合适。
开始前准备
- Python 3.10+。
python --version确认。 - 一个 git repo、工作区干净。Aider 每次改都 commit,未提交的改会和它的 commit 混在一起。
- 至少一家 provider 的 API key:Anthropic(写代码首选)、OpenAI,或本地模型走 Ollama / LM Studio。
- 选好一个小目标:改一个函数名、给一个模块加测试、修一个 bug。别选”重构项目”。
具体步骤
- pip 装。用 virtualenv 或 pipx,别污染系统 Python:
pipx install aider-chat
# 或:pip install aider-chat
aider --version
- API key 写进环境变量。写到 shell rc 里持久化:
export ANTHROPIC_API_KEY=sk-ant-...
# 或:export OPENAI_API_KEY=sk-...
- 在仓库根用指定模型启动。代码编辑 Sonnet 4.6 是安全默认;架构难活 architect 用 Opus 4.7:
cd ~/code/myproject
aider --model anthropic/claude-sonnet-4-6 \
--architect --editor-model anthropic/claude-sonnet-4-6
- 用
/add加你想让它改的文件。别一股脑全加——挑这次任务相关的 1-5 个:
/add src/auth/login.ts
/add src/auth/login.test.ts
- 用大白话提一个小的具名改动。Aider 会回 diff、应用、commit。下一轮 prompt 之前看一眼 diff——那就是你的复核窗口。
- 错了就
/undo撤上一次 commit。某文件不该在上下文里了,/drop src/auth/login.test.ts拿掉。想看当前 diff 再决定继续,/diff。 - 干完
/exit。仓库里多了一串小 commit,一次接受一个。想 PR 历史干净就 squash。
一段”逼它说实话”的 prompt
Aider 越紧的 prompt 越好用。存一份模板:
你在改我 /add 进来的文件。约束:
- 只做满足要求的最小改动。
- 不要碰我没 /add 的文件。需要别的文件,先问。
- 每次改后用一句话写它依赖的假设。
- 被改的函数有测试就更新;没有就说"没加测试;建议加 X"。
任务:<一个具体改动>
“先问再加文件”这一行很关键——不加这句 Aider 偶尔会对没在上下文的文件下手,produced 的 diff 直接打不上。
完成后检查
- Aider 写的每个 commit message 读得通、写得对。不对就
git commit --amend推前修。 - 每个 commit 的 diff 小到 reviewer 两分钟能读完。
- 每个 commit 后测试都过,不只是最后过。非琐碎改动在 Aider 轮次之间跑测试。
- 没
/add的文件没被动过。git log --stat验。 - Architect 出的是真能跟着干的计划,不是含糊的”考虑重构”。差了就把 architect 的 prompt 也紧一紧。
怎么复用这套流程
- 常用启动命令做成 shell alias:
alias ai='aider --model anthropic/claude-sonnet-4-6 --architect'。 - 项目根放
aider.conf.yml:默认模型、忽略路径、editor 模型。提交,让队友继承。 - 重复任务(跑测试、格式化)用
--lint-cmd和--test-cmd,Aider 能自己验改动。 - CI 里一次性跑用
--message走非交互——改完 commit 退出。
建议的操作流程
/add 文件 → 提紧的改动 → 看 diff → 收下或 /undo → 重复 → /exit → 需要就 squash。
容易踩的坑
- 把整个仓库
/add进来。Aider 不是 indexer;上下文撑爆了反而提案质量更差。 - 不用 git。Aider 要 git;没有就丢了
/undo和 per-edit commit。 - 工作区脏着就跑。你没提交的改和 Aider 的 commit 混一起,diff 没法看了。
- 一轮要它做巨型重构。Architect 模式能缓解但 editor 模型在超宽 diff 上还是吃力——拆开。
- Architect 模式用 GPT-5.4。规划用 GPT-5 或 Opus 4.7,编辑才用快模型。
- 想批量复核却忘了
--no-auto-commits。默认每次都 commit,挺好直到你想每个改前再 amend 一下。
FAQ
- Aider 能用本地模型吗?: 能,Ollama 或任何 OpenAI 兼容端点,
--openai-api-base指过去。质量不如前沿模型,循环一样。 - 能在 CI 里 headless 跑吗?: 能——
aider --message "任务" --yes非交互、跑完退出。 - 为啥 Aider 偶尔提的改打不上?: 多半是引了没
/add的文件,或 diff 格式被打乱。把文件显式加进来再提一次。 .aider.conf.yml是用户级还是仓库级?: 都行——仓库级覆盖用户级。团队默认配置进仓库 commit。