RTK + rtk-hermes:Hermes Agent 终端命令 Token 压缩方案
概述
RTK(Runtime Token Reducer)是一个 CLI 工具,能将冗长的 shell 命令输出压缩 60-90%,降低 LLM 上下文消耗。rtk-hermes 是 Hermes Agent 的插件,自动拦截所有 terminal 工具调用,在后台运行 rtk rewrite 实现透明压缩。
核心收益:每个 terminal() 调用节省约 70% 的 token,多命令累积效果显著。
架构
Agent 调用 terminal(command="ls -la /path")
→ rtk-hermes 插件 pre_tool_call 钩子拦截
→ 调用 rtk rewrite "ls -la /path"
→ RTK 返回简化命令: rtk ls -la /path
→ Hermes 执行简化命令
→ RTK 过滤输出后返回给模型
所有规则逻辑在 RTK 内部维护,插件仅负责拦截和转发。新命令支持自动生效,无需更新插件。
组件版本
| 组件 | 版本 | 说明 |
|---|---|---|
rtk 二进制 | v0.39.0 | 独立 CLI 工具,核心重写引擎 |
rtk-hermes 插件 | v1.2.3 | Hermes Agent 插件,拦截 terminal 调用 |
安装步骤
前提条件
- Hermes Agent 已安装
- Python 环境正常
1. 安装 rtk 二进制
# 参考 https://github.com/rtk-ai/rtk 安装2. 安装 rtk-hermes 插件到 Hermes venv
# 方式一:uv 指定 Python
uv pip install --python /opt/hermes/.venv/bin/python rtk-hermes
# 方式二:pip 直接安装
/opt/hermes/.venv/bin/pip install rtk-hermes3. 启用插件
编辑 Hermes 配置文件 ~/.hermes/config.yaml:
plugins:
enabled:
- rtk-rewrite插件入口点已注册为 hermes_agent.plugins: rtk-rewrite -> rtk_hermes。
环境变量配置
| 变量 | 默认值 | 可选值 | 说明 |
|---|---|---|---|
RTK_HERMES_MODE | rewrite | rewrite/suggest/off | rewrite=重写命令, suggest=仅建议不修改, off=关闭 |
RTK_HERMES_TIMEOUT_MS | 2000 | 正整数 | 每次 rtk rewrite 的超时时间 |
RTK_HERMES_PREVIEW_MARKER | true | true/false | 重写命令前加 : RTK && 标记做可见性提示 |
RTK_HERMES_BACKENDS | local | 逗号分隔或 all | 限制特定后端进行重写 |
实用命令
Hermes 会话内(需插件加载):
/rtk status— 查看插件状态/rtk stats— 查看节省统计(进程级计数器,不持久化)/rtk reset-stats— 重置计数器/rtk config— 查看当前配置
实测效果
以 ls -la /opt/hermes 为例:
| 指标 | 原生 ls -la | rtk ls -la | 节省 |
|---|---|---|---|
| 字符数 | 4,258 | 1,102 | 74% |
| 内容 | 权限/用户/大小/日期等噪音 | 仅文件名/目录结构 | — |
原生输出(4,258 chars):
-rw-r--r-- 1 hermes hermes 609 May 12 16:02 .dockerignore
-rw-r--r-- 1 hermes hermes 22178 May 12 16:02 .env.example
drwxr-xr-x 1 hermes hermes 80 May 12 16:02 .plans
...
rtk 输出(1,102 chars):
.plans/
.playwright/
acp_adapter/
agent/
...
RTK Rewrite 退出码
| 代码 | 含义 | 插件行为 |
|---|---|---|
| 0 | 允许重写 | stdout 有差异时应用重写 |
| 1 | 无等价命令 | 透传原命令 |
| 2 | 拒绝规则匹配 | 透传原命令 |
| 3 | 建议/确认(如 git status → rtk git status) | 视为成功,应用重写 |
降级机制
- RTK 二进制不存在 → 不注册钩子
- backend 不在
RTK_HERMES_BACKENDS→ 原命令不变 rtk rewrite超时/崩溃 → 原命令不变,记录警告
插件不会阻塞命令执行。
注意事项
- 插件通过
pre_tool_call钩子拦截 terminal 工具,不是 MCP 服务器 - 不修改工具 schema,对 prompt 缓存友好
- 输出压缩功能默认关闭(保守策略,防止隐藏调试信息)
- 统计计数器是进程级内存计数器,重启 Hermes 后清零