通过缓存、压缩和智能工具替换来优化Claude Code和Claude Desktop中的令牌使用
Token Optimizer MCP是一个模型上下文协议(MCP)服务器,通过智能缓存、压缩和智能工具替换,将上下文窗口的使用减少60-90%。通过在SQLite中外部存储压缩内容并提供标准工具的优化替代方案,该服务器帮助您最大化可用的上下文窗口。
生产结果:在超过38,000次操作的真实使用中,实现了60-90%的令牌减少。
# 以管理员身份运行PowerShell,然后执行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 全局安装(钩子自动安装!)
npm install -g @ooples/token-optimizer-mcp
# 全局安装(钩子自动安装!)
npm install -g @ooples/token-optimizer-mcp
就这样!安装脚本会自动完成以下步骤:
结果:所有操作实现60-90%的令牌减少!
注意:如果跳过了自动安装(例如,在CI环境中),可以手动运行安装程序:
powershell -ExecutionPolicy Bypass -File install-hooks.ps1bash install-hooks.sh对于详细的平台特定安装说明,请参阅docs/HOOKS-INSTALLATION.md。
使用示例:
// 缓存大量内容以从上下文窗口中移除
optimize_text({
text: "大型API响应或文件内容...",
key: "api-response-key",
quality: 11
})
// 结果:60-90%令牌减少
</details>
标准文件工具的优化替代方案,具有智能缓存和基于差异的更新:
使用示例:
// 自动缓存地读取文件
smart_read({ path: "/path/to/file.ts" })
// 第一次读取:完整内容
// 后续读取:仅差异(80%减少)
</details>
对外部数据源的智能缓存和优化:
使用示例:
// 自动缓存地获取API
smart_api_fetch({
method: "GET",
url: "https://api.example.com/data",
ttl: 300
})
// 缓存响应:95%令牌减少
</details>
带有智能缓存的开发工作流优化:
使用示例:
// 带有缓存地运行测试
smart_test({
onlyChanged: true, // 仅测试更改的文件
coverage: true
})
</details>
企业级缓存策略,减少87-92%的令牌:
使用示例:
// 配置多级缓存
smart_cache({
operation: "configure",
evictionStrategy: "LRU",
l1MaxSize: 1000,
l2MaxSize: 10000
})
</details>
通过智能缓存实现全面监控,减少88-92%的令牌:
使用示例:
// 创建警报
alert_manager({
operation: "create-alert",
alertName: "high-cpu-usage",
channels: ["slack", "email"],
threshold: { type: "above", value: 80 }
})
</details>
带有智能缓存的系统级操作:
使用示例:
// 查看会话令牌使用情况
get_session_stats({})
// 结果:按工具详细分解的令牌使用情况
</details>
细粒度的令牌使用分析,用于定位优化机会:
使用示例:
// 获取每个钩子分析
get_hook_analytics({
startDate: "2025-01-01T00:00:00Z",
endDate: "2025-12-31T23:59:59Z"
})
// 结果:显示哪些钩子消耗了最多的令牌
// 获取每个动作分析
get_action_analytics({})
// 结果:显示哪些工具使用了最多的令牌
// 以CSV格式导出分析数据
export_analytics({
format: "csv",
hookPhase: "PreToolUse"
})
// 结果:按PreToolUse钩子过滤的CSV导出
主要特性:
当全局钩子被安装后,token-optimizer-mcp会在每次工具调用时自动运行:
┌─────────────────────────────────────────────────────────────┐
│ 阶段1:PreToolUse - 工具替换 │
│ ├─ 读取 → smart_read (减少80%令牌) │
│ ├─ grep → smart_grep (减少80%令牌) │
│ └─ glob → smart_glob (减少75%令牌) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 阶段2:输入验证 - 缓存查找 │
│ └─ get_cached 检查操作是否已经完成 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 阶段3:PostToolUse - 输出优化 │
│ ├─ 对大型输出使用 optimize_text │
│ └─ 对重复内容使用 compress_text │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 阶段4:会话跟踪 │
│ └─ 将所有操作日志到 operations-{sessionId}.csv │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 阶段5:UserPromptSubmit - 提示优化 │
│ └─ 在发送到API之前优化用户提示 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 阶段6:PreCompact - 预压缩优化 │
│ └─ 在Claude Code压缩对话之前进行优化 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 阶段7:指标与报告 │
│ └─ 跟踪令牌减少指标并生成报告 │
└─────────────────────────────────────────────────────────────┘
基于超过38,000次真实使用中的操作:
| 工具类别 | 平均令牌减少 | 缓存命中率 |
|---|---|---|
| 文件操作 | 60-90% | >80% |
| API响应 | 83-95% | >75% |
| 数据库查询 | 83-90% | >70% |
| 构建/测试输出 | 70-85% | >65% |
每会话节省:300K-700K令牌(价值$0.90-$2.10,按$3/M令牌计算)
// 缓存大量内容以从上下文窗口中移除
const result = await optimize_text({
text: "大型API响应或文件内容...",
key: "cache-key",
quality: 11
});
// 结果:原始令牌被移除,仅保留缓存键(约50个令牌)
// 后续检索
const cached = await get_cached({ key: "cache-key" });
// 结果:恢复完整的原始内容
// 第一次读取:完整内容
await smart_read({ path: "/src/app.ts" });
// 后续读取:仅差异(减少80%)
await smart_read({ path: "/src/app.ts" });
// 第一次请求:获取并缓存
await smart_api_fetch({
method: "GET",
url: "https://api.example.com/data",
ttl: 300
});
// 后续请求:使用缓存(减少95%)
await smart_api_fetch({
method: "GET",
url: "https://api.example.com/data"
});
// 查看当前会话的令牌使用情况
await get_session_stats({});
// 结果:按工具、操作和节省情况细分
// 分析整个项目
await analyze_project_tokens({
projectPath: "/path/to/project"
});
// 结果:成本估算和优化机会
自动安装程序检测并配置token-optimizer-mcp: