Skip to content

maxRecentUserMessages配置项可能有bug。设置了该值后,可能不能正常使用 #545

@MBpanzz

Description

@MBpanzz

涉及文件packages/agent-core/src/agent/compaction/strategy.ts
涉及方法DefaultCompactionStrategy

问题代码

    for (; recentMessages < messages.length; recentMessages++) {
      const splitIndex = messages.length - recentMessages - 1;
      const m2 = messages[messages.length - recentMessages]!;

      if (m2.role === 'user') {
        recentUserMessages++;            
      }
      recentSize += estimateTokensForMessage(m2);

      if (canSplitAfter(messages, splitIndex)) {
        bestN = splitIndex + 1;          
      }

      const reachesMax = recentMessages >= this.config.maxRecentMessages
        || recentUserMessages >= this.config.maxRecentUserMessages  
        || recentSize >= this.maxSize * this.config.maxRecentSizeRatio;
      if (reachesMax && bestN !== undefined) {
        break;
      }
    }

复现过程:用消息序列 [asst_tc, tool, tool, user, user, user] 遍历时的过程:

轮次 recentMsgs m2角色 user计数 canSplit bestN reachesMax 行为
1 1 user 1 false undefined true(1≥1) 但 bestN=undefined 继续
2 2 user 2 false undefined true(2≥1) 但 bestN=undefined 继续
3 3 user 3 true 3 true(3≥1) 且 bestN≠undefined break → 返回 3

问题:第 3 轮时 recentUserMessages 已经是 3,却错误返回了值
原因:不知道是什么问题导致,但是看起来没有什么实际影响

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions