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.3Hermes 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-hermes

3. 启用插件

编辑 Hermes 配置文件 ~/.hermes/config.yaml

plugins:
  enabled:
    - rtk-rewrite

插件入口点已注册为 hermes_agent.plugins: rtk-rewrite -> rtk_hermes

环境变量配置

变量默认值可选值说明
RTK_HERMES_MODErewriterewrite/suggest/offrewrite=重写命令, suggest=仅建议不修改, off=关闭
RTK_HERMES_TIMEOUT_MS2000正整数每次 rtk rewrite 的超时时间
RTK_HERMES_PREVIEW_MARKERtruetrue/false重写命令前加 : RTK && 标记做可见性提示
RTK_HERMES_BACKENDSlocal逗号分隔或 all限制特定后端进行重写

实用命令

Hermes 会话内(需插件加载):

  • /rtk status — 查看插件状态
  • /rtk stats — 查看节省统计(进程级计数器,不持久化)
  • /rtk reset-stats — 重置计数器
  • /rtk config — 查看当前配置

实测效果

ls -la /opt/hermes 为例:

指标原生 ls -lartk ls -la节省
字符数4,2581,10274%
内容权限/用户/大小/日期等噪音仅文件名/目录结构

原生输出(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 statusrtk git status视为成功,应用重写

降级机制

  • RTK 二进制不存在 → 不注册钩子
  • backend 不在 RTK_HERMES_BACKENDS → 原命令不变
  • rtk rewrite 超时/崩溃 → 原命令不变,记录警告

插件不会阻塞命令执行。

注意事项

  • 插件通过 pre_tool_call 钩子拦截 terminal 工具,不是 MCP 服务器
  • 不修改工具 schema,对 prompt 缓存友好
  • 输出压缩功能默认关闭(保守策略,防止隐藏调试信息)
  • 统计计数器是进程级内存计数器,重启 Hermes 后清零