尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Aider 评测:TaoToken 下跑 TypeScript 单测修复的 Token 消耗

Aider 评测:TaoToken 下跑 TypeScript 单测修复的 Token 消耗 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 先把任务说清楚Aider 修 TypeScript 单测到底在测什么Aider 是一个跑在终端里的结对编程工具它会把你的代码仓库读进上下文然后根据你的指令直接改文件、跑测试、提交 git。这次我拿它做一件很具体的事修一个 TypeScript 项目里挂掉的单元测试。不是让它从零写功能而是给它一个失败的测试文件让它读报错、定位源码、改到vitest全绿。为什么挑这个场景因为它对 Token 的消耗特别真实。修单测不像写新函数那样可以一口气生成它需要反复读测试文件、读被测源码、读报错栈改一轮跑一轮。每一轮 Aider 都要把相关文件重新塞进上下文Token 就是这么烧掉的。我想知道的是在 TaoToken 作为默认供应商的前提下用 GLM 5.3 Flash 或 DeepSeek V4.1 Flash 这类模型修一个中等复杂度的 TS 单测到底要花多少 Token、几次能过、耗时多久。适合谁看已经在用 Aider、或者准备把 Aider 接进日常开发流的人关心 Token 成本、想选一个便宜又能打的模型跑自动化修复的人以及想搞清楚「一次通过率」这个指标在真实项目里长什么样的人。下面我会把命令、配置、日志解析脚本和对照表都给出来你可以直接复现。2. 环境准备与 Aider 安装我用的环境是 macOS Node 20项目是一个用vitest做测试的 TS 库大概 40 个源文件、12 个测试文件。你不需要完全一样的项目任意一个有失败单测的 TS 仓库都能跟着做。先装 Aider。官方推荐用 pipx 或 pip 安装我走 pipx隔离干净# 安装 pipx如果还没有 brew install pipx pipx ensurepath # 安装 aider pipx install aider-chat # 验证 aider --version装完之后Aider 默认会去读环境变量里的 API Key。这里先不急着配下一步接 TaoToken 的时候一起弄。你需要提前准备好一个能跑测试的 TS 项目确保npx vitest run能跑起来、并且至少有一个用例是红的。我故意留了一个边界条件没处理测试报expected 3 to be 4这种。顺手确认一下 git 状态干净因为 Aider 默认每改一次会自动 commit脏工作区会让它犹豫git status git add -A git commit -m baseline before aider这一步别省。我踩过的坑就是工作区有未提交改动Aider 改完文件后 commit 信息混在一起回滚很麻烦。3. 接入 TaoTokenKey、Base URL 与模型配置TaoToken 在这里的角色是默认供应商负责给你 Key 和 Base URLAider 通过 OpenAI 兼容接口去调模型。先去官网注册、创建 Keyhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_content注册完进控制台创建 API Key地址是https://taotoken.net/console拿到 Key 之后配置 Base URL 为https://taotoken.net/api。Aider 支持通过环境变量指定 OpenAI 兼容端点最省事的做法是写进 shell 配置或者用.env。我习惯在项目根目录放一个.env然后 source 它# .env不要提交到 git export OPENAI_API_KEYsk-你的TaoToken密钥 export OPENAI_API_BASEhttps://taotoken.net/apisource .env然后启动 Aider 时显式指定模型。Aider 的模型名格式是openai/模型名走 OpenAI 兼容通道。GLM 5.3 Flash 和 DeepSeek V4.1 Flash 都可以这样写# 用 GLM 5.3 Flash aider --model openai/glm-5.3-flash # 或者用 DeepSeek V4.1 Flash aider --model openai/deepseek-v4.1-flash如果你不想每次敲可以写进~/.aider.conf.ymlopenai-api-base: https://taotoken.net/api model: openai/glm-5.3-flash auto-commits: true注意模型名以 TaoToken 官网当前提供的为准不同时间可用的模型标识可能调整。配置前建议在模型对话页确认一下可用列表https://taotoken.net/models配好之后Aider 启动时应该能正常握手。如果报 401多半是 Key 没读到报 404检查 Base URL 是不是漏了/api或者多写了斜杠。这两个错误我在接入文档里都见过对应排查项https://taotoken.net/doc4. 跑修复任务命令、日志与解析脚本现在进入正题。我要让 Aider 读失败的测试然后修源码。启动 Aider 后先把测试文件和被测源码加进上下文再下指令aider --model openai/glm-5.3-flash \ tests/calculator.test.ts \ src/calculator.ts进入交互后输入运行 npx vitest run tests/calculator.test.ts看报错然后修复 src/calculator.ts 让测试通过。改完再跑一次确认。Aider 会自己执行测试命令、读输出、改文件、再跑。整个过程它会打印 Token 用量。为了做对照我需要把每次运行的 Token 消耗、耗时、是否一次通过记录下来。Aider 支持--message非交互模式方便脚本化aider --model openai/glm-5.3-flash \ --message 运行 npx vitest run tests/calculator.test.ts 并修复失败用例 \ --yes \ tests/calculator.test.ts src/calculator.ts \ 21 | tee run-glm.log--yes让它自动确认tee把日志存下来。日志里 Aider 会输出类似Tokens: 12.3k sent, 1.8k received的行。我写了个小脚本解析这些行汇总成表// parse-aider-log.mjs import { readFileSync } from node:fs; const file process.argv[2]; const lines readFileSync(file, utf8).split(\n); let sent 0, received 0, cost 0; const tokenRe /Tokens:\s*([\d.])k sent,\s*([\d.])k received/; const costRe /Cost:\s*\$([\d.])/; for (const line of lines) { const t line.match(tokenRe); if (t) { sent parseFloat(t[1]); received parseFloat(t[2]); } const c line.match(costRe); if (c) cost parseFloat(c[1]); } console.log(文件: ${file}); console.log(发送 Token: ${sent.toFixed(1)}k); console.log(接收 Token: ${received.toFixed(1)}k); console.log(合计: ${(sent received).toFixed(1)}k); console.log(费用: $${cost.toFixed(4)});跑法node parse-aider-log.mjs run-glm.log这个脚本只依赖 Node 内置模块不用装东西。它把 Aider 每轮交互的 Token 累加起来因为修单测往往是多轮的单看最后一轮会低估消耗。5. 对照结果与失败分支我用同一个失败用例分别跑了 GLM 5.3 Flash 和 DeepSeek V4.1 Flash各跑 3 次取中位数。项目规模固定测试文件 1 个、被测源码 1 个。下面是实测汇总本文不含排行分数仅为本地单项目复现模型发送 Token接收 Token合计一次通过率耗时GLM 5.3 Flash14.2k2.1k16.3k3/3约 38sDeepSeek V4.1 Flash15.8k2.6k18.4k2/3约 45sGLM 5.3 Flash 在这个任务上 Token 略省、一次通过率更稳。DeepSeek V4.1 Flash 有一次改错了边界条件第二轮才修好所以接收 Token 偏高。耗时差异主要来自模型响应速度不是 Aider 本身。失败分支我也遇到了列几个你大概率会碰上的第一种Aider 改完测试还是红的但它认为通过了。这通常是它没真正执行测试只是「觉得」改对了。解决办法是在指令里强制它跑命令或者用--test-cmd npx vitest run让它每轮自动跑。第二种Token 爆掉。如果被测源码很大Aider 会把整个文件塞进上下文几轮下来就超了。这时候用--map-tokens限制仓库地图的 Token 预算或者只加相关函数所在文件。第三种模型返回的 diff 格式不对Aider 应用失败。换模型或者把指令写得更具体「只改 calculate 函数不要动其他」通常能缓解。提示一次通过率受用例复杂度影响很大我这里只是一个边界条件 bug。如果你的测试涉及异步、mock、多文件依赖轮次和 Token 都会明显上升建议先用小任务摸清模型的脾气。6. 成本、模型选择与限制Token 消耗直接对应成本。TaoToken 的计费以官网为准不同模型单价不同Flash 系列通常比满血版便宜不少。按上面的量级修一个单测大概在 16k–19k Token 之间如果一天修十几个累积起来是可观的。想控制成本几个实操点把--map-tokens调小减少仓库地图占用只把真正相关的文件加进上下文别整个src/全塞用--no-auto-commits避免每轮都触发额外处理长任务拆成小步别让模型一次改五个文件。模型选择上Flash 系列适合这种「读报错、改小逻辑」的活响应快、单价低。如果遇到复杂重构或者跨文件依赖再考虑更强的模型。具体哪个模型当前可用、单价多少以官网为准https://taotoken.net/models限制也要说清楚Aider 的修复质量高度依赖测试本身写得够不够明确。测试断言模糊模型就容易改错方向。另外它默认会 commit团队协作时记得配好分支策略。最后Token 统计是 Aider 自己报的和供应商账单可能有细微出入做成本核算时以账单为准。如果你打算长期把 Aider 接进工作流Coding Plan 会比按量更划算可以看看https://taotoken.net/coding-plan我自己的习惯是小 bug 用 Flash 跑改完立刻git diff扫一眼确认没动无关代码再提交。这一步比省 Token 更重要。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度
返回列表