DeepSeek Harness(DSH)默认通过消息的时间顺序来管理上下文窗口。当窗口填满时,系统会丢弃最旧的消息。这种基于年龄的排序往往不精准:一条早前提到的关键约束、报错堆栈或文件路径可能因为时间过久而被误删,而最近的无意义闲聊却被保留,导致后续推理需要重新读取仓库或基于过时的约束给出错误答案。
dsh-plugin-jev-compaction 通过引入相关性评分机制解决这个问题。它利用 Jev(TypeSafe System One)直接对每条消息进行相关性打分,而非依赖时间。只有当上下文字节数超出预算时,才会根据分数丢弃低价值消息。
核心功能¶
该插件主要解决上下文压缩中的“误删”问题,提供以下能力:
-
Jev-scored 相关性评分
每条消息会收到一个相关性分数。系统不会盲目丢弃旧消息,而是根据分数和设定的置信度阈值(minConfidence)来决定保留或丢弃。低于阈值的消息会被保留,因为不确定它们是否重要。 -
可配置的字节预算
设置targetBytes作为上下文输出的总大小上限。系统会按分数排序,优先保留高价值消息,直到填满预算。 -
消息保护机制
支持通过正则模式“钉住”特定类型的消息,使其永远不会被丢弃。默认包含五种模式:- 文件路径:如
src/ingest/parser.py、C:\app\main.ts。 - 堆栈跟踪:Python 报错、
File "...", line N等。 - 错误代码:如
HTTP 429、HTTP 500、status: 503。 - URL:任何以
http://或https://开头的链接。 - 约束语句:如行首或句首的
you must、do not、never、always、Important:。
- 文件路径:如
-
降级与容错
如果 Jev 服务不可达、API Key 缺失或评分请求失败,插件会自动降级为基于时间的排序(即 DSH 默认行为),确保上下文列表始终可用,不会报错。 -
凭证日志与重放
启用receiptPath后,插件会记录每条消息的哈希值、分数、决策及原因。这些凭证可以用于在后续推理中以零成本重放之前的评分决策。 -
直接 API 导出
除了作为 DSH 策略插件运行外,插件导出的核心函数可被其他插件或测试直接调用。
安装与启用¶
在安装前,请确保已配置好 Jev 的 API 密钥环境变量 JEV_API_KEY。插件会使用 JEV_API_URL 作为默认端点。
方式一:通过 DSH 插件管理器
dsh plugin --profile your-profile add dsh-plugin-jev-compaction
方式二:通过 npm
npm install dsh-plugin-jev-compaction
典型用法¶
命令行工具¶
插件提供了 CLI 工具 jev-compact,用于手动处理消息列表。
# 压缩 messages.l 文件,目标字节数为 60000,并读取之前的评分凭证
jev-compact compact messages.l --target-bytes 60000 --scores receipts.l
程序化调用¶
在 DSH 的代码或其他脚本中,可以直接导入并调用压缩函数。
import { compactMessages } from 'dsh-plugin-jev-compaction'
const result = await compactMessages(messages, 'finish the parser fix', {
targetBytes: 65536,
keepRecent: 6,
})
配置参数¶
在 DSH 的插件配置文件中,需定义 config 字段。以下是常用参数:
- id: jev-compaction
name: dsh-plugin-jev-compaction
inject: []
config:
targetBytes: 262144 # 输出字节预算,默认 262144
keepRecent: 4 # 无论分数如何,始终保留最近的 N 条消息
batchSize: 8 # 每次发送给 Jev 的消息批次大小
minConfidence: 0.35 # 低于此置信度视为不确定,倾向于保留
summaryBytes: 1024 # 填充丢弃消息的摘要最大字节数
summaryRole: system # 摘要消息的角色
stateMessageBytes: 2000 # 发送给 Jev 的消息截断长度
enablePinning: true # 启用消息保护(默认 true)
receiptPath: ~/.dsh/jev-compaction/receipts.jsonl # 凭证日志路径
pinPatterns: [] # 额外的保护正则模式
pinFlags: i # 正则编译标志(默认大小写不敏感)
适用场景与注意¶
- 适用场景:适用于长对话或长时间运行的推理任务,当上下文窗口即将溢出,且需要确保关键的约束条件、错误信息不被误删时。
- 环境依赖:插件需要
JEV_API_KEY环境变量。如果环境变量缺失或 API 调用失败,系统会退回到基于年龄的默认压缩策略,不会中断流程。 - 权限检查:
receiptPath指定的目录必须具有写权限,否则仅会在统计中记录错误而不影响压缩结果。 - 生态背景:DSH 采用插件化架构。此插件由社区开发者 YYTbit 维护,可在 SkillHub 插件目录 查看更多详情,源码托管在 GitHub。