dsh-plugin-jev-compaction: 基于相关性评分的上下文压缩

DeepSeek Harness(DSH)默认通过消息的时间顺序来管理上下文窗口。当窗口填满时,系统会丢弃最旧的消息。这种基于年龄的排序往往不精准:一条早前提到的关键约束、报错堆栈或文件路径可能因为时间过久而被误删,而最近的无意义闲聊却被保留,导致后续推理需要重新读取仓库或基于过时的约束给出错误答案。

dsh-plugin-jev-compaction 通过引入相关性评分机制解决这个问题。它利用 Jev(TypeSafe System One)直接对每条消息进行相关性打分,而非依赖时间。只有当上下文字节数超出预算时,才会根据分数丢弃低价值消息。

核心功能

该插件主要解决上下文压缩中的“误删”问题,提供以下能力:

  1. Jev-scored 相关性评分
    每条消息会收到一个相关性分数。系统不会盲目丢弃旧消息,而是根据分数和设定的置信度阈值(minConfidence)来决定保留或丢弃。低于阈值的消息会被保留,因为不确定它们是否重要。

  2. 可配置的字节预算
    设置 targetBytes 作为上下文输出的总大小上限。系统会按分数排序,优先保留高价值消息,直到填满预算。

  3. 消息保护机制
    支持通过正则模式“钉住”特定类型的消息,使其永远不会被丢弃。默认包含五种模式:

    • 文件路径:如 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:。
  4. 降级与容错
    如果 Jev 服务不可达、API Key 缺失或评分请求失败,插件会自动降级为基于时间的排序(即 DSH 默认行为),确保上下文列表始终可用,不会报错。

  5. 凭证日志与重放
    启用 receiptPath 后,插件会记录每条消息的哈希值、分数、决策及原因。这些凭证可以用于在后续推理中以零成本重放之前的评分决策。

  6. 直接 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。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜