PI的自动压缩会超出

枳萌 2026-08-17 23:29 1

最近我用PI agent发现,他的自动压缩只有在agent end会进行,中途并没有,上下文已经超出限制了,是我哪里没有配置好吗


最新回复 (4)
  • Google 08-17 23:47
    1

    直接使用magic-context吧,自动后台压缩,注入;全程无感

  • Tech7 08-17 23:54
    2

    其实你应该带个快问快答效率更高。

    首先压缩时机确实是 压缩不是在对话进行中触发的,而是在两轮对话之间发生的所以中途确实不压缩。有两个压缩机制。首先预防压缩机制我贴个代码你可以理解一下:


    function shouldCompact(contextTokens, contextWindow, settings): boolean {
    if (!settings.enabled) return false;
    return contextTokens > contextWindow - settings.reserveTokens;
    }

    大致就是有个阈值,不超阈值就不预防压缩。


    然后中文有个问题,首先Pi的token不是精确计量,是根据英文字符来粗暴估算的。




    详细策略

    一个英文字符大约 0.25 token(4 个字符 ≈ 1 token,估算与实际接近)。中文是反向偏差:1 个汉字实际大约 1-2 token,但 chars/4 只算成 0.25 token——严重低估中文占比高的对话。这意味着纯中文场景下,Pi 觉得”还没到压缩阈值”,实际 token 已经接近上限。这是一个已知的精度问题,但 chars/4 在英文为主时足够准,且实现极简。



    所以当 API 报错了,开始应急压缩。这时候按照规则进行压缩。本身Pi的粗略估算就是让应急压缩兜底的。

    结论就是:放心用 ^-^

  • apparition 08-18 00:32
    3

    Pi的粗略估算



    然而版上不少因为这个原因出问题的

    后面我自己实作用分词器计算之后

    其实不差这点性能

  • Doubleflower 08-18 01:17
    4

    我记得最新版本的PI已经修了这个bug呀 ^-^

* 帖子来源Linux.do
返回