🩺 摘要
📝 详情
Aider AI编程进阶:多模型配置、自定义指令和Architect模式实战
省流版: 上篇讲了Aider基础用法,这篇讲进阶——用.aider.conf.yml做精细化配置、搭配多个模型分工(大模型规划+小模型执行)、用--architect做架构先行开发、以及用.aider.rules定义项目专属编码规则。
为什么需要进阶配置?
上篇我们聊了Aider的基础用法。用了两周之后,你会发现:
- 每次启动输一堆参数太烦
- 有些代码风格AI总是不遵守
- 简单任务用Claude Sonnet太贵,复杂任务用小模型又不够聪明
这些问题都可以用配置解决。Aider的灵活度远比你第一眼看到的要高。
一、配置文件:.aider.conf.yml
Aider支持YAML配置文件,可以放在项目根目录或~/.aider.conf.yml。
全局配置文件示例
# ~/.aider.conf.yml
model: claude-sonnet-4
architect: true
auto-commits: true
git-commit-exit-code: true
map-multiplier-no-files: 3
show-diffs: true
edit-format: diff
lint: true
lint-cmd:
- ruff check --fix {filename}
- pyright {filename}
这份配置做到:
- 默认用Claude Sonnet 4——写代码质量最好
- 开启Architect模式——先给方案再写代码
- 自动Git提交——不用手动commit
- 显示改动差异——改了什么一眼知道
- 改完自动Lint——用ruff检查,确保代码风格统一
项目级配置文件
在项目根目录放一份.aider.conf.yml,团队共享:
# .aider.conf.yml
model: deepseek-chat
env-file: .env.aider
# 忽略不需要AI碰的目录
skip-suggestions: true
file-watch: true
watch-files:
- src/**/*.py
- tests/**/*.py
ignore:
- node_modules/
- vendor/
- dist/
- .git/
env-file可以单独管理AI密钥,不跟其他环境变量冲突。
二、多模型分工:一个鲜有人知道的技巧
Aider支持一个隐藏技巧:用不同模型完成不同任务。
思路
- 规划/架构 → 用强模型(Claude Sonnet 4或GPT-4o)
- 执行/实现 → 用性价比模型(DeepSeek或GPT-4o mini)
- 代码审查 → 用另一模型(新鲜视角查漏补缺)
实操
# 用Claude Sonnet做架构设计
aider --model claude-sonnet-4 --architect \
"把现有的Flask API改成FastAPI,画出迁移方案"
# 审阅方案后,用DeepSeek执行
aider --model deepseek-chat \
"按上面的方案开始迁移,一次改一个文件"
为什么要分开? 因为架构设计需要深度推理,但代码实现大部分是模式化转换。用DeepSeek(成本是Claude的1/10)来做实现,能把API消耗降低80%以上。
另一种玩法:用本地模型做简单修改
安装Ollama后:
# 本地模型做简单重构
aider --model ollama/qwen2.5-coder:14b \
"把所有的print改成logging"
完全免费。复杂任务再切回云端模型。
三、自定义编码规则:.aider.rules
这是Aider最被低估的功能。
在项目根目录创建.aider.rules文件,里面的内容会作为系统提示注入到每次AI交互中:
# .aider.rules
rules:
- 使用Python 3.12+ 类型注解
- 所有函数必须有Google风格docstring
- 异常信息必须包含上下文
- 禁止使用wildcard import (from xxx import *)
- 测试必须用pytest,覆盖率80%+
- 数据库迁移文件走Alembic
- API版本号在URL中(/v1/)
- commit message遵循Conventional Commits
然后跟Aider说「加个数据库重试逻辑」——它就会遵循这些规则来写。
规则效果
没有.aider.rules时:
def get_user(id):
return db.query(User).filter(User.id == id).first()
有.aider.rules时:
def get_user(user_id: int, db: Session = Depends(get_db)) -> User | None:
"""根据ID查询用户信息。
Args:
user_id: 用户ID
db: 数据库会话
Returns:
用户对象,未找到返回None
Raises:
DatabaseError: 数据库查询异常
"""
try:
return db.query(User).filter(User.id == user_id).first()
except SQLAlchemyError as e:
raise DatabaseError(f"查询用户失败: user_id={user_id}") from e
不需要你每次重复说「加类型注解」「加docstring」「加异常处理」。规则写一次,AI自动遵守。
四、Architect模式深度使用
--architect模式下,Aider分两步走:
Step 1:架构师AI(默认用最强模型)
输出详细方案,包括文件结构、接口设计、数据流。等你确认。
Step 2:编辑AI(默认用同一个模型)
按方案执行,逐文件修改。
什么时候必须用Architect模式
- 跨多个文件的重构(比如改名、拆分模块)
- 涉及数据库Schema变更(需要先看迁移方案)
- 新功能对现有架构有影响(需要评估)
- 你不确定AI理解是否正确(让它先出方案,你看懂了再动手)
什么时候不用Architect模式
- 修一个小bug——直接改更快
- 加一个简单接口——直接改就行
- 改文档或注释——不需要方案
五、Git集成高级技巧
交互式Rebase
Aider默认改一个功能就commit一次,commit多了你可能会想整理提交历史。
# 让Aider帮你做rebase
aider "把最后5个关于缓存的commit squash成一个"
分支管理
# 让Aider在feature分支上开发
git checkout -b ai-feature/user-cache
aider "给用户模块加上Redis缓存"
自动生成CHANGELOG
aider --git-log 50 "用最近的50个commit生成CHANGELOG.md"
六、生产环境实战:用Aider管理服务器代码
一个很多人没提到的用法:通过Aider管理远程服务器的代码。
# SSH进去后
ssh myserver
cd /var/www/myapp
aider --no-auto-commits --show-diffs
# 临时修bug
"修复订单状态同步delay的问题"
因为Aider在终端运行,ssh上去就能用,不需要在服务器上装VSCode。但是注意:生产环境建议关掉auto-commits,手动review后再commit。
常见进阶问题
Q:Aider怎么处理超大项目?
对于1000+文件的项目,建议:
- 用
--map-multiplier-no-files 3让Aider更依赖地图缓存 - 手动指定文件:
aider src/core/ src/models/ - 把无关目录加到ignore列表
Q:Aider的token消耗大吗?
取决于模型和项目大小。一个典型的中等功能(5-8个文件修改):
- Claude Sonnet 4:约$0.5-1.0
- DeepSeek:约$0.05-0.1
- GPT-4o mini:约$0.02-0.05
强烈建议复杂任务用Claude规划+DeepSeek执行,成本降80%。
Q:Aider能生成测试吗?
可以。在.aider.rules加一条测试规则,然后:
给OrderService写单元测试,覆盖所有public方法
它会自动找测试框架配置、补测试依赖、生成测试代码。
总结
Aider进阶用法的核心就三点:
- 配置文件化——把常用参数写在
.aider.conf.yml里,启动就是最优设置 - 多模型搭配——强模型规划,性价比模型执行,本地模型做简单活
- 规则先行——
.aider.rules定义了AI的编码规范,一次配置,次次受益
用得越久,配置越顺手,AI写出来的代码越接近你团队的风格。
💡 建议收藏本文。 进阶配置不是看一遍就能记住的,遇到大项目重构时翻回来照着配置。
📤 转发给朋友,他肯定会感谢你。 如果你朋友还在用Aider默认配置——他根本不知道自己在错过什么。
📚 AI编码工具系列 ← (一)Aider AI编程助手入门:47K星标的终端AI编程伴侣 → (三)OpenCode vs Aider vs Claude Code:三款终端AI编程助手横评 → (四)AI代码文档自动生成指南 · (五)AI辅助代码迁移实战
💬 评论 (0)