dsh-clear-tool-results:DSH 宿主插件,用于工具结果准入过滤与归档

前言

在 DSH(DeepSeek Harness)的开发流程中,工具的执行结果直接进入模型上下文。当工具输出极大(例如完整的 HTML 页面、长日志或代码库索引)时,会迅速撑满上下文窗口,导致模型无法处理后续任务。

dsh-clear-tool-results 是一个 DSH 宿主插件,它位于 tools/post-execute waterfall 阶段,在结果进入上下文前进行准入过滤。对于超过阈值的纯文本结果,插件将其全文落盘到会话目录,而模型只收到一份“收据”。收据包含有界预览和绝对路径,需要原文时可通过内置的 read 工具或插件提供的 read_tool_result_log 取回。

安装与启用

插件通过官方包名安装,无需手动编辑配置。

dsh plugin --profile web add dsh-clear-tool-results

安装或升级后,必须重启 DSH GUI 进程,因为进程内已 import 的模块不会热替换。

核心功能

准入过滤与落盘

插件在 tools/post-execute 阶段(prepend: true)介入。它仅对纯文本结果进行判断:
* 阈值:UTF-8 字节超过 1024 字节。
* 落盘:全文写入会话目录的 tool-result-logs/results/ 子目录。
* 收据:模型收到的内容为收据(摘要 + 预览 + 绝对路径),收据长度恒短于原文,确保上下文不膨胀。
* 幂等:同一 callId 只落一份,重试不会重复归档。
* 失败安全:落盘失败时原样放行,不将成功调用标记为错误。

收据格式

模型看到的收据示例:

[bash · npm test · 84,231 字节 / 2,104 行 → 全文已落盘,此处是尾部 30 行]
路径:/Users/…/sessions/…/tool-result-logs/results/t0001-s0003-01-bash-call_00_ab12.txt
取全文:read 该路径(可用 offset/limit 分页),或 grep 该路径检索。

检索工具

插件注册了 read_tool_result_log 工具,支持按轮次、步骤或时间读取归档,也支持清单模式查看历史记录。

使用方式

命令控制

  • /clear-tool-results on:启用过滤。
  • /clear-tool-results off:停用,工具结果原样进入上下文。
  • /clear-tool-results status:显示启用状态、准入阈值、豁免工具与插件版本。

状态文件存于 $DSH_HOME/clear-tool-results.json。

工具调用

  • read_tool_result_log:无条件注册,停用后仍可读取历史归档。
  • read:直接读取收据中提供的绝对路径。

适用场景与注意事项

适用场景

  • 处理大文件输出(如网页抓取、长日志)。
  • 需要在上下文窗口有限的情况下,保留工具结果全文供后续检索。

注意事项

  • ⚠️已废弃:请关注插件仓库的维护状态。
  • 准入策略:只认纯文本,结构化输出(带 value)、非文本内容、错误信息(isError)以及短文本(≤1024 字节)均原样放行。
  • 依赖:依赖 DSH 内置的 tools/post-execute waterfall 机制。
  • 共存:可与内置的 spill-policy、compaction 等机制共存。

总结

dsh-clear-tool-results 通过在结果进入上下文前进行拦截和归档,解决了大文本输出挤占上下文的问题。它提供了清晰的收据机制和多种检索方式,适合在需要处理大量工具输出时的场景使用。目前该插件标记为已废弃,使用前请评估。

羽毛球分组比赛记分
小程序二维码

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

小夜