dsh-tool-result-trimmer:DeepSeek Harness 的工具输出裁剪插件

前言

DeepSeek Harness(DSH)将工具执行结果直接写入会话日志和 LLM 上下文。当一次工具调用返回几万字符的输出(例如编译错误堆栈、长日志、测试结果)时,会话日志迅速膨胀,LLM 的上下文窗口被填满,且在触发上下文压缩前 UI 可能出现卡顿。传统压缩工具通常在压缩阶段被动处理,导致日志先被写入再裁剪,增加存储与内存开销。

dsh-tool-result-trimmer 是一个轻量、零依赖的 Cordis 插件,专为 DSH 设计。它在工具执行后立即介入,在结果写入会话存储或上下文窗口之前进行裁剪,避免日志膨胀,同时保留关键信息。

插件定位与维护者

  • 插件名称:dsh-tool-result-trimmer
  • 维护者:Jaylor-Wang
  • 仓库:https://github.com/Jaylor-Wang/dsh-tool-result-trimmer
  • 许可证:MIT

核心功能

1. 提前裁剪与零日志膨胀

插件挂钩 DSH 官方 tools/post-execute 流水线。当工具输出超过全局阈值(默认 10,000 字符)时,在结果进入会话日志前进行裁剪。超出预算的部分被移除,并插入裁剪统计信息,让模型看到的是干净的头尾拼接。

2. 头尾预算配置

默认采用“头轻尾重”的策略:

  • 头保留约 1,500 字符:命令调用与初始状态
  • 尾保留约 5,000 字符:堆栈跟踪、退出码等关键错误信息

全局配置项:

headChars: 1500           # 头部保留字符数
tailChars: 5000           # 尾部保留字符数
thresholdChars: 10000     # 触发裁剪的全局阈值

3. 行感知对齐

裁剪边界自动对齐到相邻换行符(\n),避免截断代码行、JSON 结构或错误消息,防止出现残缺单词或代理字符。

4. ANSI 转义序列清理

自动识别并移除终端颜色代码(如 \x1b[31m)、光标控制与清屏序列(\x1b[2K、\x1b[1G),减少 token 消耗并保持输出整洁。

5. 命令感知语义归约

插件在机械裁剪前对特定命令输出做语义精简:

  • Git 归约:将干净的 git status 压缩为单行;保留所有修改文件列表;移除重复的“git add…”提示;移除 git diff 中冗余的 index 哈希行。
  • 包管理器归约:在 npm、pnpm、yarn、pip 中清除进度条、peer 弃用提示、更新公告与赞助提示,保留审计结果与漏洞诊断。
  • 测试归约:当测试套件全部通过时(node --test、vitest、pytest、cargo test),将多行通过状态折叠为单行摘要;任何失败或非零退出码时严格保持所有堆栈跟踪与断言错误。

6. 零副作用与绕过机制

  • 文件读取保护:自动跳过 read 和 read_image 工具,避免因行号引用被裁剪。
  • 富文本块保留:非文本块(如图片)保持原样。
  • 绕过出口(Escape Hatch):

  • 命令行前缀:

    DSH_TRIM_BYPASS=1 npm test
  • 内联指令:
    git diff # no-trim
  • 工具参数标志:在工具调用中传递 bypassTrim: true 或 noTrim: true。
  • 全局环境变量:在进程级别设置 DSH_TRIM_BYPASS=1。

安装与启用

通过 DSH 插件 CLI(推荐)

dsh plugin --profile web add dsh-tool-result-trimmer

通过 npm / pnpm

npm install dsh-tool-result-trimmer
# 或
pnpm add dsh-tool-result-trimmer

安装后,将插件添加到 cordis.patch.yml 或 agent 预设中,启用默认配置即可。

典型配置示例

- name: dsh-tool-result-trimmer
  config:
    enabled: true
    stripAnsi: true           # 移除终端 ANSI 转义序列
    thresholdChars: 10000     # 超过 10,000 字符触发裁剪
    headChars: 1500           # 头部保留字符数
    tailChars: 5000           # 尾部保留字符数
    excludeTools:             # 不裁剪的工具
      - read
      - read_image
    overrides:                # 按工具覆盖预算
      bash:
        thresholdChars: 15000
        headChars: 2000
        tailChars: 8000
      git:
        enabled: false        # 完全禁用 git 的裁剪
    semanticReducers:         # 语义归约开关
      enabled: true           # 启用语义归约
      git: true               # Git 精简
      packageManager: true    # 包管理器噪声过滤
      test: true              # 测试结果折叠

适用场景与注意

  • 适合频繁调用编译、测试、包管理、Git 等工具的开发场景,期望控制上下文膨胀与 token 成本。
  • 插件在 DSH 进程中运行,安装前建议检查仓库源码与许可证。
  • 默认配置已针对常见命令输出做优化,可根据项目调整头尾预算与语义归约开关。
  • 需要调试时,使用上述绕过机制保留原始输出。

小结

dsh-tool-result-trimmer 通过在工具执行流水线中提前裁剪超大输出,减少会话日志膨胀与 LLM 上下文压力。结合行感知对齐、ANSI 清理、命令语义归约与灵活的绕过机制,可在保持关键信息的前提下,显著提升工具调用的上下文管理效率。

  • 目录页:https://www.skillhub.cn/plugins/Jaylor-Wang/dsh-tool-result-trimmer
  • 仓库:https://github.com/Jaylor-Wang/dsh-tool-result-trimmer
羽毛球分组比赛记分
小程序二维码

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

小夜