RTK rtk test 万能测试包装器:任意测试命令一键提取失败详情
RTK rtk test 万能测试包装器:任意测试命令一键提取失败详情
【免费下载链接】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
RTK是一个用 Rust 编写的 CLI 代理工具,专门帮助开发者在运行测试、构建、Git 等命令时减少 60%~90% 的 LLM Token 消耗。其中的rtk test子命令是一个"万能测试包装器":它可以接管任意测试命令(cargo test、pytest、npm test、go test……),只保留失败详情和摘要,把动辄几百行的原始输出压缩到约 20 行,让 AI 编程助手和人类都能快速定位问题。
🎯 为什么需要rtk test测试包装器?
跑测试失败时,终端里往往刷出 200+ 行编译日志、警告和堆栈。如果你把这份原始输出直接交给 AI 助手(Claude Code、Cursor 等),它既要消耗大量 Token,又容易被噪音淹没,找不准真正的失败点。
rtk test的做法是:先执行你指定的原始测试命令,再智能过滤输出,只留下"失败项 + 摘要"两小块信息。
# cargo test 失败时(200+ 行) # rtk test cargo test(约 20 行)📦 一键安装 RTK 的最快方法
RTK 是单个 Rust 二进制文件,零依赖。任选其一即可:
- Homebrew(macOS / Linux):
brew install rtk - 一键脚本:
curl -fsSL https://raw.githubusercontent.comrtk-ai/rtk/refs/heads/master/install.sh | sh
安装完成后,输入rtk --version看到版本号即代表成功。安装文档详见INSTALL.md,完整功能列表见docs/usage/FEATURES.md。
🔧 rtk test 基本用法:5 种语言测试框架通用
rtk test的语法极简——把原来的测试命令原样写在后面:
rtk test cargo test # Rust rtk test pytest # Python rtk test npm test # JavaScript / Jest rtk test go test ./... # Go rtk test bun test # 其他任意框架它会自动识别命令类型,套用对应的提取规则:
| 测试框架 | 提取内容 |
|---|---|
| Cargo (Rust) | test result:统计行 + 所有 FAILED 用例 |
| Pytest | 通过/失败/错误统计 + FAILED 用例名 |
| Jest / npm test | Tests:/Test Suites:统计 + ✕ 失败项 |
| Go test | ok/FAIL/---开头的关键行 |
| 未识别的命令 | 兜底输出最后 5 行原始内容 |
⚙️ 工作原理:三层保障机制
rtk test的实现位于src/cmds/rust/runner.rs,核心是run_test与extract_test_summary两个函数,配合三层安全机制:
- 智能失败提取:内置正则模式库(
ERROR_PATTERNS)识别 error、panic、Traceback 等错误特征,只保留失败块; - 绝不更差守卫(Never-worse guard):位于
src/core/guard.rs,如果过滤后的输出反而比原始输出更长,直接回退打印原始内容——保证永远不会"越过滤越啰嗦"; - 原始输出存档(Tee 恢复):测试失败时,完整原始输出会被自动存到磁盘(逻辑见
src/core/tee.rs),输出末尾附带提示路径,需要深挖时随时可以找回。
📊 真实效果对比:200 行变 20 行
一次失败的cargo test典型输出可能是这样的压缩结果:
[FAIL] FAILURES: test_parser::test_parse_int test_parser::test_parse_float SUMMARY: test result: FAILED. 18 passed; 2 failed; 0 ignored失败用例名 + 一行统计,Token 消耗直降约90%。想验证节省效果,随时运行rtk gain查看累计节省量(源码见src/analytics/gain.rs)。
🤖 配合 AI 编程助手的省 Token 技巧
RTK 的钩子机制(hooks/目录,支持 Claude Code、Cursor、Copilot 等 10+ 助手)会自动把 AI 发出的裸测试命令改写成rtk test形式,无需你手动切换:
rtk init --agent claude # 为 Claude Code 安装钩子装好钩子后,AI 助手每次跑测试都默认走 RTK 通道,既省 Token 又不影响退出码——测试失败了该报错照样报错,行为完全透明。
✅ 新手常见问题速答
- 会影响测试本身的执行吗?不会。
rtk test只是外层代理,底层仍是sh -c执行你的原始命令,退出码原样透传。 - 想看完整原始输出怎么办?加
-v参数查看调试信息;失败时 tee 机制已自动存档,提示中会给出文件路径。 - 和
rtk err有什么区别?rtk err适用于任意命令,只提取 error/warning 行;rtk test专为测试场景优化,额外提供用例级失败提取与统计摘要。 - 支持
--复杂参数吗?支持。trailing_var_arg设计允许透传带连字符的参数,如rtk test pytest -x --tb=short。
📚 延伸学习路径
- 功能全景文档:
docs/usage/FEATURES.md(rtk test章节约在第 489 行) - 架构原理:
docs/contributing/ARCHITECTURE.md - 核心过滤实现:
src/cmds/rust/runner.rs - 守卫与恢复机制:
src/core/guard.rs、src/core/tee.rs - 安装指南:
INSTALL.md
一句话总结:rtk test让你"一条命令包装所有测试框架,一次输出看清全部失败"。装上它,测试排错更快,AI 助手的 Token 账单也更轻。
【免费下载链接】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),仅供参考
