diff --git a/internal/agent/agent.go b/internal/agent/agent.go index 030766cc49ae167783676be1438af90ea0759756..7b4f3294d6007f8853a56b961ed17b9000303b04 100644 --- a/internal/agent/agent.go +++ b/internal/agent/agent.go @@ -361,10 +361,16 @@ func (a *sessionAgent) Run(ctx context.Context, call SessionAgentCall) (*fantasy }, StopWhen: []fantasy.StopCondition{ func(_ []fantasy.StepResult) bool { - contextWindow := a.largeModel.CatwalkCfg.ContextWindow + cw := int64(a.largeModel.CatwalkCfg.ContextWindow) tokens := currentSession.CompletionTokens + currentSession.PromptTokens - percentage := (float64(tokens) / float64(contextWindow)) * 100 - if (percentage > 80) && !a.disableAutoSummarize { + remaining := cw - tokens + var threshold int64 + if cw > 200_000 { + threshold = 20_000 + } else { + threshold = int64(float64(cw) * 0.2) + } + if (remaining <= threshold) && !a.disableAutoSummarize { shouldSummarize = true return true }