RTK 实战指南:用单个 Rust 二进制代理压缩 CLI 输出,为 LLM Agent 削减最高 90% 的 Bash Token
RTK(Rust Token Killer)是一个高性能 CLI 代理:它拦截开发命令、过滤并压缩其输出,再把这些精简后的结果交给 Claude Code、Cursor、Gemini CLI 等 AI 编码代理读取,从而削减 Agent 上下文中的 Bash 输出 token。读完本文,你将掌握 RTK 的完整安装与 rtk init 多代理接入方式、100+ 压缩命令的分类用法、自动改写 Hook 的工作原理与配置项,以及 token 节省统计(rtk gain / rtk discover)和遥测隐私机制的源码级细节。
一、RTK 解决什么问题
当 AI 编码代理执行 git status、cargo test、ls 等命令时,完整的原始输出会原样进入 LLM 上下文——而其中大量内容是权限位、进度条、样板行等对模型判断毫无帮助的噪音。RTK 工作在"shell 输出 → LLM 上下文"这一段的代理层上:
Without rtk: With rtk:
Claude --git status--> shell --> git Claude --git status--> RTK --> git
^ | ^ | |
| full raw output | | compact output | filter |
+-----------------------------------+ +------- (filtered) ---+----------+
它是单 Rust 二进制文件、零运行时依赖,覆盖 100+ 命令,代理开销在 10ms 量级。从 Cargo.toml 可以看到当前仓库版本为 0.42.4,发布构建采用 opt-level = 3、lto = true、codegen-units = 1、strip = true 等极限优化,且 unsafe_code = "deny"、warnings = "deny"。
RTK 对各类命令输出做的具体压缩(来自 README.md):
| 操作 | RTK 对输出做了什么 |
|---|---|
ls / tree |
树形结构 + 文件计数,替代逐行列出 |
cat / read |
智能读文件:优先签名与结构,而非完整内容 |
grep / rg |
截断超长行,按文件分组匹配 |
git status |
按状态分组的紧凑 stat 格式 |
git diff |
削减上下文行数,剥离文件头 |
git log |
仅保留 hash、作者和标题 |
git add/commit/push |
一行确认信息替代完整进度输出 |
cargo test / npm test |
仅显示失败用例,通过的折叠为计数 |
ruff check |
按规则和文件分组 |
pytest |
仅显示失败,裁剪 traceback |
go test |
解析 NDJSON,仅显示失败 |
docker ps |
仅保留关键字段 |
节省比例的正确读法:90% 是指"bash 输出",不是账单
README 对此有明确界定,使用 RTK 时务必理解:
- RTK 削减的是 Agent 读取的 bash 输出,最高可达 90%;这不等于账单下降 90%。
- Bash 输出只是 输入 token 的一个贡献项,与你的 prompt、系统提示词、对话历史并列;而输入 token 又只是账单的一部分(账单还计输出 token)。缩减在每一层都被稀释。
- RTK 报告的 token 数按
bytes / 4估算——它不内置 tokenizer,因此百分比可信,绝对 token 数只是近似。这一实现可在 src/core/tracking.rs 中确认:
// src/core/tracking.rs
/// Estimate token count from text using ~4 chars = 1 token heuristic.
pub fn estimate_tokens(text: &str) -> usize {
(text.len() as f64 / 4.0).ceil() as usize
}
完整的统计机制(SQLite 记录、90 天保留、rtk gain 报表)在 docs/guide/resources/savings-explained.md 与 docs/contributing/ARCHITECTURE.md 中有深入说明。
二、安装
1. Homebrew(推荐)
brew install rtk
2. 一键脚本(Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
脚本安装到 ~/.local/bin,必要时加入 PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc # 或 ~/.zshrc
3. Cargo
cargo install --git https://github.com/rtk-ai/rtk
4. 预构建二进制
从项目 Releases 页下载,按平台选择:
- macOS:
rtk-x86_64-apple-darwin.tar.gz/rtk-aarch64-apple-darwin.tar.gz - Linux:
rtk-x86_64-unknown-linux-musl.tar.gz/rtk-aarch64-unknown-linux-gnu.tar.gz - Windows:
rtk-x86_64-pc-windows-msvc.zip
Windows 用户注意:解压后将
rtk.exe放入 PATH(如C:\Users\<you>\.local\bin),并始终在 Command Prompt、PowerShell 或 Windows Terminal 中运行,不要双击.exe(会闪退)。
5. 验证安装
rtk --version # README 示例输出 "rtk 0.28.2";当前仓库版本见 Cargo.toml(0.42.4)
rtk gain # 应显示节省统计面板
重名警告:crates.io 上存在另一个名为 "rtk"(Rust Type Kit)的包。如果
rtk gain报错,说明装错了包,请改用上面的cargo install --git方式。
三、快速上手:为 AI 工具接入 RTK
# 1. 为你的 AI 工具安装
rtk init -g # Claude Code / Copilot(默认)
rtk init -g --gemini # Gemini CLI
rtk init -g --codex # Codex (OpenAI)
rtk init -g --agent cursor # Cursor
rtk init -g --agent windsurf # Windsurf
rtk init --agent cline # Cline / Roo Code
rtk init --agent kilocode # Kilo Code
rtk init --agent antigravity # Google Antigravity
rtk init --agent kimi # Kimi AI
rtk init -g --agent pi # Pi
rtk init --agent hermes # Hermes
rtk init -g --agent droid # Factory Droid
# 2. 重启 AI 工具后直接测试
git status # 会被自动改写为 rtk git status
接入机制分两类:基于 Hook 的代理在执行前把 Bash 命令改写为 rtk 等价命令(如 git status → rtk git status);基于插件的代理(如 Hermes)通过插件 API 在执行前改写命令。Agent 无需显式调用 rtk,就能收到压缩输出。
作用域提醒:Hook 只作用于 Bash 工具调用。Claude Code 内建的 Read、Grep、Glob 工具不经过 Bash Hook,因此不会被自动改写。要在这类工作流中获得 RTK 压缩,请使用 shell 命令(cat/head/tail、rg/grep、find)或直接调用 rtk read、rtk grep、rtk find。
四、工作原理:六阶段生命周期与 12 种过滤策略
rtk 每条命令的执行遵循统一的六阶段生命周期(docs/contributing/ARCHITECTURE.md):
- PARSE — Clap 解析器提取命令、参数、全局标志(
verbose、ultra_compact); - ROUTE —
src/main.rs中按子命令分发到对应模块(如git::run(args, verbose)); - EXECUTE —
std::process::Command捕获 stdout/stderr 与退出码; - FILTER — 各模块按自身策略压缩(如 git log 压缩为 "5 commits, +142/-89");
- PRINT — 按
-v级别决定是否打印调试信息,输出压缩结果; - TRACK —
tracking::track()将原始/压缩后的字节数换算成 token 估算值,写入 SQLite(~/.local/share/rtk/history.db),并自动清理 90 天前的记录。
README 概括的四大策略(Smart Filtering 去噪 / Grouping 分组 / Truncation 截断 / Deduplication 去重计数)在架构文档中被细化为 12 种过滤策略矩阵:
| 策略 | 技术 | 典型模块 | 压缩幅度 |
|---|---|---|---|
| 统计提取(Stats Extraction) | 计数/聚合,丢弃细节 | git status、git log、pnpm list | 90–99% |
| 仅错误(Error Only) | 保留 stderr,丢弃 stdout | rtk err、测试失败 |
60–80% |
| 按模式分组(Grouping) | 按规则/文件/错误码聚合计数 | lint、tsc、grep | 80–90% |
| 去重(Deduplication) | 唯一行 + 出现次数 | rtk log |
70–85% |
| 仅结构(Structure Only) | 保留键与类型,剥离值 | rtk json |
80–95% |
| 代码过滤(Code Filtering) | 按级别:none / minimal / aggressive | rtk read、rtk smart |
0–90% |
| 失败聚焦(Failure Focus) | 隐藏通过用例,仅留失败 | vitest、playwright、rtk test |
94–99% |
| 树压缩(Tree Compression) | 平铺列表 → 目录树 + 计数 | rtk ls |
50–70% |
| 进度过滤(Progress Filtering) | 剥离 ANSI 进度条,保留最终结果 | wget、pnpm install | 85–95% |
| JSON/文本双模式 | 工具支持 JSON 则走结构化解析 | ruff、pip | 80%+ |
| 状态机解析 | 跟踪测试生命周期状态 | pytest | 90%+ |
| NDJSON 流式解析 | 逐行解析 JSON 事件并聚合 | go test |
90%+ |
rtk read 的代码过滤级别由 --level 参数控制(none 保留全文、minimal 剥注释、aggressive 连函数体一起剥,只留签名),语言检测基于文件扩展名,支持 Rust、Python、JS/TS、Go、C/C++、Java。模块组织上,src/cmds/ 按生态划分子目录(git、js、python、go、rust、ruby、dotnet、php、cloud、system、jvm、scala),src/core/ 提供 utils、filter、tracking、tee、config、telemetry 等基础设施——这与 src/main.rs 中 Commands 枚举一一对应。
五、命令参考(按分类)
以下百分比均为 bash 输出缩减比例,不是账单缩减比例。
文件类
rtk ls . # 紧凑目录树
rtk read file.rs # 智能读文件
rtk read file.rs -l aggressive # 仅签名(剥离函数体)
rtk smart file.rs # 两行启发式代码摘要
rtk find "*.rs" . # 紧凑 find 结果
rtk grep "pattern" . # 按文件分组的搜索结果
rtk diff file1 file2 # 精简 diff(文件有差异时退出码为 1)
Git
rtk 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"
rtk git pull # -> "ok 3 files +10 -2"
GitHub CLI
rtk gh pr list # 紧凑 PR 列表
rtk gh pr view 42 # PR 详情 + checks
rtk gh issue list # 紧凑 issue 列表
rtk gh run list # Workflow 运行状态
测试运行器
rtk jest # Jest 紧凑输出(仅失败)
rtk vitest # Vitest 紧凑输出(仅失败)
rtk playwright test # E2E 结果(仅失败)
rtk pytest # Python 测试(-90%)
rtk phpt # PHP .phpt 测试(run-tests.php,-99%)
rtk go test # Go 测试(NDJSON,-90%)
rtk cargo test # Cargo 测试(-90%)
rtk rake test # Ruby minitest(-90%)
rtk rspec # RSpec 测试(JSON,-60%+)
rtk err <cmd> # 从任意命令中只过滤错误
rtk test <cmd> # 通用测试包装器 - 仅失败(-90%)
构建与 Lint
rtk lint # ESLint 按规则/文件分组
rtk lint biome # 支持其他 linter
rtk tsc # TypeScript 错误按文件分组
rtk next build # Next.js 构建紧凑输出
rtk prettier --check . # 需要格式化的文件
rtk cargo build # Cargo 构建(-80%)
rtk cargo clippy # Cargo clippy(-80%)
rtk ruff check # Python lint(JSON,-80%)
rtk golangci-lint run # Go lint(JSON,-85%)
rtk rubocop # Ruby lint(JSON,-60%+)
rtk mvnd verify # Maven Daemon(与 rtk mvn 相同的过滤器)
rtk sbt test # ScalaTest 输出(-90%)
rtk sbt compile # 仅编译错误(-75%)
rtk sbt run # 剥离 SBT 前导噪音
包管理器
rtk pnpm list # 紧凑依赖树
rtk uv run pytest # 保留 uv 环境语义,保留程序输出
rtk pip list # Python 包(自动检测 uv)
rtk pip outdated # 过期包
rtk bundle install # Ruby gems(剥离 Using 行)
rtk prisma generate # Schema 生成(无 ASCII art)
AWS
rtk aws sts get-caller-identity # 一行身份信息
rtk aws ec2 describe-instances # 紧凑实例列表
rtk aws lambda list-functions # 名称/运行时/内存(剥离敏感信息)
rtk aws logs get-log-events # 仅带时间戳的消息
rtk aws cloudformation describe-stack-events # 失败优先
rtk aws dynamodb scan # 解包类型注解
rtk aws iam list-roles # 剥离策略文档
rtk aws s3 ls # 截断 + tee 恢复完整输出
容器
rtk docker ps # 紧凑容器列表
rtk docker images # 紧凑镜像列表
rtk docker logs <container> # 去重日志
rtk docker compose ps # Compose 服务
rtk kubectl pods # 紧凑 Pod 列表
rtk kubectl logs <pod> # 去重日志
rtk kubectl services # 紧凑 Service 列表
rtk oc get pods # OpenShift Pod 摘要
rtk oc get services # OpenShift 服务列表
rtk oc logs <pod> # 去重日志
基础设施即代码(IaC)
rtk pulumi preview # 剥离头部/URL/耗时噪音
rtk pulumi up # 紧凑 apply 输出
rtk pulumi destroy # 紧凑 destroy 输出
rtk pulumi refresh # 漂移摘要
rtk pulumi stack # 栈元数据(剥离 owner/时间戳)
数据与分析
rtk json config.json # 结构而非值(默认压缩值,--keys-only 仅键)
rtk deps # 依赖摘要
rtk env -f AWS # 过滤环境变量
rtk log app.log # 去重日志
rtk curl <url> # 截断 + 保存完整输出
rtk wget <url> # 下载,剥离进度条
rtk summary <long command> # 启发式摘要
rtk proxy <command> # 原始透传 + 使用量跟踪
除 README 列出的命令外,从 src/main.rs 的 Commands 枚举还可以看到若干进阶子命令:rtk pipe(Unix 管道模式:从 stdin 读入、按指定过滤器名过滤后输出)、rtk trust / rtk untrust(信任/撤销项目本地 TOML 过滤器)、rtk verify(校验 Hook 完整性并运行 TOML 过滤器内联测试)、rtk learn(从 Claude Code 错误历史学习 CLI 纠错规则)、rtk cc-economics(ccusage 消费与 RTK 节省的对比分析)、rtk wc、rtk format(自动检测 prettier/black/ruff format)等。
六、全局标志
-u, --ultra-compact # ASCII 图标 + 单行内联格式(进一步压缩)
-v, --verbose # 提升详细度(-v / -vv / -vvv)
从 src/main.rs 可见两个标志均为 global = true,即每个子命令均可携带;verbose 采用 ArgAction::Count 计数:
-v:打印调试消息(如 "Git diff summary:");-vv:额外打印实际执行的命令;-vvv:额外打印过滤前的原始输出(透明性保证——用户随时能看到未过滤结果)。
ultra-compact 模式把措辞式输出替换为图标式单行,例如 gh 模块中 ✓ PR #42 merged 替代完整句子。
七、压缩效果示例
目录列表(45 行 → 12 行):
# ls -la (45 lines) # rtk ls (12 lines)
drwxr-xr-x 15 user staff 480 ... my-project/
-rw-r--r-- 1 user staff 1234 ... +-- src/ (8 files)
... | +-- main.rs
+-- Cargo.toml
Git 操作(15 行 → 1 行):
# git push (15 lines) # rtk git push (1 line)
Enumerating objects: 5, done. ok main
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
...
测试输出(失败时 200+ 行 → 约 20 行):
# cargo test (200+ lines on failure) # rtk test cargo test (~20 lines)
running 15 tests FAILED: 2/15 tests
test utils::test_parse ... ok test_edge_case: assertion failed
test utils::test_format ... ok test_overflow: panic at utils.rs:18
...
一个对 LLM 至关重要的设计是失败时可恢复完整输出:命令失败时 RTK 会把未过滤的原始输出落盘,LLM 可以直接读文件而无需重跑命令,例如:
FAILED: 2/15 tests
[full output: ~/.local/share/rtk/tee/1707753600_cargo_test.log]
该"tee 恢复"机制的源码在 src/core/tee.rs:小于 500 字节的输出不做落盘(MIN_TEE_SIZE),目录默认保留最近 20 个文件、单文件上限 1MB,并支持 RTK_TEE_DIR 环境变量与配置文件覆盖目录。
八、自动改写 Hook:接入方式与源码机制
这是使用 RTK 最有效的方式:Hook 在执行前透明拦截 Bash 命令并改写为 rtk 等价命令,实现全会话、全子代理 100% 采用率,且无逐命令上下文开销。
安装
rtk init -g # 安装 hook + RTK.md(推荐)
rtk init -g --opencode # OpenCode 插件(替代 Claude Code 方案)
rtk init -g --auto-patch # 非交互(CI/CD)
rtk init -g --hook-only # 仅 hook,不写 RTK.md
rtk init --show # 查看当前安装状态
安装完成后重启 Claude Code。
源码级机制(src/hooks/)
从 src/hooks/README.md 可以确认以下实现细节:
- 安装模式:默认全局模式创建 Hook、SHA-256 哈希与 RTK.md,并修补
settings.json/CLAUDE.md;--hook-only只装 Hook;--claude-md为旧的 134 行 RTK 块注入模式;各 Agent 模式(Windsurf →.windsurfrules、Cline →.clinerules、Codex →RTK.md+AGENTS.md、Hermes → Python 插件等)见该文档的 Installation Modes 表。 - 完整性校验:安装时
integrity::store_hash()计算 Hook 文件 SHA-256 写入~/.claude/hooks/.rtk-hook.sha256(只读 0o444);运行时重新比对,被篡改即阻止执行;rtk verify输出 PASS/FAIL/WARN/SKIP 状态(共 5 种完整性状态)。 - 补丁模式:默认交互式询问(非终端 stdin 时默认 No),
--auto-patch免询问,--no-patch打印手工指引。所有文件写入使用临时文件 + rename 原子写,settings 文件先备份.bak,重复执行幂等。 - 权限模型:遵循
Deny > Ask > Allow > Default(ask)优先级,从 Claude Code 各级settings.json提取Bash(...)规则;rtk rewrite子命令按裁决返回退出码(Deny→2 透传给宿主处理、Ask→3 宿主询问、Allow→0 自动放行)。 - 改写引擎:
rtk rewrite "$CMD"是全部 Hook 的唯一改写入口——受支持则退出 0 并打印改写结果,无 RTK 等价命令则退出 1 且无输出;Shell Hook 的典型写法为REWRITTEN=$(rtk rewrite "$CMD") || exit 0。改写模式注册表位于src/discover/。
九、Windows 支持
RTK 在原生 Windows 上完整可用。自 v0.37.2 起,自动改写 Hook 以原生二进制命令(rtk hook claude)运行——不再依赖 Unix shell、bash 或 jq,因此在 Command Prompt、PowerShell、Windows Terminal 中的改写行为与 Linux/macOS 一致。
# 1. 从 Releases 下载并解压 rtk-x86_64-pc-windows-msvc.zip
# 2. 将 rtk.exe 加入 PATH(如 C:\Users\<you>\.local\bin)
# 3. 初始化——安装原生二进制 hook
rtk init -g
- 从旧版升级? 若 v0.37.2 之前安装过,可能仍遗留旧版
rtk-rewrite.shshell Hook(需要 Unix shell),重新执行rtk init -g即迁移到原生二进制 Hook。 - 依赖:部分过滤器会调用 ripgrep(
rg)。请安装并置于 PATH(如winget install BurntSushi.ripgrep.MSVC),否则会看到Binary 'rg' not found on PATH警告。 - WSL 下行为与 Linux 完全一致:安装脚本 +
rtk init -g即可。
| 特性 | 原生 Windows | WSL |
|---|---|---|
| 过滤器(cargo、git 等) | 完整 | 完整 |
| 自动改写 Hook | 是(原生二进制) | 是 |
rtk init -g |
Hook 模式 | Hook 模式 |
rtk gain / 分析 |
完整 | 完整 |
十、支持的 AI 工具
RTK 支持 16 种 AI 编码工具(Copilot 区分 VS Code 与 CLI 两种集成,下表共 17 行)。每种集成都在 Agent 支持命令拦截的前提下,将 shell 命令改写为 rtk 等价命令:
| 工具 | 安装命令 | 机制 |
|---|---|---|
| Claude Code | rtk init -g |
PreToolUse hook(原生二进制) |
| GitHub Copilot (VS Code) | rtk init -g --copilot |
PreToolUse hook——透明改写 |
| GitHub Copilot CLI | rtk init -g --copilot |
PreToolUse deny-with-suggestion(CLI 限制) |
| Cursor | rtk init -g --agent cursor |
preToolUse hook(hooks.json) |
| Gemini CLI | rtk init -g --gemini |
BeforeTool hook |
| Codex | rtk init -g --codex |
AGENTS.md + RTK.md 指令 |
| Windsurf | rtk init -g --agent windsurf |
.windsurfrules(项目级) |
| Cline / Roo Code | rtk init --agent cline |
.clinerules(项目级) |
| OpenCode | rtk init -g --opencode |
插件 TS(tool.execute.before) |
| OpenClaw | openclaw plugins install ./openclaw |
插件 TS(before_tool_call) |
| Pi | rtk init -g --agent pi(全局) |
TypeScript 扩展(tool_call) |
| Hermes | rtk init --agent hermes |
Python 插件适配器(经 rtk rewrite 改写终端命令) |
| Mistral Vibe | rtk init -g --agent vibe |
pre_tool hook(hooks.toml) |
| Kilo Code | rtk init --agent kilocode |
.kilocode/rules/rtk-rules.md(项目级) |
| Google Antigravity | rtk init --agent antigravity |
.agents/rules/antigravity-rtk-rules.md(项目级) |
| Kimi AI | rtk init --agent kimi |
AGENTS.md(项目级) |
| Factory Droid | rtk init -g --agent droid(或项目级) |
~/.factory/hooks.json 中 PreToolUse hook(matcher Execute) |
各 Agent 的部署产物位于仓库 hooks/ 目录(Claude、Cursor、Gemini、Codex、Copilot、Cline、Kilo Code、Antigravity、Pi、Vibe、Windsurf、Hermes 等子目录),Hermes 插件源码与测试在 hooks/hermes/,安装后运行时文件位于 ~/.hermes/plugins/rtk-rewrite/。对应源码侧的 AgentTarget 枚举与 HookCommands 处理函数见 src/main.rs。
十一、配置
配置文件位置:~/.config/rtk/config.toml(macOS:~/Library/Application Support/rtk/config.toml)。README 中最常用的两个段落:
[hooks]
exclude_commands = ["curl", "playwright"] # 这些命令跳过自动改写
[tee]
enabled = true # 失败时保存原始输出(默认: true)
mode = "failures" # "failures"、"always" 或 "never"
命令失败时 RTK 保存完整未过滤输出,LLM 无需重跑即可读取(见第七节 tee 恢复示例)。
从 src/core/config.rs 可以看到配置系统实际支持的完整段落与默认值:
| 段落 | 字段 | 默认值 |
|---|---|---|
[tracking] |
enabled / history_days / database_path |
true / 90 天 / 默认 SQLite 路径 |
[display] |
colors / emoji / max_width |
true / true / 120 |
[filters] |
ignore_dirs / ignore_files |
.git、node_modules、target、__pycache__、.venv、vendor / *.lock、*.min.js、*.min.css |
[tee] |
enabled / mode / directory |
true / "failures" / ~/.local/share/rtk/tee/ |
[telemetry] |
enabled / consent_given / consent_date |
默认关闭,需显式同意 |
[hooks] |
exclude_commands / transparent_prefixes |
空 |
[limits] |
grep_max_results / grep_max_per_file / status_max_files / status_max_untracked / passthrough_max_chars |
200 / 25 / 15 / 10 / 2000 |
其中 [hooks] 段落有一个 README 未展开的实用字段 transparent_prefixes:为命令前缀(如 docker exec mycontainer、poetry run、bundle exec)声明"透明前缀"后,docker exec mycontainer git status 会被改写为 docker exec mycontainer rtk git status,而不是直接透传——匹配是字面精确匹配(前缀必须带尾随空格或整体相等),并扩展了内建的 noglob、command、builtin、exec、nocorrect 前缀列表。
节省统计分析命令
rtk gain # 汇总统计
rtk gain --graph # ASCII 图(近 30 天)
rtk gain --history # 最近命令历史
rtk gain --daily # 逐日分解
rtk gain --all --format json # JSON 导出(供仪表盘使用)
rtk discover # 发现漏掉的节省机会
rtk discover --all --since 7 # 全部项目、近 7 天
rtk session # 展示近期会话中 RTK 的采用情况
源码中 gain 还提供更全的维度参数(src/main.rs):--weekly / --monthly 周/月分解、--project 限定当前项目、--quota 配合 --tier pro|5x|20x(默认 20x)估算月度配额节省、--failures 查看解析失败回退日志、--reset 清零统计。discover 支持 --project(路径子串匹配)、--limit(每段最多条数,默认 15)、--format json。
卸载
rtk init -g --uninstall # 移除 hook、RTK.md、settings.json 条目
cargo uninstall rtk # 移除二进制
brew uninstall rtk # 若通过 Homebrew 安装
十二、隐私与遥测
RTK 可采集匿名、聚合的每日使用指标(每次至多一次)。遥测默认关闭,且需要在 rtk init 或 rtk telemetry enable 中显式 opt-in 同意(GDPR 第 6、7 条)。src/core/telemetry.rs 中可确认实现:只有 consent_given == Some(true) 且 telemetry.enabled 为真才发送;ping 间隔由 PING_INTERVAL_SECS = 23 * 3600(23 小时)控制;发送为 fire-and-forget,错误静默忽略。
采集内容与目的:
| 类别 | 数据 | 目的 |
|---|---|---|
| 身份 | 加盐设备哈希(SHA-256,不可逆) | 统计唯一安装数而不追踪个人 |
| 环境 | RTK 版本、OS、架构、安装方式 | 明确平台支持与测试重点 |
| 用量 | 命令数(24h)、总命令数、估算节省 token(24h/30d/累计) | 度量采用度与价值 |
| 质量 | Top 5 透传命令(0% 压缩)、解析失败计数、压缩率 <30% 的命令 | 识别缺失与待改进的过滤器 |
| 生态 | 命令类别分布(如 git 45%、cargo 20%、js 15%) | 为热门生态优先开发过滤器 |
| 留存 | 首次使用天数、近 30 天活跃天数 | 理解参与度、发现流失 |
| 采用 | AI 代理 hook 类型(claude/gemini/codex)、自定义 TOML 过滤器数 | 跟踪集成覆盖与 DSL 采用 |
| 配置 | config.toml 是否存在、排除命令数、项目数 | 理解用户成熟度与定制模式 |
| 功能 | 元命令(gain、discover、proxy、verify)使用计数 | 判断功能价值 |
| 经济 | 由估算节省 token × 固定内部常数推导的美元价值 | 量化 RTK 提供的价值 |
所有数据均为聚合计数或匿名化命令名(前 3 个词、不含参数);Top 命令只报工具名(如 "git"、"cargo"),绝不记录完整命令行。不采集:源代码、文件路径、命令参数、密钥、环境变量、个人数据、仓库内容。
管理遥测:
rtk telemetry status # 查看当前同意状态
rtk telemetry enable # 给出同意(交互式提示)
rtk telemetry disable # 撤回同意——立即停止所有采集
rtk telemetry forget # 撤回同意 + 删除全部本地数据 + 请求服务端删除
环境变量强制覆盖:
export RTK_TELEMETRY_DISABLED=1 # 无论同意与否均阻断遥测
十三、文档索引、构建特性与许可
- INSTALL.md — 详细安装参考
- docs/contributing/ARCHITECTURE.md — 系统设计与技术决策(含过滤策略矩阵、token 跟踪、构建优化)
- docs/contributing/TECHNICAL.md — 端到端流程导览
- docs/contributing/CODING_PRACTICES.md — 编码实践
- CONTRIBUTING.md — 贡献指南;SECURITY.md — 安全策略;docs/TELEMETRY.md — 遥测字段与数据处理全量说明
- src/core/README.md 与 src/cmds/README.md — 基础设施 API 与新增命令过滤器指南
- 性能参考(架构文档):发布二进制约 4.1MB,冷启动 5–10ms,代理开销约 5–15ms/命令;tests/ 下包含 Hook 集成、管道 stdin、搜索保真度等测试用例可验证各过滤行为
适用前提小结:本文基于当前仓库(版本 0.42.4,Cargo.toml);-90% 类比例为 bash 输出缩减的标称值,实际节省因命令与输出而异;token 绝对数为 bytes/4 估算值;Windows 原生 Hook 需 v0.37.2 及以上版本。RTK 以 Apache License 2.0 发布(见 LICENSE),免责声明见 DISCLAIMER.md。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00