Jev 上下文压缩:判断智能体必须保留哪些轮次
粘贴一段智能体对话记录。Jev 会判断其中是否包含智能体必须记住的决定或约束,并评估它有多值得保留,全部以概率返回,压缩代码可以直接设阈值,而不是用一段摘要改写原话。
用你自己的文本试试
修改示例后运行。无需账号,每天免费 3 次。
场景
判断 Agent 对话记录里哪些内容值得保留。
可以随意修改,Jev 会针对这里的内容回答该场景的问题。
这个检查打的是什么分
上面的示例是一个编程智能体会话中的四轮对话。智能体报告迁移脚本跑完后 40 张表里有 3 张因外键报错;用户顺口说猫打翻了咖啡;智能体提议临时删掉约束;用户说生产环境里绝不能删约束,要先补齐缺失的客户数据。Jev 对整段对话回答两个问题:
| 问题 | 类型 | 返回什么 |
|---|---|---|
keep_turn | Noul | 这段对话包含需要记住的决定或约束的概率 |
importance | Score | 在 Drop → Low → Medium → High → Must keep 上的位置,外加置信度 |
这段对话把整个会话里最重要的一句和最无关紧要的一句放在了一起。摘要可能记住了"先补数据",却丢了"生产环境绝不删约束";Jev 不改写任何一句,只告诉你这段对话整体上该不该留、有多该留。这也是这个示例想说明的:如果你想删掉咖啡那句、留下约束那句,就要一轮一轮地分别打分。
怎样写出好用的压缩问题
问将来,不问过去。 "这一轮相关吗?"几乎对什么都成立。"智能体决定下一步时还需要它吗?"才能把仍在起作用的上下文和纯粹的历史分开。
写清楚为什么删掉是安全的。 fast-jev-compaction 插件在问"某个工具的完整输出是否应逐字保留"时,附带的判断标准是重新运行这个工具也替代不了。这就是全部依据:智能体能重新获取的结果删掉代价很小,用户说过的约束则不行。
把目标放进 state。 一轮对话重不重要取决于任务。在历史记录旁边附上最近几条用户提示词,或流水线自己的任务描述。
要缩短而不是删除时,用 Score。 Noul 只给出留或删。五级 Score 可以让你逐字保留 High 和 Must keep、截短 Medium、删掉其余。
更多写法见 设计 Jev 能回答的问题。
从一次检查到一个压缩步骤
Claude Code 插件 fast-jev-compaction 是把这个检查变成流水线步骤的现成例子:
- 固定。 第一条消息和最新 6 条消息里的工具调用不经提问直接保留。
- 构建一个小的 state。 每个工具结果都换成一行说明(比如它的大小),工具输入和消息文本保留。不做任何摘要。
- 对其余每个工具调用问两个问题:这个调用该不该留,它的完整输出该不该留。问题分批,让每次请求都低于 token 上限,并行发送。
- 按阈值决定,默认 0.5:两者都留;只留调用,输出截取前 300 个字符并附一条"需要时重新运行工具"的说明;或者两者都删。
- 只有划算时才替换历史。 压缩幅度不到 25%,或 Jev 调用失败时,插件交回给 Claude Code 内置的摘要压缩。
完整设计,包括会话太长、Jev 看不下时如何逐级缩小 state,见深度解读:fast-jev-compaction:不写摘要的上下文压缩(英文)。同样的问题也可以在任何 harness 里通过 System One API 调用。
先验证,再信任
- 看决策,不只看省了多少。 把每个概率和对应动作一起记下来。落在阈值附近的条目,就是调参的地方。
- 回放真实会话。 找一些智能体后来需要用到早期内容的对话记录,压缩一遍,检查那些内容还在不在。
- 记录模型版本。 每次响应都带有
model字段(例如jev-1.13.0)。把它和每条判定一起记下,版本变化时重新校验阈值——JevStation 在部署层固定模型,不需要你在请求里指定。 - 让 state 保持聚焦。 TypeSafe 把"state 很大且充满无关细节"列为已知弱点。先在代码里过滤,按小块打分,而不是塞进一大段对话。
Jev 不适合的情况
- 会话长是因为聊天多,而不是工具输出多。 删除整个工具调用容易做到安全,删减正文则不然,所以那个插件从不缩短文本消息。
- 你需要一份给人看的摘要。 Jev 不写摘要。
- 保留与否取决于日期或数量,比如"早于昨天的都删"。TypeSafe 把日期比较和算术列为弱点,这些放在代码里做。
- 上下文不能离开你的基础设施。 state 会发送到 API。
常见问题
- 这和把上下文做成摘要有什么不同?
- 摘要会改写对话记录,一句顺口提到的约束可能被丢掉或被转述走样。用 Jev 时你只决定删掉什么,保留下来的内容一字不改,而且每一次删除都附带一个概率。
- Jev 能一次读完一整段很长的会话吗?
- 不一定。TypeSafe 给出的单次请求实际预算约 32,000 token,JevStation 对 state 的上限是 24,000 字符。长会话需要先缩短表示方式,比如把工具输出换成一行说明,或者拆成多次请求。
- 给一段对话打分要多少点?
- 示例对一段短对话问了两个问题,属于标准评估,消耗 1 点。state 超过 8,000 字符或问题超过 5 个,按大型评估计,消耗 3 点。
- 有现成的插件吗?
- fast-jev-compaction 是一个开源的 Claude Code 插件,它对每个工具调用问 Jev 两个是非题,删掉已经不需要的部分。它依赖的 function hooks 在 Claude Code 里仍是早期访问功能。
- 我的对话记录会离开本机吗?
- 会。放进 state 的内容都会作为输入发送到 API。如果工具输入或消息里可能有密钥,调用前先去掉。
相关页面
把它接进你的流程
注册即送 200 点,保存自己的问题集,并通过 API 调用同样的评估。