feat(memory): Kategorien 'user' + 'instruction' fuer universelles Agenten-Gedaechtnis
Gilt fuer alle Tools (Hermes, Cline, OpenCode) via MCP-Server. - user: wer der User ist, Praeferenzen, Arbeitsweise - instruction: Verhaltensregeln fuer alle KI-Tools Hermes-Agent speichert aktiv in diese Kategorien wenn er Neues lernt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,8 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
const CAT: Record<string, { label: string; color: string }> = {
|
const CAT: Record<string, { label: string; color: string }> = {
|
||||||
|
user: { label: 'Über mich', color: '#a78bfa' },
|
||||||
|
instruction:{ label: 'Verhalten', color: '#fb923c' },
|
||||||
stable: { label: 'Stabil', color: 'var(--accent)' },
|
stable: { label: 'Stabil', color: 'var(--accent)' },
|
||||||
versioned: { label: 'Versioniert', color: '#f59e0b' },
|
versioned: { label: 'Versioniert', color: '#f59e0b' },
|
||||||
ephemeral: { label: 'Temporär', color: 'var(--mut)' },
|
ephemeral: { label: 'Temporär', color: 'var(--mut)' },
|
||||||
@@ -120,6 +122,8 @@
|
|||||||
></textarea>
|
></textarea>
|
||||||
<label>Kategorie</label>
|
<label>Kategorie</label>
|
||||||
<select bind:value={newCategory} style="margin-bottom:14px">
|
<select bind:value={newCategory} style="margin-bottom:14px">
|
||||||
|
<option value="user">Über mich — Wer du bist, Präferenzen, Arbeitsweise</option>
|
||||||
|
<option value="instruction">Verhalten — Wie alle KI-Tools sich verhalten sollen</option>
|
||||||
<option value="stable">Stabil — Projektfakten, die sich selten ändern</option>
|
<option value="stable">Stabil — Projektfakten, die sich selten ändern</option>
|
||||||
<option value="versioned">Versioniert — Tech-Versionen (bei Updates überschreiben)</option>
|
<option value="versioned">Versioniert — Tech-Versionen (bei Updates überschreiben)</option>
|
||||||
<option value="ephemeral">Temporär — Aktuelle Aufgabe (nach 7 Tagen gelöscht)</option>
|
<option value="ephemeral">Temporär — Aktuelle Aufgabe (nach 7 Tagen gelöscht)</option>
|
||||||
@@ -137,10 +141,12 @@
|
|||||||
<div class="flex gap-2" style="flex-wrap:wrap;align-items:center">
|
<div class="flex gap-2" style="flex-wrap:wrap;align-items:center">
|
||||||
<span style="font-size:11.5px;color:var(--mut);margin-right:4px">Filter:</span>
|
<span style="font-size:11.5px;color:var(--mut);margin-right:4px">Filter:</span>
|
||||||
{#each [
|
{#each [
|
||||||
['all', 'Alle', '', memories.length],
|
['all', 'Alle', '', memories.length],
|
||||||
['stable', 'Stabil', 'var(--accent)', countCat('stable')],
|
['user', 'Über mich', '#a78bfa', countCat('user')],
|
||||||
['versioned', 'Versioniert', '#f59e0b', countCat('versioned')],
|
['instruction', 'Verhalten', '#fb923c', countCat('instruction')],
|
||||||
['ephemeral', 'Temporär', 'var(--mut)', countCat('ephemeral')],
|
['stable', 'Stabil', 'var(--accent)', countCat('stable')],
|
||||||
|
['versioned', 'Versioniert', '#f59e0b', countCat('versioned')],
|
||||||
|
['ephemeral', 'Temporär', 'var(--mut)', countCat('ephemeral')],
|
||||||
] as [val, lbl, clr, cnt]}
|
] as [val, lbl, clr, cnt]}
|
||||||
<span class="chip"
|
<span class="chip"
|
||||||
role="button" tabindex="0"
|
role="button" tabindex="0"
|
||||||
@@ -185,6 +191,8 @@
|
|||||||
bind:value={editContent}
|
bind:value={editContent}
|
||||||
></textarea>
|
></textarea>
|
||||||
<select bind:value={editCategory} style="margin-bottom:10px">
|
<select bind:value={editCategory} style="margin-bottom:10px">
|
||||||
|
<option value="user">Über mich</option>
|
||||||
|
<option value="instruction">Verhalten</option>
|
||||||
<option value="stable">Stabil</option>
|
<option value="stable">Stabil</option>
|
||||||
<option value="versioned">Versioniert</option>
|
<option value="versioned">Versioniert</option>
|
||||||
<option value="ephemeral">Temporär</option>
|
<option value="ephemeral">Temporär</option>
|
||||||
@@ -230,8 +238,10 @@
|
|||||||
style="color:var(--accent)">Verbinden → Gedächtnis-MCP</a>.
|
style="color:var(--accent)">Verbinden → Gedächtnis-MCP</a>.
|
||||||
</div>
|
</div>
|
||||||
<div class="card-sub" style="margin-top:8px;font-size:11.5px">
|
<div class="card-sub" style="margin-top:8px;font-size:11.5px">
|
||||||
Kategorien: <b style="color:var(--accent)">Stabil</b> = Projektfakten die sich selten ändern ·
|
<b style="color:#a78bfa">Über mich</b> = wer du bist, Präferenzen ·
|
||||||
<b style="color:#f59e0b">Versioniert</b> = Tech-Versionen (bei Updates überschreiben) ·
|
<b style="color:#fb923c">Verhalten</b> = Regeln für alle KI-Tools ·
|
||||||
<b style="color:var(--mut)">Temporär</b> = aktuelle Aufgaben, nach 7 Tagen automatisch gelöscht
|
<b style="color:var(--accent)">Stabil</b> = Projektfakten ·
|
||||||
|
<b style="color:#f59e0b">Versioniert</b> = Tech-Versionen ·
|
||||||
|
<b style="color:var(--mut)">Temporär</b> = 7 Tage, dann weg
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+20
-5
@@ -92,8 +92,14 @@ TOOL_DEFS = [
|
|||||||
"content": {"type": "string", "description": "Der zu speichernde Fakt"},
|
"content": {"type": "string", "description": "Der zu speichernde Fakt"},
|
||||||
"category": {
|
"category": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": ["stable", "versioned", "ephemeral"],
|
"enum": ["user", "instruction", "stable", "versioned", "ephemeral"],
|
||||||
"description": "stable=Projektfakten, versioned=Tech-Versionen, ephemeral=temporaer (7 Tage)",
|
"description": (
|
||||||
|
"user=Fakten ueber den User (Wer ist er? Wie arbeitet er?), "
|
||||||
|
"instruction=Verhaltensregeln fuer alle KI-Tools, "
|
||||||
|
"stable=Projektfakten, "
|
||||||
|
"versioned=Tech-Versionen (bei Updates ueberschreiben), "
|
||||||
|
"ephemeral=temporaer (7 Tage)"
|
||||||
|
),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"required": ["content"],
|
"required": ["content"],
|
||||||
@@ -295,16 +301,25 @@ Dein Zuhause (Bosgame M5):
|
|||||||
- Modelle: coder (Qwen3-30B-A3B), scout (Qwen3-8B), vision (Qwen3-VL)
|
- Modelle: coder (Qwen3-30B-A3B), scout (Qwen3-8B), vision (Qwen3-VL)
|
||||||
- Du laeuft als Teil von Mission Control
|
- Du laeuft als Teil von Mission Control
|
||||||
|
|
||||||
Gespeichertes Wissen:
|
Gespeichertes Wissen (nach Kategorie):
|
||||||
{memories}
|
{memories}
|
||||||
|
|
||||||
Verhaltenregeln:
|
Verhaltensregeln (fest):
|
||||||
- Antworte praegnant auf Deutsch (max 2-3 Saetze wenn nicht ausdruecklich mehr gewuenscht)
|
- Antworte praegnant auf Deutsch (max 2-3 Saetze wenn nicht ausdruecklich mehr gewuenscht)
|
||||||
- Kuendige an was du tust bevor du es tust
|
- Kuendige an was du tust bevor du es tust
|
||||||
- Frag nach bevor du Dateien ueberschreibst oder Dienste neustartest
|
- Frag nach bevor du Dateien ueberschreibst oder Dienste neustartest
|
||||||
- Nutze get_system_status() wenn du nicht sicher bist was gerade laeuft
|
- Nutze get_system_status() wenn du nicht sicher bist was gerade laeuft
|
||||||
- Speichere wichtige Entscheidungen und Fakten per add_memory() ins Gedaechtnis
|
|
||||||
- Bei einfachen Fragen: keine Tools, direkt antworten
|
- Bei einfachen Fragen: keine Tools, direkt antworten
|
||||||
|
|
||||||
|
Gedaechtnis-Kategorien (fuer add_memory):
|
||||||
|
- user → Fakten ueber den User: Wer er ist, wie er arbeitet, was er bevorzugt
|
||||||
|
- instruction → Verhaltensregeln die fuer ALLE KI-Tools gelten sollen
|
||||||
|
- stable → Technische Projektfakten (IPs, Ports, Architektur)
|
||||||
|
- versioned → Tech-Versionen (bei Updates ueberschreiben, nicht anhaengen)
|
||||||
|
- ephemeral → Temporaerer Kontext (7 Tage, dann weg)
|
||||||
|
|
||||||
|
Speichere wichtige Erkenntnisse aktiv per add_memory() — besonders wenn der User
|
||||||
|
etwas ueber sich selbst erwaehnt (→ user) oder Verhaltensregeln nennt (→ instruction).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|||||||
+1
-1
@@ -70,7 +70,7 @@ def get_memories(category: str = "") -> str:
|
|||||||
@mcp.tool()
|
@mcp.tool()
|
||||||
def add_memory(content: str, category: str = "stable", source: str = "agent") -> str:
|
def add_memory(content: str, category: str = "stable", source: str = "agent") -> str:
|
||||||
"""Speichert einen Fakt oder eine Entscheidung.
|
"""Speichert einen Fakt oder eine Entscheidung.
|
||||||
category: stable=Projektfakten (selten aendern), versioned=Tech-Versionen (bei Updates ueberschreiben), ephemeral=temporaerer Kontext (nach 7 Tagen geloescht).
|
category: user=Fakten ueber den User (Praeferenzen/Arbeitsweise), instruction=Verhaltensregeln fuer alle Tools, stable=Projektfakten, versioned=Tech-Versionen, ephemeral=temporaer (7 Tage).
|
||||||
"""
|
"""
|
||||||
m = _post("/api/memory", {"content": content, "category": category, "source": source})
|
m = _post("/api/memory", {"content": content, "category": category, "source": source})
|
||||||
return f"Gespeichert (ID: {m['id'][:8]}): {content}"
|
return f"Gespeichert (ID: {m['id'][:8]}): {content}"
|
||||||
|
|||||||
Vendored
+23
-23
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user