news 2026/8/31 9:56:38

如何压缩上下文还保留错误现场:Caveman JSON 压缩器的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何压缩上下文还保留错误现场:Caveman JSON 压缩器的完整指南

如何压缩上下文还保留错误现场:Caveman JSON 压缩器的完整指南

【免费下载链接】caveman🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman项目地址: https://gitcode.com/GitHub_Trending/caveman1/caveman

在 AI Agent 的实际使用中,工具返回的 JSON 往往是 Token 消耗的大户。Caveman 是一个面向 Claude Code 等编码 Agent 的技能工具,它的核心卖点是用"原始人式精简"的思路为模型上下文瘦身,官方宣称可削减 65% 的 Token。其中真正干活的,是位于 engine/compressors/ 目录下的Caveman JSON 压缩器:它专门处理工具输出里的 JSON 负载,一边折叠重复数组,一边原样保留 error/message 子树,做到"瘦身不丢关键信息"。

为什么 JSON 值得单独压缩

Agent 跑任务时,一次工具调用动辄返回几十上百条记录:订单列表、API 响应、日志事件……这些 JSON 有两个共同点:

  1. 数组高度重复——绝大多数元素是同一"形状"的重复记录;
  2. 关键信号藏在少数元素里——报错的那一条、异常值的那一条,恰恰不能丢。

所以 JSON 压缩器(json.go)的设计目标很明确:折叠重复的,保留有信号的,丢掉的还要能找回。整个策略分为三条规则。

规则一:error/message 子树原样保留

压缩器内置了一个正则(json.go 第32行),匹配这些键名:

errorerrorsmessagemsgstackstacktraceexceptionreasondetailswarning

递归遍历 JSON 时,只要某个对象的键命中这个正则,它下面的整棵子树都会被标记为preserve(json.go 第110-136行)——子树内的数组再长也不折叠,逐条原样保留

这解释了压缩器测试用例里的场景(json_test.go):data数组的 12 条记录被折叠,而error.items里的 12 个元素一个不少地留下。对 Agent 来说,"压缩后的输出里错误信息必须逐字可读"是硬约束。

规则二:长数组只留"有信号的元素"

没被保护、且长度超过阈值(默认 8 个元素)的数组,会进入selectArray的筛选流程(json.go 第141行)。哪些元素会被强制保留?按优先级:

保留类别策略默认参数
首尾锚点数组头尾各留几个,保住"开头长什么样、结尾长什么样"前 3 后 2
错误态元素元素正文命中error/failed/timeout/panic...等关键词全部保留
统计异常对每个数值字段做中位数 + MAD 稳健 z 分数检测z ≥ 2.0 标记为异常
变化点CUSUM 检测序列的"制度切换",两侧边界都留最多 8 处切分
查询相关项有检索 query 时,用确定性 BM25 打分补充相关元素归一化分 ≥ 0.30

全部判定都是确定性的——没有随机数、没有向量嵌入,同一输入永远得到同一输出(这对前缀缓存很关键)。

被丢掉的元素不会凭空消失,而是每段连续丢失区生成一个省略标记

{"__caveman_elided__": 10, "__caveman_invariants__": "status: ok×10"}

标记既告诉模型"这里省了多少条",又附带从这批元素里计算出的事实摘要(invariants.go),比如恒定字段、状态分布计数、数值区间——但摘要只陈述"验证过的事实",绝不猜测。

规则三:压缩是"有损"的,但可恢复

JSON 压缩器被归为 S4 安全级别(有损)。这意味着压缩前,引擎会先把原始字节存入本地CCR(上下文恢复存储)(engine/ccr/store.go),并在压缩后的负载里附带恢复句柄;Agent 需要完整原始数据时,随时可以取回逐字原文。

反过来,以下情况压缩器会直接放弃、原样透传(json.go 第81-104行):

  • JSON 解析失败、或包含多个顶层值;
  • 一个元素都没折叠掉——光重新序列化不构成"压缩",不能冒领功绩。

进阶:Best-of 策略模式

如果引擎的 TOON 标志位设为 best-of,JSON 内容类型会改用jsonStrategy(json_strategy.go):它把TOON 编码(对模型无损)数组省略(有损)各跑一遍,用真实 Token 计数器比较结果,只采用省 Token 更多的那个;两个都不省就整体放弃。

上手与延伸阅读

  • 安装后通过 CLI 启动 Agent 即可自动生效:npm i -g @caveman-ai/cli,再caveman claude(详见 engine/README.md);
  • 压缩器完整行为说明与默认参数:json.go、json_test.go;
  • 省略标记的不变量摘要机制:invariants.go;
  • 上下文恢复(CCR)实现:engine/ccr/store.go;
  • 缓存规划与轨迹重写等配套机制:docs/technical/cache-and-rewriter.md。

一句话总结:Caveman JSON 压缩器 = error/message 子树原样保留 + 长数组按"首尾/错误/异常/变化点/相关性"筛选保留 + 省略标记附带事实摘要 + 原文本地可恢复。四条规则叠起来,才是它敢在 Agent 上下文里做有损压缩的底气。

【免费下载链接】caveman🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman项目地址: https://gitcode.com/GitHub_Trending/caveman1/caveman

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 9:55:00

tradingview-mcp保存Pine脚本到云端:pine_save三步完成

tradingview-mcp保存Pine脚本到云端:pine_save三步完成 【免费下载链接】tradingview-mcp AI-assisted TradingView chart analysis — connect Claude Code to your TradingView Desktop for personal workflow automation 项目地址: https://gitcode.com/GitHub…

作者头像 李华
网站建设 2026/8/31 9:52:01

Appsmith:快速自建管理面板与内部工具的开源低代码平台

Appsmith:快速自建管理面板与内部工具的开源低代码平台 【免费下载链接】appsmith Platform to build admin panels, internal tools, and dashboards. Integrates with 25 databases and any API. 项目地址: https://gitcode.com/GitHub_Trending/ap/appsmith …

作者头像 李华
网站建设 2026/8/31 9:50:37

共享Agent权限隔离实战:从权限模型到最小策略执行器

最近一年,AI Agent 从一个展示用的概念,快速变成了团队里真实跑任务的角色。不少人应该都经历过这样的场景:本地 demo 里,agent 调用工具、读写文件、执行命令,一切都很顺利;可一旦想把它放到团队里共享&am…

作者头像 李华
网站建设 2026/8/31 9:50:06

51单片机温度电压检测系统:DS1621+MAX1241+12864设计详解

简介:本资源是一套面向单片机初学者与毕业设计学生的温度电压双参数检测系统完整开发包,解决低温环境(低至-50℃)下高精度数据采集、AD转换与可视化显示的实际工程问题。资源共49个文件,涵盖Keil工程源码(.…

作者头像 李华
网站建设 2026/8/31 9:49:12

AI编程工具链接入指南:GLM与DeepSeek配置实战与选型

最近技术圈里有一个很有意思的动静:GLM 开始推进付费 Coding Plan 的首日,DeepSeek 又重新回到了模型热度榜榜首。对于很多正在用 AI 编程助手、准备接入本地 IDE 或命令行工具的开发者来说,这个消息背后其实藏着一连串实际问题:G…

作者头像 李华
网站建设 2026/8/31 9:48:10

蘑菇街数据仓库笔试题解析:维度建模与订单分析实战

大概每个做过数据仓库校招笔试的人,都跟这套题打过照面。蘑菇街2019届实习生招聘里那套数据仓库开发工程师笔试题,放在今天看依然是很有代表性的考察样本,不偏不怪,但很考验你对数仓基础的理解是不是真的通透。这套题的核心考点集…

作者头像 李华