feat: Memory-System mit persistenten Markdown-Dateien pro Agent
- MemoryService: Verwaltet data/agents/{agentId}/ Verzeichnisse
- MEMORY.md als Haupt-Memory-File
- memory/ Unterordner für Tages-Logs und thematische Notizen
- Sandbox-Prüfung verhindert Zugriff außerhalb des Agent-Dirs
- Memory-Tools für den Agent:
- memory_read: Liest Memory-Dateien
- memory_write: Schreibt/überschreibt oder hängt an (append)
- memory_list: Listet alle Memory-Dateien auf
- SystemPromptBuilder: Memory-Abschnitt mit Regeln und aktuellem
MEMORY.md-Inhalt wird in den System-Prompt injiziert
- ToolService/AnthropicService: Memory-Tools werden automatisch
eingebunden wenn MemoryService und AgentId verfügbar sind
- TODO.md: Embedding-basierte Suche und Subagents als Features
This commit is contained in:
1 parent
875229964c
commit
d913557173
8 files changed
+250
-14
No files matched your search
@@ -6,7 +6,7 @@ namespace Gott.Services;
|
||||
|
||||
public static class SystemPromptBuilder
|
||||
{
|
||||
public static string Build(AgentRecord agent, SessionRecord session, IEnumerable<MessageRecord> markedMessages = null)
|
||||
public static string Build(AgentRecord agent, SessionRecord session, IEnumerable<MessageRecord> markedMessages = null, MemoryService memoryService = null)
|
||||
{
|
||||
var parts = new List<string>();
|
||||
parts.Add($"Du bist {agent.Name}.");
|
||||
@@ -39,6 +39,35 @@ Wenn der User auf eine bestimmte Zeile in einer Datei verweist (z.B. `[Datei: fo
|
||||
if (!string.IsNullOrWhiteSpace(session.Context))
|
||||
parts.Add($"## Kontext\n{session.Context}");
|
||||
|
||||
// Memory-System
|
||||
if (memoryService != null && !string.IsNullOrWhiteSpace(agent.AgentId))
|
||||
{
|
||||
var memoryLines = new List<string>
|
||||
{
|
||||
"## Memory",
|
||||
"Du hast ein persistentes Gedächtnis über Memory-Tools (`memory_read`, `memory_write`, `memory_list`).",
|
||||
$"Dein Memory-Verzeichnis: `data/agents/{agent.AgentId}/`",
|
||||
"",
|
||||
"### Regeln",
|
||||
"- Nutze `memory_read` um gespeicherte Erinnerungen abzurufen, bevor du über vergangene Entscheidungen, Präferenzen oder Fakten sprichst.",
|
||||
"- Nutze `memory_write` um wichtige Informationen dauerhaft zu speichern – z.B. Entscheidungen, Präferenzen des Users, Projekt-Kontext.",
|
||||
"- `MEMORY.md` ist dein Haupt-Memory-File für kuratierte, dauerhafte Informationen.",
|
||||
"- Nutze Unterordner `memory/` für Tages-Logs oder thematische Notizen (z.B. `memory/2025-07-13.md`).",
|
||||
"- Speichere proaktiv wenn der User etwas Wichtiges sagt oder eine Entscheidung getroffen wird.",
|
||||
"- Wenn der User sagt \"merke dir das\" oder ähnliches, speichere es sofort."
|
||||
};
|
||||
|
||||
var mainMemory = memoryService.GetMainMemory(agent.AgentId);
|
||||
if (!string.IsNullOrEmpty(mainMemory))
|
||||
{
|
||||
memoryLines.Add("");
|
||||
memoryLines.Add("### Aktueller Inhalt von MEMORY.md");
|
||||
memoryLines.Add(mainMemory);
|
||||
}
|
||||
|
||||
parts.Add(string.Join("\n", memoryLines));
|
||||
}
|
||||
|
||||
if (toolAny)
|
||||
{
|
||||
var verhaltensRegeln = new List<string>
|
||||
|
||||
Reference in new issue
Block a user