当你通过 AI 助手查询 Elasticsearch 时,你真正需要的是事实:索引名称、字段映射、Elasticsearch 查询语言(ES|QL)查询语句、案例编号、情感分数。然而,当前的大语言模型(LLM)接口在每次响应中都会包裹大量对话式的填充内容:
“当然!我很乐意帮助你……”
“这应该让你对整体情况有个很好的了解……”
“如果还需要其他帮助,请随时告诉我!”
这不仅令人厌烦,而且成本高昂。每个 token 都意味着金钱和延迟。对于生产环境中的 Elasticsearch 查询,这种开销会迅速累积。本文介绍了 elastic-caveman,并分享了一项对照实验的结果——该实验针对 Elasticsearch 集群,在八个真实的模型上下文协议(MCP)场景中进行了测试。主要发现:平均减少了 63.6% 的 Token,节省了 817 个 Token,并且技术准确性没有任何损失。
elastic-caveman 验证了一个简单的假设:从 AI 响应中剥离出纯粹的信号,并衡量其影响。具体方法如下:
以下是我们在八个真实的 MCP 工具调用中发现的情况:Elastic-Caveman 计划成功优化了 AI 响应的规模,且没有牺牲质量或功能。
指标 | 结果 |
|---|---|
测试场景数 | 8 |
成功率 | 88% |
Token 减少比例 | 平均 63.6% |
普通模式总 Token | 1,284 |
原始人模式总 Token | 467 |
节省的 Token | 817 |
单场景最大减少比例 | 91.5% |
关键保留项(0% 损失):
示例 1:列出索引 —— 减少 87%
用户:显示我的索引
普通模式(107 个 Token):
当然!我很乐意帮你查看索引。以下是你的 Elasticsearch 集群中所有索引的完整列表。每个条目都显示了索引名称以及相关的元数据。这应该能让你对集群中存储的内容有一个很好的了解:-- salesforce-cases-- support-tickets以上就是我找到的所有索引。如果你想深入了解某个具体的索引,请告诉我,我会很乐意提供帮助!原始人模式(14 个 Token):
索引:salesforce-cases, support-tickets节省:93 个 Token(86.9%)
示例 2:生成 ES|QL 查询 —— 减少 75%
用户:显示按产品领域分组的未解决的关键工单
普通模式(208 个 Token):
好的!我很乐意帮你编写这条 ES|QL 查询语句。你要做的是过滤出状态为“未解决”且优先级为“关键”的工单,然后按产品领域分组。以下是实现方法……接着是实际查询语句,外加 150 多个 Token 的分步解释
原始人模式(52 个 Token):
FROM support-ticketsWHERE status = "Open" AND priority = "Critical"| STATS count = COUNT(*) BY product_area| SORT count DESC| LIMIT 100
过滤条件:未解决 + 关键,按 product_area 分组、计数、降序排序。节省:156 个 Token(75.0%)。两种模式下,ES|QL 语法都是逐字符一致的。
示例 3:搜索最近的支持工单 —— 减少 35%
用户:显示 5 条最近的支持工单
原始人模式(143 个 Token):
5 条最近工单,按最新排列:
| 案例编号 | 优先级 | 状态 | 账户名称 | 主题 | 天数 | 情感评分CASE-0012 | 关键 | 未解决 | Pinnacle Financial | 监管报告:错误的税务计算 | 2 | -0.94CASE-0021 | 关键 | 已升级 | Riverstone Capital | 安全审计阻止续订 | 2 | -0.93CASE-0046 | 中 | 未解决 | Blackrock Partners | 渗透测试结果需供应商回复 | 2 | -0.70CASE-0006 | 高 | 未解决 | United Oil & Gas | 未经授权访问——紧急 | 3 | -0.91CASE-0017 | 高 | 未解决 | Riverstone Capital | 续订文书停滞 | 4 | -0.86
所有情感评分均为负面。4 月 7 日有两条关键案例。所有案例编号、优先级、账户名称和情感评分被逐字保留。在优化输出时,我们会去除对话式的填充内容,比如 “当然!我很乐意帮助你……”、“这应该能让你有个很好的了解……” 或 “需要我帮你确定这些的优先级吗?”。同时,我们会保留所有事实性内容,例如 ES|QL 代码片段(如 FROM support-tickets WHERE status = "Open")、字段名称(如 sentiment_score、product_area、resolution_hours)、索引名称(如 support-tickets 和 salesforce-cases)。此外,我们还保留具体的标识符和业务实体,如案例编号 CASE-0012、CASE-0002;账户名称,如 Pinnacle Financial 和 United Oil Gas Corp;以及所有数值,例如情感评分 -0.94、统计数量(如 47 个重复项)、持续时间(如 18 天)或指标(如平均 27.0 小时)。因此,编辑后的文本严格聚焦于查询语法、实体和数字,只丢弃了礼貌性的框架性内容。
不同操作类型的结果也有所不同:
查询类型 | Token 减少比例 | 原因 |
|---|---|---|
元数据清单 | 85–92% | 载荷小,普通模式下填充内容最多 |
ESQL 生成 | 70–75% | 查询语句本身一致,解释部分被移除 |
数据密集搜索 | 35–40% | 实际数据占主导,填充空间减少 |
以下是在全部八个场景中,针对真实 MCP 数据的 Token 节省情况,按查询类型划分:
场景 | 普通 Token | 原始人 Token | 减少比例 | 节省 Token | MCP 工具 |
|---|---|---|---|---|---|
T1:列出所有流 | 118 | 10 | 91.5% | 108 | platform.streams.list_streams |
T2:列出索引 | 107 | 14 | 86.9% | 93 | platform.core.list_indices |
T3:获取索引映射 | 143 | 40 | 72.0% | 103 | platform.core.get_index_mapping |
T4:生成 ESQL 查询 | 208 | 52 | 75.0% | 156 | platform.core.generate_esql |
T5:执行 ESQL 聚合 | 149 | 44 | 70.5% | 105 | platform.core.execute_esql |
T6:搜索最近工单 | 221 | 143 | 35.3% | 78 | platform.core.search |
T7:搜索已升级案例 | 198 | 128 | 35.4% | 70 | platform.core.search |
T8:按优先级统计 ESQL | 140 | 36 | 74.3% | 104 | platform.core.execute_esql |
总计 | 1,284 | 467 | 63.6% | 817 |
技术准确性验证:
准确性检查项 | 结果 | 详情 |
|---|---|---|
ESQL 语法保留 | 通过 | FROM、WHERE、STATS、SORT、LIMIT 完全一致 |
字段名称保留 | 通过 | account_id、sentiment_score、product_area 逐字保留 |
索引名称保留 | 通过 | support-tickets、salesforce-cases 未改变 |
案例编号保留 | 通过 | CASE-0012、CASE-0002 精确保留 |
账户名称保留 | 通过 | Pinnacle Financial、United Oil Gas Corp 精确保留 |
数值保留 | 通过 | 情感评分 -0.94、-0.88;开放天数 18、7 精确保留 |
优先级/状态标签 | 通过 | Critical、Escalated、Open 逐字保留 |
空值保留 | 通过 | 低优先级的 resolution_hours 为 null 保留 |
错误消息保留 | 通过 | 工具验证错误逐字引用 |
信息零损失。Token 减少 64%。
对于在 Elasticsearch 上构建 AI 助手的团队来说,64% 的 Token 减少意味着:在规模下输出成本节省 64%、更快的流式响应、以及更大的上下文窗口空间用于处理实际数据而非填充内容。当你在凌晨两点调试一条 ES|QL 查询时,你不需要 AI 告诉你它很乐意帮忙;你只需要查询结果!
这个实验揭示了一个根本性问题:对话式 AI 界面总是在错误的指标上进行优化——它们追求听起来像人类,而用户往往只需要快速准确的数据。
对于技术性工作流,尤其是数据查询,有一个强有力的理由支持模式切换:
/elastic-caveman
关闭方式: “normal mode” 或 “verbose”实际运行效果我们使用 Claude 模型测试了 elastic-caveman,以衡量其对 Token 使用量和成本的影响:此测试展示了 elastic-caveman 的效率。

原始人模式仅仅是个开始。可以考虑动态模式切换:在会话过程中随时切换简洁与详细模式。或者混合模式:成功时简洁,出错时详尽。也可以为团队定制详细的级别,以满足中间需求。目标不是让 AI 助手变得机械,而是让用户能够控制信号与噪声的比例。
使用你的 Elasticsearch 数据测试原始人模式:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。