• 请不要在回答技术问题时复制粘贴 AI 生成的内容
marsg
V2EX  ›  程序员

DSH 插件: dsh-clear-tool-results

  •  
  •   marsg · 3h 31m ago · 388 views

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

    image

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

    aimuz
        1
    aimuz  
       3h 28m ago
    缓存也没了,这个更贵吧😀
    chenluo0429
        2
    chenluo0429  
       3h 7m ago via Android
    相当于每一轮启动前都对上一轮进行了一次特殊的压缩。
    1. 缓存部分失效,每一轮都会触发一次缓存重建。这里有两类,如果像 ds 这种缓存很便宜的,但是缓存时间长,就要为上一轮对话重建缓存,增加成本。如果是 claude 这种短缓存的话,上上一轮的缓存大概率失效了,这里要重建全部缓存。
    2. 关键事实丢失。tool result 不是都是冗余的,某些 tool result 包含关键信息,是不可丢失的。这里也会有两种情况,一种是模型不取回旧结果,用有损信息决策。另一种是模型取回,消耗更多的轮次和 token 成本。
    codehz
        3
    codehz  
       2h 59m ago
    我记得 dsh 本来就有清理工具调用结果的机制吧。。。
    marsg
        4
    marsg  
    OP
       2h 55m ago
    @chenluo0429 补充一个信息:目前观测下来,助手消息占比 20 ~ 30%,工具结果占比 70%,在多轮对话情况下,每一轮对话都存在多步思考-调用,大多数情况在会存在 8 ~ 15 步,70%的工具结果的 Token 用量会膨胀。而删除工具结果的情况下,每一轮都会根据重建缓存,经过 10 轮对话,KV10 包含命中的 KV9 + 未命中的上一轮助手消息。如果单纯一两轮对话,确实会更贵,但如果是多轮对话,是否消耗更多 Token 还需要测定,应该会有一个临界点。
    marsg
        5
    marsg  
    OP
       2h 47m ago
    第一轮结束: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
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5329 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 05:56 · PVG 13:56 · LAX 22:56 · JFK 01:56
    ♥ Do have faith in what you're doing.