rtk 会跳过和不会跳过的命令区别
**核心判断:**rtk 只代理“读输出、可压缩、不会改变语义”的命令;会跳过“写操作、shell 控制、结构化输出、语义不兼容或高风险改写”的命令。一、不会跳过:适合被 rtk 代理的命令
这些命令的共同点是:主要价值在 stdout / stderr 输出,输出通常很长但存在明显噪声,并且 rtk 有对应的解析规则。
| 判断维度 | 说明 | 示例 |
|---|---|---|
| 主要价值在输出 | 命令的目的主要是把信息展示给用户或 LLM,而不是修改环境或文件系统。 | git status、cargo test、pytest |
| 输出存在噪声 | 包含大量进度条、通过项、提示文案、重复日志或 ANSI 控制字符。 | tsc、docker logs app、pnpm install |
| 有专用规则 | rtk 已经知道如何解析该命令,并能保留关键信息。 | git diff → rtk git diff,npx tsc → rtk tsc |
| 改写不改变意图 | 改写后仍然执行原命令,只是过滤返回给 Agent 的输出。 | git status → rtk git status |
bash
git status
cargo test
pytest
tsc
rg foo .
docker logs app
二、会跳过:不适合被 rtk 自动代理的命令
这些命令通常不是为了给 LLM 阅读,或者改写后可能破坏 shell 语义、文件写入、机器可读结构或管道兼容性。
1. Shell 内建 / 环境控制
这类命令会改变当前 shell 状态,或者本身不是“产生可压缩输出”的命令,改写没有收益且可能破坏行为。
bash
cd
export
source
set
unset
pwd
2. 文件写入 / 副作用命令
这类命令的重点是副作用,不是输出内容。rtk 会跳过,避免改变执行语义。
bash
rm
mv
cp
mkdir
chmod
chown
touch
3. 文本处理管道组件
这些命令经常作为管道中间步骤,输出需要被后续程序精确消费。压缩会破坏后续命令。
bash
sed
awk
cut
sort
uniq
tr
4. 明确请求结构化输出
如果用户显式要求 JSON、JQ 或 template,说明输出是机器可读结构,rtk 不应压缩。
bash
gh pr view 1 --json title,body
gh pr list --jq ".[]"
5. 语义不兼容的 flags
某些 flag 的语义无法由 rtk 的替代命令完整复刻,因此会跳过。
bash
cat -A file
cat -v file
tail -f app.log
6. 写重定向
这类命令是在写文件,不是把内容读给 LLM 看。如果改成 rtk read,会改变行为。
bash
cat file > out.txt
head -10 file > out.txt
7. 管道兼容性风险
例如 find 的输出经常被 xargs 等命令消费。rtk 的压缩格式更适合人或 LLM 阅读,不一定适合下游程序。
bash
find . -name "*.rs" | xargs grep foo
8. 用户显式禁用
如果命令前带有 RTK_DISABLED=1,rtk 会尊重用户意图并跳过 rewrite。
bash
RTK_DISABLED=1 git status
三、快速判断表
| 问题 | 倾向 | 原因 |
|---|---|---|
| 输出是给 LLM / 人看的? | 代理 | 可以通过过滤减少 token |
| 输出是给另一个程序消费的? | 跳过 | 压缩可能破坏格式 |
| 命令主要是修改文件或环境? | 跳过 | 重点是副作用,不是输出 |
| 命令有 rtk 专用过滤规则? | 代理 | 能保留关键信息并减少噪声 |
| 用户显式要求 JSON / template? | 跳过 | 应保持机器可读结构 |
一句话总结:如果命令的输出是“给 LLM 看”的,rtk 倾向代理;如果命令的输出是“给 shell / 另一个程序消费”的,或者命令的重点是副作用,rtk 倾向跳过。