English | Français | Español | Deutsch | Italiano | Português | Nederlands | Polski | Русский | 日本語 | 中文 | العربية | 한국어
Persistentes Gedächtnis für KI-Agenten. Einzelne Binärdatei, keine Abhängigkeiten, MCP-nativ.
ICM gibt Ihrem KI-Agenten ein echtes Gedächtnis — kein Notiztool, kein Kontextmanager, sondern ein Gedächtnis.
ICM (Infinite Context Memory)
┌──────────────────────┬─────────────────────────┐
│ MEMORIES (Topics) │ MEMOIRS (Knowledge) │
│ │ │
│ Episodisch, temporal│ Permanent, strukturiert│
│ │ │
│ ┌───┐ ┌───┐ ┌───┐ │ ┌───┐ │
│ │ m │ │ m │ │ m │ │ │ C │──depends_on──┐ │
│ └─┬─┘ └─┬─┘ └─┬─┘ │ └───┘ │ │
│ │decay │ │ │ │ refines ┌─▼─┐│
│ ▼ ▼ ▼ │ ┌─▼─┐ │ C ││
│ weight decreases │ │ C │──part_of──>└───┘│
│ over time unless │ └───┘ │
│ accessed/critical │ Concepts + Relations │
├──────────────────────┴─────────────────────────┤
│ SQLite + FTS5 + sqlite-vec │
│ Hybrid search: BM25 (30%) + cosine (70%) │
└─────────────────────────────────────────────────┘
Zwei Gedächtnismodelle:
- Memories — Speichern und Abrufen mit zeitlichem Verfall nach Wichtigkeit. Kritische Erinnerungen verblassen nie, unwichtige verblassen natürlich. Nach Thema oder Schlüsselwort filtern.
- Memoirs — Permanente Wissensgraphen. Konzepte verknüpft durch typisierte Relationen (
depends_on,contradicts,superseded_by, ...). Nach Label filtern. - Feedback — Korrekturen aufzeichnen, wenn KI-Vorhersagen falsch sind. Vergangene Fehler durchsuchen, bevor neue Vorhersagen gemacht werden. Geschlossener Lernkreislauf.
# Homebrew (macOS / Linux)
brew tap rtk-ai/tap && brew install icm
# Schnellinstallation
curl -fsSL https://raw.githubusercontent.com/rtk-ai/icm/main/install.sh | sh
# Aus Quellcode
cargo install --path crates/icm-cli# Alle unterstützten Tools automatisch erkennen und konfigurieren
icm initKonfiguriert 17 Tools mit einem einzigen Befehl (vollständige Integrationsanleitung):
| Tool | MCP | Hooks | CLI | Skills |
|---|---|---|---|---|
| Claude Code | ~/.claude.json |
5 Hooks | CLAUDE.md |
/recall /remember |
| Claude Desktop | JSON | — | — | — |
| Gemini CLI | ~/.gemini/settings.json |
5 Hooks | GEMINI.md |
— |
| Codex CLI | ~/.codex/config.toml |
4 Hooks | AGENTS.md |
— |
| Copilot CLI | ~/.copilot/mcp-config.json |
4 Hooks | .github/copilot-instructions.md |
— |
| Cursor | ~/.cursor/mcp.json |
— | — | .mdc-Regel |
| Windsurf | JSON | — | .windsurfrules |
— |
| VS Code | ~/Library/.../Code/User/mcp.json |
— | — | — |
| Amp | JSON | — | — | /icm-recall /icm-remember |
| Amazon Q | JSON | — | — | — |
| Cline | VS Code globalStorage | — | — | — |
| Roo Code | VS Code globalStorage | — | — | .md-Regel |
| Kilo Code | VS Code globalStorage | — | — | — |
| Zed | ~/.zed/settings.json |
— | — | — |
| OpenCode | JSON | TS-Plugin | — | — |
| Continue.dev | ~/.continue/config.yaml |
— | — | — |
| Aider | — | — | .aider.conventions.md |
— |
Oder manuell:
# Claude Code
claude mcp add icm -- icm serve
# Kompaktmodus (kürzere Antworten, spart Tokens)
claude mcp add icm -- icm serve --compact
# Beliebiger MCP-Client: command = "icm", args = ["serve"]icm init --mode skillInstalliert Slash-Befehle und Regeln für Claude Code (/recall, /remember), Cursor (.mdc-Regel), Roo Code (.md-Regel) und Amp (/icm-recall, /icm-remember).
icm init --mode hookInstalliert Auto-Extraktions- und Auto-Abruf-Hooks für alle unterstützten Tools:
| Tool | SessionStart | PreTool | PostTool | Compact | PromptRecall | Config |
|---|---|---|---|---|---|---|
| Claude Code | icm hook start |
icm hook pre |
icm hook post |
icm hook compact |
icm hook prompt |
~/.claude/settings.json |
| Gemini CLI | icm hook start |
icm hook pre |
icm hook post |
icm hook compact |
icm hook prompt |
~/.gemini/settings.json |
| Codex CLI | icm hook start |
icm hook pre |
icm hook post |
— | icm hook prompt |
~/.codex/hooks.json |
| Copilot CLI | icm hook start |
icm hook pre |
icm hook post |
— | icm hook prompt |
.github/hooks/icm.json |
| OpenCode | session start | — | tool extract | compaction | — | ~/.config/opencode/plugins/icm.ts |
Was jeder Hook macht:
| Hook | Funktion |
|---|---|
icm hook start |
Injiziert ein Startpaket mit kritischen/wichtigen Erinnerungen bei Sitzungsbeginn (~500 Tokens) |
icm hook pre |
icm CLI-Befehle automatisch erlauben (keine Berechtigungsabfrage) |
icm hook post |
Fakten aus Tool-Ausgaben alle N Aufrufe extrahieren (Auto-Extraktion) |
icm hook compact |
Erinnerungen aus Transkript vor der Kontextkomprimierung extrahieren |
icm hook prompt |
Abgerufenen Kontext am Anfang jeder Benutzereingabe einfügen |
ICM kann über die CLI (icm-Befehle) oder den MCP-Server (icm serve) verwendet werden. Beide greifen auf dieselbe Datenbank zu.
| CLI | MCP | |
|---|---|---|
| Latenz | ~30ms (direkte Binärdatei) | ~50ms (JSON-RPC stdio) |
| Token-Kosten | 0 (hook-basiert, unsichtbar) | ~20-50 Tokens/Aufruf (Tool-Schema) |
| Einrichtung | icm init --mode hook |
icm init --mode mcp |
| Kompatibel mit | Claude Code, Gemini, Codex, Copilot, OpenCode (über Hooks) | Allen 17 MCP-kompatiblen Tools |
| Auto-Extraktion | Ja (Hooks lösen icm extract aus) |
Ja (MCP-Tools rufen store auf) |
| Geeignet für | Power-User, Token-Einsparung | Universelle Kompatibilität |
# Speichern
icm store -t "my-project" -c "Use PostgreSQL for the main DB" -i high -k "db,postgres"
# Abrufen
icm recall "database choice"
icm recall "auth setup" --topic "my-project" --limit 10
icm recall "architecture" --keyword "postgres"
# Verwalten
icm forget <memory-id>
icm consolidate --topic "my-project"
icm topics
icm stats
# Fakten aus Text extrahieren (regelbasiert, keine LLM-Kosten)
echo "The parser uses Pratt algorithm" | icm extract -p my-project# Memoir erstellen
icm memoir create -n "system-architecture" -d "System design decisions"
# Konzepte mit Labels hinzufügen
icm memoir add-concept -m "system-architecture" -n "auth-service" \
-d "Handles JWT tokens and OAuth2 flows" -l "domain:auth,type:service"
# Konzepte verknüpfen
icm memoir link -m "system-architecture" --from "api-gateway" --to "auth-service" -r depends-on
# Mit Label-Filter suchen
icm memoir search -m "system-architecture" "authentication"
icm memoir search -m "system-architecture" "service" --label "domain:auth"
# Nachbarschaft inspizieren
icm memoir inspect -m "system-architecture" "auth-service" -D 2
# Graphen exportieren (Formate: json, dot, ascii, ai)
icm memoir export -m "system-architecture" -f ascii # Boxzeichnungen mit Konfidenzbalkenz
icm memoir export -m "system-architecture" -f dot # Graphviz DOT (Farbe = Konfidenzgrad)
icm memoir export -m "system-architecture" -f ai # Markdown optimiert für LLM-Kontext
icm memoir export -m "system-architecture" -f json # Strukturiertes JSON mit allen Metadaten
# SVG-Visualisierung erzeugen
icm memoir export -m "system-architecture" -f dot | dot -Tsvg > graph.svg| Tool | Beschreibung |
|---|---|
icm_memory_store |
Speichern mit Auto-Deduplizierung (>85% Ähnlichkeit → Aktualisierung statt Duplikat) |
icm_memory_recall |
Suche nach Abfrage, Filter nach Thema und/oder Schlüsselwort |
icm_memory_update |
Erinnerung direkt bearbeiten (Inhalt, Wichtigkeit, Schlüsselwörter) |
icm_memory_forget |
Erinnerung anhand ID löschen |
icm_memory_consolidate |
Alle Erinnerungen eines Themas zu einer Zusammenfassung zusammenführen |
icm_memory_list_topics |
Alle Themen mit Anzahl auflisten |
icm_memory_stats |
Globale Gedächtnisstatistiken |
icm_memory_health |
Hygiene-Prüfung pro Thema (Veralterung, Konsolidierungsbedarf) |
icm_memory_embed_all |
Fehlende Embeddings für die Vektorsuche nachträglich erzeugen |
| Tool | Beschreibung |
|---|---|
icm_memoir_create |
Neues Memoir erstellen (Wissenscontainer) |
icm_memoir_list |
Alle Memoirs auflisten |
icm_memoir_show |
Memoir-Details und alle Konzepte anzeigen |
icm_memoir_add_concept |
Konzept mit Labels hinzufügen |
icm_memoir_refine |
Definition eines Konzepts aktualisieren |
icm_memoir_search |
Volltextsuche, optional nach Label gefiltert |
icm_memoir_search_all |
Über alle Memoirs hinweg suchen |
icm_memoir_link |
Typisierte Relation zwischen Konzepten erstellen |
icm_memoir_inspect |
Konzept und Graph-Nachbarschaft inspizieren (BFS) |
icm_memoir_export |
Graphen exportieren (json, dot, ascii, ai) mit Konfidenzgraden |
| Tool | Beschreibung |
|---|---|
icm_feedback_record |
Korrektur aufzeichnen, wenn eine KI-Vorhersage falsch war |
icm_feedback_search |
Vergangene Korrekturen durchsuchen, um künftige Vorhersagen zu verbessern |
icm_feedback_stats |
Feedback-Statistiken: Gesamtanzahl, Aufschlüsselung nach Thema, am häufigsten angewandt |
part_of · depends_on · related_to · contradicts · refines · alternative_to · caused_by · instance_of · superseded_by
Das episodische Gedächtnis (Topics) erfasst Entscheidungen, Fehler und Präferenzen. Jede Erinnerung hat ein Gewicht, das im Laufe der Zeit je nach Wichtigkeit abnimmt:
| Wichtigkeit | Verfall | Bereinigung | Verhalten |
|---|---|---|---|
critical |
keiner | nie | Wird nie vergessen, nie bereinigt |
high |
langsam (0,5× Rate) | nie | Verblasst langsam, wird nie automatisch gelöscht |
medium |
normal | ja | Standardverfall, bereinigt wenn Gewicht < Schwellenwert |
low |
schnell (2× Rate) | ja | Wird schnell vergessen |
Der Verfall ist zugriffsbewusst: häufig abgerufene Erinnerungen verblassen langsamer (decay / (1 + access_count × 0.1)). Wird automatisch beim Abrufen angewendet (wenn >24h seit dem letzten Verfall).
Gedächtnis-Hygiene ist eingebaut:
- Auto-Deduplizierung: Wird Inhalt mit >85% Ähnlichkeit zu einer bestehenden Erinnerung im selben Thema gespeichert, wird diese aktualisiert statt ein Duplikat zu erstellen
- Konsolidierungshinweise: Überschreitet ein Thema 7 Einträge, warnt
icm_memory_storeden Aufrufer zur Konsolidierung - Hygiene-Prüfung:
icm_memory_healthmeldet Eintragsanzahl, durchschnittliches Gewicht, veraltete Einträge und Konsolidierungsbedarf pro Thema - Kein stiller Datenverlust: Kritische und hochwertige Erinnerungen werden nie automatisch bereinigt
Das semantische Gedächtnis (Memoirs) erfasst strukturiertes Wissen als Graphen. Konzepte sind permanent — sie werden verfeinert, nicht veraltet. Verwenden Sie superseded_by, um veraltete Fakten zu kennzeichnen, anstatt sie zu löschen.
Mit aktivierten Embeddings verwendet ICM Hybridsuche:
- FTS5 BM25 (30%) — Volltextstichwortsuche
- Kosinus-Ähnlichkeit (70%) — Semantische Vektorsuche via sqlite-vec
Standardmodell: intfloat/multilingual-e5-base (768d, 100+ Sprachen). Konfigurierbar in der Konfigurationsdatei:
[embeddings]
# enabled = false # Vollständig deaktivieren (kein Modell-Download)
model = "intfloat/multilingual-e5-base" # 768d, mehrsprachig (Standard)
# model = "intfloat/multilingual-e5-small" # 384d, mehrsprachig (leichter)
# model = "intfloat/multilingual-e5-large" # 1024d, mehrsprachig (beste Genauigkeit)
# model = "Xenova/bge-small-en-v1.5" # 384d, nur Englisch (schnellstes)
# model = "jinaai/jina-embeddings-v2-base-code" # 768d, code-optimiertUm den Embedding-Modell-Download vollständig zu überspringen, verwenden Sie eine der folgenden Optionen:
icm --no-embeddings serve # CLI-Flag
ICM_NO_EMBEDDINGS=1 icm serve # UmgebungsvariableOder setzen Sie enabled = false in Ihrer Konfigurationsdatei. ICM fällt auf FTS5-Schlüsselwortsuche zurück (funktioniert weiterhin, nur ohne semantisches Matching).
Durch Ändern des Modells wird der Vektorindex automatisch neu erstellt (vorhandene Embeddings werden gelöscht und können mit icm_memory_embed_all neu erzeugt werden).
Einzelne SQLite-Datei. Keine externen Dienste, keine Netzwerkabhängigkeit.
~/Library/Application Support/dev.icm.icm/memories.db # macOS
~/.local/share/dev.icm.icm/memories.db # Linux
C:\Users\<user>\AppData\Local\icm\icm\data\memories.db # Windows
icm config # Aktive Konfiguration anzeigenSpeicherort der Konfigurationsdatei (plattformspezifisch oder $ICM_CONFIG):
~/Library/Application Support/dev.icm.icm/config.toml # macOS
~/.config/icm/config.toml # Linux
C:\Users\<user>\AppData\Roaming\icm\icm\config\config.toml # Windows
Alle Optionen finden Sie unter config/default.toml.
ICM extrahiert Erinnerungen automatisch über drei Ebenen:
Ebene 0: Pattern-Hooks Ebene 1: PreCompact Ebene 2: UserPromptSubmit
(keine LLM-Kosten) (keine LLM-Kosten) (keine LLM-Kosten)
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ PostToolUse hook │ │ PreCompact hook │ │ UserPromptSubmit │
│ │ │ │ │ │
│ • Bash-Fehler │ │ Kontext wird │ │ Nutzer sendet │
│ • git commits │ │ komprimiert → │ │ Eingabe │
│ • Konfig-Änder. │ │ Erinnerungen aus │ │ → icm recall │
│ • Entscheidungen │ │ Transkript │ │ → Kontext einfügen│
│ • Präferenzen │ │ extrahieren bevor │ │ │
│ • Erkenntnisse │ │ sie verloren gehen│ │ Agent startet mit │
│ • Einschränkungen │ │ │ │ relevanten Erinne-│
│ │ │ Gleiche Muster + │ │ rungen geladen │
│ Regelbasiert, │ │ --store-raw Fallbk│ │ │
│ kein LLM │ │ │ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘
| Ebene | Status | LLM-Kosten | Hook-Befehl | Beschreibung |
|---|---|---|---|---|
| Ebene 0 | Implementiert | 0 | icm hook post |
Regelbasierte Schlüsselwortextraktion aus Tool-Ausgaben |
| Ebene 1 | Implementiert | 0 | icm hook compact |
Extraktion aus Transkript vor der Kontextkomprimierung |
| Ebene 2 | Implementiert | 0 | icm hook prompt |
Erinnerungen bei jeder Nutzereingabe einfügen |
Alle 3 Ebenen werden automatisch durch icm init --mode hook installiert.
| System | Methode | LLM-Kosten | Latenz | Erfasst Komprimierung? |
|---|---|---|---|---|
| ICM | 3-Ebenen-Extraktion | 0 bis ~500 Tok/Sitzung | 0ms | Ja (PreCompact) |
| Mem0 | 2 LLM-Aufrufe/Nachricht | ~2k Tok/Nachricht | 200-2000ms | Nein |
| claude-mem | PostToolUse + async | ~1-5k Tok/Sitzung | 8ms Hook | Nein |
| MemGPT/Letta | Agent selbstverwaltend | 0 marginal | 0ms | Nein |
| DiffMem | Git-basierte Diffs | 0 | 0ms | Nein |
ICM Benchmark (1000 memories, 384d embeddings)
──────────────────────────────────────────────────────────
Store (no embeddings) 1000 ops 34.2 ms 34.2 µs/op
Store (with embeddings) 1000 ops 51.6 ms 51.6 µs/op
FTS5 search 100 ops 4.7 ms 46.6 µs/op
Vector search (KNN) 100 ops 59.0 ms 590.0 µs/op
Hybrid search 100 ops 95.1 ms 951.1 µs/op
Decay (batch) 1 ops 5.8 ms 5.8 ms/op
──────────────────────────────────────────────────────────
Apple M1 Pro, In-Memory-SQLite, single-threaded. icm bench --count 1000
Mehrere Sitzungen mit einem echten Rust-Projekt (12 Dateien, ~550 Zeilen). Ab Sitzung 2 zeigen sich die größten Gewinne, da ICM abruft statt Dateien erneut zu lesen.
ICM Agent Benchmark (10 sessions, model: haiku, 3 runs averaged)
══════════════════════════════════════════════════════════════════
Without ICM With ICM Delta
Session 2 (recall)
Turns 5.7 4.0 -29%
Context (input) 99.9k 67.5k -32%
Cost $0.0298 $0.0249 -17%
Session 3 (recall)
Turns 3.3 2.0 -40%
Context (input) 74.7k 41.6k -44%
Cost $0.0249 $0.0194 -22%
══════════════════════════════════════════════════════════════════
icm bench-agent --sessions 10 --model haiku
Der Agent ruft spezifische Fakten aus einem dichten technischen Dokument über mehrere Sitzungen ab. Sitzung 1 liest und memoriert; Sitzung 2+ beantwortet 10 Sachfragen ohne den Quellentext.
ICM Recall Benchmark (10 questions, model: haiku, 5 runs averaged)
══════════════════════════════════════════════════════════════════════
No ICM With ICM
──────────────────────────────────────────────────────────────────────
Average score 5% 68%
Questions passed 0/10 5/10
══════════════════════════════════════════════════════════════════════
icm bench-recall --model haiku
Gleicher Test mit lokalen Modellen — reine Kontextinjektion, keine Tool-Nutzung erforderlich.
Model Params No ICM With ICM Delta
─────────────────────────────────────────────────────────
qwen2.5:14b 14B 4% 97% +93%
mistral:7b 7B 4% 93% +89%
llama3.1:8b 8B 4% 93% +89%
qwen2.5:7b 7B 4% 90% +86%
phi4:14b 14B 6% 79% +73%
llama3.2:3b 3B 0% 76% +76%
gemma2:9b 9B 4% 76% +72%
qwen2.5:3b 3B 2% 58% +56%
─────────────────────────────────────────────────────────
scripts/bench-ollama.sh qwen2.5:14b
Alle Benchmarks verwenden echte API-Aufrufe — keine Mocks, keine simulierten Antworten, keine gecachten Ergebnisse.
- Agenten-Benchmark: Erstellt ein echtes Rust-Projekt in einem temporären Verzeichnis. Führt N Sitzungen mit
claude -p --output-format jsonaus. Ohne ICM: leere MCP-Konfiguration. Mit ICM: echter MCP-Server + Auto-Extraktion + Kontextinjektion. - Wissenserhalt: Verwendet ein fiktives technisches Dokument (das „Meridian Protocol"). Bewertet Antworten durch Schlüsselwortabgleich mit erwarteten Fakten. 120s Zeitlimit pro Aufruf.
- Isolation: Jeder Lauf verwendet ein eigenes temporäres Verzeichnis und eine frische SQLite-Datenbank. Keine Sitzungspersistenz.
Alle 17 Tools teilen dieselbe SQLite-Datenbank. Eine von Claude gespeicherte Erinnerung ist sofort für Gemini, Codex, Copilot, Cursor und jedes andere Tool verfügbar.
ICM Multi-Agent Efficiency Benchmark (10 seeded facts, 5 CLI agents)
╔══════════════╦═══════╦══════════╦════════╦═══════════╦═══════╗
║ Agent ║ Facts ║ Accuracy ║ Detail ║ Latency ║ Score ║
╠══════════════╬═══════╬══════════╬════════╬═══════════╬═══════╣
║ Claude Code ║ 10/10 ║ 100% ║ 5/5 ║ ~15s ║ 99 ║
║ Gemini CLI ║ 10/10 ║ 100% ║ 5/5 ║ ~33s ║ 94 ║
║ Copilot CLI ║ 10/10 ║ 100% ║ 5/5 ║ ~10s ║ 100 ║
║ Cursor Agent ║ 10/10 ║ 100% ║ 5/5 ║ ~16s ║ 99 ║
║ Aider ║ 10/10 ║ 100% ║ 5/5 ║ ~5s ║ 100 ║
╠══════════════╬═══════╬══════════╬════════╬═══════════╬═══════╣
║ AVERAGE ║ ║ ║ ║ ║ 98 ║
╚══════════════╩═══════╩══════════╩════════╩═══════════╩═══════╝
Score = 60% Abruf-Genauigkeit + 30% Faktendetail + 10% Geschwindigkeit. 98% Multi-Agenten-Effizienz.
| Fähigkeit | ICM | Mem0 | Engram | AgentMemory |
|---|---|---|---|---|
| Tool-Unterstützung | 17 | Nur SDK | ~6-8 | ~10 |
| Ein-Befehl-Einrichtung | icm init |
manuelles SDK | manuell | manuell |
| Hooks (Auto-Abruf beim Start) | 5 Tools | keine | über MCP | 1 Tool |
| Hybridsuche (FTS5 + Vektor) | 30/70 gewichtet | nur Vektor | nur FTS5 | FTS5+Vektor |
| Mehrsprachige Embeddings | 100+ Sprachen (768d) | abhängig | keine | Englisch 384d |
| Wissensgraph | Memoir-System | keiner | keiner | keiner |
| Zeitlicher Verfall + Konsolidierung | zugriffsbewusst | keiner | einfach | einfach |
| TUI-Dashboard | icm dashboard |
keines | ja | Web-Viewer |
| Auto-Extraktion aus Tool-Ausgaben | 3 Ebenen, kein LLM | keine | keine | keine |
| Feedback-/Korrekturschleife | icm_feedback_* |
keine | keine | keine |
| Laufzeit | Einzelne Rust-Binärdatei | Python | Go | Node.js |
| Local-first, keine Abhängigkeiten | SQLite-Datei | cloud-first | SQLite | SQLite |
| Multi-Agenten-Abrufgenauigkeit | 98% | N/A | N/A | 95,2% |
| Dokument | Beschreibung |
|---|---|
| Integrationsanleitung | Einrichtung für alle 17 Tools: Claude Code, Copilot, Cursor, Windsurf, Zed, Amp, usw. |
| Technische Architektur | Crate-Struktur, Such-Pipeline, Verfallsmodell, sqlite-vec-Integration, Tests |
| Benutzerhandbuch | Installation, Themenorganisation, Konsolidierung, Extraktion, Fehlerbehebung |
| Produktübersicht | Anwendungsfälle, Benchmarks, Vergleich mit Alternativen |
Source-Available — Kostenlos für Einzelpersonen und Teams mit bis zu 20 Personen. Für größere Organisationen ist eine Unternehmenslizenz erforderlich. Kontakt: contact@rtk-ai.app
