DeepSeek Harness 插件介绍:context-pruner

前言

DeepSeek Harness (DSH) 采用插件化架构,旨在构建灵活的智能体工作流。在长对话场景下,上下文往往会因为重复信息、过时内容或错误结果而膨胀,导致 token 预算被浪费,甚至触发上下文溢出。context-pruner 是一个针对 DSH 的会话上下文分诊插件,它通过启发式规则自动识别并处理过时、重复、失败及过大的上下文内容,以节省 token 预算并控制上下文膨胀。

核心功能

该插件的核心特性在于其确定性处理机制和灵活的配置策略。

  1. 确定性,零模型依赖
    所有判断和重写均基于启发式规则,不依赖 LLM 调用或其他外部服务。这意味着行为是可预测的,且可以在离线环境下进行测试。

  2. 五个独立可切换的筛查器
    插件内置五种独立的上下文筛查机制:

    • 过时输出 (staleOutput):对于在最新用户消息之后超过 N 轮且结果仍完整的工具调用对,将其重写为存档摘要并移除结果块。
    • 重复调用 (repeatedCall):检测工具名称和参数完全相同的调用(JSON 键顺序不影响匹配),仅保留最新的调用,移除旧的调用对。
    • 失败调用 (failedCall):针对过时的错误结果,将输入参数替换为失败存根(防止信息泄漏并节省空间),保留并修剪错误文本。
    • 超大块 (oversizedBlock):当工具结果文本超过字符上限时,保留头部和尾部,中间标注省略数量。
    • 过时推理 (staleReasoning):对于超出保留轮次的推理块,在保留区域仅修剪长度,在非保留区域直接移除。
  3. 保留区域与免疫列表

    • 保留区域 (reserve):最近 N 轮用户对话的内容永远不会被处理,避免干扰模型正在使用的上下文。
    • 免疫列表 (exempt):通过二维配置(工具名和文件路径通配符)保护状态化工具(如 task、skill、todowrite 等)不被误删。
  4. 审计报告与压缩集成
    每次分诊都会输出结构化的统计报告(包括计数、节省量、压缩范围等)。插件原生实现 ctx.compaction 接口,与 DSH 的压缩机制无缝集成,支持自动压力、上下文溢出、手动及强制区域压缩。

安装与启用

插件通过 dsh.bundle.patch 打包分发,支持多种安装方式。

  1. 从 GitHub 安装
    使用官方仓库地址进行安装:
    dsh plugin --profile demo add github:JohnXu22786/context-pruner
  1. 本地挂载
    推荐方式,将本地目录挂载到指定 profile:
    dsh plugin --profile web add link:/absolute/path/context-pruner
  1. Git 源安装
    从 Git 仓库安装并指定分支:
    dsh plugin --profile web add "github:your-repo/context-pruner#main"

安装后,通过以下命令检查配置是否生效:

dsh --profile web --dump-config

典型用法

插件提供了模型可见的工具和人类命令两种交互方式。

  1. 通过 /triage 命令
    这是人类命令行接口,直接输出审计报告并应用有价值的处理。

  2. 通过 triage_history 工具
    这是模型可见的扩展点,模型可以调用该工具执行分诊并获取审计报告。如果设置了 dryRun: false 且存在值得处理的内容,会直接应用处理。

  3. 配置示例
    在 cordis.patch.yml 中,可以覆盖默认配置以调整保留轮数或启用特定筛查器:

    - insert:
        id: context-triage
        name: dsh-context-triage
        config:
          budget:
            contextTokens: 200000
            softRatio: 0.6
          screeners:
            staleOutput: { turns: 5 }
            staleReasoning: { enabled: false }
          exempt:
            tools: [task, skill, write, edit]

适用场景与注意

  1. 适用场景
    适用于需要维持长对话上下文且对 token 消耗敏感的场景。插件特别适合处理日志记录、长时间运行的批处理任务或需要大量文件读取的智能体工作流。

  2. 重要限制

    • 单一压缩提供者:ctx.compaction 允许每个上下文只有一个提供者。如果当前 profile 已加载其他压缩实现(如内置基础压缩后端),必须通过 patch 将其中一个禁用(disabled: true),两者不能共存。
    • 权限与来源:插件以当前 DSH 进程权限运行。在安装前,建议检查 GitHub 源码与许可证。

总结

context-pruner 是一个专注于上下文管理的 DSH 插件,它通过启发式规则实现零模型依赖的上下文分诊。对于希望自动管理长会话上下文膨胀的开发者,它提供了一个可靠且可审计的解决方案。

  • 插件目录: https://www.skillhub.cn/plugins/JohnXu22786/context-pruner
  • GitHub 仓库: https://github.com/JohnXu22786/context-pruner
羽毛球分组比赛记分
小程序二维码

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

小夜