From 8ba784a7363da63aa9fd27213b1df8dd23e26c40 Mon Sep 17 00:00:00 2001 From: Qee <3283659610@qq.com> Date: Fri, 27 Feb 2026 12:22:40 +0800 Subject: [PATCH] fix: separate ContextWindow from MaxTokens configuration - Add ContextWindow field to AgentDefaults config - ContextWindow now defaults to 128K (most modern models support this) - Previously ContextWindow was incorrectly set to MaxTokens (output limit) - This fixes premature context compression for large-context models like GLM-5 (128K context) Fixes issue where: - GLM-5 with 128K context was limited to 65K (MaxTokens value) - Compression threshold was underestimated by 50% - Forced compression dropped 50% of history without summary --- pkg/agent/instance.go | 9 ++++++++- pkg/config/config.go | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/agent/instance.go b/pkg/agent/instance.go index a6fd365c7..b6bcefe06 100644 --- a/pkg/agent/instance.go +++ b/pkg/agent/instance.go @@ -82,6 +82,13 @@ func NewAgentInstance( maxTokens = 8192 } + // ContextWindow defaults to 128K if not specified (most modern models support this) + // For models with smaller context, users should configure this explicitly + contextWindow := defaults.ContextWindow + if contextWindow == 0 { + contextWindow = 128000 + } + temperature := 0.7 if defaults.Temperature != nil { temperature = *defaults.Temperature @@ -103,7 +110,7 @@ func NewAgentInstance( MaxIterations: maxIter, MaxTokens: maxTokens, Temperature: temperature, - ContextWindow: maxTokens, + ContextWindow: contextWindow, Provider: provider, Sessions: sessionsManager, ContextBuilder: contextBuilder, diff --git a/pkg/config/config.go b/pkg/config/config.go index ca5803c35..00c654bd0 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -177,6 +177,7 @@ type AgentDefaults struct { ImageModel string `json:"image_model,omitempty" env:"PICOCLAW_AGENTS_DEFAULTS_IMAGE_MODEL"` ImageModelFallbacks []string `json:"image_model_fallbacks,omitempty"` MaxTokens int `json:"max_tokens" env:"PICOCLAW_AGENTS_DEFAULTS_MAX_TOKENS"` + ContextWindow int `json:"context_window" env:"PICOCLAW_AGENTS_DEFAULTS_CONTEXT_WINDOW"` Temperature *float64 `json:"temperature,omitempty" env:"PICOCLAW_AGENTS_DEFAULTS_TEMPERATURE"` MaxToolIterations int `json:"max_tool_iterations" env:"PICOCLAW_AGENTS_DEFAULTS_MAX_TOOL_ITERATIONS"` }