RTK(Rust Token Killer)安装与初始化全解:从二进制校验到 AI Agent 透明命令改写

RTK(Rust Token Killer)安装与初始化全解:从二进制校验到 AI Agent 透明命令改写 RTKRust Token Killer安装与初始化全解从二进制校验到 AI Agent 透明命令改写【免费下载链接】rtkCLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies项目地址: https://gitcode.com/GitHub_Trending/rtk4/rtk本文基于仓库根目录的 INSTALL.md 编写完整覆盖 RTK 从安装前检查、二进制获取、rtk init初始化到卸载与排障的全流程并结合 install.sh、src/hooks/init.rs、hooks/claude/rtk-rewrite.sh 等源码说明每一步背后的实现机制。读完后你将能够独立完成 RTK 的安装与验证、为 Claude Code 配置全局 Hook、理解命令透明改写的底层协议并掌握升级、回滚与排障方法。安装前必读两个同名 rtk 项目存在两个完全不同的名为 rtk 的项目安装前务必区分✅Rust Token Killer本项目——LLM token 优化器仓库rtk-ai/rtk可通过rtk gain命令查看节省统计面板❌Rust Type Kitreachingforthejack/rtk——完全不同的项目Rust 代码库查询与类型生成工具如果你的目标是 token 优化切勿安装它安装前检查必需AI 助手在执行任何安装动作前都应先验证 RTK 是否已安装、是否是正确的那个# 检查 RTK 是否已安装 rtk --version # 关键验证是 Token Killer 而不是 Type Kit rtk gain # 应显示节省面板savings dashboard而不是 command not found # 检查安装路径 which rtk如果rtk gain能正常输出节省面板说明正确版本已安装不要重复安装直接跳到项目初始化一节。如果rtk gain失败但rtk --version成功说明装错了Type Kit先卸载再安装正确版本。安装 RTK 二进制步骤 0卸载错误的 RTK如需要如果误装了 Rust Type Kitcargo uninstall rtk方式一一键脚本安装Linux/macOS推荐curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/master/install.sh | sh这条命令下载的是仓库中的 install.sh它是一个纯 POSIX shell 脚本安装流程远比下载文件更严谨从源码可以看出以下机制平台与架构探测detect_os/detect_arch仅支持Linux与Darwin架构支持x86_64与aarch64其他组合直接报错退出。目标三元组选择Linux x86_64 下载x86_64-unknown-linux-musl静态构建Linux ARM64 下载aarch64-unknown-linux-gnumacOS 下载${ARCH}-apple-darwin。版本发现优先解析releases/latest的 302 重定向获取 tag不消耗 API 配额失败再回退到 GitHub REST API也可通过环境变量RTK_VERSIONvX.Y.Z固定版本。SHA-256 强校验脚本会同时下载checksums.txt用sha256sumLinux或shasum -a 256macOS比对校验失败或不匹配时拒绝安装见 install.sh。如确需跳过可设RTK_SKIP_CHECKSUM1但官方明确不推荐。压缩包安全检查解压前用tar -tzf检查归档内是否存在绝对路径或..组件CWE-22 路径穿越防护发现即拒绝解压见 install.sh。安装位置默认~/.local/bin可用环境变量RTK_INSTALL_DIR覆盖脚本最后运行verify打印rtk --version并检测 PATH——若二进制不在 PATH 中会提示添加export PATH$HOME/.local/bin:$PATH。安装后立即验证是正确版本rtk gain # 必须显示节省面板不能是 command not found方式二手动安装Cargo# 从 rtk-ai 仓库安装注意不是 reachingforthejack cargo install --git https://github.com/rtk-ai/rtk # 或者若 crates.io 上发布的就是本项目 cargo install rtk # 安装后务必验证 rtk gain # 必须显示节省面板而不是 command not found⚠️警告crates.io 上的cargo install rtk可能装到错误的包永远要用rtk gain验证。从 Cargo.toml 可确认当前项目声明的版本为0.42.4rust-version 1.91即源码构建需要 Rust 1.91 及以上的稳定工具链项目为 Apache 2.0 许可、单二进制发布、无运行时外部依赖。项目初始化rtk init 的模式选择安装完二进制后需要让 AI 编码助手知道该用 RTK。rtk init提供三种模式按需求选择是否希望 RTK 在所有 Claude Code 项目中生效 │ ├─ 是 → rtk init -g 推荐 │ Hook RTK.md约 10 token 上下文开销 │ 命令被透明地自动改写 │ ├─ 是但要最小化 → rtk init -g --hook-only │ 仅装 Hook不改 CLAUDE.md │ 上下文开销为零 │ └─ 否仅单个项目 → rtk init 只写本地 CLAUDE.md137 行 无 Hook、无全局副作用从 src/main.rs 的Init子命令定义可见除上述三种核心模式外rtk init还暴露了更多开关--show查看当前配置、--claude-md遗留模式注入完整指令块、--hook-only、--auto-patch/--no-patch二选一、--uninstall、--dry-run预览不落盘、--codex/--gemini/--agent/--copilot/--opencode面向不同 Agent。--auto-patch与--no-patch属于同一参数组互斥。推荐方案全局 Hook-Firstrtk init -g适用场景所有项目、自动启用 RTK。rtk init -g # → 安装 Hook 到 ~/.claude/hooks/rtk-rewrite.sh # → 创建 ~/.claude/RTK.md10 行仅元命令 # → 在 ~/.claude/CLAUDE.md 中添加 RTK.md 引用 # → 提示Patch settings.json? [y/N] # → 若确认写入 settings.json 并先创建备份~/.claude/settings.json.bak # 自动化替代 rtk init -g --auto-patch # 不提示直接修补 rtk init -g --no-patch # 只打印手动操作说明不写文件 # 验证安装 rtk init --show # 检查 Hook 已安装且可执行上下文成本Hook 方案只往上下文里放一份 10 行的RTK.md内容见 hooks/claude/rtk-awareness.md仅含rtk gain/rtk discover/rtk proxy等元命令与验证命令命令改写本身对上下文零开销对比之下本地模式要把 137 行完整命令参考塞进每个项目的CLAUDE.md。settings.json 是什么它是 Claude Code 的 Hook 注册表。RTK 往其中写入一个PreToolUseHook在工具调用前透明改写命令。不注册的话 Claude 不会自动触发 Hook。改写流程如下Claude Code settings.json rtk-rewrite.sh RTK 二进制 │ │ │ │ │ git status │ │ │ │ ──────────────────►│ │ │ │ │ PreToolUse 触发 │ │ │ │ ───────────────────►│ │ │ │ │ 改写命令 │ │ │ │ → rtk git status │ │ │◄────────────────────│ │ │ │ 更新后的命令 │ │ │ 执行: rtk git status │ │ ─────────────────────────────────────────────────────────────►│ │ │ 过滤输出 │ 3 modified, 1 untracked ✓ │ │◄──────────────────────────────────────────────────────────────│settings.json 修补的实现细节见 src/hooks/init.rs修补行为由PatchMode枚举控制Ask默认交互式[y/N]、Auto--auto-patch、Skip--no-patch改为打印 JSON 片段让你手动粘贴。非交互式环境stdin 不是 TTY下Ask模式默认按N处理不会挂起等待输入。写入是幂等的若 Hook 条目已存在则返回AlreadyPresent直接跳过写入采用临时文件 原子 rename避免中途崩溃留下半截 JSON。备份安全修改前先把原文件复制为~/.claude/settings.json.bak需要回滚时执行cp ~/.claude/settings.json.bak ~/.claude/settings.json另外rtk init在非 dry-run 流程结束时会询问一次匿名遥测同意写入本地config.toml可随时用rtk telemetry disable关闭详见 docs/TELEMETRY.md。备选方案本地项目模式适用场景只想在单个项目里启用不装全局 Hook。cd /path/to/your/project rtk init # 创建 ./CLAUDE.md写入完整 RTK 指令137 行上下文成本指令仅在本项目加载。对应源码中的遗留全量指令块RTK_INSTRUCTIONS即--claude-md模式写入的!-- rtk-instructions --块内容就是这份 137 行命令参考本身见 src/hooks/init.rs覆盖构建、测试、Git、GitHub、JS/TS 工具链、文件搜索、基础设施、网络等分类的压缩比说明。从旧版本升级从 0.22 之前的 137 行 CLAUDE.md 注入升级rtk init -g # 自动迁移到 Hook-First 模式 # → 删除旧的 137 行块 # → 安装 Hook RTK.md # → 添加 RTK.md 引用从 0.24 之前的内联逻辑 Hook 升级 —— ⚠️ 破坏性变更RTK 0.24.0 把原来约 200 行的内联命令检测 Hook 替换为一个薄委托器thin delegator改写逻辑全部收敛进rtk rewrite子命令即二进制成为唯一事实来源。好处是新增命令不再需要更新 Hook 脚本。旧 Hook 仍可工作但无法享受后续版本新增的规则。# 把 Hook 升级为薄委托器 rtk init --global # 验证新 Hook 生效 rtk init --show # 应显示✅ Hook: ... (thin delegator, up to date)Hook 的工作原理薄委托器脚本全局 Hook 的真实文件是 hooks/claude/rtk-rewrite.shrtk init -g会把它的内嵌副本安装到~/.claude/hooks/rtk-rewrite.sh。读一遍脚本就能理解整条链路依赖检查需要jq解析 Hook 输入 JSON、需要 PATH 中有rtk缺一即打印警告并静默放行exit 0绝不打断 Claude 的执行。版本守卫rtk rewrite自 0.23.0 起存在脚本会把rtk --version的检查结果缓存到~/.cache/rtk-hook-version-ok避免每次 Hook 调用都多起一个进程。版本低于 0.23.0 时警告并放行。委托改写从 stdin 用jq提取.tool_input.command交给rtk rewrite $CMD按退出码分派退出码含义Hook 行为0 stdout找到改写、无 deny/ask 规则命中输出permissionDecision: allow的hookSpecificOutput自动放行改写后的命令1无 RTK 等价命令原样透传2命中 Deny 规则透传交给 Claude Code 原生 deny 处理3 stdout命中 Ask 规则改写命令但不带自动放行让 Claude Code 向用户确认退出码协议完整写在脚本头部注释hooks/claude/rtk-rewrite.sh改写规则的单一事实来源在 Rust 侧的命令注册表src/discover/registry.rs新增命令只改 Rust 注册表即可。常见用户流程首次使用推荐路径# 1. 安装 RTK cargo install --git https://github.com/rtk-ai/rtk rtk gain # 验证必须显示节省面板 # 2. 交互式初始化 rtk init -g # → 提示 patch settings.json 时回答 y # → 自动创建备份 # 3. 重启 Claude Code # 4. 测试执行 git status应观察到走 rtkCI/CD 或自动化# 非交互初始化无提示 rtk init -g --auto-patch # 脚本中验证 rtk init --show | grep Hook:保守用户手动控制# 只打印手动说明不修改任何文件 rtk init -g --no-patch # 检查打印出的 JSON 片段 # 手动编辑 ~/.claude/settings.json # 重启 Claude Code临时试用# 安装 Hook rtk init -g --auto-patch # 之后想全部移除 rtk init -g --uninstall # 如需恢复 cp ~/.claude/settings.json.bak ~/.claude/settings.json安装验证与核心命令速查安装验证# 基础测试 rtk ls . # Git 测试 rtk git status # pnpm 测试 rtk pnpm list # Vitest 测试 rtk vitest文件类命令rtk ls . # 紧凑树视图 rtk read file.rs # 优化后的文件读取 rtk grep pattern . # 按文件分组的结果Gitrtk git status # 紧凑状态 rtk git log -n 10 # 浓缩日志 rtk git diff # 优化后的 diff rtk git add . # → ok ✓ rtk git commit -m msg # → ok ✓ abc1234 rtk git push # → ok ✓ main下文中的百分比指bash 输出的压缩率不是账单的压缩率。Pnpm仅 fork 支持rtk pnpm list # 依赖树-70% rtk pnpm outdated # 可用更新-80-90% rtk pnpm install # 静默安装测试rtk cargo test # 过滤后的 Cargo 测试输出-90% rtk go test # 过滤后的 Go 测试NDJSON-90% rtk jest # 过滤后的 Jest 输出-99.6% rtk vitest # 过滤后的 Vitest 输出-99.6% rtk playwright test # 过滤后的 Playwright 输出-94% rtk pytest # 过滤后的 Python 测试-90% rtk rake test # 过滤后的 Ruby 测试-90% rtk rspec # 过滤后的 RSpec 测试-60% rtk test cmd # 通用测试包装器 - 仅显示失败-90%统计rtk gain # 节省面板 rtk gain --graph # 带 ASCII 图表 rtk gain --history # 带命令历史RTK 对输出的处理RTK 在 Agent 读取 shell 命令输出前对其进行压缩实际效果如下表操作RTK 对输出做了什么vitest/jest只保留失败项通过的套件折叠为计数git status紧凑 stat 格式按状态分组pnpm list紧凑依赖树pnpm outdated只保留包名、当前版本与目标版本cargo test只保留失败项含断言与位置命令旁标注的百分比是bash 输出字节的减少量——这是 RTK 能控制的部分。它不等于账单同比例下降bash 输出只是输入 token 的一个来源而输入 token 也只是账单的一部分账单还计输出 token。完整解释见 docs/guide/resources/savings-explained.md其中也说明了 RTK 报告的 token 数为何是估算值。卸载完整移除仅限全局安装# 完整移除仅适用于全局安装 rtk init -g --uninstall # 移除的内容 # - Hook~/.claude/hooks/rtk-rewrite.sh # - 上下文文件~/.claude/RTK.md # - ~/.claude/CLAUDE.md 中的 RTK.md 引用行 # - settings.json 中的 RTK Hook 条目对照 src/hooks/init.rs 的uninstall实现实际清理范围比文档所列更完整还会删除 Hook 的完整性哈希旁挂文件、遗留的内联逻辑 Hook 文件、CLAUDE.md中的!-- rtk-instructions --遗留块若清理后文件为空则整个删除、OpenCode 插件与 Cursor Hook且每一步都支持--dry-run预览。移除后重启 Claude Code生效。本地项目手动从./CLAUDE.md中删除 RTK 块即可。移除二进制# 若通过 cargo 安装 cargo uninstall rtk # 若通过包管理器安装 brew uninstall rtk # macOS Homebrew sudo apt remove rtk # Debian/Ubuntu sudo dnf remove rtk # Fedora/RHEL从备份恢复如需要cp ~/.claude/settings.json.bak ~/.claude/settings.json故障排查安装后找不到 rtk 命令# 检查 PATH echo $PATH | grep -o [^:]*\.cargo[^:]* # 如需要把安装目录加入 PATH~/.bashrc 或 ~/.zshrc # cargo 安装为 ~/.cargo/bininstall.sh 安装为 ~/.local/bin export PATH$HOME/.cargo/bin:$PATH # 重载 shell source ~/.bashrc # 或 source ~/.zshrc某个命令不可用如 vitest# 检查分支 cd /path/to/rtk git branch # 如需要切换到对应功能分支 git checkout feat/vitest-support # 重新安装 cargo install --path . --force编译错误# 更新 Rust项目要求 rust-version 1.91 rustup update stable # 清理并重新编译 cargo clean cargo build --release cargo install --path . --forceAI 助手操作清单每个会话开始前验证 RTK 已安装rtk --version未安装 → 按上文安装方式执行项目未初始化 →rtk init所有 git/pnpm/test/vitest 命令一律走rtk查看节省rtk gain黄金法则AI 编码助手应始终把rtk作为产生冗长输出的 shell 命令git、pnpm、npm、cargo test、vitest、docker、kubectl的代理前缀。延伸阅读项目根目录 INSTALL.md 为本文的原始文档Hook 机制与多 Agent 支持见 hooks/README.md 及各 Agent 子目录claude、codex、copilot、cursor、opencode 等rtk init的完整模式与幂等写入逻辑见 src/hooks/init.rstoken 节省口径说明见 docs/guide/resources/savings-explained.md。【免费下载链接】rtkCLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies项目地址: https://gitcode.com/GitHub_Trending/rtk4/rtk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考