前言¶
在 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-executewaterfall 机制。 - 共存:可与内置的
spill-policy、compaction等机制共存。
总结¶
dsh-clear-tool-results 通过在结果进入上下文前进行拦截和归档,解决了大文本输出挤占上下文的问题。它提供了清晰的收据机制和多种检索方式,适合在需要处理大量工具输出时的场景使用。目前该插件标记为已废弃,使用前请评估。