fast-jev-compaction
替换 Claude Code 有损上下文压缩的插件(同时是 npm 库):用 Jev 决策模型在一次快请求里给每个 tool call / tool result 打分,只删除判定过时的条目或做截断——保留内容逐字不改、顺序不乱,避免摘要丢掉关键报错或路径。MIT + TypeScript。
fast-jev-compaction 快速入门
fast-jev-compaction(tamaratran/fast-jev-compaction)是一个 Claude Code 插件(同时可作 npm 库使用),用来替换 Claude Code 内置的 compaction summary(有损上下文压缩)。内置压缩让 LLM 把旧对话「摘要」成一段文字——文件路径、确切报错、约束条件、命令都可能消失。本库不重写任何内容:它把整个会话展示给 Jev 决策模型,在一次快请求里给每个 tool call / tool result 打分,只删除判定过时的条目或做截断;用户与助手文本逐字保留、顺序不变。2026-10-01 核验(GitHub API + README):7,251★ / 469 fork,最近 push 2026-09-18,MIT + TypeScript。
这是什么?适合谁?
Claude Code 长会话接近上下文上限时会触发内置 compaction:让 LLM 总结旧对话并丢弃原文。这个摘要是有损的——一个文件路径、一条关键报错、一个你早前定下的约束没了,后面的工作就可能跑偏。fast-jev-compaction 的做法完全不同:不总结,只删除。它让 Jev 模型看着整个对话给每个 tool call / tool result 打分(一次快速请求完成),过时的条目删除或截断,保留的内容逐字不动、顺序不乱。
工作原理(README 核验):
- 每个
tool_use通过tool_use_id与对应tool_result配对;首条消息和最近preserveRecentMessages条消息里的调用被固定(pinned)永不触碰。 - 发给 Jev 的状态是完整对话(旧→新),tool result 替换为短注(
ok, 4213 chars (omitted)),tool 输入与文本全部保留——不做摘要。 - 状态按阶段压缩进
maxStateTokens(默认 25k):tool 输入截到 1000 → 200 → 60 字符;长文本头尾保留;最旧非固定消息逐级折叠成省略注。仍放不下则 compaction 抛错(而不是静默丢内容)。 - 仓库同时是 npm 包(
src/)和 Claude Code 插件(hooks/+.claude-plugin/),插件用该包替换内置压缩。
适合人群:长会话 Claude Code 重度用户(大重构、跨天任务),曾被「压缩后 Agent 忘了早前的报错/路径/约束」坑过的开发者;想在自有工具链里做无损上下文管理的工程师(npm 库形态)。
不适合谁:短会话用户(很少触发 compaction,无感);必须严格控制在单一厂商生态内、不想引入额外模型调用的团队;需要「摘要」而非「删除」语义的场景(它明确不做摘要)。
准备工作
- Claude Code 环境 + 一个 Jev 决策模型的访问方式(README 演示用
TYPESAFE_API_KEY,即 TypeSafe 的 Jev 模型 API) - Node.js / npm(既是 npm 库也是插件)
- 时间预算:安装启用 10 分钟;调
preserveRecentMessages/maxStateTokens参数半小时内 - 成本:库 MIT 免费;Jev 打分是一次「快请求」(状态压缩到 25k token 级别),单次压缩成本远低于重跑丢上下文后的返工
核心用法:三步上手
第 1 步:作为 Claude Code 插件安装
按 .claude-plugin/ 目录的插件说明安装启用(Claude Code 插件机制),它会 hook 内置 compaction 流程。
第 2 步:配置模型 key
设置 Jev 模型的 API key(README 演示环境变量 TYPESAFE_API_KEY)。首次触发 compaction 时观察日志:应看到打分请求与逐条删除决策,而不是一段摘要。
第 3 步:验证无损行为
开一个长会话(读多个文件、跑多次命令)触发压缩,检查:文件路径与关键报错仍在上下文中、消息顺序未变、被删的只是过时 tool 调用。可跑 npm test(单测用假 Jev,不联网)确认本地构建。
常见踩坑
- 症状:compaction 抛错「state 放不下」。 根因:会话里有大量超长 tool 输出,压到最低阶段仍超
maxStateTokens。解决:调大maxStateTokens(默认 25k),或减少单次会话中巨型输出的产生量;这是官方设计的「宁可失败也不静默丢内容」保护。 - 症状:删除后丢了还需要的调用。 根因:Jev 判定「过时」但该调用实际后文要用。解决:调大
preserveRecentMessages(近区固定不删);关键约束尽量写进用户消息文本——文本永不被删。 - 症状:插件没生效、仍是内置摘要。 根因:插件 hook 未正确安装或版本不匹配。解决:跑
npm run validate:plugin验证插件结构;确认 Claude Code 版本支持该 hook 机制。 - 症状:打分请求变慢或失败。 根因:Jev API 延迟/配额问题。解决:这是单次快请求(状态已压缩到 25k 级),正常应很快;持续失败先查 key 与配额,必要时回退内置压缩排查。
- 症状:单测想跑但怕烧 API。 根因:以为测试需要真实模型。解决:
npm test使用假 Jev,从不联网;只有npm run demo是真实网络检查。
常见问题 FAQ
Q1: 它和 Claude Code 内置 compaction 的本质区别是什么?
A: 内置是「摘要替换原文」(有损、不可控);本库是「评分删除」(保留内容逐字不动、顺序不变,只删判定过时的 tool 条目)。摘要里消失的路径/报错/约束在这里不会消失。
Q2: Jev 是什么?为什么不用别的模型?
A: Jev 是一个轻量决策模型,适合「看全局、给每条打分」这类一次快请求的判断任务;项目即为该决策模式设计(tool 输入截断、状态分阶段压缩等都是为单次快请求优化)。
Q3: 用户和助手的文本会被改吗?
A: 不会。README 明确:用户与助手文本逐字保留、顺序不变;只有 tool call / tool result 会被删除或截断,且首条消息与最近 preserveRecentMessages 条消息固定不动。
Q4: 能在 Claude Code 之外用吗?
A: 能。仓库同时是 npm 包(src/),可集成进任何需要上下文压缩的自有工具链;Claude Code 插件(hooks/)只是它的一个封装形态。
Q5: token 成本怎么算?
A: 压缩时发一次 Jev 请求,状态控制在 maxStateTokens(默认 25k)内;相比「压缩丢信息 → 后续返工重读文件重跑命令」的隐性成本,通常净省。
参考链接
本文章基于公开资料整理,AI 辅助生成,独立实测与数据核验日期 2026-10-01(GitHub API 实时抓取 stars/fork/push/license;README 全文核验;未在本机做插件安装实测)。
📊 评分与标签
评分说明
评分依据可追溯至公开来源。
总分 8.6/10 · P_优选
📊 可观测社区指标(采集日期:2026-10-01)
- GitHub: tamaratran/fast-jev-compaction ★7,251, 🔱469(GitHub API 实时核验)
- License: MIT · 语言: TypeScript · 创建于 2026-09-17,最近 push 2026-09-18
- 双形态发布:npm 包(
src/)+ Claude Code 插件(hooks/+.claude-plugin/);单测使用假 Jev 不联网,npm run validate:plugin做插件结构校验
⚙️ 功能完整度 2.2/2.5
- 完整实现「无损 compaction」:tool_use/tool_result 按
tool_use_id配对打分、首条与最近preserveRecentMessages条消息固定、状态分阶段压缩(tool 输入 1000→200→60 字符截断、长文本头尾保留、旧消息折叠)进maxStateTokens(默认 25k)、放不下抛错不静默丢内容;插件形态直接替换 Claude Code 内置压缩。- 来源:官方 README
- 局限:只覆盖 tool call / tool result 的删除语义,不做摘要;依赖 Jev 决策模型的可用性。
- 竞品对比 1(Claude Code 内置 compaction):内置做有损摘要,路径/报错/约束可能消失;本库保留内容逐字不动。
- 竞品对比 2(手动 /clear 后重贴关键信息):完全依赖人工筛选,遗漏即丢;本库按决策模型逐条判定。
✨ 输出质量 2.1/2.5
- 「不重写任何内容、只删除过时条目」的设计从机制上消除了摘要式压缩的信息损失;打分时展示完整对话(result 换短注),判定基于全局视野而非局部摘要。
- 来源:官方 README
- 局限:删除判定质量取决于 Jev 模型对「过时」的判断,极端场景可能误删(可用 preserveRecentMessages 兜底)。
- 竞品对比 1(LLM 摘要压缩):摘要必然有损且不可审计;逐条删除决策可逐条核对。
- 竞品对比 2(简单按长度截断):只会砍尾部,不看相关性;本库按相关性评分删除。
🖐️ 易用性 1.3/1.5
- Claude Code 插件即装即用(hooks 机制);npm 库形态有清晰 API;参数仅
preserveRecentMessages/maxStateTokens等少数几个。- 来源:官方 README
- 局限:需要配置 Jev/TypeSafe API key;插件安装依赖 Claude Code 版本的 hook 支持。
- 竞品对比 1(内置 compaction):零配置但不可控、不可调。
- 竞品对比 2(自写压缩脚本):需要自己处理配对、截断、token 估算等全部细节;本库开箱。
💰 性价比 1.4/1.5
- MIT 完全免费;压缩是一次状态压到 25k 级别的快请求,成本远低于「丢上下文 → 返工重读重跑」的隐性代价。
- 竞品对比 1(内置压缩):免费但有信息损失风险,返工成本隐性。
- 竞品对比 2(更长上下文订阅档位):以月费换空间;本库以删除换空间,边际成本≈0。
🔒 稳定性 0.8/1.0
- 仓库带单元测试(假 Jev、不联网)与插件结构校验(validate:plugin);14 天 7.2k★ 说明命中了真实痛点、社区验证快。
- 来源:官方 README
- ⚠️ 创建于 2026-09-17(14 天),最近 push 2026-09-18——单作者新项目,迭代频率与长期维护未经验证,稳定性按早期项目折减。
- 竞品对比 1(Claude Code 内置功能):随官方版本持续维护,无第三方依赖风险。
- 竞品对比 2(成熟 npm 上下文库):维护记录更长,但均不做「逐字保留」语义。
🛡️ 隐私安全 0.8/1.0
- 代码 MIT 开源可审计;会话状态只发给用户自己配置的 Jev 端点;单测不联网。
- 局限:压缩时完整对话(含 tool 输入)会发往 Jev API,敏感代码库需评估该链路;key 属敏感配置。
- 竞品对比 1(内置压缩):同样把会话发给厂商,无额外第三方。
- 竞品对比 2(纯本地截断方案):不出本机,但无相关性判定能力。
维度合计:2.2+2.1+1.3+1.4+0.8+0.8 = 8.6 ✓(输出质量按 Jev 判定依赖与早期项目折减取 2.1)
🏷️ 标签说明
- AI编程: 定位 Claude Code / 编码 agent 的上下文管理工具。来源:官方 README
- Claude Code 插件: 以
.claude-plugin/+ hooks 形态直接替换内置 compaction。来源:官方 README - 上下文管理: 核心能力是无损上下文压缩(评分删除替代摘要)。来源:官方 README
- 开源免费: MIT 许可。来源:GitHub License
- npm 库: 同时以 npm 包发布,可集成进自有工具链。来源:官方 README
局限与未实测声明:本文基于 2026-10-01 抓取的 GitHub API 与官方 README 撰写;未在本机做插件安装与压缩行为实测;「逐字保留」「单次快请求」为官方口径与 README 描述,未经独立复现;项目创建 14 天、单作者,稳定性已折减;stars 为采集时点值。
📋 来源核实
- ✅ 已验证: GitHub tamaratran/fast-jev-compaction — ★7,251 / 🔱469 / MIT / 最近 push 2026-09-18 / 工作原理与配对机制逐段核验(2026-10-01 GitHub API + README 全文抓取)
- ✅ 已验证: npm 包形态与插件目录结构(README 中
src/、hooks/、.claude-plugin/、npm run validate:plugin描述一致) - ⚠️ 未实测:本机安装插件、触发 compaction、Jev 打分行为
同分类推荐
AI编程 分类下的其他工具