feat(v9): Phase 7 (Hermes 4 14B) live + Phase 9 proaktives Memory
- Phase 7: model.default = Hermes-4-14B (Q6_K, llama-swap-Alias hermes, --jinja), verifiziert (sauberer Tool-Call). A/B vs Qwen3-Coder umschaltbar. - Phase 9: mcp_memory.py Tool-Beschreibungen auf proaktives Protokoll (get→Session-Start, add→proaktiv+dedup, search→vor add) → geteiltes MC-SQLite waechst autonom aus allen Tool-Sessions mit. - Docs: Memory-Architektur (2 komplementaere Schichten) festgeschrieben. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+13
-4
@@ -54,7 +54,10 @@ def _delete(path: str) -> dict:
|
||||
|
||||
@mcp.tool()
|
||||
def get_memories(category: str = "") -> str:
|
||||
"""Laedt gespeicherte Fakten und Entscheidungen. category: stable | versioned | ephemeral | (leer = alle)"""
|
||||
"""Laedt gespeicherte Fakten und Entscheidungen aus dem geteilten Gedaechtnis.
|
||||
RUFE DAS ZU BEGINN JEDER SESSION AUF, um vorhandenen Kontext (Konventionen,
|
||||
Entscheidungen, Nutzer-Praeferenzen) zu laden, BEVOR du handelst oder nachfragst.
|
||||
category: user | instruction | stable | versioned | ephemeral | (leer = alle)"""
|
||||
params = {"category": category} if category else {}
|
||||
items = _get("/api/memory", **params)
|
||||
if not items:
|
||||
@@ -69,8 +72,13 @@ def get_memories(category: str = "") -> str:
|
||||
|
||||
@mcp.tool()
|
||||
def add_memory(content: str, category: str = "stable", source: str = "agent") -> str:
|
||||
"""Speichert einen Fakt oder eine Entscheidung.
|
||||
category: user=Fakten ueber den User (Praeferenzen/Arbeitsweise), instruction=Verhaltensregeln fuer alle Tools, stable=Projektfakten, versioned=Tech-Versionen, ephemeral=temporaer (7 Tage).
|
||||
"""Speichert einen Fakt/eine Entscheidung dauerhaft im GETEILTEN Gedaechtnis (alle Tools sehen es).
|
||||
RUFE DAS PROAKTIV AUF, sobald waehrend der Arbeit etwas Dauerhaftes entsteht — eine
|
||||
Konvention, Architektur-Entscheidung, Tech-Version, Nutzer-Praeferenz oder ein Projektfakt.
|
||||
Warte NICHT, bis man dich bittet.
|
||||
Mache VORHER `search_memories` mit Stichworten, um Dubletten zu vermeiden; existiert ein
|
||||
passender Eintrag, nutze `update_memory` statt neu anzulegen. Halte Eintraege knapp & atomar.
|
||||
category: user=Fakten ueber den User (Praeferenzen/Arbeitsweise), instruction=Verhaltensregeln fuer alle Tools, stable=Projektfakten, versioned=Tech-Versionen, ephemeral=temporaer/Session-Notiz (7 Tage, dann weg).
|
||||
"""
|
||||
m = _post("/api/memory", {"content": content, "category": category, "source": source})
|
||||
return f"Gespeichert (ID: {m['id'][:8]}): {content}"
|
||||
@@ -78,7 +86,8 @@ def add_memory(content: str, category: str = "stable", source: str = "agent") ->
|
||||
|
||||
@mcp.tool()
|
||||
def search_memories(q: str) -> str:
|
||||
"""Sucht per Stichwort in allen gespeicherten Fakten."""
|
||||
"""Sucht per Stichwort in allen gespeicherten Fakten. Nutze das VOR `add_memory`
|
||||
(Dubletten-Check) und immer dann, wenn du fruehere Entscheidungen/Kontext brauchst."""
|
||||
items = _get("/api/memory", q=q)
|
||||
if not items:
|
||||
return f"Keine Treffer fuer '{q}'."
|
||||
|
||||
Reference in New Issue
Block a user