Auto-Reminder alle 30 Messages + History-Limit 120
- SystemPromptBuilder.BuildReminder(): generiert automatisch Reminder-Text aus den aktiven Prompt-Blöcken (Identity, Workspace, Memory, etc.) - Alle ~30 Messages wird ein [System Reminder]-Paar in die History injiziert (nur nach assistant-Messages, um user/assistant-Alternierung zu wahren) - History auf maximal 120 Messages begrenzt (älteste werden entfernt) - ChatContext um PromptBlocks-Property erweitert - Alle Aufrufer (ChatEndpoint, TelegramService, CronjobService) übergeben promptBlocks an BuildHistoryFromDb
This commit is contained in:
1 parent
83945689a6
commit
47d6f44e07
6 files changed
+91
-6
No files matched your search
@@ -232,4 +232,38 @@ Alle Dateipfade in Tool-Aufrufen müssen relativ zu diesem Workspace sein oder a
|
||||
var blocks = BuildBlocks(agent, session, markedMessages, memoryService, agentMemoryDir, skillSlugs, skillService, userPersona, resolvedWorkspace, planMode);
|
||||
return string.Join("\n\n", blocks.Select(b => b.Content));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generiert automatisch einen kompakten Reminder-Text basierend auf den aktiven Prompt-Blöcken.
|
||||
/// Gibt null zurück wenn weniger als 2 Blöcke aktiv sind (kein Reminder nötig).
|
||||
/// </summary>
|
||||
public static string BuildReminder(List<PromptBlock> blocks)
|
||||
{
|
||||
if (blocks == null || blocks.Count < 2)
|
||||
return null;
|
||||
|
||||
var parts = new List<string>();
|
||||
|
||||
foreach (var block in blocks)
|
||||
{
|
||||
var label = block.Label;
|
||||
if (label.Contains("IDENTITY")) parts.Add("Identity");
|
||||
else if (label.Contains("SOUL")) parts.Add("Soul");
|
||||
else if (label.Contains("Anweisungen")) parts.Add("Anweisungen");
|
||||
else if (label.Contains("Persona")) parts.Add("User-Info");
|
||||
else if (label.Contains("Workspace")) parts.Add("Workspace");
|
||||
else if (label.Contains("Rückfragen")) parts.Add("Rückfragen");
|
||||
else if (label.Contains("Kontext")) parts.Add("Kontext");
|
||||
else if (label.Contains("Skills")) parts.Add("Skills");
|
||||
else if (label.Contains("Memory")) parts.Add("Memory");
|
||||
else if (label.Contains("Git")) parts.Add("Git-Regeln");
|
||||
else if (label.Contains("Plan-Modus")) parts.Add("Plan-Modus");
|
||||
else if (label.Contains("Markierte")) parts.Add("Markierte Nachrichten");
|
||||
}
|
||||
|
||||
if (parts.Count == 0)
|
||||
return null;
|
||||
|
||||
return "Beachte weiterhin den System-Prompt (" + string.Join(", ", parts) + ").";
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user