MCP HubMCP Hub
스킬 목록으로 돌아가기

prune-agent-memory

pjt222
업데이트됨 Yesterday
6 조회
17
2
17
GitHub에서 보기
디자인wordaidesign

정보

이 스킬은 에이전트의 저장된 메모리를 감사하고 선택적으로 정리하여 성능과 관련성을 향상시킵니다. 메모리를 유형, 연령, 사용 빈도에 따라 분류하고, 신선도와 정확성을 확인하며, 감사 추적을 유지하면서 결정 트리를 사용해 삭제를 수행합니다. 메모리가 방대하고 관리되지 않을 때, 프로젝트 상태가 크게 변경되었을 때, 또는 검색 품질이 저하되었을 때 사용하세요.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/prune-agent-memory

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

Agent-Speicher prunen

Gespeicherte Erinnerungen auditieren, klassifizieren und selektiv loeschen. Speicher ist Infrastruktur. Vergessen ist Richtlinie. Dieser Skill definiert die Richtlinie.

Waehrend manage-memory sich auf das Organisieren und Wachsenlassen des Speichers konzentriert (was behalten werden soll, wie es zu strukturieren ist), konzentriert sich dieser Skill auf das Gegenteil: was verworfen werden soll, wie Verfall erkannt wird und wie sichergestellt wird, dass Vergessen absichtlich statt versehentlich geschieht. Die beiden Skills sind komplementaer und sollten bei der periodischen Wartung zusammen verwendet werden.

Wann verwenden

  • Speicherdateien sind gross geworden und niemand hat sie auf Relevanz geprueft
  • Der Projektstatus hat sich wesentlich veraendert (grosse Refaktorierungen, umbenannte Repos, abgeschlossene Meilensteine) und Erinnerungen referenzieren wahrscheinlich veralteten Kontext
  • Abrufqualitaet hat abgenommen — Erinnerungen erzeugen Rauschen statt Signal
  • Nach einer Burst-Aktivitaet, die viele Speichereintraege ohne Kuration generiert hat
  • Als geplante Wartungsaufgabe (z. B. alle 10–20 Sitzungen oder bei Projekt-Meilensteinen)
  • Wenn mehrere Speichereintraege dasselbe Thema mit leichten Variationen abdecken (Duplikatdrift)
  • Vor der Aufnahme eines neuen Mitarbeiters, der den Speicherkontext erbt
  • Nach dem Verwerfen einer Strategie oder eines Musters, deren ausloesende Bedingungen weiterhin bestehen — um gegen Neu-Ableitung zu inokulieren, statt sich auf Loeschung zu verlassen

Eingaben

  • Erforderlich: Pfad zum Speicherverzeichnis (typischerweise ~/.claude/projects/<project-path>/memory/)
  • Optional: Aufbewahrungsrichtlinien-Ueberschreibungen (z. B. "alles ueber Deployment behalten", "Debug-Notizen aggressiv prunen")
  • Optional: Bekannte Projektstatus-Aenderungen seit dem letzten Audit (z. B. "Repo wurde umbenannt", "von Jest zu Vitest migriert")
  • Optional: Vorheriger Pruning-Audit-Trail fuer Trendanalyse

Vorgehensweise

Schritt 1: Erinnerungen enumerieren und klassifizieren

Alle Speicherdateien lesen und jeden Eintrag nach vier Dimensionen klassifizieren.

# Speicherverzeichnis inventarisieren
ls -la <memory-dir>/
wc -l <memory-dir>/*.md

# Gesamteintraege zaehlen (naeherungsweise ueber Top-Level-Aufzaehlungen und Ueberschriften)
grep -c "^- \|^## " <memory-dir>/MEMORY.md
for f in <memory-dir>/*.md; do echo "$f: $(grep -c '^- \|^## ' "$f") Eintraege"; done

Jeden Speichereintrag in einen dieser Typen klassifizieren:

TypBeschreibungBeispielStandard-Aufbewahrung
ProjektFakten ueber Projektstruktur, Architektur, Konventionen"skills/ hat 310 SKILL.md-Dateien ueber 55 Domaenen"Behalten bis als veraltet bestaetigt
EntscheidungGetroffene Entscheidungen und ihre Begruendung"Hub-and-Spoke statt Sequential fuer Review-Teams gewaehlt, weil..."Unbegrenzt behalten
MusterDebug-Loesungen, Workflow-Erkenntnisse, wiederkehrendes Verhalten"Exit-Code 5 bedeutet Anführungszeichen-Fehler — temporaere Dateien verwenden"Behalten bis abgeloest
ReferenzLinks, Versionsnummern, externe Ressourcen"mcptools-Docs: https://..."Behalten bis als veraltet bestaetigt
RueckmeldungNutzerpraeferenzen, Korrekturen, Stilhinweise"Nutzer bevorzugt Kebab-Case fuer Dateinamen"Unbegrenzt behalten
EphemerSitzungsspezifischer Kontext, der in den persistenten Speicher ausgelaufen ist"Arbeite gerade an Issue #42"Sofort prunen

Fuer jeden Eintrag zusaetzlich notieren:

  • Alter: Wann wurde er geschrieben oder zuletzt aktualisiert?
  • Zugriffshaeufigkeit: War dieser Eintrag in letzten Sitzungen nuetzlich? (Schaetzen basierend auf Themenrelevanz fuer aktuelle Arbeit)

Erwartet: Vollstaendiges Inventar mit jedem Speichereintrag klassifiziert nach Typ, mit Alters- und Zugriffshaeufigkeitsschaetzungen. Ephemere Eintraege sind bereits fuer sofortige Entfernung markiert.

Bei Fehler: Wenn Speicherdateien zu gross oder unstrukturiert sind, um Eintrag fuer Eintrag zu klassifizieren, auf Abschnittsebene arbeiten. Ganze Abschnitte statt einzelner Aufzaehlungen klassifizieren. Das Ziel ist Abdeckung, nicht Granularitaet.

Schritt 2: Veraltung erkennen

Speicherbehauptungen mit dem aktuellen Projektstatus vergleichen. Veraltung ist die haeufigste Form des Speicherverfalls.

Nach diesen Veraltungsmustern suchen:

  1. Zaehldrift: Anzahlen von Dateien, Skills, Agenten, Domaenen, Teammitgliedern, die sich veraendert haben
  2. Pfaddrift: Dateien, Verzeichnisse oder URLs, die verschoben, umbenannt oder geloescht wurden
  3. Statusdrift: Zustaende (geloeste Issues, abgeschlossene Meilensteine, geschlossene PRs), die noch als offen oder in Bearbeitung beschrieben werden
  4. Entscheidungsumkehr: Entscheidungen, die spaeter ueberstimmt wurden, aber die urspruengliche Begruendung bleibt im Speicher
  5. Tool-/Versions-Drift: Versionsnummern, API-Signaturen oder Tool-Namen, die sich geaendert haben (z. B. Paketumbenennungen)
# Zaehlen gegen Quelle der Wahrheit pruefen
grep -oP '\d+ skills' <memory-dir>/MEMORY.md
grep -c "^      - id:" skills/_registry.yml

# Auf Referenzen zu nicht mehr existierenden Dateien pruefen
grep -oP '`[^`]+\.(md|yml|R|js|ts)`' <memory-dir>/MEMORY.md | sort -u | while read f; do
  path="${f//\`/}"
  [ ! -f "$path" ] && echo "VERALTET: $path referenziert, aber nicht gefunden"
done

# Auf Referenzen zu alten Namen/Pfaden pruefen
grep -i "old-name\|previous-name\|renamed-from" <memory-dir>/*.md

Jeden veralteten Eintrag mit der Art der Veraltung und dem aktuell korrekten Wert markieren.

Erwartet: Eine Liste veralteter Eintraege mit spezifischen Belegen fuer das, was sich geaendert hat. Jeder veraltete Eintrag hat eine empfohlene Aktion: aktualisieren (wenn der korrekte Wert bekannt ist), pruefen (wenn unsicher) oder prunen (wenn der gesamte Eintrag obsolet ist).

Bei Fehler: Wenn eine Behauptung nicht verifiziert werden kann, weil sie externen Zustand referenziert (APIs, Drittanbieter-Docs, Deployment-Status), als nicht verifizierbar markieren statt Richtigkeit anzunehmen. Nicht verifizierbare Eintraege sind Kandidaten fuer Pruning, wenn sie nicht aktiv nuetzlich sind.

Schritt 3: Genauigkeitspruefungen durchfuehren

Testen, ob Erinnerungen beim Abruf noch nuetzlichen Kontext liefern. Dies ist der schwerste Schritt, weil ein Agent nicht pruefen kann, ob seine eigenen komprimierten Erinnerungen korrekt sind — externe Anker sind erforderlich.

Genauigkeitspruefungsmethoden:

  1. Hin-und-Her-Verifizierung: Einen Speichereintrag lesen, dann den tatsaechlichen Projektstatus pruefen, den er beschreibt. Fuehrt die Erinnerung zur richtigen Datei, zum richtigen Muster, zur richtigen Schlussfolgerung?

  2. Kompressionsverlust-Erkennung: Erinnerungszusammenfassungen mit dem urspruenglichen Quellmaterial vergleichen. Wenn eine 50-zeilige Diskussion zu einer 2-zeiligen Erinnerung komprimiert wurde, hat die Kompression die handlungsrelevante Erkenntnis oder nur das Thema-Label bewahrt?

    # Die Quelle finden, aus der ein Speichereintrag abgeleitet wurde
    # (git log, alte PRs, urspruengliche Dateien)
    git log --oneline --all --grep="<Schluesselwort aus Speichereintrag>" | head -5
    
  3. Widerspruchs-Scan: Nach Erinnerungen suchen, die sich gegenseitig widersprechen oder CLAUDE.md / Projektdokumentation widersprechen.

    # Auf potenzielle Widersprueche in Zaehlen pruefen
    grep -n "total" <memory-dir>/MEMORY.md
    grep -n "total" CLAUDE.md
    # Werte vergleichen — sie sollten uebereinstimmen
    
  4. Nuetzlichkeitstest: Fuer jeden Speichereintrag fragen: "Wenn dieser Eintrag geloescht waere, wuerde in den naechsten 5 Sitzungen etwas schief gehen?" Wenn die Antwort "wahrscheinlich nicht" ist, hat der Eintrag unabhaengig von der Genauigkeit geringen Fidelitaetswert.

Erwartet: Jeder Speichereintrag hat jetzt eine Genauigkeitsbewertung: hoch (verifiziert korrekt und nuetzlich), mittel (wahrscheinlich korrekt, gelegentlich nuetzlich), niedrig (nicht verifiziert oder selten nuetzlich) oder fehlgeschlagen (als ungenau oder widerspruechlich verifiziert).

Bei Fehler: Wenn Genauigkeitspruefungen fuer viele Eintraege nicht eindeutig sind, auf die Eintraege mit dem groessten Schadenpotenzial konzentrieren. Eine falsche Erinnerung ueber die Projektarchitektur ist gefaehrlicher als eine falsche Erinnerung ueber einen Debug-Trick.

Schritt 4: Selektives Loeschen anwenden

Diesen Entscheidungsbaum verwenden, um in Prioritaetsreihenfolge festzustellen, was gepruned werden soll:

Pruning-Entscheidungsbaum (in Reihenfolge anwenden):

1. EPHEMERE Eintraege (Klassifizierung aus Schritt 1)
   → Sofort loeschen. Diese haetten nie persistiert werden sollen.

2. Eintraege mit FEHLGESCHLAGENER Genauigkeit (Schritt 3)
   → Sofort loeschen. Ungenaue Erinnerungen sind schlimmer als keine Erinnerungen.

3. DUPLIKATE
   → Die vollstaendigste/genaueste Version behalten, andere loeschen.
   → Wenn Duplikate MEMORY.md und eine Themendatei umfassen, die Themendateiversion behalten.

4. VERALTETE Eintraege mit bekannten Korrekturen (Schritt 2)
   → AKTUALISIEREN, wenn der Eintrag ansonsten nuetzlich ist (veralteten Wert auf aktuellen aendern).
   → LOESCHEN, wenn der gesamte Eintrag obsolet ist (das Thema ist nicht mehr relevant).

5. NIEDRIGE Genauigkeit, niedrige Zugriffshaeufigkeit
   → Loeschen. Diese beanspruchen Platz ohne Wert zu bieten.

6. MITTLERE Genauigkeit bei abgeschlossener/geschlossener Arbeit
   → Archivieren oder loeschen. Vergangene Sprint-Details, geloeste Vorfaelle, zusammengefuehrte PRs.
   → Ausnahme: behalten, wenn die Loesung ein wiederverwendbares Muster enthaelt.

7. REFERENZ-Eintraege mit frei verfuegbaren Quellen
   → Loeschen, wenn die Referenz mit einer Google-Suche zu finden ist.
   → Behalten, wenn die Referenz schwer zu finden ist oder projektspezifischen Kontext hat.

Fuer jede Loeschung den Eintrag, seine Klassifizierung und den Loeschgrund notieren (verwendet in Schritt 7).

Bevor eine LOESCHEN-Aktion aus diesem Baum angewendet wird, pruefen, ob der Eintrag eine Inokulation rechtfertigt (Schritt 5). Fehlgeschlagene Strategien, verworfene Ansaetze und gefaehrliche Muster sind Kandidaten fuer Loeschen + Inokulieren statt nur Loeschen.

Erwartet: Eine klare Liste von zu loeschenden, zu aktualisierenden und zu behaltenden Eintraegen — jeder mit dokumentiertem Grund. Das Behalten/Loeschen-Verhaeltnis haengt von der Speichergesundheit ab; ein gut gewarteter Speicher koennte 5–10 % prunen, ein vernachlaessigter 30–50 %.

Bei Fehler: Wenn der Entscheidungsbaum fuer viele Eintraege mehrdeutige Ergebnisse liefert, einen strengeren Filter anwenden: "Wuerde ich diesen Eintrag heute schreiben, mit dem Wissen, das ich jetzt habe?" Wenn nicht, ist es ein Loeschkandidat. Eher mehr prunen — es ist einfacher, eine Tatsache neu zu lernen als mit einer falschen Erinnerung umzugehen.

Schritt 5: Gegen Muster-Neu-Ableitung inokulieren

Manche verworfenen Schlussfolgerungen koennen nicht sicher geloescht werden. Loeschung allein scheitert, wenn die speichererzeugenden Bedingungen fortbestehen — das System rekonstruiert die geloeschte Erinnerung aus denselben Eingaben entlang desselben Reasoning-Pfads. Fuer diese Faelle eine Counter-Memory schreiben, die eine Neu-Ableitung verhindert, neben (oder statt) der Loeschung.

Entscheidungsregel — nur Loeschen vs. Loeschen + Inokulieren vs. nur Inokulieren:

ErinnerungskategorieAktionWarum
Veraltete Tatsache, ueberholter Verweis, abgelaufener KontextNur LoeschenAbruf-Bereinigung; kein Verhaltensrisiko bei Neu-Erzeugung
Fehlgeschlagene Strategie, gefaehrliches Muster, verworfener Ansatz mit anhaltenden TriggernLoeschen + InokulierenDer Reasoning-Pfad wuerde die Schlussfolgerung sonst neu erzeugen
Spaeter ueberstimmte Entscheidung, deren urspruengliche Begruendung wichtig istNur InokulierenOriginaleintrag bewahren; SUPERSEDED-Counter-Memory hinzufuegen, die darauf verweist

SUPERSEDED-Datensatzformat (Frontmatter fuer Auto-Memory; Struktur passt sich an andere Speichersysteme an):

---
name: superseded-<short-id>
description: Counter-memory preventing re-derivation of <pattern>
type: superseded
---

SUPERSEDED <YYYY-MM-DD>
Pattern: <what was tried — describe the conclusion or strategy>
Period: <start> to <end>
Evidence: <what happened — concrete data, not narrative>
Abandonment reason: <specific cause; not "did not work">
Do not re-derive from: <signal types or input patterns that previously led here>
Supersedes: <path to original memory if delete + inoculate, or N/A>

SUPERSEDED-Datensaetze als eigene Dateien im Speicherverzeichnis ablegen (z. B. superseded_strategy_X.md), damit sie beim Abruf neben aktiven Erinnerungen auftauchen. Die Counter-Memory wird zum eigentlichen Aenderungsmechanismus: wenn ein aehnliches Signal eintrifft, taucht der SUPERSEDED-Datensatz auf und blockiert den Neu-Erzeugungspfad.

Wann NICHT inokulieren:

  • Triviale veraltete Tatsachen (kein Verhaltensrisiko bei Neu-Erzeugung)
  • Erinnerungen, deren urspruengliche Triggerbedingungen nicht mehr existieren (die Umbenennung ist abgeschlossen, die Abhaengigkeit wurde entfernt, das Team hat sich aufgeloest)
  • Entscheidungen, bei denen Neu-Ableitung unter neuer Evidenz aktiv erwuenscht ist (die Strategie koennte in einem zukuenftigen Zustand funktionieren und sollte neu bewertet werden)

Inokulationshygiene:

  • Pattern und Do not re-derive from spezifisch halten. Vage Counter-Memories ("keine komplizierten Loesungen versuchen") sind Rauschen.
  • Den SUPERSEDED-Eintrag datieren. Alte Inokulationen koennen selbst veralten, wenn sich die zugrundeliegenden Bedingungen aendern — sie gelangen in den naechsten Pruning-Zyklus als Pruefungskandidaten.
  • Eine SUPERSEDED pro verworfenem Muster. Nicht mehrere Verwerfungen in einer einzigen Counter-Memory verketten; der Abruf leidet darunter.
  • Den SUPERSEDED-Dateipfad zusammen mit dem Loeschdatensatz in das Pruning-Log aufnehmen, damit der Audit-Trail beide Haelften der Operation erfasst.

Erwartet: Fuer jeden Loeschkandidaten aus Schritt 4, der verworfene Strategien oder gefaehrliche Muster betrifft, wird vor der Loeschung des Originaleintrags eine entsprechende SUPERSEDED-Counter-Memory-Datei erstellt. Das Pruning-Log erfasst sowohl die Loeschung als auch die Inokulation. Der aktive Speicher bleibt schlank, waehrend die Neu-Erzeugungspfade blockiert sind.

Bei Fehler: Wenn unsicher ist, ob ein Eintrag eine Inokulation rechtfertigt, im Zweifel inokulieren. Ein redundanter SUPERSEDED-Datensatz kostet wenig; ein neu erzeugtes schlechtes Muster kostet viel mehr. Wenn die SUPERSEDED-Liste selbst so gross wird, dass sie zu Rauschen wird, ist das ein Signal, die vorgelagerten Bedingungen zu untersuchen, die wiederholte Verwerfungen erzeugen — der Fix liegt auf der Eingabeebene, nicht auf der Speicherebene.

Schritt 6: Praeventive Filter anwenden

"Was NICHT gespeichert werden soll"-Regeln definieren, um kuenftige Speicherverschmutzung zu verhindern. Vorhandene Erinnerungen auf Muster pruefen, die beim Schreiben haetten gefiltert werden sollen.

Muster, die niemals persistente Erinnerungen werden sollten:

MusterWarumBeispiel
Sitzungsspezifischer AufgabenstatusBis zur naechsten Sitzung veraltet"Debugge gerade Issue #42"
ZwischenschlussfolgerungenKeine Schlussfolgerung"Ansatz A versucht, hat nicht funktioniert, weil..."
Debug-Ausgabe / Stack TracesEphemere Diagnosedaten"Fehler war: TypeError bei Zeile 234..."
Exakte BefehlssequenzenSproede, versionsabhaengig"Fuehre npm install [email protected] && ... aus"
Emotionale/tonale NotizenNicht handlungsrelevant"Nutzer schien frustriert"
Duplikate von CLAUDE.mdBereits in Systemaufforderung"Projekt verwendet renv fuer Abhaengigkeiten"
Nicht verifizierte EinzelbeobachtungenKoennte falsch sein"Ich glaube das API-Rate-Limit ist 100/Min"

Wenn eines dieser Muster in vorhandenen Erinnerungen gefunden wird, zur Loeschliste aus Schritt 4 hinzufuegen.

Die Filterregeln in MEMORY.md oder einer retention-policy.md-Themendatei dokumentieren, damit kuenftige Sitzungen sie vor dem Schreiben neuer Erinnerungen referenzieren koennen.

Erwartet: Eine Reihe praeventiver Filterregeln im Speicherverzeichnis dokumentiert. Bestehende Eintraege, die diesen Mustern entsprechen, sind fuer Loeschung markiert.

Bei Fehler: Wenn das Dokumentieren von Filterregeln verfrueht erscheint (Speicher ist klein, Verschmutzung minimal), die Dokumentation ueberspringen, aber dennoch die Filter anwenden, um vorhandene Verletzungen zu erkennen. Die Regeln koennen spaeter formalisiert werden.

Schritt 7: Audit-Trail schreiben

Jede Loeschung protokollieren, damit das Vergessen selbst ueberpruefbar ist. Ein Pruning-Log erstellen oder aktualisieren.

<!-- In <memory-dir>/pruning-log.md oder an MEMORY.md angehaengt -->

## Pruning-Log

### JJJJ-MM-TT Audit
- **Auditierte Eintraege**: N
- **Geprunete Eintraege**: M (X%)
- **Aktualisierte Eintraege**: K
- **Gefundene Veraltungen**: [Liste erkannter Veraltungsmuster]
- **Genauigkeitsfehler**: [Liste nicht bestandener Eintraege]

#### Loeschungen
| Eintrag (Zusammenfassung) | Typ | Grund |
|--------------------------|-----|-------|
| "Arbeite gerade an Issue #42" | Ephemer | Sitzungsspezifisch, veraltet |
| "skills/ hat 280 SKILL.md-Dateien" | Projekt | Zaehldrift: tatsaechlich 310 |
| "Verwende acquaint::mcp_session()" | Muster | Paket zu mcptools umbenannt |

Das Pruning-Log kurz halten. Es existiert fuer Nachvollziehbarkeit, nicht fuer Archaeologie. Wenn das Log selbst gross wird, aeltere Eintraege zusammenfassen: "2025: 3 Audits, 47 Eintraege insgesamt gepruned (groesstenteils Zaehldrift und ephemeres Auslaufen)."

Erwartet: Ein zeitgestempelter Pruning-Log-Eintrag, der dokumentiert was geloescht wurde und warum. Das Log ist im Speicherverzeichnis neben den Erinnerungen selbst gespeichert.

Bei Fehler: Wenn das Erstellen einer separaten Log-Datei uebertrieben erscheint (nur 1–2 Eintraege gepruned), stattdessen eine kurze Notiz in MEMORY.md hinzufuegen: <!-- Zuletzt gepruned: JJJJ-MM-TT, 2 veraltete Eintraege entfernt -->. Irgendein Nachweis ist besser als stilles Loeschen.

Schritt 8: Geschuetzte Erinnerungen bestimmen

Bestimmte Speichereintraege sollten unabhaengig von Alter, Zugriffshaeufigkeit oder Genauigkeitsbewertung von Pruning ausgenommen sein. Diese repraesentieren unersetzlichen Kontext, dessen Verlust erheblichen Aufwand zur Rekonstruktion erfordern wuerde.

Schutzkriterien:

KategorieBeispieleWarum geschuetzt
Architekturentscheidungen"Flaches Skill-Verzeichnis statt verschachteltem gewaehlt"Begruendung geht verloren, wenn spaeter neu abgeleitet
Nutzer-Identitaetspraeferenzen"Immer Kebab-Case verwenden", "Nie automatisch commiten"Expliziter Nutzer-Intent, nicht ableitbar
Sicherheitsaudit-Ergebnisse"Letzter Audit: 2025-12-13 — BESTANDEN"Compliance-Nachweis mit Zeitstempeln
Umbenennungs-/Migrationsaufzeichnungen"Repo umbenannt: X nach Y am Datum Z"Querverweisintegritaet haengt davon ab

Kennzeichnungsmethode: Geschuetzte Eintraege mit <!-- PROTECTED --> inline markieren oder eine protected-Liste im Pruning-Log pflegen. Der Entscheidungsbaum in Schritt 4 muss vor Anwendung jeder Loeschregel auf Schutzstatus pruefen.

Schutz aufheben: Um einen geschuetzten Eintrag zu prunen, zuerst explizit die Kennzeichnung entfernen und den Grund im Pruning-Log dokumentieren. Dieser zweistufige Prozess verhindert versehentliches Loeschen wertvoller Erinnerungen.

Erwartet: Geschuetzte Eintraege ueberstehen alle Pruning-Durchgaenge. Das Pruning-Log zeichnet Schutzhinzufuegungen oder -entfernungen auf.

Bei Fehler: Wenn der geschuetzte Satz zu gross wird (> 30 % aller Eintraege), die Kriterien ueberpruefen — Schutz gilt fuer unersetzlichen Kontext, nicht fuer "wichtige" Eintraege. Wichtige aber rekonstruierbare Fakten sollten normalem Pruning unterliegen.

Schritt 9: Nach dem Pruning neu synthetisieren

Nach dem Loeschen koennen verbleibende Erinnerungen fragmentiert sein — Querverweise zeigen auf geloeschte Eintraege, Themendateien verlieren Kohaerenz und MEMORY.md kann Luecken haben. Neu-Synthese stellt strukturelle Integritaet wieder her.

Neu-Synthese-Checkliste:

  1. Gebrochene Referenzen aufloesen: Verbleibende Eintraege auf Links zu geloeschten Inhalten scannen. Referenz entfernen oder umleiten.
  2. Verwandte Fragmente zusammenfuehren: Wenn Pruning zwei Eintraege hinterliess, die ueberlappende Aspekte desselben Themas abdecken, zu einem kohaerenten Eintrag zusammenfuehren.
  3. Themenstruktur aktualisieren: Wenn eine Themendatei > 50 % ihres Inhalts verloren hat, den Rest in MEMORY.md zurueckfalten und die Themendatei loeschen.
  4. Kalte Erinnerungen klassifizieren: Eintraege pruefen, die das Pruning ueberlebt haben, aber in letzter Zeit nicht abgerufen wurden:
    • Kalt-durch-Nichtnutzung: Thema entspricht aktiven Projektzielen, aber die spezifische Phase, die es generiert hat, ist abgeschlossen. Behalten — koennte wieder relevant werden, wenn diese Phase wieder aufgenommen wird (z. B. CRAN-Submission-Notizen waehrend aktiver Entwicklung).
    • Kalt-durch-Irrelevanz: Das Thema war immer randstaendig — ein einmaliges Experiment, eine tangentiale Untersuchung oder ein abgeloester Ansatz. Fuer Loeschung im naechsten Pruning-Zyklus markieren.
  5. MEMORY.md-Kohaerenz pruefen: MEMORY.md von oben nach unten lesen. Es sollte eine kohaerente Geschichte ueber das Projekt erzaehlen, nicht wie eine zufaellige Faktensammlung lesen.

Erwartet: Post-Pruning-Speicher ist strukturell solide — keine verwaisten Referenzen, keine redundanten Fragmente, keine inkohaerenten Themendateien. Kalte Eintraege sind fuer kuenftige Pruning-Entscheidungen klassifiziert.

Bei Fehler: Wenn Neu-Synthese zeigt, dass Pruning zu aggressiv war (kritischer Kontext ging verloren), das Pruning-Log pruefen und aus dem Audit-Trail rekonstruieren. Deshalb existiert der Audit-Trail.

Schritt 10: Von Speicherdrift erholen

Speicherdrift tritt auf, wenn gespeicherte Fakten still falsch werden — nicht weil sie immer falsch waren, sondern weil sich die zugrundeliegende Realitaet geaendert hat und die Erinnerung nicht aktualisiert wurde. Drift-Wiederherstellung versucht, Erinnerungen an Ort und Stelle zu korrigieren statt sie zu prunen.

Drift-Erkennungsausloeser:

  • Eine Speicherbehauptung widerspricht der aktuellen Tool-Ausgabe oder dem Dateiinhalt
  • Eine Zahl oder Versionsnummer im Speicher stimmt nicht mit der Registry oder der Lockdatei ueberein
  • Ein Pfad im Speicher gibt "Datei nicht gefunden" zurueck
  • Eine Erinnerung ueber eine Abhaengigkeit referenziert ein umbenanntes oder veraltetes Paket

Wiederherstellungsverfahren:

  1. Drift identifizieren: Speicherbehauptung gegen aktuelle Grundwahrheit vergleichen (git log, Registry, tatsaechliche Dateien)
  2. Wiederherstellbarkeit beurteilen: Kann der korrekte Wert aus dem aktuellen Projektstatus ermittelt werden?
    • Ja → Speichereintrag an Ort und Stelle mit aktuellem Wert und Anmerkung [korrigiert JJJJ-MM-TT] aktualisieren
    • Nein → Eintrag als nicht verifizierbar markieren und fuer Pruning vormerken
  3. Ursache nachverfolgen: War dies eine graduelle Drift (Zahl divergierte langsam) oder ein diskretes Ereignis (Umbenennung, Migration)? Diskrete Ereignisse betreffen oft mehrere Eintraege — nach Geschwistern scannen.
  4. Wiederholung verhindern: Wenn die Drift einen sich haeufig aendernden Wert betrifft (Zaehlen, Versionen), ueberlegen ob die Erinnerung den Wert ueberhaupt tracken soll oder stattdessen die Wahrheitsquelle referenzieren: "Aktuellen Zaehler in skills/_registry.yml nachschlagen" statt "317 Skills."

Erwartet: Gedriftete Erinnerungen werden wenn moeglich an Ort und Stelle korrigiert, wobei der Kontext erhalten bleibt. Eintraege, die nicht korrigiert werden koennen, werden fuer Pruning markiert. Praeventionsregeln reduzieren kuenftige Drift.

Bei Fehler: Wenn Drift weitverbreitet ist (> 20 % der Eintraege), benoetigt der Speicher moeglicherweise einen vollstaendigen Neuaufbau statt inkrementeller Korrekturen. In diesem Fall das aktuelle Speicherverzeichnis archivieren, neu beginnen und selektiv Eintraege reimportieren, die die Verifizierung bestehen.

Validierung

  • Alle Speicherdateien wurden inventarisiert und Eintraege nach Typ klassifiziert
  • Veraltungspruefungen wurden gegen aktuellen Projektstatus durchgefuehrt
  • Mindestens eine Genauigkeitspruefungsmethode wurde angewendet (Hin-und-Her, Kompressionsverlust, Widerspruchs-Scan oder Nuetzlichkeitstest)
  • Loeschentscheidungen folgen der Prioritaetsreihenfolge im Entscheidungsbaum
  • Kein Eintrag wurde ohne dokumentierten Grund geloescht
  • Inokulationskriterium wurde fuer jeden Loeschkandidaten geprueft; SUPERSEDED-Counter-Memories wurden erstellt, wo Neu-Ableitungsrisiko besteht
  • Praeventive Filterregeln sind dokumentiert oder angewendet
  • Pruning-Log zeichnet auf, was geloescht wurde, wann und warum — einschliesslich gepaarter SUPERSEDED-Dateipfade fuer inokulierte Eintraege
  • MEMORY.md bleibt nach Pruning unter 200 Zeilen
  • Verbleibende Erinnerungen sind korrekt (stichprobenartig gegen Projektstatus geprueft)
  • Keine verwaisten Themendateien durch Pruning von Referenzen aus MEMORY.md entstanden
  • Geschuetzte Eintraege sind bestimmt und ueberstehen alle Pruning-Durchgaenge
  • Post-Pruning-Neu-Synthese loest gebrochene Querverweise auf und fuehrt Fragmente zusammen
  • Kalte Eintraege sind als Nichtnutzung vs. Irrelevanz fuer kuenftige Pruning-Entscheidungen klassifiziert
  • Gedriftete Eintraege werden wenn moeglich an Ort und Stelle korrigiert, nicht nur geloescht

Haeufige Stolperfallen

  • Fehlgeschlagene Strategien ohne Inokulation loeschen: Eine Erinnerung an einen verworfenen Ansatz loeschen, waehrend die Bedingungen, die ihn erzeugt haben, weiterhin bestehen. Das System erzeugt dieselbe Schlussfolgerung aus denselben Eingaben entlang desselben Reasoning-Pfads neu. Die Loeschung war ein Placebo. Schritt-5-Inokulation verwenden, wenn Trigger fortbestehen.
  • Pruning ohne Verifizierung: Eintraege loeschen, weil sie "alt aussehen", ohne zu pruefen ob sie noch korrekt und nuetzlich sind. Alter allein ist kein Loeschkriterium — manche der wertvollsten Erinnerungen sind alte Architekturentscheidungen, die immer noch gelten.
  • Selbstverifizierung der Genauigkeit: Ein Agent, der seine eigene komprimierte Erinnerung liest und schlussfolgert "ja, das klingt richtig", fuehrt keine Genauigkeitspruefung durch. Genauigkeit erfordert externe Anker: Projektdateien, git-Verlauf, Registry-Zaehlen, tatsaechliche Tool-Ausgabe. Ohne Anker prueft man Konsistenz, nicht Genauigkeit.
  • Aggressives Pruning ohne Audit-Trail: Eintraege loeschen ohne aufzuzeichnen, was geloescht wurde. Wenn eine kuenftige Sitzung eine Tatsache benoetigt, die gepruned wurde, erklaert der Audit-Trail was passiert ist und enthaelt moeglicherweise genug Kontext zur Rekonstruktion.
  • Pruning-Entscheidungen als Erinnerungen: Nicht "Ich habe entschieden X zu prunen, weil Y" als regulaeren Speichereintrag schreiben. Das gehoert nur ins Pruning-Log. Speichereintraege ueber Speicherverwaltung sind Meta-Verschmutzung.
  • Praeventive Filter ignorieren: Vorhandene Eintraege prunen, aber keine Regeln zur Verhinderung derselben Muster aufstellen. Ohne Filter werden die naechsten 10 Sitzungen dieselben ephemeren Eintraege neu erstellen, die gerade geloescht wurden.
  • Alle Typen gleich behandeln: Entscheidungs- und Rueckmeldungs-Erinnerungen sollten fast nie gepruned werden — sie repraesentieren Nutzer-Intent und Begruendung. Projekt- und Referenz-Erinnerungen sind die primaeren Pruning-Ziele, weil sie Status tracken, der sich aendert.
  • Kompression mit Beschaedigung verwechseln: Eine Erinnerung, die ein komplexes Thema in einer Zeile zusammenfasst, ist komprimiert, nicht beschaedigt. Nur als Genauigkeitsfehler markieren, wenn die Kompression die handlungsrelevante Erkenntnis verloren hat, nicht bloss das Detail.
  • Ueberpinnen: Zu viele Eintraege als geschuetzt markieren vereitelt den Zweck des Prunings. Wenn > 30 % der Eintraege geschuetzt sind, sind die Kriterien zu locker. Unersetzlichen Kontext schuetzen, nicht bloss wichtige Fakten.
  • Neu-Synthese-Schleifen: Das Zusammenfuehren von Fragmenten waehrend der Neu-Synthese kann neue Eintraege erstellen, die selbst im naechsten Zyklus Pruning benoetigen. Zusammenfuehrungen minimal halten — nur Eintraege kombinieren, die eindeutig dasselbe Thema abdecken. Waehrend eines Pruning-Durchgangs keine neuen Erkenntnisse synthetisieren.

Verwandte Skills

  • manage-memory — der komplementaere Skill fuer das Organisieren und Wachsenlassen von Speicher; zusammen fuer vollstaendige Speicherwartung verwenden
  • meditate — Klaerung und Verankerung, die aufzeigen kann, welche Erinnerungen Rauschen erzeugen
  • rest — manchmal ist die beste Speicherwartung keine Speicherwartung
  • assess-context — Reasoning-Kontext-Gesundheit bewerten, die Speicherqualitaet direkt beeinflusst

GitHub 저장소

pjt222/agent-almanac
경로: i18n/de/skills/prune-agent-memory
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

executing-plans

디자인

executing-plans 스킬은 검토 체크포인트가 포함된 통제된 배치로 실행할 완전한 구현 계획이 있을 때 사용합니다. 이 스킬은 계획을 불러와 비판적으로 검토한 후, 소규모 배치(기본값 3개 작업)로 작업을 실행하면서 각 배치 사이에 진행 상황을 아키텍트 검토를 위해 보고합니다. 이를 통해 내재된 품질 관리 체크포인트를 갖춘 체계적인 구현이 보장됩니다.

스킬 보기

requesting-code-review

디자인

이 스킬은 코드 변경 사항을 요구 사항에 따라 분석하기 위해 코드 리뷰어 하위 에이전트를 호출합니다. 작업 완료 후, 주요 기능 구현 후, 또는 메인 브랜치에 병합하기 전에 사용해야 합니다. 이 리뷰는 현재 구현체와 원래 계획을 비교하여 문제를 조기에 발견하는 데 도움이 됩니다.

스킬 보기

connect-mcp-server

디자인

이 스킬은 개발자들이 HTTP, stdio 또는 SSE 전송 방식을 통해 MCP 서버를 Claude Code에 연결하는 포괄적인 가이드를 제공합니다. GitHub, Notion 및 사용자 정의 API와 같은 외부 서비스를 통합하기 위한 설치, 구성, 인증 및 보안을 다룹니다. MCP 통합 설정, 외부 도구 구성 또는 Claude의 모델 컨텍스트 프로토콜 작업 시 활용하세요.

스킬 보기

web-cli-teleport

디자인

이 스킬은 작업 분석을 기반으로 개발자가 Claude Code 웹 인터페이스와 CLI 인터페이스 중 선택할 수 있도록 돕고, 두 환경 간 원활한 세션 텔레포트를 가능하게 합니다. 웹, CLI 또는 모바일 환경 전환 시 세션 상태와 컨텍스트를 관리하여 워크플로를 최적화합니다. 다양한 단계에서 서로 다른 도구가 필요한 복잡한 프로젝트에 사용하세요.

스킬 보기