首页 / 资讯中心 / 文章详情

把 Aider 的 Base URL 改到 TaoToken:局域网 Ollama 本地化 AI Agent 部署实录

把 Aider 的 Base URL 改到 TaoToken:局域网 Ollama 本地化 AI Agent 部署实录 ★ FEATURED ARTICLE
1. 局域网里跑 Aider Ollama为什么还要接 TaoToken很多团队的内网开发机是这么个状态能访问公司内网的 GitLab能连内部的制品库但出不了公网。你想让 Aider 当个 Codex 类的编程助手第一反应肯定是「那就全本地跑 Ollama 呗」。方向没错但真跑起来你会发现两件事一是本地 7B/14B 模型在复杂重构、跨文件改 bug 时经常「答非所问」二是当你想给某几个关键任务临时换一个更强的模型通道时Aider 的配置得改一堆环境变量切来切去很容易把本地链路也搞挂。我试过的做法是把 Ollama 作为局域网内的默认推理后端同时把 Aider 的 Base URL 指向 TaoToken 的兼容接口用同一套 OpenAI 兼容协议管理「本地模型」和「远端模型」两条通道。这样内网机器平时走 Ollama需要更强推理时只改一个模型名不用动网络配置。TaoToken 在这里的角色是一个 OpenAI 兼容的 API 网关Aider 认OPENAI_API_BASE这套写法所以本地和远端可以共用一份配置骨架。这篇文章解决的就是这个落地路径Ollama 怎么监听局域网、Aider 的 Base URL 和模型名怎么写、怎么用一条 curl 验证连通性、本地通道和远端通道怎么切换对比。适合手里有内网开发机、想让 Aider 稳定跑起来、又不想被单一模型能力卡住的同学。全程命令可复制配置片段可直接落到~/.aider.conf.yml或环境变量里。先说清楚一个前提Aider 本身是个命令行工具它不负责推理只负责把你的代码上下文整理好、发给某个 OpenAI 兼容的/v1/chat/completions接口。所以「把 Base URL 改到 TaoToken」这件事的本质是让 Aider 把请求发到 TaoToken 的兼容端点而不是默认的 OpenAI 官方地址。Ollama 也提供 OpenAI 兼容层默认在http://localhost:11434/v1。两条通道的协议形状一样差别只在地址、Key 和模型名。2. Ollama 局域网监听配置与 Aider 接入前置2.1 让 Ollama 监听局域网而不是只绑 localhostOllama 默认只监听127.0.0.1:11434也就是只有本机能访问。如果你想让局域网里另一台机器上的 Aider 连过来必须改监听地址。Linux 下用 systemd 管理的话编辑 overridesudo systemctl edit ollama.service在打开的编辑器里写入[Service] EnvironmentOLLAMA_HOST0.0.0.0:11434 EnvironmentOLLAMA_ORIGINS*OLLAMA_HOST0.0.0.0:11434表示监听所有网卡OLLAMA_ORIGINS*是给浏览器类客户端放行跨域Aider 走命令行其实用不到但一起加上省得后面调 Web UI 时再回来改。保存后sudo systemctl daemon-reload sudo systemctl restart ollama验证监听是否生效ss -tlnp | grep 11434正常应该看到0.0.0.0:11434而不是127.0.0.1:11434。如果是 WindowsOllama 托盘图标右键退出然后在 PowerShell 里设环境变量再启动$env:OLLAMA_HOST0.0.0.0:11434 ollama serve2.2 拉模型并确认 OpenAI 兼容端点可用在 Ollama 所在机器上拉一个代码向的模型比如qwen2.5-coder:7b或llama3.1:8bollama pull qwen2.5-coder:7b ollama list然后确认 OpenAI 兼容层能响应。Ollama 的兼容端点是/v1模型列表接口是/v1/modelscurl http://192.168.1.50:11434/v1/models把192.168.1.50换成你 Ollama 机器的局域网 IP。返回里应该能看到你刚拉的模型名。这一步很关键因为 Aider 走的就是这个/v1路径如果这里不通后面 Aider 一定报连接错误。2.3 TaoToken 侧的前置准备远端通道这边你需要一个 API Key 和一个 Base URL。TaoToken 的 API 地址是https://taotoken.net/api兼容 OpenAI 的/v1/chat/completions形状。Key 在控制台的 API Keys 页面生成地址是https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite。生成后先别急着写进 Aider用 curl 单独验一次把问题隔离在 Aider 之外curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-3-5-sonnet-20241022, messages: [{role: user, content: reply with ok}] }如果返回里有choices字段说明 Key 和地址都对。这一步过了再往 Aider 里配排障范围就小很多。模型名具体支持哪些可以在模型对话页面试一下地址是https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite选一个能正常回话的再写进配置。3. Aider 的 Base URL 与模型名可复制配置3.1 环境变量方式本地与远端两套Aider 读OPENAI_API_BASE和OPENAI_API_KEY这两个环境变量来定位 OpenAI 兼容端点。本地 Ollama 通道这样写export OPENAI_API_BASEhttp://192.168.1.50:11434/v1 export OPENAI_API_KEYollama export AIDER_MODELopenai/qwen2.5-coder:7b注意OPENAI_API_KEY对 Ollama 来说随便填但不能不填Aider 会检查这个变量存在。模型名前面的openai/前缀是告诉 Aider 用 OpenAI 兼容的客户端去发请求后面的qwen2.5-coder:7b必须和ollama list里的名字完全一致大小写和冒号都不能错。远端 TaoToken 通道export OPENAI_API_BASEhttps://taotoken.net/api/v1 export OPENAI_API_KEYsk-你的TaoTokenKey export AIDER_MODELopenai/claude-3-5-sonnet-20241022这里 Base URL 结尾的/v1不能省Aider 会在这个基础上拼/chat/completions。如果你写成https://taotoken.net/api请求会打到https://taotoken.net/api/chat/completions直接 404。3.2 配置文件方式写进 ~/.aider.conf.yml环境变量适合临时切长期用建议写配置文件。Aider 会读~/.aider.conf.yml格式是 YAMLopenai-api-base: http://192.168.1.50:11434/v1 openai-api-key: ollama model: openai/qwen2.5-coder:7b no-check-update: trueno-check-update: true对应命令行--no-check在内网环境里能省掉启动时去 PyPI 查版本的等待。如果你更习惯 TOML 风格的项目级配置Aider 也支持在项目根目录放.aider.conf.yml字段名一样项目级会覆盖全局级。这样你可以给每个仓库配不同的模型内网仓库用 Ollama需要强推理的仓库用 TaoToken。3.3 三件套对照表不管走哪条通道Aider 接入一个 OpenAI 兼容端点永远只需要三样东西缺一不可项目本地 Ollama 通道远端 TaoToken 通道Base URLhttp://192.168.1.50:11434/v1https://taotoken.net/api/v1API Keyollama占位即可sk-开头的 TaoToken KeyModel IDopenai/qwen2.5-coder:7bopenai/claude-3-5-sonnet-20241022很多人卡在 Model ID 上以为写qwen2.5-coder就行结果 Aider 报模型不存在。原因是 Aider 需要openai/前缀来路由到 OpenAI 兼容客户端而 Ollama 侧又要求名字和本地注册的完全一致。两边都对齐了才通。4. 连通性验证与本地/远端切换实测4.1 先用 curl 打通再上 Aider在跑 Aider 的那台机器上先确认能访问 Ollama 的局域网地址curl -s http://192.168.1.50:11434/v1/models | head -c 300如果这里超时先查防火墙。Linux 上sudo ufw allow 11434/tcp或者firewall-cmd --add-port11434/tcp --permanent firewall-cmd --reload。Windows 上在「高级安全 Windows Defender 防火墙」里给 11434 加一条入站规则。这一步不通Aider 一定报Connection refused或local proxy failed类的错。远端通道同样先 curlcurl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY | head -c 3004.2 启动 Aider 并观察实际请求本地通道启动aider --model openai/qwen2.5-coder:7b --no-check-update进入交互后随便让它改一行代码比如「把 README 里的标题改成 Hello」。Aider 会把 diff 打出来让你确认。如果它一直卡在「Waiting for response」多半是 Base URL 拼错或模型名不对。可以在另一个终端看 Ollama 日志journalctl -u ollama -f正常应该能看到一条/v1/chat/completions的请求进来。远端通道启动aider --model openai/claude-3-5-sonnet-20241022 --no-check-update同样让它改一行观察响应速度。实测下来本地 7B 模型在单文件小改动上响应很快但跨三个文件的重构会明显力不从心远端通道在跨文件任务上更稳代价是每次请求都要走网络。4.3 切换对比测试步骤想量化两条通道的差别可以固定同一个任务跑两遍。准备一个测试仓库里面放一个故意写错的函数def add(a, b): return a - b本地通道下让 Aider 修「fix the add function so it returns the sum」。记录它是否一次改对、耗时多少。然后切远端通道export OPENAI_API_BASEhttps://taotoken.net/api/v1 export OPENAI_API_KEYsk-你的Key aider --model openai/claude-3-5-sonnet-20241022跑同样的指令。对比维度建议看三个一次改对的概率、是否需要你补充上下文、以及跨文件时是否漏改调用点。这个对比做完你就知道哪些任务该留在本地、哪些该走远端。长期做 Agent 类编码任务的话可以考虑用 Coding Plan 把远端通道的额度固定下来地址是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite比每次临时申请 Key 省事。5. 本篇常见报错排查5.1 401 Unauthorized远端通道最常见。原因通常是 Key 没带上、带错或者环境变量没生效。先确认echo $OPENAI_API_KEY如果输出为空说明当前 shell 没加载。注意export只在当前会话有效换终端就没了写进~/.bashrc或~/.zshrc才持久。另外确认 Key 没有多余空格复制时容易带上换行。如果 curl 单独测能通、Aider 里报 401检查~/.aider.conf.yml里的openai-api-key是不是被项目级配置覆盖了。5.2 local proxy failed / Connection refused本地通道典型错误。含义是 Aider 连不上你配的 Base URL。按顺序查Ollama 进程是否在跑systemctl status ollama、监听地址是否是0.0.0.0ss -tlnp | grep 11434、防火墙是否放行、以及你填的 IP 是不是 Ollama 机器的真实局域网 IP。有个容易踩的坑在 Ollama 本机上用localhost测通了就以为局域网也通其实localhost走的是回环别的机器访问不到。一定要用局域网 IP 从另一台机器测。5.3 reading choices 相关报错如果报错里出现reading choices或Cannot read properties of undefined (reading choices)说明返回体里没有choices字段Aider 解析失败。常见原因有三个Base URL 少了/v1请求打到了非兼容端点模型名写错服务端返回了错误对象而不是正常响应或者返回的是流式格式但 Aider 按非流式解析。先手动 curl 同一个地址和模型看返回体长什么样。如果 curl 返回的是{error: ...}那就是地址或模型名的问题跟 Aider 无关。5.4 OAuth / 认证类报错有些同学会把 Aider 配成 Anthropic 原生协议去连 Claude这时如果 Base URL 指向的是 OpenAI 兼容端点就会报 OAuth 或认证方式不匹配。记住一个原则Aider 走openai/前缀的模型名时用的是 Bearer Token 认证走anthropic/前缀时才是另一套。你要连 TaoToken 的兼容端点模型名就统一用openai/前缀认证用OPENAI_API_KEY不要混用。Claude Code 那套配置是独立的别把两边的环境变量搅在一起。5.5 模型名对但响应极慢本地通道下如果模型名对、请求也进来了但响应要等几十秒先看机器有没有 GPU。纯 CPU 跑 7B 模型本来就慢这是硬件限制不是配置问题。可以换更小的模型比如qwen2.5-coder:1.5b或者把OLLAMA_NUM_PARALLEL调低避免并发抢资源。远端通道慢通常是网络抖动可以换个时间段再测或者确认本地出口带宽没被其他任务占满。6. 把两条通道固化成日常配置走到这里你手上应该有两套能跑的配置了。我的建议是别每次手动 export而是用 shell 函数封装切换。在~/.bashrc里加aider-local() { OPENAI_API_BASEhttp://192.168.1.50:11434/v1 \ OPENAI_API_KEYollama \ aider --model openai/qwen2.5-coder:7b --no-check-update $ } aider-remote() { OPENAI_API_BASEhttps://taotoken.net/api/v1 \ OPENAI_API_KEY$TAOTOKEN_API_KEY \ aider --model openai/claude-3-5-sonnet-20241022 --no-check-update $ }这样aider-local和aider-remote就是两个独立入口互不干扰。TAOTOKEN_API_KEY单独在~/.bashrc里 export 一次别写进函数体方便轮换。内网机器如果连 TaoToken 都要走公司出口记得确认出口策略允许访问taotoken.net否则远端通道会超时这时候就老老实实用本地通道。最后补一个内网部署的实用技巧Ollama 的模型文件在~/.ollama/models如果内网机器拉不到模型可以在有网机器上ollama pull完把整个~/.ollama目录打包拷过去路径保持一致即可不用重新拉。Aider 这边如果内网装不了包用pip download aider -d ./aider_wheels在有网机器下好 wheel拷进内网后pip install --no-index --find-links./aider_wheels aider。这两步做完整套 Aider Ollama TaoToken 的局域网方案就闭环了。
阅读完成 · 觉得有帮助?
咨询建站