
1. 痛点git status 和 npm run build 正在烧你的 TokenClaude Code 跑一次 git status50 个未追踪文件能撑出约 400 token跑一次 npm run build几千行 warning 能烧掉约 2000 token。AI 把这些输出一字不落地读完你的额度就为屏幕噪音买了单。RTK 负责给命令输出瘦身让 AI 只看该看的TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 负责把 Claude Code 的 API 调用接到统一接入通道上让模型请求先稳定走通。这篇文章把两件事拆开做先去官网注册拿 Key把 Claude Code 配到 TaoToken再回 Windows 上用 PowerShell 装 RTK。配合下来git status 这类高频命令通常能省 87%整套链路跑顺后整体省下 70% 不是什么夸张数字。1.1 你的 Token 都花在哪个环节用 Claude Code 时AI 不是只看你手动粘给它的材料它会自己跑命令看环境git status 列出改了哪些文件、有没有 untracked 文件npm run build 把编译 warning 全吐到终端pytest -v 把几百个 pass 的用例名依次滚出来。这些内容对你不重要但 Claude Code 并不知道哪些重要它把整块输出都当作上下文塞给模型。拿 pytest 举例200 个用例全过AI 真正需要的信息只有“全部通过”但为了确认这一点它要先读完约 3000 token 的用例名。也就是说一个可以压缩成一句话的结果你付了十倍的钱。次数一多月额度就在这些琐碎命令里悄悄漏光。1.2 同一条命令过滤前后的差距RTKRust Token Killer夹在 AI 和系统之间命令输出先经过它过滤再发给模型。下面这组数据来自 RTK 官方文档也是装完后最容易验证的结果场景原始输出RTK 输出节省比例git status50 个文件~400 tokens~50 tokens87%ls -la30 个文件~180 tokens~40 tokens78%pytest200 个 passing~3000 tokens~600 tokens80%npm run build大量 warning~2000 tokens~400 tokens80%对 AI 来说它完全不知道 RTK 存在它只看到一份更干净的输出。对你来说差价就是每个月真实省下的费用。1.3 TaoToken 管通道RTK 管瘦身很多人以为装上 RTK 就能自动省钱实际不是。RTK 是一个输出过滤器管的是“交给模型之前先砍掉噪音”而模型请求能发出去、能正常返回靠的是 API 通道。TaoToken 提供的就是这个统一接入通道——一个 Key、一个 Base URL让 Claude Code 稳定走到模型。通道不通输出过滤得再干净也没处送。所以正确顺序是先让通道通再装瘦身器。2. 原理RTK 不是压缩是过滤RTK 是一个用 Rust 写的单二进制 CLI不修改源文件只拦截命令输出。它不是在“压缩”数据而是在语义层面删除冗余。它有四种过滤策略策略做什么例子Smart Filtering去掉注释、空白行、模板噪音tsc 输出只留 error删掉全部 infoGrouping把同类信息聚合文件列表按目录折叠Truncation保留关键上下文裁掉冗余diff 只显示改动行 ±2 行Deduplication重复日志合并计数同一行日志显示[repeated 47x]2.1 一次 git status 的完整链路挂上 RTK 之后命令流是这样的你: git status - Claude Code PreToolUse Hook 拦截 - RTK 执行 git status 并过滤输出 (~400 - ~50 tokens) - 干净输出交给 Claude Code - Claude Code 通过 https://taotoken.net/api 调用模型 - 结果回到你的终端流程里每个角色只干一件事RTK 负责让 AI “看得少一点”TaoToken 负责让请求“送得到”。RTK 不参与模型路由TaoToken 不过滤命令输出两边没有重叠。2.2 为什么把“配通 TaoToken”放在“安装 RTK”前面原版安装脚本的第五步会直接往~/.claude/settings.json写 RTK Hook。如果你的 Base URL 还是默认的官方地址装完也能跑但 Token 省下来之后请求本身的安全性、可用性、额度管理都还是悬空的。更稳的做法是打开官网申请好 Key把 settings.json 里的 env 块写对确认 Claude Code 能正常对话再回头跑 install-rtk.ps1让脚本在“TaoToken 已就绪”的前提下去写 Hook。这样一旦出问题排查范围很小不是配置和瘦身两件事搅在一起。3. 准备材料先把 Claude Code 指到 TaoToken无论之后用什么优化手段模型调用本身必须先通。这个环节最好别跳过因为 RTK Hook 只负责输出瘦身它不负责帮你填 Key、也不负责路由模型。3.1 去官网拿一个 Key打开 TaoToken 官网落地页注册、登录在控制台的 API Key 区域创建一个新 Key复制出来。后续配置里出现的YOUR_API_KEY都换成你自己的这一串。模型 ID 不要猜以官网模型广场展示为准同一个模型在不同接入服务那里的 ID 可能不一样写错 ID 最常见的现象就是请求报错“model not found”。3.2 修改 Claude Code 的配置文件Claude Code 的全局配置在%USERPROFILE%\.claude\settings.json没有就新建一个。把下面这段 env 块放进去{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_MODEL_ID } }注意 Base URL 是https://taotoken.net/api末尾不要加/v1。很多 API 服务商要求/v1但 TaoToken 的接入地址不带这个尾巴。ANTHROPIC_MODEL的值去模型广场复制。如果你更喜欢环境变量也可以在 PowerShell 里临时设置$env:ANTHROPIC_BASE_URL https://taotoken.net/api $env:ANTHROPIC_AUTH_TOKEN YOUR_API_KEY $env:ANTHROPIC_MODEL YOUR_MODEL_ID两者等价Claude Code 启动时会读同名环境变量。3.3 先确认调用已经走通改完配置重启 Claude Code随便问一句“用一句话确认你已经就绪”。如果它正常回答说明 Key、Base URL、模型 ID 三者都对上了。这一关一定要亲自过一遍因为下一步装 RTK 之后链路里会多一层过滤器到时候再出问题就很难分清楚是通道没通还是过滤出了问题。4. Windows 安装 RTKinstall-rtk.ps1 里的 TaoToken 前置校验第 3 章把调用通道打通之后RTK 的安装才能发挥价值。原版安装脚本会直接往 settings.json 里写 Hook但我的建议是把它改造成“先检查 TaoToken 配置再写 Hook”的版本避免装上之后才发现通道根本没通。4.1 前置条件Windows 10/11PowerShell 7 以上最好。Claude Code 已经按第 3 章配置好 TaoToken并且能正常聊天。脚本需要管理员权限运行因为要改用户 PATH。RTK 本身是独立二进制不依赖 Node.js但你的 Claude Code 依赖 Node所以脚本里保留了对 Node 的检查。另外RTK 碰到命令退出码非 0 时会自动退回完整输出不会因为过滤导致 Claude Code 漏看错误信息。4.2 install-rtk.ps1 完整脚本把下面内容保存为install-rtk.ps1# install-rtk.ps1 -- 在 Windows 上安装 RTK # 用法: powershell -ExecutionPolicy Bypass -File .\install-rtk.ps1 $ErrorActionPreference Stop $rtkHome Join-Path $env:USERPROFILE rtk $binDir Join-Path $env:USERPROFILE bin $rtkExe Join-Path $binDir rtk.exe $settingsPath Join-Path $env:USERPROFILE .claude\settings.json Write-Host RTK Windows 安装脚本 -ForegroundColor Cyan # [1/5] 检查 Node.jsClaude Code 本体依赖 if (-not (Get-Command node -ErrorAction SilentlyContinue)) { Write-Host 没有找到 Node.js。RTK 本身不需要 Node但你的 Claude Code 如果没有 Node 就跑不起来。 -ForegroundColor Yellow } # [2/5] 下载 RTK New-Item -ItemType Directory -Path $rtkHome, $binDir -Force | Out-Null $zipPath Join-Path $rtkHome rtk-win64.zip try { $release Invoke-RestMethod -Uri https://api.github.com/repos/rtk-ai/rtk/releases/latest -TimeoutSec 15 $asset $release.assets | Where-Object { $_.name -match x86_64-pc-windows-msvc } | Select-Object -First 1 $tag $release.tag_name if (-not $asset) { throw 没有找到 Windows MSVC 资产 } } catch { Write-Host GitHub API 拉取失败回退到 v0.39.0。 -ForegroundColor Yellow $tag v0.39.0 $asset [pscustomobject]{ browser_download_url https://github.com/rtk-ai/rtk/releases/download/v0.39.0/rtk-x86_64-pc-windows-msvc.zip } } Write-Host 正在下载 $($asset.browser_download_url) Invoke-WebRequest -Uri $asset.browser_download_url -OutFile $zipPath # [3/5] 解压并安装 Expand-Archive -Path $zipPath -DestinationPath $rtkHome -Force Copy-Item -Path (Join-Path $rtkHome rtk.exe) -Destination $rtkExe -Force Remove-Item $zipPath -Force # [4/5] 加 PATH $userPath [Environment]::GetEnvironmentVariable(Path, User) if ($userPath -notlike *$binDir*) { [Environment]::SetEnvironmentVariable(Path, ($userPath ; $binDir), User) $env:Path [Environment]::GetEnvironmentVariable(Path, User) ; [Environment]::GetEnvironmentVariable(Path, Machine) Write-Host 已将 $binDir 加入用户 PATH } else { Write-Host $binDir 已在 PATH 中 } # [5/5] 配置 Claude Code先确认 TaoToken 已配置再写 RTK Hook if (Test-Path $settingsPath) { $settings Get-Content $settingsPath -Raw | ConvertFrom-Json $envBlock $settings.env $baseUrl $envBlock.ANTHROPIC_BASE_URL if ($baseUrl -and $baseUrl.TrimEnd(/) -eq https://taotoken.net/api) { Write-Host 检测到 TaoToken 通道开始写 Hook... -ForegroundColor Green if (-not $settings.PSObject.Properties[hooks]) { $settings | Add-Member -MemberType NoteProperty -Name hooks -Value {} -Force } if (-not $settings.hooks.PSObject.Properties[PreToolUse]) { $settings.hooks | Add-Member -MemberType NoteProperty -Name PreToolUse -Value () -Force } $exists $false foreach ($block in $settings.hooks.PreToolUse) { if ($block.matcher -eq Bash -and $block.hooks) { foreach ($h in $block.hooks) { if ($h.command -like *rtk hook claude*) { $exists $true } } } } if (-not $exists) { $newHook [pscustomobject]{ matcher Bash hooks ({ type command; command rtk hook claude }) } $settings.hooks.PreToolUse $newHook $settings | ConvertTo-Json -Depth 10 | Set-Content $settingsPath -Encoding UTF8 Write-Host RTK Hook 已写入 $settingsPath -ForegroundColor Green } else { Write-Host RTK Hook 已存在跳过。 -ForegroundColor DarkYellow } } else { Write-Host settings.json 里的 ANTHROPIC_BASE_URL 不是 https://taotoken.net/api。请先去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建 Key按第 3 章配置好 env 块再重跑本脚本。 -ForegroundColor Red exit 1 } } else { Write-Host 没有找到 $settingsPath。先跑一次 Claude Code 让它生成配置再重试本脚本。 -ForegroundColor Red exit 1 } Write-Host 验证安装 $rtkExe --version4.3 运行脚本在 PowerShell 里执行powershell -ExecutionPolicy Bypass -File .\install-rtk.ps1脚本跑完会打印 rtk 版本号。如果中途提示 Base URL 不是https://taotoken.net/api说明第 3 章没做完先回官网补 Key 和配置再跑。这一步的设计目标很明确不要在一个连模型都调不通的环境里去装优化器。如果你同时用 Codex CLI需要知道它的机制不同Codex 没有 PreToolUse HookRTK 是靠 AGENTS.md 里的约定让 AI 主动加rtk前缀AI 不遵守时它管不住。原版脚本会把 RTK.md 写进.codex目录并让 AGENTS.md 引用它这个动作对 Codex 是“尽力而为”。建议先把 Claude Code 这条链路跑稳定Codex 侧有空再折腾。5. 验证效果rtk gain 和官网用量对照装完 RTK最重要的事情是确认它真的拦住了命令而不是自我感觉良好。5.1 重启 Claude Code跑几个真实命令重启 Claude Code让它跑一次 git status、一次 npm run build。这次注意看终端里的输出变化git status 已经被折叠成紧凑列表npm run build 只剩 error 和少量关键信息。对用户来说唯一区别是屏幕干净了对 AI 来说它看到的内容变少但判断环境状态所需的信息一点没缺。5.2 rtk gain 的输出长什么样RTK 会把每次过滤都记账。回到普通终端运行rtk gainRTK Token Savings (Global Scope) 总命令数: 70 输入Tokens: 31.7K 输出Tokens: 30.7K 累计节省: 1.0K (3.3%) 按命令拆分: git status 每次节省 ~87% ls -la 每次节省 ~78% pytest 每次节省 ~80% npm run build 每次节省 ~80%短时间数据里总节省占比不高很正常因为会有几条命令 RTK 判断不该过滤而放行。重点看“每次节省”那一列高频命令的数字才是你真正要盯的。跑满一个工作日后总节省占比会明显往上走。5.3 回官网对照账本这时候再回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的用量记录页能找到刚才那次 npm run build 调用对应的输入 token 数。跟安装前同一条命令的调用对比塞给模型的输入明显变短。官网账本和 rtk gain 两边数据一对照“TaoToken 管请求、RTK 管瘦身”的分工就非常具体了。6. 常用命令速查与 RTK 覆盖范围RTK 平时不用手动介入它靠 Hook 自动工作。但在调试时下面几个命令会很有用命令作用rtk gain查看 token 节省统计rtk gain --history查看每条命令的节省详情rtk proxy cmd原始模式运行命令不做过滤调试用rtk --version查看版本rtk git diff超精简 diff只显示改动行rtk npm run build过滤构建输出里的 warning 噪音rtk ls -la紧凑的目录列表要强调的是Claude Code 内部跑的 Bash 命令会被 Hook 自动接住不需要你手动给每条命令加rtk前缀。手动加前缀的场景是你在普通终端里想复现 AI 的执行环境。RTK 内置了 100 多个常用命令过滤器覆盖版本控制、包管理、构建、测试、数据库、容器、云 CLI。日常开发里最容易撞上的 npm、npx、pnpm、pip、cargo、pytest、jest、vitest、tsc、next、docker、kubectl 都在列完整清单见它的 GitHub Release 说明。7. 排障这次配置里最可能遇到的三件事7.1 Base URL 填对但还是 404最常见的原因不是 Key 错而是 Base URL 多写了尾巴。TaoToken 的接口地址就是https://taotoken.net/api不需要/v1。Anthropic 官方文档的地址写法会让人习惯性加上/v1但这是两个服务不能照搬。检查 settings.json 里的 env 块把ANTHROPIC_BASE_URL改成https://taotoken.net/api重启 Claude Code 就好。7.2 Hook 写了但 Claude Code 没反应先看 settings.json 里的 hooks 块是否真的存在并且 PreToolUse 数组里是不是command: rtk hook claude。如果用过其他 Hook 工具存在多个 matcher 为 Bash 的块RTK 的块可能被优先级覆盖。另外PowerShell 5.1 的 ConvertTo-Json 偶尔会把数组压平导致 PreToolUse 从数组变成对象这种情况把 hooks 块手动改成数组格式即可。7.3 Codex CLI 上似乎没用Codex 没有 Hook 机制RTK 只能靠 AGENTS.md 里的规则让 AI 主动加rtk前缀。如果 AI 没遵守不是 RTK 坏了而是这种“软约束”本来就不如 Hook 强制。想彻底解决只能等支持 Hook 的 wrapper或者把 Claude Code 作为 RTK 的主战场。8. 最后一步回来把账对上配置类工具最怕的不是步骤多而是不知道现在卡在哪一层。这一趟你把链路分成了两段TaoToken 管认证和通道RTK 管输出瘦身。先让前者通再让后者装之后再出问题看一眼是请求报错还是输出没被过滤立刻就知道该找谁。8.1 现在这套配置长什么样Claude Code 要跑命令 → Hook 截住 → RTK 把输出瘦身 → Claude Code 走https://taotoken.net/api发起模型调用 → 结果回终端。请求层有问题去 TaoToken 控制台查输出层有问题去rtk gain看责任边界很清楚。8.2 接下来只要盯两个数字一个是 rtk gain 里的“每次节省”确认过滤在稳定生效另一个是 TaoToken 用量记录里的输入 token确认省下的钱真实体现在账上。如果还没注册官网注册和 API Key 创建在同一页顺路补上。回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的用量记录页把刚才那次 git status 调用的输入 token 记下来。这周多跑几次 npm run build每天下班前瞄一眼两个数字“省下 70% Token”很快就会从宣传语变成你自己的预算结余。