diff --git a/pkg/agent/loop.go b/pkg/agent/loop.go index 0f1519910..88afa6119 100644 --- a/pkg/agent/loop.go +++ b/pkg/agent/loop.go @@ -1119,18 +1119,12 @@ func (al *AgentLoop) forceCompression(agent *AgentInstance, sessionKey string) { // Append compression note to the original system prompt instead of adding a new system message // This avoids having two consecutive system messages which some APIs (like Zhipu) reject - // Also avoid duplicate compression notes - check if already present + compressionNote := fmt.Sprintf( + "\n\n[System Note: Emergency compression dropped %d oldest messages due to context limit]", + droppedCount, + ) enhancedSystemPrompt := history[0] - systemContent := enhancedSystemPrompt.Content - // Check if compression already noted (avoid duplicate notes) - if !strings.Contains(systemContent, "[System Note: Emergency compression") { - compressionNote := fmt.Sprintf( - "\n\n[System Note: Emergency compression dropped %d oldest messages due to context limit]", - droppedCount, - ) - systemContent = systemContent + compressionNote - } - enhancedSystemPrompt.Content = systemContent + enhancedSystemPrompt.Content = enhancedSystemPrompt.Content + compressionNote newHistory = append(newHistory, enhancedSystemPrompt) newHistory = append(newHistory, keptConversation...)