rtk 安装与使用流程
**说明:**以下以 **Claude Code**、**OpenCode**、**OpenClaw** 为例说明 rtk 的安装和集成流程。如果指的是其他工具,需要再确认具体集成方式。一、安装 rtk
推荐通过 Homebrew 安装:
bash
brew install rtk
也可以使用官方安装脚本:
bash
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
安装后必须验证是否为正确的 Rust Token Killer:
bash
rtk --version
rtk gain
二、Claude Code 集成
Claude Code 使用 PreToolUse shell hook。rtk 会在 Claude Code 执行 Bash 命令前拦截命令,并调用 rtk rewrite 做透明改写。
安装命令
bash
rtk init -g
推荐使用自动 patch 模式,减少手动编辑配置:
bash
rtk init -g --auto-patch
安装后写入的文件
| 路径 | 作用 |
|---|---|
~/.claude/hooks/rtk-rewrite.sh | Claude Code 的 PreToolUse hook 脚本 |
~/.claude/RTK.md | rtk 的精简使用说明 |
~/.claude/CLAUDE.md | 引用 RTK.md,让 Agent 感知 rtk |
~/.claude/settings.json | 注册 PreToolUse hook |
验证
bash
rtk init --show
使用效果
bash
git status # 实际执行前改写为:rtk git status
cargo test # 实际执行前改写为:rtk cargo test
Claude Code 的 hook 依赖 jq 解析 JSON。如果 jq 缺失、rtk 不存在、版本过旧或命令无匹配规则,hook 会静默跳过,让原始命令正常执行。
卸载
bash
rtk init -g --uninstall
三、OpenCode 集成
OpenCode 使用的是 TypeScript plugin,不是 shell hook。插件监听 tool.execute.before 事件,在命令执行前调用 rtk rewrite,并原地修改 args.command。
OpenCode 的 rtk 插件只支持全局安装,不支持项目级安装。
安装命令
bash
rtk init -g --opencode
插件位置
text
~/.config/opencode/plugins/rtk.ts
工作流程
使用效果
bash
git diff # 执行前改写为:rtk git diff
git status # 执行前改写为:rtk git status
验证 rewrite 规则
bash
rtk rewrite "git status"
预期输出:
bash
rtk git status
安装完成后建议重启 OpenCode,让插件加载生效。
四、OpenClaw 集成
OpenClaw 使用 plugin before_tool_call hook。插件会拦截 exec tool 调用,并把命令交给 rtk rewrite 判断是否需要改写。
前置检查
bash
rtk --version
rtk gain
方式一:通过 OpenClaw CLI 安装
在 rtk 仓库根目录执行:
bash
openclaw plugins install ./openclaw
方式二:手动复制插件
bash
mkdir -p ~/.openclaw/extensions/rtk-rewrite
cp openclaw/index.ts openclaw/openclaw.plugin.json ~/.openclaw/extensions/rtk-rewrite/
openclaw gateway restart
配置示例
json
{
"plugins": {
"entries": {
"rtk-rewrite": {
"enabled": true,
"config": {
"enabled": true,
"verbose": false
}
}
}
}
}
工作流程
text
OpenClaw exec tool
-> before_tool_call
-> rtk rewrite "git status"
-> git status 改成 rtk git status
-> 返回压缩后的输出
五、日常使用方式
集成成功后,大多数时候不需要手动加 rtk 前缀。Agent 输入普通命令,hook / plugin 会自动改写。
| 用户 / Agent 输入 | 实际执行 |
|---|---|
git status | rtk git status |
git diff | rtk git diff |
rg "foo" . | rtk grep "foo" . |
pnpm run lint | rtk lint |
pytest | rtk pytest |
docker logs app | rtk docker logs app |
也可以手动调用:
bash
rtk git status
rtk read src/main.rs
rtk grep "pattern" .
rtk gain --history
六、常用检查命令
bash
rtk rewrite "git status"
rtk rewrite "pnpm run lint"
rtk rewrite "pytest"
rtk gain
rtk gain --graph
rtk gain --history
七、临时禁用单条命令代理
如果某条命令不希望被 rtk 改写,可以加 RTK_DISABLED=1 前缀:
bash
RTK_DISABLED=1 git status
这样 hook 会跳过 rewrite,执行原始命令。