
aider 分析 2048 仓库卡在 token 限制多半是模型入口没选对。原文用 ollama deepseek-r1:8b参数落在 .aider.conf.ymlTaoToken 保留同一套命令只换通道去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并创建 Key再把 openai-api-base 配成 https://taotoken.net/api模型名按模型广场当时列表来填。这个思路的好处是不推翻你已经跑顺的本地流程。aider 依旧是那个终端里的结对编程工具仓库依旧是那个 2048唯一变化是请求从本机 11434 端口发出去改成发到一个统一的兼容入口。等于是把「模型从哪来」这件事从 aider 里剥出来交给配置文件的三个字段决定。下面按原文的节奏走先装 aider、先跑 ollama 那条基线再看 token 限制具体卡在哪然后动手改 .aider.conf.yml最后验证和排障。1. aider 拉 2048 仓库时token 限制卡在哪一步1.1 原文那条 ollama DeepSeek-R1 的本地路线原文的路径很清晰pip install aider-install装好安装器执行aider-install把 aider 本体拉下来接着export OLLAMA_API_BASEhttp://127.0.0.1:11434把 aider 指向本机 ollama 服务最后aider --model ollama_chat/deepseek-r1:8b用本地 DeepSeek-R1 去读 2048 这个仓库。选择本地模型有它的道理。2048 是个典型的静态前端小项目通常就是 index.html、style.css、main.js 这几件东西代码不敏感但也有点体量。跑在 ollama 上请求不出本机没有额外成本想怎么问就怎么问。对只是想看看 aider 怎么读代码、怎么改文件的开发者来说这条路的上手成本最低。问题不在这条路线本身而在于它把两个变量绑死了模型是谁、通道是谁都由--model ollama_chat/deepseek-r1:8b和OLLAMA_API_BASE一起决定。想换个更强的推理模型或者本地显存不够撑更大的参数就得重新折腾一遍环境。1.2 token 限制为什么在 2048 这种小仓库上也会出现很多人以为 token 超限是「仓库太大」才会遇到其实 aider 的请求结构和你想的不一样。它除了你手动/add进去的文件还会带上 repo map——一份把仓库里所有符号、函数、文件位置压缩后的索引。你每改一次、每问一句对话历史都会继续累积下一次请求把前面积累的内容整包再发一遍。DeepSeek-R1 这类推理模型还有一层额外开销它会先输出一段思考内容再给结论这段内容同样算 token而且往往不短。8B 量级的本地模型上下文窗口有限跑十来轮之后历史加上思考链就能撑满。表现出来通常不是一条干脆的报错而是响应越来越慢、aider 开始忘记前面说过的约束、改出来的代码跟上下文对不上最后才在某一轮直接提示上下文超出。原文在结尾点出「长代码会撞 token 限制、不同推理模型表现不同」说的就是这件事。所以真正要解决的不是「换个更大的模型」这么简单而是让模型入口变成可切换的哪条通道适合当前任务就用哪条。2. 照原文把 aider 装好先用 ollama 跑一遍基线2.1 pip install aider-install 与装完后的自检第一步跟原文一致用 aider-install 这个引导包来装避免自己折腾依赖python -m pip install aider-install aider-install aider --version装完之后aider --version能打印出版本号就说明命令行已经就位。如果这一步报command not found八成是 Python 的 bin 目录没进 PATH或者你在虚拟环境里装的、却在系统 shell 里调先在同一个 shell 里which aider确认一下路径再往下走。还需要确认 git 可用。aider 默认会在每次改动后自动提交所以 2048 仓库最好本身就是一个 git 仓库。如果它是下载来的 zip 解压出来的先git init git add . git commit -m init建立基线否则 aider 提交时会因为找不到仓库而报错或者干脆把改动散落一地不好回退。2.2 export OLLAMA_API_BASE 与 ollama_chat/deepseek-r1:8b 的调用本地基线按原文这么跑ollama pull deepseek-r1:8b export OLLAMA_API_BASEhttp://127.0.0.1:11434 cd 2048 aider --model ollama_chat/deepseek-r1:8b这里有两个细节值得记牢后面切通道时要用到。一是ollama_chat/这个前缀它是 aider 专门用来标识「走 ollama 的聊天接口」的只对本地 ollama 有效换成任何远端服务都不能照抄这个前缀。二是OLLAMA_API_BASE只管 ollama 这一条通道它和后面要配的 OpenAI 兼容通道互不干扰。跑起来之后在 aider 里输入/add main.js之类的命令把文件加进上下文然后问它「这个 2048 的合并逻辑是怎么写的」。你会看到 aider 输出的每轮末尾都带一行 token 统计比如发送了多少、收到多少。这行数字就是你判断是否接近上限的依据也是后面换成 TaoToken 通道后用来对照的基准。3. 想换模型供应商时先拿 Key 再改 .aider.conf.yml3.1 创建 Key 并确认可用的模型名准备材料只有两样。第一是 API Key打开 TaoToken 注册账号进控制台创建一个 Key本文一律用占位符YOUR_API_KEY表示不要把它写进会提交到 git 的文件里。第二是模型名去同一个站点的模型广场看当前可用的模型列表挑一个适合读代码的填进去具体名称以页面当时显示为准别凭记忆写。这里最容易犯的错是把ollama_chat/deepseek-r1:8b整串直接搬到配置里当模型名。那串是 aider 识别本地 ollama 的写法不是远端服务的模型标识填进去只会得到「模型不存在」。正确的做法是通道变了模型名也要换成目标平台给出的名字。3.2 .aider.conf.yml 的三行核心配置aider 支持把常用参数写进配置文件省得每次都敲一长串命令行。在 2048 仓库根目录建一个.aider.conf.yml或者放到用户目录下作为全局默认内容只需要三行openai-api-base: https://taotoken.net/api openai-api-key: YOUR_API_KEY model: YOUR_MODEL_ID三个字段各管一件事openai-api-base决定请求发到哪这里必须是https://taotoken.net/api末尾不要加/v1也不要带任何查询参数openai-api-key放你刚创建的 Keymodel放模型广场里那个确切的模型名。注意openai-api-base和官网地址是两回事注册、看模型、查用量走官网填进工具的接口地址永远是https://taotoken.net/api这一个。如果你更想让 Key 不进文件可以把openai-api-key那一行删掉改用环境变量注入配置文件里只留 base 和 model这样.aider.conf.yml就可以放心提交到仓库里当团队共享配置。3.3 环境变量与命令行的等价写法不想动配置文件也可以完全用环境变量跑一遍效果一样export OPENAI_API_BASEhttps://taotoken.net/api export OPENAI_API_KEYYOUR_API_KEY cd 2048 aider --model YOUR_MODEL_ID三者的优先级是命令行参数覆盖环境变量环境变量覆盖配置文件。这个顺序在排障时很有用——当你不确定到底是哪一层在生效直接在命令行显式写全参数跑一次能立刻分辨出问题出在配置还是出在别的地方。还有一个常见坑你之前为了跑 ollama 已经export过一批变量新开的终端里可能还留着旧值。切通道之前先echo $OPENAI_API_BASE和echo $OLLAMA_API_BASE看一眼确认没有互相打架的残留。4. 切完通道再跑 2048看 Tokens 计数和提交记录4.1 分析仓库与生成 snake.py 的完整动作配置改好回到 2048 目录直接跑 aider 就行不需要再加--model它会从配置文件读cd 2048 aider index.html style.css main.js进去之后可以先让它解释代码再让它动手改。想看它有没有真正走通盯两个地方一是每轮回复末尾的 Tokens 计数有正常的发送和接收数字说明请求确实发出去了二是git log --onelineaider 每次成功改动都会留下一条提交记录提交信息里带着它的标记。这两样同时出现基本可以判定通道已经通了。想验证生成能力可以让它写一个 snake.py 出来比如「在这个目录下新建 snake.py用 pygame 写一个贪吃蛇窗口 600x600」。生成完让它自己解释一遍逻辑再对照文件内容看一眼有没有真落到磁盘上。这一步和 2048 仓库本身没关系纯粹是拿一个独立小任务确认模型输出链路正常。4.2 什么时候该压上下文而不是继续换模型通道切过去之后token 限制并不会凭空消失它只是从「本地模型窗口小」变成了「按量计费和窗口上限」。所以遇到长任务时先做这几件事再考虑换更强的模型一是控制/add的范围。2048 这种项目改合并逻辑就只加 main.js不要图省事把整个仓库塞进去。二是随时用/tokens看一眼当前上下文占用快满的时候主动/drop掉不再需要的文件。三是把大任务拆成几轮小任务一个会话只解决一个问题做完就/clear重开。四是确实需要更强推理能力时再切模型切的时候把model字段换掉即可base 和 key 都不用动——这正是把通道和模型解耦之后最省事的地方。原文提到「不同推理模型表现不同」在 aider 里体现得特别明显同一个 2048 的重构需求推理型模型会想得更周全但更慢更费 token普通对话型模型响应快但容易漏掉边界情况。配置解耦之后你完全可以在同一份.aider.conf.yml基础上临时换模型做对比不用重装任何东西。5. 排障401、404 和模型名不认5.1 三类报错对照表现象大概率原因处理方式401 / Incorrect API keyKey 写错、多了空格、环境变量残留旧值重新从控制台复制 Key检查echo $OPENAI_API_KEY404 / model not foundopenai-api-base写成了官网根地址或末尾多了/v1改回https://taotoken.net/api去掉多余路径提示模型不存在把ollama_chat/deepseek-r1:8b直接当模型名填了换成模型广场里的确切模型名connection refused 127.0.0.1:11434切回 ollama 时本地服务没起先ollama serve或确认已改用远端通道表格里最后一行是切通道时的高频问题你改完.aider.conf.yml却忘了清掉 shell 里的OPENAI_API_BASE或者反过来想跑本地模型时 ollama 服务已经关了。两类问题的表现都是「连不上」但方向完全相反看一眼报错里的地址就能分辨。5.2 本地 ollama 与统一通道并存时的切换技巧同时保留两条路线最实用的做法是让配置跟着目录走。2048 仓库根目录放一份指向统一入口的.aider.conf.yml另一个只想本地跑的试验目录放一份带 ollama 设置的配置。进不同目录跑 aider读到的就是不同通道互不干扰。如果你更习惯用命令行控制也可以把 base 和 key 全部从配置文件里拿掉每次启动时显式指定本地那次带--model ollama_chat/deepseek-r1:8b远端那次带--openai-api-base https://taotoken.net/api加目标模型名。命令行优先级最高不容易被历史配置意外覆盖。6. 跑顺之后把这套 aider 的调用对上账配置生效、2048 分析完、snake.py 也生成过之后值得花两分钟确认一下这次调用确实落在了你的账号上。打开 TaoToken 模型对话用同一把YOUR_API_KEY发一条测试消息如果这边能正常回说明 Key 和模型名都没填错那么 aider 那边报错就只可能是本地配置层的问题。如果你打算把 aider 当成日常读代码的常驻工具可以顺手看一眼 Coding Plan按自己的使用强度判断哪种更合适。Key 的管理和新建都在 控制台 API Keys 里需要给不同项目分开发 Key 的时候会方便很多。回过头看这次改动的成本其实只有三行 YAML。aider 还是那个 aider2048 还是那个 2048真正被换掉的只是「请求发给谁」。等你下次再遇到某个模型读不动长文件、或者某个任务需要更强的推理能力时改一个model字段就够了不用再重装一遍环境。