refactor: split changes in loop.go

This commit is contained in:
qiangmzsx 2026-03-03 10:33:24 +08:00
parent dc256cc933
commit 51c6cfac97

View file

@ -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 // 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 // This avoids having two consecutive system messages which some APIs (like Zhipu) reject
// Also avoid duplicate compression notes - check if already present
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( compressionNote := fmt.Sprintf(
"\n\n[System Note: Emergency compression dropped %d oldest messages due to context limit]", "\n\n[System Note: Emergency compression dropped %d oldest messages due to context limit]",
droppedCount, droppedCount,
) )
systemContent = systemContent + compressionNote enhancedSystemPrompt := history[0]
} enhancedSystemPrompt.Content = enhancedSystemPrompt.Content + compressionNote
enhancedSystemPrompt.Content = systemContent
newHistory = append(newHistory, enhancedSystemPrompt) newHistory = append(newHistory, enhancedSystemPrompt)
newHistory = append(newHistory, keptConversation...) newHistory = append(newHistory, keptConversation...)