前言¶
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