【免费下载链接】token-savior
MCP server that gets Claude to 97.9% (188/192) on a real coding benchmark at -80% active tokens and -83% wall time, vs 78.3% plain. Structural code navigation + persistent memory engine. Works with every MCP client.
Token Savior 是一款面向 AI 编程代理的 MCP server,核心能力是结构化代码导航与持久化记忆引擎,在真实编码基准上把 Claude 的 active tokens 降低约 80%、任务耗时降低约 83%。当它与 serena、RTK 这类"邻居工具"同时运行时,会出现在同一工具层上的重叠——好消息是,Token Savior 对每一层都提供了独立的 opt-out 开关,叠加使用通常没有冲突。
先搞清楚:Token Savior 占了哪几个"工具层"
Token Savior 并不是单一功能的工具,它横跨多个层,而大多数同类工具只占其中一层。这也是"共存"问题产生的根源:
| 工具层 | Token Savior 对应能力 | 是否独占 |
|---|---|---|
| 符号图导航 | find_symbol、get_dependents等 | ❌ 与 serena 直接重叠 |
| PostToolUse 输出压缩 | 34 个 Bash 输出 compactor(git/pytest/aws/k8s…) | ❌ 与 RTK 同层 |
| 持久化记忆引擎 | SQLite + FTS5 + 向量嵌入 | ❌ 与 codebase-memory 部分重叠 |
| PreToolUse 命令改写 | 运行前把git status改写成更紧凑的形式 | ✅ 独占 |
| 结构化编辑与审计 | detect_breaking_changes、find_dead_code | ✅ 独占 |
官方对叠加策略的总结很直白:"Overlap is opt-out per layer, so running both is usually fine once you disable the half you already have."即重叠按层解除,关掉你已有的那一半即可。相关说明见 README.md。
与 serena 共存:导航层二选一,推荐 compact-only 配置
serena 与 Token Savior 的重叠是直接的:两者都提供find_symbol/get_dependents级别的符号图导航。同时开着两套导航工具,模型会困惑"该用哪个",还白白多付一份工具清单(manifest)的 token 成本——每个被宣告的工具大约占用 50~200 个 token。
👉推荐做法:把 Token Savior 切换为compact-onlyprofile。该 profile 几乎不宣告任何 MCP 工具(只保留ts_discover用于统计采用率),但 Bash compactor 和 PreToolUse 改写器是hook,不占用工具清单,依然照常运行:
"env": { "TOKEN_SAVIOR_PROFILE": "compact-only" }这个设计在源码中一目了然:src/token_savior/server.py 中compact_only的定义就是"排除除ts_discover之外的所有工具",注释明确写着它服务于"已经在别处运行 serena、codebase-memory 等导航/记忆的用户"。
与 RTK 共存:同一 PostToolUse 层,只留一个
RTK 做的是 PostToolUse Bash 输出压缩,与 Token Savior 的TS_BASH_COMPACT=1处于同一层,且受同一限制:
PostToolUse hook 在工具返回之后才触发,只能追加上下文,无法缩小当前轮次已经发出的输出。两个压缩器同时开启,等于给同一段输出打两遍补丁,没有额外收益。
👉推荐做法:只保留你更常用的那一个。让 RTK 独占输出压缩层时,不设置(或置 0)该开关即可:
TS_BASH_COMPACT=0 # 把 Bash 输出压缩让给 RTK注意一个常见误区:如果你想让"当前轮次真正变小",真正起作用的不是 PostToolUse 压缩器,而是PreToolUse 改写器——它在命令运行前把git status改写成git status --porcelain=v2 --branch、pytest改写成pytest -q --tb=line,让更小的输出从一开始就不产生。它与 RTK 不冲突,可以放心同时开启:
TS_BASH_REWRITE=1 # 保留这个:它是唯一能缩小当前轮次的开关改写器行为见 hooks/bash_rewriter_hook.py,输出压缩器入口见 hooks/tool_capture_hook.py,规则实现位于 src/token_savior/bash_rewriter/rules.py 与 src/token_savior/compactors/ 目录。
opt-out 配置速查表:按层关闭
以下是全部与"共存"相关的开关,按需取用(均为可选环境变量):
| 重叠层 | 让位给谁 | opt-out 配置 |
|---|---|---|
| 符号导航 | serena | TOKEN_SAVIOR_PROFILE=compact-only |
| PostToolUse 输出压缩 | RTK | TS_BASH_COMPACT=0(不设置即可) |
| 持久化记忆 | codebase-memory | TS_MEMORY_DISABLE=1 |
| 输出侧沙箱 | 任意 | TS_CAPTURE_DISABLED=1 |
记忆引擎的关闭逻辑在 src/token_savior/server.py:设为1后,所有memory_*入口工具直接从清单中移除,模型不再看到它们。
三种典型用户的组合策略
策略 A:已有 serena 导航
"env": { "TOKEN_SAVIOR_PROFILE": "compact-only", "TOKEN_SAVIOR_CLIENT": "claude-code" }serena 负责导航,Token Savior 只贡献它独占的 Bash 层 + 审计工具,manifest 成本仅约 0.3 KT。
策略 B:已有 RTK 压缩
TS_BASH_COMPACT=0 # 输出压缩让给 RTK TS_BASH_REWRITE=1 # 保留:运行前改写,真正缩小当前轮次策略 C:全功能独立使用(无 serena / RTK)
TOKEN_SAVIOR_PROFILE=optimized # 15 个高频工具 + 精简 schema TS_BASH_COMPACT=1 # 输出压缩器 TS_BASH_REWRITE=1 # 命令改写器optimized是官方基准的帕累托最优档,profile 对比见 README.md。
一键安装 hook:ts init 让配置真正落地
Bash compactor 和改写器是 Claude Code 的 hook,需要写入~/.claude/settings.json才生效。Token Savior 提供幂等的安装命令,支持claude、cursor、gemini、codex、openclaw五类客户端:
ts init --agent claude --yes # 自动合并 hook,支持 --dry-run 预览它会检测已有 hook 条目、按(matcher, command)去重、写入前自动备份 settings.json,重复执行是安全的 no-op。若你担心与 RTK 的 hook 冲突,先跑--dry-run看 unified diff 再决定是否写入。
如何验证共存配置生效
- 用
ts_discover看采用率:扫描最近 30 天转录,报告哪些会话走了 TS 工具、哪些还在裸跑Read/Grep。compact-only下也保留该工具,就是为了"让采用率保持可测量"。 - 改写审计日志:
TS_BASH_REWRITE_LOG=~/.local/state/token-savior/rewrites.jsonl会为每次改写追加一行 JSON,可直接核对 RTK 场景下改写器是否仍在工作。 - 对照基准数字:v4.1 的 Bash 压缩基准约每周省 20.4 K tokens(~30 K → ~9.6 K),见 README.md 与 CHANGELOG.md 的 v4.1.0 条目。
一句话总结:Token Savior 与 serena、RTK 的共存原则是"层不重叠"——导航层交给 serena 就用compact-only,压缩层交给 RTK 就关TS_BASH_COMPACT,而 PreToolUse 改写器和审计工具这两个独占能力,无论和谁共存都建议保留。
【免费下载链接】token-savior
MCP server that gets Claude to 97.9% (188/192) on a real coding benchmark at -80% active tokens and -83% wall time, vs 78.3% plain. Structural code navigation + persistent memory engine. Works with every MCP client.
相关推荐
Nuke 图片加载框架缓存分层详解:ImageCache 内存缓存、URLCache 与 DataCache 磁盘缓存的配置与取舍
Nuke 图片加载框架缓存分层详解:ImageCache 内存缓存、URLCache 与 DataCache 磁盘缓存的配置与取舍 本篇技术指南围绕 Nuke(
移动开发图像处理从安装到上手:Fluent Reader Lite快速入门教程
从安装到上手:Fluent Reader Lite快速入门教程 Fluent Reader Lite 是一款基于 Flutter 构建的轻量级移动 RSS 客户
Grafana Mimir 乱序样本(Out-of-Order Samples)摄取:配置指南与底层原理
Grafana Mimir 乱序样本(Out of Order Samples)摄取:配置指南与底层原理 本文面向需要解决“样本时间戳乱序导致被拒绝/丢弃”问题
时序数据库后端数据存储可观测性云原生
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考