涉及文件: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,却错误返回了值
原因:不知道是什么问题导致,但是看起来没有什么实际影响
涉及文件:
packages/agent-core/src/agent/compaction/strategy.ts涉及方法:
DefaultCompactionStrategy问题代码:
复现过程:用消息序列
[asst_tc, tool, tool, user, user, user]遍历时的过程:问题:第 3 轮时
recentUserMessages已经是 3,却错误返回了值原因:不知道是什么问题导致,但是看起来没有什么实际影响