DSH 插件: dsh-clear-tool-results

marsg 2026-09-17 10:25 1

DSH 插件:把工具结果按轮归档并从对话上下文中清除以减少 Token 消耗;模型可用 read_tool_result_log 按轮次或时间自主取回原文。


image

跨轮对话,如果像这样清除掉工具结果的上下文,除了让 Agent 分析前一轮对话错误原因有影响之外,还会有什么影响?

最新回复 (5)
  • aimuz 09-17 10:28
    1
    缓存也没了,这个更贵吧😀
  • chenluo0429 09-17 10:48
    2
    相当于每一轮启动前都对上一轮进行了一次特殊的压缩。
    1. 缓存部分失效,每一轮都会触发一次缓存重建。这里有两类,如果像 ds 这种缓存很便宜的,但是缓存时间长,就要为上一轮对话重建缓存,增加成本。如果是 claude 这种短缓存的话,上上一轮的缓存大概率失效了,这里要重建全部缓存。
    2. 关键事实丢失。tool result 不是都是冗余的,某些 tool result 包含关键信息,是不可丢失的。这里也会有两种情况,一种是模型不取回旧结果,用有损信息决策。另一种是模型取回,消耗更多的轮次和 token 成本。
  • codehz 09-17 10:57
    3
    我记得 dsh 本来就有清理工具调用结果的机制吧。。。
  • marsg 楼主 09-17 11:01
    4
    @chenluo0429 补充一个信息:目前观测下来,助手消息占比 20 ~ 30%,工具结果占比 70%,在多轮对话情况下,每一轮对话都存在多步思考-调用,大多数情况在会存在 8 ~ 15 步,70%的工具结果的 Token 用量会膨胀。而删除工具结果的情况下,每一轮都会根据重建缓存,经过 10 轮对话,KV10 包含命中的 KV9 + 未命中的上一轮助手消息。如果单纯一两轮对话,确实会更贵,但如果是多轮对话,是否消耗更多 Token 还需要测定,应该会有一个临界点。
  • marsg 楼主 09-17 11:09
    5
    第一轮结束:S U1 A1 T0 (固定覆盖文字)
    第二轮请求:S U1 A1 T0 U2 A2 T0
    第三轮请求:S U1 A1 T0 U2 A2 T0 U3 A3 T0
    第四轮请求:S U1 A1 T0 U2 A2 T0 U3 A3 T0 U4 A4 T0
* 帖子来源V2EX
返回