Aider 怎么配置 API 地址?2026 最新教程,3 种方案实测都能跑通

5 阅读1分钟

上周三我把本地的 Aider 从 0.82 升到了 0.89,结果一跑直接报错:

Error: Could not connect to https://api.openai.com/v1/chat/completions
Connection timed out after 30000ms

老问题了。折腾了大半天,把官方直连、环境变量、配置文件三种方式都试了一遍,顺便把 Claude Opus 4.7 和 GPT-5.5 的接入也一并搞定了。这篇把我踩过的坑和最终能跑通的配置全部贴出来,照着抄就行。

Aider 配置 API 的核心思路就一句话:通过 --openai-api-base 参数或环境变量 OPENAI_API_BASE 指定你的 API 地址,再填上对应的 Key,就能接入任何兼容 OpenAI 协议的服务。

先说结论

三种方案我都跑通了,适用场景不太一样:

方案配置方式适合谁切换模型方便度
命令行参数每次启动时带参数临时测试、偶尔用一下一般,每次都要敲
环境变量写进 .bashrc / .zshrc长期固定用一个服务改一次管一年
.aider.conf.yml项目根目录放配置文件团队协作、多项目最灵活,按项目切

我自己最后选了方案三,因为手头有三四个项目,有的用 Claude Opus 4.7 写后端逻辑,有的用 GPT-5.5 做前端组件生成,一个配置文件搞定。

环境准备

  • Python 3.10+(我用的 3.12.4)
  • Aider 0.89+(pip install aider-chat --upgrade
  • 一个能用的 API Key

确认 Aider 版本:

aider --version
# aider 0.89.2

方案一:命令行参数直接传

最简单粗暴,适合你就想快速验证能不能通。

aider --openai-api-key sk-your-key-here \
 --openai-api-base https://api.ofox.ai/v1 \
 --model openai/claude-sonnet-4.6

跑起来之后 Aider 会输出:

Model: openai/claude-sonnet-4.6 with diff edit format
Git repo: .git with 47 files

看到这个就说明连上了。

但这种方式挺烦人的,每次开终端都要敲一长串。Key 直接暴露在命令行历史里,history 一翻就看到了,多人共用机器的话有安全隐患。

方案二:环境变量

写进 shell 配置文件,一劳永逸。

# 编辑 ~/.zshrc 或 ~/.bashrc
export OPENAI_API_KEY="sk-your-key-here"
export OPENAI_API_BASE="https://api.ofox.ai/v1"

保存后 source ~/.zshrc,然后直接:

aider --model openai/claude-opus-4.7

不用再传 base 和 key 了。

这里有个坑我踩了半小时——如果你之前装过 Aider 的旧版本(0.7x 之前),环境变量名可能是 OPENAI_API_BASE_URL(多了个 _URL),新版已经统一成 OPENAI_API_BASE 了。两个都设了的话,新版优先读不带 _URL 的那个。我当时两个都设了还设成了不同的地址,debug 了好一会儿才发现。

方案三:.aider.conf.yml 配置文件(推荐)

这是我最终用的方案。在项目根目录创建 .aider.conf.yml

# .aider.conf.yml
openai-api-key: sk-your-key-here
openai-api-base: https://api.ofox.ai/v1
model: openai/claude-sonnet-4.6

# 可选配置
auto-commits: true
dark-mode: true
stream: true

然后在这个目录下直接 aider 就行,零参数启动。

多项目的话,每个项目放一份不同的配置。比如我的后端项目用 Opus 4.7:

# backend-service/.aider.conf.yml
openai-api-key: sk-your-key-here
openai-api-base: https://api.ofox.ai/v1
model: openai/claude-opus-4.7
edit-format: diff

前端项目用 GPT-5.5:

# frontend-app/.aider.conf.yml
openai-api-key: sk-your-key-here
openai-api-base: https://api.ofox.ai/v1
model: openai/gpt-5.5
edit-format: whole

切项目就是 cd 一下的事。

整体调用链路

画个图方便理解,Aider 的请求到底走了什么路径:

sequenceDiagram
 participant Dev as 你的终端
 participant Aider as Aider CLI
 participant Gateway as API 聚合网关
 participant Model as 目标模型

 Dev->>Aider: aider 启动
 Aider->>Aider: 读取 .aider.conf.yml
 Aider->>Gateway: POST /v1/chat/completions
 Note over Aider,Gateway: base_url + API Key
 Gateway->>Model: 转发请求到 Claude/GPT
 Model-->>Gateway: 流式返回
 Gateway-->>Aider: SSE stream
 Aider-->>Dev: 实时显示 + 自动编辑文件

踩坑记录

坑 1:model 名称前缀

Aider 0.89 要求模型名带 provider 前缀。直接写 claude-sonnet-4.6 会报:

Error: Unknown model: claude-sonnet-4.6
Did you mean one of these?
 openai/claude-sonnet-4.6
 anthropic/claude-sonnet-4.6

用兼容 OpenAI 协议的聚合服务(OpenRouter、ofox.ai 这类),前缀统一用 openai/

坑 2:stream 模式下的 JSON 解析错误

4 月 22 号那天我用 Claude Opus 4.7 生成一个比较长的 Python 文件(大概 400 行),Aider 突然断了:

json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 4096

查了一下是 stream 响应在某个 chunk 边界刚好切到了 JSON 中间。解决办法是在配置里加一行:

stream: false

关掉流式传输就好了。代价是响应不再实时显示,要等模型全部生成完才一次性输出。大部分场景无所谓,反正 Aider 主要是改文件,又不是聊天。

坑 3:.env 文件不生效

有人习惯用 .env 文件管理环境变量。Aider 本身不会自动读 .env,你得配合 direnv 或者在启动前手动 source .env。我一开始以为放了 .env 就行,结果 Key 一直没传进去,报 401:

openai.AuthenticationError: Error code: 401 - {'error': {'message': 'Invalid API key'}}

后来老老实实用 .aider.conf.yml,省心。

坑 4:代理和 base_url 冲突

如果你系统设了 HTTP_PROXYHTTPS_PROXY,可能会和 openai-api-base 打架。我之前 HTTPS_PROXY 指向了一个已经过期的地址,请求先走代理再转 base_url,直接 timeout。把代理环境变量清掉或者加 NO_PROXY 排除你的 API 域名就行:

export NO_PROXY="api.ofox.ai"

不同模型的实测效果

既然都配好了,顺手测了一下几个模型在 Aider 里的表现。任务是给一个 FastAPI 项目加一个带分页的用户列表接口:

模型首次响应时间生成代码行数一次通过(无需手动修)体感评价
Claude Opus 4.7约 3.8s127 行逻辑最严谨,连异常处理都写了
Claude Sonnet 4.6约 1.9s89 行速度快,够用,性价比最高
GPT-5.5约 2.4s102 行❌ 分页参数校验缺了代码风格好看但细节差一点
DeepSeek V3.2约 2.1s95 行出乎意料的稳

Sonnet 4.6 的速度确实快,日常写代码用它就够了。Opus 4.7 留给复杂重构场景。

小结

配置 Aider 的 API 地址就三步:选一种配置方式(推荐 .aider.conf.yml),填好 openai-api-base 和 Key,模型名记得带 openai/ 前缀。踩坑最多的地方反而是环境变量冲突和 stream 模式的兼容问题,上面的报错信息都贴了,遇到了直接搜就能找到对应的解法。

关于 edit-formatdiff 还是 whole,我也没完全确定哪个对所有模型都最优。目前的经验是 Claude 系列用 diff 更稳,GPT 系列用 whole 出错少一些,你可以自己试试。