Claude Code用户平均每次对话要浪费40%的上下文额度在npm install的输出上。不是代码太长,是终端噪音太肥。
开发者Jee用Rust写了个工具RTK(Reduce Toolkit),能 stripping ANSI转义码(终端颜色代码)并去重,压缩效果30-50%。但瓶颈很快出现:RTK把输出当纯文本处理,看不懂Python堆栈里哪些是框架帧、哪些是你的代码,也分不清40个TypeScript错误其实是同一个bug换了40个文件。
3周后,ContextZip诞生。1056个测试,3周构建,MIT协议开源。
Week 1:让工具学会"读"报错
Jee的第一刀砍向语言感知。RTK不懂栈帧结构,ContextZip教它认:Node.js、Python、Rust、Go、Java、C#的堆栈格式各长什么样,框架帧(比如React内部、Django核心)该藏,应用帧(你的业务代码)该留。
412个测试,覆盖主流语言的栈帧识别逻辑。
效果打个比方:以前AI看到的是"某框架第8472行抛错→某框架第9031行调用→你的代码第5行",现在直接跳到第5行。上下文窗口里的有效信息密度翻倍。
Week 2:语义去重,不是字符串去重
RTK的去重是精确匹配:两行字完全一样才算重复。现实是TypeScript可能报40遍"Type 'string' is not assignable to type 'number'",文件名行号各不相同。
Jee换成模式匹配:识别"同一错误,不同位置"。247个测试验证语义等价性,不是字符串等价性。
这个改动直接击中AI编程的核心痛点。当你让Claude修bug,它不需要读40遍同样的错误描述,它只需要知道"这个错误出现了40次,涉及这些文件"。
Week 3:给102个CLI命令做"体检"
终端噪音有千百种面孔。进度条、Docker层哈希、wheel构建日志、下载指示器——每种都需要单独识别。
Jee benchmark了102个常用CLI命令,为每种噪音模式写过滤规则。397个测试,逐个验证。
三周日程:412 + 247 + 397 = 1056个测试。一个目标:让AI上下文窗口装信号,不装噪音。
开源协议与路线
ContextZip沿用RTK的MIT协议。可以fork、修改、商用,唯一要求是保留许可证声明。
路线图包括:Ruby/Elixir/PHP语言支持、更智能的网页内容提取、非终端AI代理的IDE插件、社区贡献的噪音模式库。
核心使命没变:你的AI应该读你的代码,而不是你的npm警告。
安装一行命令:
cargo install contextzip
eval "$(contextzip init)"
或者npx contextzip。
GitHub: github.com/contextzip/contextzip
当AI上下文窗口按token计费成为常态,压缩噪音就是在省钱。但ContextZip的野心不止于此——如果AI代理成为主流开发方式,终端输出的"预处理"会不会成为新的基础设施层?你的构建日志,准备好被机器阅读了吗?
热门跟贴