【aider】aider 接入 TaoToken 统一 Key 调用 ollama 本地模型
1. 为什么要在 aider 里绕一层 TaoToken 统一 Keyaider 是一个跑在终端里的 AI 结对编程工具你给它一个仓库路径它就能读文件、改代码、跑 git 提交。它默认支持 ollama 本地模型直接aider --model ollama/qwen2.5-coder:latest就能连上本机的 ollama 服务。这个链路在单机、单模型时很舒服但一旦你同时用多个模型、多个项目、多台机器问题就来了每个项目里散落着不同的 base_url、不同的 key、不同的模型名换台机器就得重新配一遍本地模型和云端模型的调用方式还不一样。我试过把 ollama 的地址硬编码在 shell 里结果换了个终端窗口就失效团队里别人 clone 下来也跑不通。后来我把调用链路统一收口到 TaoToken 的 API 通道上aider 只认一个统一的 Key 和一个统一的 base_url至于后面路由到 ollama 本地模型还是别的模型交给配置层决定。这样做的价值在于本地模型调用链路变得可复现——同一份config.toml和settings.json骨架换机器、换项目、换模型都只需要改一个字段。这篇面向的是在终端里用 aider 写代码的本地开发者尤其是那些既想用 ollama 跑本地模型、又想让配置可版本化、可复制的人。下面会给出可直接复制的config.toml与settings.json片段然后一步步验证模型连通最后把常见的报错挨个排掉。核心检索词就三个aider、ollama、本地模型全文围绕它们展开。2. TaoToken 前置拿到统一 Key 与 API 通道在动 aider 的配置之前先把 TaoToken 这边的入口准备好。你需要的是一个 API Key 和一个 base_urlaider 通过 OpenAI 兼容协议去调它再由它路由到你指定的模型。第一步打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册并登录。登录后进控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole 在 API Keys 页面创建一个新的 Key。创建时给它起个能认出来的名字比如aider-local方便以后区分是哪个工具在用。Key 只在创建时完整显示一次复制下来存到安全的地方。第二步确认 API 通道地址。aider 走 OpenAI 兼容接口base_url 填https://taotoken.net/api注意这个地址不带任何查询参数。Key 就是上一步复制的那串。第三步确认你要路由到的 ollama 模型名。在本地终端先跑一下ollama list看看已经拉了哪些模型。比如输出里有qwen2.5-coder:latest那模型名就是它。TaoToken 侧对模型名的映射规则可以在接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc 里查到确认你本地模型对应的调用名。如果你还没装 ollama先去 ollama 官网装好然后ollama pull qwen2.5-coder:latest把模型拉下来。确认ollama serve在跑默认监听127.0.0.1:11434。这一步是本地模型能通的前提别跳过。注意TaoToken 的 Key 不要写进会提交到 git 的文件里。下面配置里我会用环境变量占位实际值放本地。3. 可复制配置config.toml 与 settings.json 骨架aider 的配置分两层~/.aider.conf.yml或项目里的.aider.conf.yml管 aider 自身行为config.toml和settings.json更多是给周边工具链和编辑器插件用的骨架。这里按标题要求给出config.toml与settings.json两份可复制片段再配合 aider 的启动参数把链路串起来。先看config.toml。放在项目根目录或者放到~/.config/aider/config.toml作为全局默认# config.toml # aider 通过 OpenAI 兼容通道接入 TaoToken再路由到 ollama 本地模型 [llm] provider openai base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY model ollama/qwen2.5-coder:latest [llm.params] temperature 0.2 timeout 120 [project] repo . auto_commits true dirty_commits false这里几个字段的作用provider固定openai因为 aider 用 OpenAI 兼容协议base_url指向 TaoToken 的 API 通道api_key_env告诉 aider 从环境变量TAOTOKEN_API_KEY读 Key避免明文model写你要路由的 ollama 模型名。temperature调低一点写代码时输出更稳。再看settings.json这份主要给编辑器插件或包装脚本读字段和上面保持语义一致{ aider: { provider: openai, baseUrl: https://taotoken.net/api, apiKeyEnv: TAOTOKEN_API_KEY, model: ollama/qwen2.5-coder:latest, extraArgs: [--no-auto-commits, --yes-always] }, ollama: { host: http://127.0.0.1:11434, model: qwen2.5-coder:latest } }ollama.host这一段是给本地 ollama 服务留的锚点方便你确认本地服务地址真正走 TaoToken 通道时aider 请求的是baseUrl由 TaoToken 侧完成到 ollama 的路由。两份配置里的模型名要一致否则排查时会分不清是哪一层出的问题。设置环境变量把 Key 注入进去。Linux/macOSexport TAOTOKEN_API_KEY你的KeyWindows PowerShell$env:TAOTOKEN_API_KEY你的Key想持久化就写进~/.bashrc或系统环境变量面板。这一步做完配置层就齐了。4. 启动 aider 并验证模型连通配置就位后进项目目录启动 aider。先确认 ollama 在跑ollama serve另开一个终端cd 到你的代码仓库cd ~/projects/my-app aider --config config.toml如果 aider 没自动读到config.toml显式指定路径。启动后 aider 会打印它当前用的模型和 base_url检查这两行是不是你配的值。确认无误后在 aider 交互界面里发一条最简单的请求/add main.py 这个文件里有没有明显的边界条件遗漏aider 会把main.py加进上下文然后向 TaoToken 通道发请求通道再路由到 ollama 的qwen2.5-coder:latest。如果本地模型正常几秒到几十秒内会返回分析结果终端里能看到流式输出。第一次调用因为要加载模型会慢一些后面就快了。想更直接地验证通道本身可以绕过 aider用 curl 打一发curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: ollama/qwen2.5-coder:latest, messages: [{role: user, content: 用一句话说明快速排序的平均复杂度}] }返回里有choices[0].message.content就说明通道和模型都通。这一步能把问题定位在 aider 层还是通道层curl 通、aider 不通就是 aider 配置问题curl 也不通就是 Key、base_url 或模型名的问题。验证通过后回到 aider 里正常干活。常用动作/add FileName.py加文件进上下文/drop FileName.py移除/diff看改动/run跑命令。这些和用官方 ollama 直连时一样区别只是请求先经过 TaoToken 通道。5. 本篇常见错排查配置链路一长报错点就多。下面按我踩过的顺序列几个高频问题。报错一AuthenticationError: Invalid API key。九成是环境变量没生效。先echo $TAOTOKEN_API_KEY看有没有值Windows 用echo $env:TAOTOKEN_API_KEY。如果为空说明 export 没执行或写错了文件。另一个可能是 Key 复制时带了空格或换行重新复制一次。确认 Key 有效可以回控制台 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keys 看这个 Key 的状态。报错二Connection refused或Failed to connect to 127.0.0.1:11434。这是 ollama 本地服务没起来。跑ollama serve或者检查ollama list能不能正常输出。如果 ollama 装在别的机器上ollama.host要改成对应地址同时确认那台机器的防火墙放行了 11434。报错三Model not found: ollama/qwen2.5-coder:latest。模型名对不上。先在本地ollama list确认模型确实存在名字要一字不差包括 tag。然后确认 TaoToken 侧对模型名的映射规则接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc 里有说明。本地叫qwen2.5-coder:latest通道侧可能要求写成ollama/qwen2.5-coder:latest前缀别漏。报错四aider 启动后模型显示成默认的 gpt-4 之类。说明config.toml没被读到。检查文件路径aider 默认读当前目录的.aider.conf.ymlconfig.toml需要--config显式指定。或者把配置写进.aider.conf.yml格式换成 YAML。报错五请求超时。本地模型首次加载慢timeout调大到 180 或 300。如果一直超时看 ollama 那边的日志可能是显存不够导致模型加载失败。换个更小的模型试试比如qwen2.5-coder:7b。报错六返回内容乱码或截断。多半是temperature或max_tokens设置问题。把temperature降到 0.1 到 0.3max_tokens设大一点。也可能是通道侧对长上下文有限制把上下文里的文件减一减用/drop移除不相关的。排查时记住一个原则先 curl 验证通道再验证 aider 配置最后看 ollama 本地服务。三层分开测比一股脑改配置快得多。6. 把链路固定下来长期用 Coding Plan配置跑通之后建议把config.toml和settings.json提交到项目仓库Key 用环境变量占位别提交真实值这样团队里任何人 clone 下来设一下环境变量就能复现同一条本地模型调用链路。模型名、base_url、超时这些参数都版本化了换模型只改一个字段。如果你不只是偶尔用 aider而是长期在终端里做编码、跑 Agent 任务可以看下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-plan 它更适合高频、长会话的场景。日常想快速验证某个模型对话效果用模型对话 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel 页面直接试就行。接入过程中遇到通道或 Key 的问题回接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc 对照检查比在终端里瞎猜快。最后留一个我常用的习惯每次换模型或换机器先跑一遍第 4 节那条 curl确认通道通再启动 aider。这一步花十秒能省掉后面半小时的排查。