Aider 终端结对编程必备
想要终端原生 AI 结对编程、每次改动自动 git commit 的开发者,这十个就是顺序:Aider 本体 + 配置 + watch 模式 + 项目规范 + LiteLLM 网关 + 本地模型 + git 工具 + 何时该切别的 agent — 按推荐安装顺序排列。
这个 pack 包含什么
Aider 是祖师爷。Claude Code 之前、Codex CLI 之前、Cursor 的 agent 模式之前 — Paul Gauthier 把 aider 发出来,证明了你能在终端里用 LLM 结对编程,并且每次改动都是一个真正的 git commit。到今天,它依然有所有 agent 里最干净的 commit 日志,以及最广的模型覆盖(任何 LiteLLM 支持的都能用,100+ 家服务商)。
这个 pack 是给那种「听说过 Aider,想认真用一次,但不想用一个周六去看安装视频」的开发者。十个资产,按安装顺序排,从 pip install aider-chat 一路带你到一个真实可用的工作流 — 配置锁死、项目规范自动加载、便宜的备选模型、watch 模式让你用任何编辑器都能触发、git 工具让 commit 真能被审查、再加一份对比指南让你知道什么时候该用 Claude Code 或 Codex 而不是 Aider。
目标读者:终端用得顺手、在真实代码仓库里干活、看重显式 edit + 每改动一个 commit 多于 agent 自由探索。如果你想要自主多步规划,这套不对 — 去装 Claude Code。如果你想要「AI 作为一把精准手术刀,每一刀都有记录」,继续往下看。
推荐安装顺序
- Aider — 终端 AI 结对编程 —
pip install aider-chat,配一个 API key,aider file1.py file2.py跑起来。就这样。整个体验就是:你指定要改的文件、描述要改什么、看 Aider 生成 diff 并自动 commit。五分钟感受这个循环;这个 pack 剩下九个都是让这个循环不那么糙。 - .aider.conf.yml — 生产级 Aider 配置 — 把这个模板放到项目根目录。它会钉住你的默认模型、便宜的 weak model、Aider 每次改动后跑的 lint / test 命令、文件忽略规则、architect / editor 双模型切分。除了 Aider 本体之外杠杆最高的一个文件。不配它你会一直跟默认值较劲。
- Awesome CLAUDE.md — 项目配置最佳实践 — Aider 读
CONVENTIONS.md(或AGENTS.md,或你--read指向的任何文件)跟 Claude Code 读 CLAUDE.md 是一回事。这个 collection 里的套路 — 精简的技术栈说明、硬性禁忌、命名规则 — 全部能直接搬过来。选一个模板,重命名为CONVENTIONS.md,在.aider.conf.yml的read:字段里加上它。 - LiteLLM Proxy — 100+ LLM API 统一网关 — Aider 已经原生支持 LiteLLM,但起一个 proxy server 能多给你三样东西:项目级 key、消费上限、所有调用的统一日志。Proxy 还让你在 Anthropic / OpenAI / OpenRouter / 本地 Ollama 之间切换不用动
.aider.conf.yml。在你第一个 $300 月账单出现之前就装上。 - DeepSeek Coder — 代码专用、可本地推理的模型 — Aider 的
--weak-model是它用来生成 commit message 和处理日常 edit 的便宜模型。DeepSeek Coder 是公认便宜又好用的选择 — 可以走 Ollama 本地跑,也可以走 DeepSeek 官方 API,价格是 GPT-4 的零头。微不足道的钱换显著的质量提升。 - Aider Watch Mode —
# AI:注释触发自动编辑 — 跑aider --watch-files,从此任何编辑器(VS Code、vim、Cursor、Claude Code、JetBrains)都能通过保存一个含# AI:注释的文件来触发 Aider。这一条把「我想留在自己的 IDE 里」这个缺口补上了。Aider 在一个 terminal tab 里跑,你永远不用离开编辑器。 - Git MCP — 给 AI agent 用的版本控制 MCP Server — Aider 每个改动 commit 一次,这是好事。但 commit 历史只有当其他工具能读它时才真正有用。Git MCP 把本地 repo 暴露给任何支持 MCP 的 agent(Claude Code / Cursor / Gemini CLI),它们就能看到 Aider 刚干了什么、基于这些 commit 推理。和第 10 个对比指南里的多 agent 套路完美配合。
- Lazygit — 简单的终端 git UI — Aider 每改一次 commit 一次,理论上很美,实际操作里你会想在 push 前把 12 个微 commit 压成 1 个像样的 PR commit。Lazygit 的交互式 rebase 是不出终端最快的办法。在 base commit 上按
R、把那些 commit 标成squash、写个干净的 message。20 秒搞定 vs 2 分钟跟git rebase -i的 flag 较劲。 - tmux — 终端复用器 — Aider 在一个 pane,测试 runner 在另一个 pane 看着文件,server 日志在第三个。整个 Aider 体验,一旦你停止 alt-tab,会瞬间提升 3 倍。Detach session,明天回来,模型上下文虽然没了,但 Aider 会重新读文件,你立刻回到原位。
- AI Coding Agent Comparison 2026 — 完整对比指南 — 当 Aider 用着觉得不对劲的时候读这个。这种时刻一定会有 — 跨文件大重构、还不知道该改哪些文件的探索性工作、任何需要 shell 之外工具调用的活。这份指南告诉你什么时候该切 Claude Code(agent 自由探索)、Codex CLI(自主任务)或 Cursor(IDE 集成)。Aider 是精准工具,不是瑞士军刀。
它们怎么协同
Aider (#1)
│
└─ edit 循环:指定文件 → 描述改动 → diff → commit
│
.aider.conf.yml (#2)
│
├─ 钉住主模型 + weak model
├─ 改动后跑 lint + test
└─ 加载 CONVENTIONS.md
│
CONVENTIONS.md(来自 Awesome CLAUDE.md #3)
│
└─ 项目记忆,Aider 每个 session 自动读
│
LiteLLM Proxy (#4)
│
├─ 统一模型网关
└─ 项目级消费上限
│
DeepSeek Coder (#5)
│
└─ 便宜的 weak model,跑 commit msg + 日常 edit
│
Watch Mode (#6)
│
└─ 任何编辑器 → 保存 # AI: 注释 → Aider 改动
│
Git MCP (#7) + Lazygit (#8)
│
├─ Git MCP:其他 agent 能读 Aider 的痕迹
└─ Lazygit:push 前把微 commit 压成大 commit
│
tmux (#9)
│
└─ Aider + 测试 + 日志 同一个窗口里
│
对比指南 (#10) — 知道什么时候该换别的工具。
承重墙是 Aider + .aider.conf.yml + CONVENTIONS.md 这三个。其他全是升级。如果你只有 15 分钟:装 #1、放上 #2、指向一个小小的 CONVENTIONS.md,跑起来。
你会遇到的取舍 — Aider vs Claude Code vs Codex CLI
- Aider vs Claude Code — Aider 是显式的:你说「改这 3 个文件」,它就只动这 3 个。Claude Code 是 agent 式:你描述任务,它决定动哪些文件、跑哪些工具、自我迭代。Aider 在精准度和 git 卫生上赢(每个 edit 都是一个能 revert 的真 commit)。Claude Code 在探索性工作和多步任务上赢。Aider 适合一句话能说清的精确改动;Claude Code 适合你本来要花 20 分钟去找文件的情况。
- Aider vs Codex CLI — Codex CLI 是 OpenAI 的终端 agent — 心智模型更接近 Claude Code(自主、agent 式)。Aider 根本上不一样:人驱动、文件作用域、commit-per-edit。如果你想用 OpenAI 模型 + Aider 的纪律,可以让 Aider 通过 LiteLLM 路由到 GPT-4o,拿到大部分 Codex 体验 + 完整 commit 日志。如果你想要 Codex 那种自主感,Aider 给不了。
- architect / editor 双模型切分 — Aider 的杀手锏,大多数人都跳过了:
architect_model: o1(或 Claude Opus)做规划,editor_model: claude-sonnet(或 DeepSeek Coder)做实际 diff。Architect 慢而便宜地规划;editor 快而便宜地编辑。质量上升、成本下降。第 2 个模板里这个已经预配好了。 - commit-per-edit vs feature commit — Aider 默认每个改动一个 commit,如果你习惯打磨 PR 级 commit,会觉得吵。两条路:(a) Lazygit (#8) push 前 squash;(b)
--no-auto-commit手动 commit。大多数人选 auto-commit + squash,因为出问题时 per-edit 历史让你能git bisectAI session — 这个价值无可替代。
常见踩坑
- 一次 session 烧掉 $50 — Aider 每轮把整个文件(或整个 repo map)发出去。
.aider.conf.yml里没设weak_model的话,每次生成 commit message 都用你那个贵模型。开始之前就配好。在 Aider 里看/tokens— 它会告诉你当前上下文的成本。 - Edit 模式选错(whole / diff / udiff / architect 搞不清) — Aider 有多种 edit 格式,每个模型挑一个。如果 edit 失败(「diff not applied」),看
--edit-format。Sonnet 跟diff-fenced最配;o1 偏好architect模式(先规划再让便宜的 editor 模型写 diff)。官方的模型推荐看一次,以后再也别想。 - auto-commit 把历史灌满垃圾 — 是的,默认 Aider 啥都 commit。解法不是
--no-auto-commit;是 PR 时的纪律。用 Lazygit (#8) 把 session 压成一个 conventional commit。或者搭个 pre-push hook,发现未 squash 的 AI commit 超过 N 个就警告。 - 忘了
/add和/drop— Aider 只动你 add 过的文件。把整个 repo add 进来上下文爆炸;add 太少又会跳过需要改的文件。/add file.py和/drop file.py大胆用。repo map(默认自动开启)通常足以让 Aider 知道有哪些东西,不用真的把所有文件 add 进来。 - 把 watch mode 当 Cursor 替代品 — 它不是。Cursor 在编辑器里 inline 补全;Aider watch mode 要你保存一个
# AI:注释、等 diff。心智模型不同。如果你想要「AI 跟着你打字一起打」,用 Cursor 或 Copilot。如果你想要「我描述要啥、你精准做出来」,Aider watch mode 才是那个工作流。
10 个资产打包就绪
常见问题
都有 Claude Code 和 Cursor 了,为啥还要用 Aider?
三个原因。(1) git 纪律:每个改动都是真 commit。出问题能 bisect,能精确 revert 单句改动。没有其他 agent 做得这么干净。(2) 模型覆盖:LiteLLM 支持的全能用(100+ 服务商,包括本地 Ollama)— Claude Code 锁 Anthropic、Cursor 一定程度上锁模型。(3) 作用域显式:你告诉 Aider 改哪些文件,它就只动那些。这种可预测性是 agent 式工具给不了的。Aider 适合你明确知道要改什么、想要干净审计痕迹的时候;不适合「去探索一下代码库自己想办法」。
每个 edit 都 auto-commit,会不会 token 烧穿?
Auto-commit 本身是本地的 — 零 token 成本(就是 git commit)。烧 token 的是 commit message 生成,默认走你的主模型。修法:在 .aider.conf.yml 里设 weak_model: deepseek-coder(或任何便宜模型),Aider 就把 commit message 路由过去。配上 architect_model 做规划 + editor_model 写 diff,你能用一杯咖啡的钱让 Aider 跑一整天。第一个月没做这种切分,是所有人共同的觉醒时刻。
Watch mode (#6) 能配 VS Code / Cursor / Claude Code 吗?
能 — 编辑器无关。Watch mode 是 tail 磁盘上的文件。保存任何包含 # AI: <指令> 注释(JS / Go 用 // AI:、问题用 # AI?)的文件,Aider 都会接住。vim / VS Code / Cursor / Claude Code edit 模式 / JetBrains / 甚至 nano,全都行。唯一要求是你的编辑器保存时写盘(大多数都是)。你甚至可以让 Aider 在一个 tmux pane 跑,Claude Code 在另一个 pane 跑 — 它们对同一个 git 树共存得很好,配上 Git MCP (#7) 之后 Claude 还能看到 Aider 的 commit。
Aider 已经原生支持 LiteLLM 了,为啥还要装 LiteLLM Proxy (#4)?
Aider 把 LiteLLM 当库用,对一个用户够了。Proxy server 多给你三样 Aider 单独给不了的:(a) 跨多个工具共享的限速和消费上限(Aider + Claude Code + Cursor 全走同一个预算);(b) 跨整个 stack 所有 LLM 调用的统一日志 — 调试成本暴涨时无可替代;(c) 项目级 API key,能撤销。如果你是单兵只用 Aider,可以跳过 proxy。如果你还装了任何别的 AI 工具,proxy 第一周就回本。
Aider 处理大文件会崩 / 丢上下文。怎么办?
三招。(1) session 中 /drop 不用的文件 — Aider 每轮都把 add 过的文件全文塞进上下文,丢掉一个不再需要的 2000 行文件能立刻降本提质。(2) 用 repo map 代替全 /add — Aider 自动给整个 repo 建一个 tree-sitter 符号映射、按需喂给 Claude / GPT 相关片段;你只 /add 真在改的文件。(3) Architect 模式(architect_model: o1)— o1 先用文字规划改动,然后便宜的 editor 模型只对规划里提到的文件写 diff。处理「跨 8 个文件的大重构」这类不爆上下文的最干净办法。