genmux API 现已全面开放。 查看文档 →
genmux API

博客

Aider 配 Qwen3-Max 和 DeepSeek:设好 OPENAI_API_BASE 就完事

2 分钟阅读作者 genmux API Team


Aider 是一个结对编程命令行工具,它会直接修改你 git 仓库里的文件,并随手提交。它通过 LiteLLM 对接任何兼容 OpenAI 的接口,所以换成 genmux 只需要改两个变量:设 base URL、设密钥,再给模型 id 加上 openai/ 前缀。这里不涉及工具调用——aider 有自己的编辑格式——所以平台上每个文本模型都能用,真正需要决定的是选哪个模型、用哪种编辑格式。

两个变量加一个前缀

bash
export OPENAI_API_BASE=https://api.genmux.tech/v1
export OPENAI_API_KEY=nb_live_...        # your genmux key
aider --model openai/deepseek-v4-flash

openai/ 前缀告诉 LiteLLM:对 OPENAI_API_BASE 指向的地址使用 OpenAI 的 chat-completions 方言;斜杠后面的部分原样作为 model 传过去。价格表里的任意 id 都可以用:openai/qwen3-max、openai/deepseek-v4-pro、openai/doubao-seed-2-code。

如果你不想每开一个 shell 就导出一遍变量,aider 会读取仓库根目录的 .env 和 ~/.aider.conf.yml:

yaml
# ~/.aider.conf.yml
model: openai/deepseek-v4-flash
edit-format: whole

「unknown model」警告无害

第一次运行会打印类似这样的一行:

Warning for openai/deepseek-v4-flash: Unknown context window size and costs, using sane defaults.

Aider 本地维护着一张模型元数据表(上下文窗口、每 token 价格),用来显示它自己的费用估算,并决定什么时候提醒你对话太长了。它不认识 genmux 的 id,所以退回到保守的默认值。实际请求没有任何变化——模型拿到的仍然是完整上下文——而每次调用的准确扣费在你的 genmux 控制台里,不在 aider 的估算里。如果这条警告让你不舒服,在仓库里放一个 .aider.model.metadata.json 就能把数字教给 aider:

json
{
  "openai/deepseek-v4-flash": {
    "max_input_tokens": 1000000,
    "max_output_tokens": 16384,
    "input_cost_per_token": 0.000000198,
    "output_cost_per_token": 0.000000594,
    "litellm_provider": "openai",
    "mode": "chat"
  }
}

那两个 cost 字段,就是每百万 $0.198 / $0.594 换算成每 token 的形式——和 DeepSeek V4 Flash 页面上显示的是同一组数字。

--edit-format whole 还是 diff

Aider 会让模型以某种格式返回编辑内容,然后由它自己应用。这里要紧的是两种:

  • whole——模型返回它修改的每个文件的完整新内容。稳健到几乎不可能出错:根本没有「应用错」这回事。代价是大文件上的输出 token 更多。
  • diff——模型返回搜索/替换块。输出更省,但如果某个块的「搜索」部分和文件没有逐字节匹配上,就会被拒绝,aider 会重新问一遍。

我们在发布测试中的建议:在 deepseek-v4-flash 和 deepseek-v3 上先用 --edit-format whole,它们永远不会产生匹配不上的块,因为压根没有块。deepseek-v4-pro 和 qwen3-max 处理 diff 很好,文件超过几百行时这么做很划算。如果一次会话里 aider 报「failed to apply edits」超过一次,就换成 whole 继续干活——问题不在模型,在那条精确匹配的规则。

Aider 的架构师模式(--architect)把规划和编辑分给两个模型。在 genmux 上一个不错的搭配是 --model openai/deepseek-v4-pro --editor-model openai/deepseek-v4-flash:Pro 决定改什么,Flash 以三分之一的价格把它写出来。

选哪个模型

模型在 aider 里的定位每 100 万 token 价格(输入 / 输出)
deepseek-v4-flash日常主力:修 bug、写测试、做小功能;100 万上下文装得下整个仓库地图$0.198 / $0.594
qwen3-max需求含糊和较大重构时更强;128K 上下文$1.08 / $5.40
deepseek-v4-pro硬核的多文件改动,架构师模式里的规划者$0.594 / $1.782

三个都支持思维链;aider 自己不会打开它。--reasoning-effort high 会发送 reasoning_effort,genmux 在这些模型上把它映射为打开思维链——推理 token 按输出计费,所以把它用在规划者身上,别用在编辑者身上。

一次 20 万 token 的会话要花多少钱

一次认真的 aider 会话——跨四五个文件的一个功能,外加跑两次测试——大概落在 20 万 token。Aider 每条消息都会重发仓库地图和对话中的文件,所以大部分是 prompt;用 whole 编辑时,输出占比会比聊天类应用更高。就算 17 万 prompt token 加 3 万 completion token:

模型Prompt(17 万)Completion(3 万)整场会话
deepseek-v4-flash$0.034$0.018≈ $0.05
deepseek-v4-pro$0.101$0.053≈ $0.15
qwen3-max$0.184$0.162≈ $0.35

按 Scale 套餐单价折算成积分:4.1 积分≈ $0.05Flash、12.4 积分≈ $0.15Pro、27.6 积分≈ $0.35Qwen3-Max。把 Qwen3-Max 区分开来的是它的输出价格:在模型要重打整个文件的 whole 编辑下,值得换成 diff,或者只把 Qwen 留给思考,而不是留给打字。

流式与用量

Aider 默认使用流式,而 genmux 推送的正是 OpenAI SDK 期待的那种 SSE 结构,所以 diff 会边生成边出现。最后一个分块携带带 cost(单位积分)的 usage(流式下 cost_source: "estimated"——原因见流式那篇)。每一次 aider 请求都是一个 genmux 任务:GET /v1/generations?capability=text.chat 会把它们列出来,这是把一天的 aider 用量和余额对上的可靠办法。

开始使用

两个 export、一个 openai/ 前缀,aider 就通过一把 genmux 密钥跑在 DeepSeek 或 Qwen3 上了。至于确实需要函数调用的 OpenCode,见 OpenCode 配置;所有受支持的客户端都汇总在编程智能体页面,对话接口的说明见文档。

关于作者

作者 genmux API Team — genmux API.

了解我们