XAI Router + RTK:让 Claude Code / Codex 在终端少烧 60%-90% tokens
Posted March 31, 2026 by XAI 技术团队 ‐ 11 min read
XAI Router 负责统一接模型,RTK 负责压缩本地 CLI 输出;两层配合,可以显著减少 Claude Code / Codex 会话里终端带来的输入 token。
如果你已经在用 https://api.xairouter.com 跑 Claude Code、Codex、OpenCode 或其他 AI 编码工作流,那么下一个最值得补上的组件,通常不是“再换一个模型”,而是 RTK。
RTK 的定位很直接:在 shell 命令输出进入 AI 代理上下文之前,先做过滤、压缩、去重和聚合。它不替代你的模型网关,也不替代你的 CLI 工具,而是专门减少 git diff、cargo test、rg、docker logs、cat 这类命令带来的上下文膨胀。
对已经接入 api.xairouter.com 的用户来说,这和 XAI Router 是天然互补的两层:
- XAI Router:解决统一入口、模型映射、鉴权、配额、故障切换、计费、OpenAI/Anthropic/Realtime 兼容等问题。
- RTK:解决 AI 编码代理在本地终端里“读了太多没必要的文本”这个问题。
api.xairouter.com 发出的模型输入自然也会变少,所以通常会间接降低调用成本并延长单次会话的有效上下文。一、为什么 XAI Router 和 RTK 很适合一起用
从一个典型的 Rust 中转服务实现来看,这类系统往往已经不是“只转发 OpenAI Chat”那么简单,而是一个更完整的统一 AI API relay:
- 统一吃
OpenAI Chat Completions、OpenAI Responses、Anthropic Messages、Realtime/WebSocket等入口 - 按模型族做 provider mapping 和请求头适配
- 在代理层做配额、限流、用量统计
- 支持粘性调度、故障切换和多上游路由
这意味着 api.xairouter.com 解决的是 模型访问层 的复杂度,而 RTK 解决的是 本地开发终端上下文层 的复杂度。
换句话说:
Claude Code / Codex
-> 本地执行 git / grep / test / logs
-> 这些输出被塞回会话上下文
-> 会话上下文再经 api.xairouter.com 发到模型如果没有 RTK,大量“对人类也没什么价值”的原始终端输出会一起进入模型输入;如果加上 RTK,进入上下文的是压缩后的版本。
二、RTK 到底节省了什么
RTK 官方给出的典型场景节省范围是 60%-90%。最常见的高收益命令包括:
| 场景 | 原生命令的问题 | RTK 常见做法 |
|---|---|---|
git status / git diff | 文件列表过长,diff 上下文重复 | 提取统计信息,只保留关键变更 |
cat / read | 整个文件都进上下文,注释和样板过多 | 按语言过滤注释、空白和无关主体 |
grep / rg | 命中行分散,重复路径多 | 按文件分组、截断长行 |
pytest / cargo test / cargo nextest | 成功日志太多 | 只保留失败、warning 和摘要 |
docker logs | 重复日志刷屏 | 去重并计数 |
下面用两类常见仓库举例:
1. relay-gateway
这是一个偏大的 Rust 中转服务,适合 RTK 的动作主要有:
- 追请求链路:
rtk grep "responses|messages|realtime" src/ config/ - 读大文件:
rtk read src/proxy.rs -l minimal --max-lines 220 - 看路由规则:
rtk grep "PathMappers|ProviderMappers" config/ - 跑测试:
rtk test cargo test - 看变更:
rtk git diff
2. docs-studio
这是一个内容型文档站,最适合 RTK 的动作主要是:
- 查所有接入示例:
rtk grep "api.xairouter.com" content/blog content/docs - 快速扫文章:
rtk read content/blog/xxx.md -l minimal - 查哪些文档提到了某个模型或路径:
rtk find "*.md" content/blog - 审核改动:
rtk git diff
三、先接好 XAI Router,再加 RTK
这里建议把两层职责拆开理解:
先保证模型入口已经是 api.xairouter.com
如果你还没完成基础接入,可以先看你站上已有文档:
再在本地补 RTK
RTK 安装方式很简单,三种里任选一种:
# Homebrew
brew install rtk
# 或快速安装
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
# 或 Cargo
cargo install --git https://github.com/rtk-ai/rtk安装后先自检:
rtk --version
rtk gainrtk gain 第一次大概率还没数据,这是正常的。它是后面用来统计节省量的。
四、Claude Code + XAI Router + RTK:收益最高的组合
如果你本地已经这样接好了 Claude Code:
export ANTHROPIC_BASE_URL="https://api.xairouter.com"
export ANTHROPIC_AUTH_TOKEN="你的 XAI API Key"那么 RTK 的推荐接法是:
rtk init -g它会给 Claude Code 装一个 Bash hook。这个 hook 的效果是:当 Claude 想执行 git status、git diff、pytest、rg 这类命令时,会优先把它们改写成 rtk git status、rtk git diff、rtk pytest、rtk grep。
也就是说,对 Claude Code 来说,这是目前最“无感”的一类集成。
一套最小可复制流程
# 1) 保持 Claude Code 继续走 XAI Router
export ANTHROPIC_BASE_URL="https://api.xairouter.com"
export ANTHROPIC_AUTH_TOKEN="你的 XAI API Key"
# 2) 安装 RTK hook
rtk init -g
# 3) 重启 Claude Code
claude进入会话后,不需要先教它很多规则,直接让它做 shell-heavy 的事情就能看到收益,例如:
请先检查当前仓库的未提交变更,按文件分组总结风险,再告诉我哪些测试值得优先跑。Claude 很可能会走 git status、git diff、rg、测试命令,这一类动作正好是 RTK 的强项。
但要注意一个关键限制
RTK 对 Claude Code 的透明改写,主要发生在 Bash 工具调用 上。
这意味着:
git status、git diff、cargo test、rg这一类 shell 命令,收益最好- Claude Code 内建的
Read、Grep、Glob这类非 Bash 工具,并不会自动经过 RTK hook
所以如果你想在大仓库里把节省吃满,最好让 Claude 更偏向 shell 路线,例如:
优先使用 shell 命令分析仓库;读文件时优先用 rtk read / cat / rg,而不是大量调用内建 Read/Grep。五、Codex + XAI Router + RTK:适合“显式约束”的用户
如果你本地已经是这类 Codex 配置:
model_provider = "xai"
model = "gpt-5.4"
approval_policy = "never"
sandbox_mode = "danger-full-access"
[model_providers.xai]
name = "xai"
base_url = "https://api.xairouter.com"
wire_api = "responses"
requires_openai_auth = false
env_key = "XAI_API_KEY"以及:
export XAI_API_KEY="你的 XAI API Key"那么 RTK 对 Codex 的推荐接法是:
rtk init -g --codex这里要特别说明一个和 Claude Code 不同的点:
- Claude Code:RTK 是真实 hook,能透明改写 Bash 命令
- Codex:RTK 当前是
AGENTS.md + RTK.md形式的提示级集成,不是透明 hook
这意味着在 Codex 里,RTK 依然很有用,但最佳实践不是“装完就完全不用管”,而是:
- 让
rtk init -g --codex把全局~/.codex/AGENTS.md和RTK.md配好 - 在项目级
AGENTS.md再加一段更明确的偏好规则 - 在具体任务里,直接要求 Codex 优先使用
rtk命令
推荐加到项目里的 AGENTS.md 片段
Prefer RTK for shell-heavy repository work.
- Use `rtk git status`, `rtk git diff`, `rtk git log` for VCS inspection.
- Use `rtk read`, `rtk grep`, `rtk find` for codebase search.
- Use `rtk test`, `rtk pytest`, `rtk cargo test`, `rtk log` when available.
- Fall back to raw commands only when exact full output is required.适合 Codex 的任务写法
请优先使用 rtk 命令完成这次仓库巡检:
1. 先用 rtk git status 和 rtk git diff 看变更;
2. 再用 rtk grep 搜索 api.xairouter.com 的文档落点;
3. 读大文件时优先用 rtk read;
4. 最后用中文给出风险和建议。Codex 在这种“规则明确 + 工具名直接点明”的情况下,通常能比较稳定地吃到 RTK 的收益。
六、两类常见仓库里,最值的 6 个 RTK 用法
下面这组命令用两个示例仓库名来演示:relay-gateway 和 docs-studio。
1. 看变更,但别把整个 diff 都喂给模型
cd ~/work/relay-gateway
rtk git status
rtk git diff适合:日常 review、排查改了哪些 handler / conf / docs。
2. 读超长 Rust 文件时,先看“瘦身版”
rtk read src/proxy.rs -l minimal --max-lines 220适合:先抓模块结构和关键分支,再决定是否读原文件。
3. 在文档站里统一搜接入写法
cd ~/work/docs-studio
rtk grep "api.xairouter.com" content/blog content/docs适合:排查 base_url、/v1/responses、/v1/messages 是否写一致。
4. 测试只看失败,不看整屏绿色成功
cd ~/work/relay-gateway
rtk test cargo test适合:中大型 Rust 项目,尤其是测试多、日志长的时候。
5. 看日志时直接做去重
rtk log app.log适合:代理层 429、5xx、超时、重试等重复日志场景。
6. 看自己到底省了多少
rtk gain
rtk gain --graph这两个命令很适合放到日常工作流里。前者看累计节省,后者看趋势。
七、什么时候不要硬上 RTK
RTK 很适合“AI 编码代理 + shell-heavy 工作流”,但也不是什么命令都应该强行压。
下面几类情况,建议保留原始输出:
- 你就是要精确比对完整 JSON 或完整协议报文
- 你在做一次性深度排障,必须看到全量日志
- 你需要保留原生命令的格式细节给人工复制
简单理解就是:RTK 适合默认开启,但要允许按需回退到原始输出。
八、最后给一个最实用的落地建议
如果你今天就想在自己的链路上看到效果,最短路径是:
Claude Code 用户
export ANTHROPIC_BASE_URL="https://api.xairouter.com"
export ANTHROPIC_AUTH_TOKEN="你的 XAI API Key"
brew install rtk
rtk init -g
claudeCodex 用户
export XAI_API_KEY="你的 XAI API Key"
brew install rtk
rtk init -g --codex
codex然后从这 4 类命令开始替换:
git status/git diffread/cat/greptestlog
对 api.xairouter.com 这类已经把模型接入、鉴权、路由、配额都整理好的用户来说,RTK 的意义不是“再造一层复杂度”,而是把本来就要进模型上下文的终端噪音先削掉。
一句话总结:
XAI Router 负责让请求稳定地到达正确模型,RTK 负责让没必要的终端文本不要一起到达模型。