首页
/ RTK 实战指南:用单个 Rust 二进制代理压缩 CLI 输出,为 LLM Agent 削减最高 90% 的 Bash Token

RTK 实战指南:用单个 Rust 二进制代理压缩 CLI 输出,为 LLM Agent 削减最高 90% 的 Bash Token

2026-09-06 15:24:12作者:柯茵沙

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 statuscargo testls 等命令时,完整的原始输出会原样进入 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 = 3lto = truecodegen-units = 1strip = 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.mddocs/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 statusrtk git status);基于插件的代理(如 Hermes)通过插件 API 在执行前改写命令。Agent 无需显式调用 rtk,就能收到压缩输出。

作用域提醒:Hook 只作用于 Bash 工具调用。Claude Code 内建的 ReadGrepGlob 工具不经过 Bash Hook,因此不会被自动改写。要在这类工作流中获得 RTK 压缩,请使用 shell 命令(cat/head/tailrg/grepfind)或直接调用 rtk readrtk greprtk find

四、工作原理:六阶段生命周期与 12 种过滤策略

rtk 每条命令的执行遵循统一的六阶段生命周期(docs/contributing/ARCHITECTURE.md):

  1. PARSE — Clap 解析器提取命令、参数、全局标志(verboseultra_compact);
  2. ROUTEsrc/main.rs 中按子命令分发到对应模块(如 git::run(args, verbose));
  3. EXECUTEstd::process::Command 捕获 stdout/stderr 与退出码;
  4. FILTER — 各模块按自身策略压缩(如 git log 压缩为 "5 commits, +142/-89");
  5. PRINT — 按 -v 级别决定是否打印调试信息,输出压缩结果;
  6. TRACKtracking::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 readrtk 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.rsCommands 枚举一一对应。

五、命令参考(按分类)

以下百分比均为 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.rsCommands 枚举还可以看到若干进阶子命令:rtk pipe(Unix 管道模式:从 stdin 读入、按指定过滤器名过滤后输出)、rtk trust / rtk untrust(信任/撤销项目本地 TOML 过滤器)、rtk verify(校验 Hook 完整性并运行 TOML 过滤器内联测试)、rtk learn(从 Claude Code 错误历史学习 CLI 纠错规则)、rtk cc-economics(ccusage 消费与 RTK 节省的对比分析)、rtk wcrtk 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.sh shell Hook(需要 Unix shell),重新执行 rtk init -g 即迁移到原生二进制 Hook。
  • 依赖:部分过滤器会调用 ripgreprg)。请安装并置于 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 .gitnode_modulestarget__pycache__.venvvendor / *.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 mycontainerpoetry runbundle exec)声明"透明前缀"后,docker exec mycontainer git status 会被改写为 docker exec mycontainer rtk git status,而不是直接透传——匹配是字面精确匹配(前缀必须带尾随空格或整体相等),并扩展了内建的 noglobcommandbuiltinexecnocorrect 前缀列表。

节省统计分析命令

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 initrtk 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   # 无论同意与否均阻断遥测

十三、文档索引、构建特性与许可

适用前提小结:本文基于当前仓库(版本 0.42.4,Cargo.toml);-90% 类比例为 bash 输出缩减的标称值,实际节省因命令与输出而异;token 绝对数为 bytes/4 估算值;Windows 原生 Hook 需 v0.37.2 及以上版本。RTK 以 Apache License 2.0 发布(见 LICENSE),免责声明见 DISCLAIMER.md

登录后查看全文
热门项目推荐
相关项目推荐