agentmemory: μόνιμη μνήμη για AI agents κώδικα

Ο agent κώδικα σας θυμάται τα πάντα. Τέλος οι επαναλαμβανόμενες εξηγήσεις. Βασισμένο στο iii engine
Μόνιμη μνήμη για τα Claude Code, GitHub Copilot CLI, Cursor, Gemini CLI, Codex CLI, Hermes, OpenClaw, pi, OpenCode, και κάθε client MCP.

🇬🇧 English • 🇨🇳 简体中文 • 🇹🇼 繁體中文 • 🇯🇵 日本語 • 🇰🇷 한국어 • 🇵🇹 Português • 🇧🇷 Português (Brasil) • 🇪🇸 Español • 🇩🇪 Deutsch • 🇫🇷 Français • 🇮🇹 Italiano • 🇳🇱 Nederlands • 🇵🇱 Polski • 🇨🇿 Čeština • 🇷🇴 Română • 🇭🇺 Magyar • 🇬🇷 Ελληνικά • 🇸🇪 Svenska • 🇩🇰 Dansk • 🇳🇴 Norsk • 🇫🇮 Suomi • 🇷🇺 Русский • 🇺🇦 Українська • 🇹🇷 Türkçe • 🇮🇱 עברית • 🇸🇦 العربية • 🇮🇳 हिन्दी • 🇧🇩 বাংলা • 🇵🇰 اردو • 🇹🇭 ไทย • 🇻🇳 Tiếng Việt • 🇮🇩 Bahasa Indonesia • 🇵🇭 Tagalog

rohitg00/agentmemory | Trendshift

Σημείωμα σχεδίασης: 1.6k stars / 230 forks στο gist

Το gist επεκτείνει το πρότυπο LLM Wiki του Karpathy με βαθμολόγηση εμπιστοσύνης, κύκλο ζωής, γράφους γνώσης και υβριδική αναζήτηση: το agentmemory είναι η υλοποίηση.

npm version CI License Stars

95.2% ανάκληση R@5 92% λιγότερα tokens 54 εργαλεία MCP 12 αυτόματα hooks 0 εξωτερικές βάσεις δεδομένων 2,500+ επιτυχημένες δοκιμές

επίδειξη agentmemory

Εγκατάσταση • Γρήγορη Εκκίνηση • Benchmarks • Έναντι Ανταγωνιστών • Agents • Πώς Λειτουργεί • MCP • Viewer • Powered by iii • Ρυθμίσεις • API

--- ## Εγκατάσταση Απαιτήσεις: - Node.js 20 ή νεότερη έκδοση με npm και npx (`node -v`, `npm -v`, και `npx -v`). - Η αυτόματη εγκατάσταση του iii-engine σε macOS/Linux απαιτεί επίσης `curl`, ένα POSIX `sh`, και `tar`. Ελάχιστες εικόνες όπως το `node:20-slim` μπορεί να μην τα περιλαμβάνουν. - Το native Windows απαιτεί την καθορισμένη έκδοση iii-engine v0.22.1 `iii.exe` να εγκατασταθεί χειροκίνητα. Τα WSL2 ή το Docker Desktop είναι οι άλλες υποστηριζόμενες διαδρομές. Η κανονική εντολή εγκατάστασης από την αρχή: ```bash npx -y @agentmemory/agentmemory@latest ``` Η πρώτη εκτέλεση είναι μια διαδραστική ρύθμιση: επιλέγετε τους agents που θα συνδέσετε (Claude Code, Cursor, Codex, Gemini CLI, OpenCode, ...), επιλέγετε έναν πάροχο LLM ή παραμένετε χωρίς κλειδί, και εκείνη δημιουργεί τις ρυθμίσεις, ξεκινά τον διακομιστή μνήμης και τον καθορισμένο iii engine του, και προσφέρεται να εγκατασταθεί καθολικά ώστε η απλή εντολή `agentmemory` να λειτουργεί παντού στη συνέχεια. Το `-y` αποδέχεται την προτροπή πακέτου του npx και το `@latest` αποφεύγει μια παλιωμένη έκδοση από την cache. Ένας πάροχος κάνει διαθέσιμες τις λειτουργίες LLM, αλλά η συμπίεση παρατηρήσεων γραμμένη από LLM ξεκινά μόνο όταν έχει ρυθμιστεί επίσης το `AGENTMEMORY_AUTO_COMPRESS=true`. Η λειτουργία χωρίς κλειδί απενεργοποιεί τα vector embeddings. Το `memory_recall` (η διαδρομή `mem::search`) χρησιμοποιεί BM25, ενώ το `memory_smart_search` μπορεί επίσης να συγχωνεύσει δομικές αντιστοιχίσεις γράφου όταν υπάρχουν ήδη δεδομένα γράφου. Για δωρεάν σημασιολογική ανάκληση στη συσκευή, ρυθμίστε το `EMBEDDING_PROVIDER=local` στο `~/.agentmemory/.env` και κάντε επανεκκίνηση. Το πρώτο αίτημα embedding κατεβάζει το `Xenova/all-MiniLM-L6-v2`· η εξαγωγή συμπερασμάτων εκτελείται τοπικά μετά από αυτήν την αρχική λήψη μοντέλου. Το τοπικό runtime χρησιμοποιεί τέσσερις θύρες: `3111` για REST/MCP HTTP, `3112` για τα iii streams, `3113` για το viewer, και `49134` για το WebSocket του iii worker. Η μόνιμη κατάσταση iii βρίσκεται στο `~/Library/Application Support/agentmemory` σε macOS, στο `$XDG_DATA_HOME/agentmemory` ή `~/.local/share/agentmemory` σε Linux, και στο `%APPDATA%\agentmemory` σε Windows. Χρησιμοποιήστε `--data-dir ` ή `AGENTMEMORY_DATA_DIR` για να το παρακάμψετε, και επαναχρησιμοποιήστε την ίδια τιμή σε κάθε επανεκκίνηση. Για λόγους συμβατότητας προς τα πίσω, ένα υπάρχον `./data/state_store.db` ή `./data/iii-config.yaml` υπερισχύει της προεπιλογής της πλατφόρμας για το instance 0· μια ρητή σημαία ή παράκαμψη περιβάλλοντος εξακολουθεί να υπερισχύει. Στη συνέχεια, επιβεβαιώστε ότι η ανάκληση λειτουργεί και δώστε στον agent σας τα skills του: ```bash npx -y @agentmemory/agentmemory@latest demo # seed sample sessions + exercise recall npx skills add rohitg00/agentmemory -y # 17 native skills so your agent knows when to reach for memory ``` Οι αναζητήσεις με λέξεις-κλειδιά θα πρέπει να βρίσκουν αποτελέσματα στην προεπιλεγμένη λειτουργία χωρίς κλειδί μέσω BM25. Το ερώτημα `database performance optimization` του demo είναι σκόπιμα σημασιολογικό και μπορεί να επιστρέψει μηδέν αποτελέσματα μέχρι να ρυθμιστεί ένας πάροχος embedding. Προτιμάτε να αφήσετε έναν agent κώδικα να κάνει όλη τη δουλειά; Δώστε του μία οδηγία: > Ανακτήστε και ακολουθήστε τις οδηγίες στο: https://raw.githubusercontent.com/rohitg00/agentmemory/main/INSTALL_FOR_AGENTS.md Συνδέστε περισσότερους agents όποτε θέλετε με `agentmemory connect ` — 20 adapters αναφέρονται στο [Λειτουργεί με κάθε agent](#works-with-every-agent). Πλήρης αναφορά εντολών στο [Γρήγορη Εκκίνηση](#quick-start).
Windows Η πιο γρήγορη διαδρομή είναι το WSL2. Η native ρύθμιση του engine σε Windows απαιτεί τη λήψη του καθορισμένου ZIP v0.22.1 και την χειροκίνητη εξαγωγή του `iii.exe`· το CLI δεν το εξάγει αυτόματα. Υποστηρίζεται επίσης το Docker Desktop. Δείτε τις [σημειώσεις Windows](#windows) για τα βήματα.
Καθολική εγκατάσταση / EACCES ```bash npm install -g @agentmemory/agentmemory@latest ``` Η παραπάνω εντολή npx παραμένει η κανονική διαδρομή εγκατάστασης από την αρχή και αποφεύγει προβλήματα δικαιωμάτων global-prefix.
Το npx εξυπηρετεί μια παλιά έκδοση Το npx αποθηκεύει στην cache ανά έκδοση. Επιβάλετε τη τελευταία με `npx -y @agentmemory/agentmemory@latest`, ή καθαρίστε την cache μία φορά με `rm -rf ~/.npm/_npx` (macOS/Linux· σε Windows διαγράψτε το `%LOCALAPPDATA%\npm-cache\_npx`).
Έχετε ήδη τον δικό σας iii engine σε εκτέλεση Το agentmemory καθορίζει τον iii-engine στην v0.22.1 και δεν θα συνδεθεί σε διαφορετική έκδοση (ο worker δεν μπορεί να μιλήσει το πρωτόκολλο ενός άλλου engine). Σταματήστε τον άλλο engine, και μετά εκτελέστε `npx -y @agentmemory/agentmemory@latest`. Εγκαθιστά και εκτελεί την καθορισμένη v0.22.1 στο `~/.agentmemory/bin`, αφήνοντας τον δικό σας `iii` ανεπηρέαστο.
---

Λειτουργεί με κάθε agent

Το agentmemory λειτουργεί με κάθε agent που υποστηρίζει hooks, MCP, ή REST API. Όλοι οι agents μοιράζονται τον ίδιο διακομιστή μνήμης.
Claude Code
Claude Code
εγγενές plugin + 12 hooks + MCP
Codex CLI
Codex CLI
εγγενές plugin + 6 hooks + MCP
GitHub Copilot CLI
GitHub Copilot CLI
MCP + hooks/skills του plugin
Cursor
Cursor
εγγενές plugin + 7 hooks + MCP
OpenCode
OpenCode
plugin καταγραφής + MCP
Devin
Devin
6 hooks + skills + MCP
OpenClaw
OpenClaw
εγγενές plugin + MCP
Hermes
Hermes
εγγενές plugin + MCP
pi
pi
εγγενές plugin + MCP
OpenHuman
OpenHuman
εγγενές backend Memory trait
Gemini CLI
Gemini CLI
διακομιστής MCP
Antigravity
Antigravity
MCP + hooks
Claude Desktop
Claude Desktop
διακομιστής MCP
Warp
Warp
connect + MCP + skills
Zed
Zed
διακομιστής MCP
Cline
Cline
διακομιστής MCP
Continue
Continue
διακομιστής MCP
Droid
Droid
διακομιστής MCP
Kiro
Kiro
διακομιστής MCP
Qwen Code
Qwen Code
διακομιστής MCP
DeepSeek Harness
DeepSeek Harness
διακομιστής MCP
Roo Code
Roo Code
διακομιστής MCP
Kilo Code
Kilo Code
διακομιστής MCP
Goose
Goose
διακομιστής MCP
Aider
Aider
REST API

Λειτουργεί με κάθε agent που μιλά MCP ή HTTP. Ένας διακομιστής, μνήμες κοινές σε όλους.

--- Εξηγείτε την ίδια αρχιτεκτονική σε κάθε συνεδρία. Ανακαλύπτετε ξανά τα ίδια bugs. Ξαναδιδάσκετε τις ίδιες προτιμήσεις. Η ενσωματωμένη μνήμη (CLAUDE.md, .cursorrules) φτάνει στο όριο των 200 γραμμών και μπαγιατεύει. Το agentmemory το διορθώνει αυτό. Καταγράφει σιωπηλά τι κάνει ο agent σας, το συμπιέζει σε αναζητήσιμη μνήμη, και εισάγει το σωστό πλαίσιο όταν ξεκινά η επόμενη συνεδρία. Μία εντολή. Λειτουργεί σε όλους τους agents. **Τι αλλάζει:** Στη συνεδρία 1 ρυθμίζετε JWT auth. Στη συνεδρία 2 ζητάτε rate limiting. Ο agent ήδη γνωρίζει ότι το auth σας χρησιμοποιεί jose middleware στο `src/middleware/auth.ts`, ότι τα tests σας καλύπτουν την επικύρωση token, και ότι επιλέξατε jose αντί για jsonwebtoken για συμβατότητα με Edge, χωρίς καμία επανάληψη εξηγήσεων και χωρίς copy-paste. ```bash npx -y @agentmemory/agentmemory@latest ``` Από προεπιλογή, το agentmemory αποθηκεύει την κατάσταση του iii-engine έξω από το αποθετήριο από το οποίο το ξεκινάτε: `~/Library/Application Support/agentmemory` σε macOS, `$XDG_DATA_HOME/agentmemory` ή `~/.local/share/agentmemory` σε Linux, και `%APPDATA%\agentmemory` σε Windows. Ένα υπάρχον παλιό `./data/state_store.db` ή `./data/iii-config.yaml` επαναχρησιμοποιείται για το instance 0 πριν από αυτή την προεπιλογή πλατφόρμας. Για να επιλέξετε μια τοποθεσία ρητά, περάστε `--data-dir ` ή ρυθμίστε `AGENTMEMORY_DATA_DIR`· κάθε ρητή ρύθμιση υπερισχύει της παλιάς ανακάλυψης: ```bash npx -y @agentmemory/agentmemory@latest --data-dir ~/.agentmemory-projects/main AGENTMEMORY_DATA_DIR=~/.agentmemory-projects/main npx -y @agentmemory/agentmemory@latest ``` Οι native και Docker εκκινήσεις χρησιμοποιούν τον ίδιο επιλυμένο κατάλογο host· το Docker τον κάνει bind-mount στο `/data`. Το `--instance 1` προσθέτει `instance-1` στον επιλυμένο κατάλογο και επιλέγει το ξεχωριστό προεπιλεγμένο quartet θυρών `3211/3212/3213/49234`. Τελευταίες σημειώσεις έκδοσης: [CHANGELOG.md](../CHANGELOG.md). ---

Benchmarks

### Ακρίβεια Ανάκλησης **coding-agent-life-v1** (εσωτερικό corpus, αναπαραγώγιμο σε sandbox) | Προσαρμογέας | P@5 | R@5 | Ποσοστό επιτυχίας Top-5 | Καθυστέρηση p50 | |---|---|---|---|---| | **agentmemory hybrid** | **0.240** | **1.000** | **15 / 15** | 14 ms | | grep βασικής αναφοράς | 0.227 | 0.967 | 15 / 15 | 0 ms | Ποσοστό επιτυχίας Top-5 100% στο **ανώτατο μαθηματικό όριο P@5** για αυτό το corpus (0.240, δείτε το scorecard). Το hybrid ανακτά κάθε gold συνεδρία· το grep χάνει 1 από τα 2 gold στο ερώτημα πολλαπλών συνεδριών με χρονική διάσταση. Η βελτίωση είναι σε **ανάκληση + χρονικότητα**, όχι σε συνολική ακρίβεια. Αυτό το benchmark είναι μικρό και με λίγα gold δεδομένα· το μεγαλύτερο LongMemEval-S παρακάτω διαφοροποιεί καλύτερα. Πλήρης ανάλυση ανά τύπο + σημείωση διόρθωσης: [`docs/benchmarks/2026-05-20-coding-agent-life-v1.md`](../docs/benchmarks/2026-05-20-coding-agent-life-v1.md). **LongMemEval-S** (ICLR 2025, 500 ερωτήσεις) | Σύστημα | R@5 | R@10 | MRR | |---|---|---|---| | **agentmemory** | **95.2%** | **98.6%** | **88.2%** | | Μόνο-BM25 (fallback) | 86.2% | 94.6% | 71.5% | ### Εξοικονόμηση Tokens | Προσέγγιση | Tokens/έτος | Κόστος/έτος | |---|---|---| | Επικόλληση πλήρους context | 19.5M+ | Αδύνατο (υπερβαίνει το παράθυρο) | | Σύνοψη από LLM | ~650K | ~$500 | | **agentmemory** | **~170K** | **~$10** | | agentmemory + τοπικά embeddings | ~170K | **$0** |
> Μοντέλο embedding: `all-MiniLM-L6-v2` (τοπικό, δωρεάν, χωρίς κλειδί API). Πλήρεις αναφορές: [`benchmark/LONGMEMEVAL.md`](../benchmark/LONGMEMEVAL.md), [`benchmark/QUALITY.md`](../benchmark/QUALITY.md), [`benchmark/SCALE.md`](../benchmark/SCALE.md). Σύγκριση με ανταγωνιστές: [`benchmark/COMPARISON.md`](../benchmark/COMPARISON.md), που καλύπτει το agentmemory έναντι των mem0, Letta, Khoj, supermemory, TencentDB Agent Memory, MemPalace, Zep/Graphiti, Cognee, Hippo. **Αναπαραγωγή τοπικά:** [`eval/README.md`](../eval/README.md), ένα harness με συνδέσιμους adapters για το LongMemEval `_s` (δημόσιο, 500 ερωτήσεις) + `coding-agent-life-v1` (εσωτερικό corpus 15 συνεδριών). Οι adapters grep / vector / agentmemory βαθμολογούνται παράλληλα, με έξοδο NDJSON, και τα δημοσιευμένα scorecards καταλήγουν στο [`docs/benchmarks/`](../docs/benchmarks/). **Συνεργάζεται με τα [codegraph](https://github.com/colbymchenry/codegraph), [Understand Anything](https://github.com/Lum1104/Understand-Anything), και [Graphify](https://github.com/safishamsi/graphify).** Ευρετηρίαση code-graph, pipelines κατασκευής πολλών agents, και ευρύτεροι γράφοι γνώσης σε docs / PDF / εικόνες / βίντεο. Το agentmemory θυμάται τη δουλειά· αυτά τα τρία projects αναδεικνύουν την υπόλοιπη context layer. Συνταγές + πίνακας δρομολόγησης ερωτημάτων: [`docs/recipes/pairings.md`](../docs/recipes/pairings.md). ---

Έναντι Ανταγωνιστών

agentmemory mem0 (63K ⭐) Letta / MemGPT (24K ⭐) Khoj (36K ⭐) supermemory (29K ⭐) TencentDB Agent Memory (22K ⭐) MemPalace (54K ⭐) oracleagentmemory Hippo Ενσωματωμένο (CLAUDE.md)
Τύπος Μηχανή μνήμης + διακομιστής MCP API επιπέδου μνήμης Πλήρες runtime agent Προσωπικό AI API μνήμης + εφαρμογή Κόμβος μνήμης ομάδας (proxy LLM) Vector μνήμη (OSS) Μηχανή μνήμης (Oracle DB) Σύστημα μνήμης Στατικό αρχείο
Ανάκληση R@5 95.2% 68.5% (LoCoMo) 83.2% (LoCoMo) N/A Αυτοαναφερόμενο PersonaMem 76% (αυτοαναφερόμενο) ~96.6% (αυτοαναφερόμενο) 94.4% (αυτοαναφερόμενο) N/A N/A (grep)
Αυτόματη καταγραφή 12 hooks (καμία χειροκίνητη προσπάθεια) Χειροκίνητες κλήσεις add() Αυτο-επεξεργασίες από τον agent Χειροκίνητο Εξαγωγή από την πλευρά του API Παρεμβολή proxy (αλλαγή base-URL) Χειροκίνητο Εξαγωγή API Χειροκίνητο Χειροκίνητη επεξεργασία
Αναζήτηση BM25 + Vector + Graph (συγχώνευση RRF) Vector + Graph Vector (αρχειοθέτηση) Σημασιολογική Vector + RAG 4 τύποι assets (Chat / Skill / Wiki / CodeGraph) Μόνο Vector Vector + σημασιολογική Σταθμισμένη βάσει decay Φορτώνει τα πάντα στο context
Πολλαπλών agents MCP + REST + leases + σήματα API (χωρίς συντονισμό) Μόνο εντός του runtime Letta Όχι Όχι Ρόλοι ομάδας + κοινά assets Όχι Μόνο εντός scope Κοινό μεταξύ πολλών agents Αρχεία ανά agent
Εξάρτηση από framework Καμία (οποιοδήποτε MCP client) Καμία Υψηλή (απαιτεί χρήση Letta) Αυτόνομο Καμία Το proxy μεσολαβεί σε κάθε κλήση μοντέλου Καμία Oracle Database Καμία Μορφή ανά agent
Εξωτερικές εξαρτήσεις Καμία (SQLite + iii-engine) Qdrant / pgvector Postgres + vector DB Πολλαπλές Διαχειριζόμενο cloud Docker stack (Core + Hub + Proxy) Αποθήκη vector Oracle AI Database Καμία Καμία
Κύκλος ζωής μνήμης Ενοποίηση 4 επιπέδων + decay + αυτόματη διαγραφή Παθητική εξαγωγή Διαχειρίζεται από τον agent Χειροκίνητο Αυτόματη διαγραφή Χειροκίνητη επισκόπηση· αυτόματη δρομολόγηση σε εξέλιξη Καμία Δεν αναφέρεται Decay + ενοποίηση Χειροκίνητο κλάδεμα
Απόδοση tokens ~1,900 tokens/συνεδρία ($10/έτος) Διαφέρει ανά ολοκλήρωση Βασική μνήμη εντός context Διαφέρει Τιμολόγηση cloud Δεν αναφέρεται Χωρίς προϋπολογισμό tokens Βασισμένο σε LLM (διαφέρει) Διαφέρει 22K+ tokens σε 240 παρατηρήσεις
Viewer σε πραγματικό χρόνο Ναι (θύρα 3113) Dashboard cloud Dashboard cloud Web UI Dashboard cloud Hub web UI Όχι Όχι Όχι Όχι
Αυτοφιλοξενούμενο (self-hosted) Ναι (προεπιλογή) Προαιρετικό Προαιρετικό Ναι Όχι (μόνο cloud) Ναι (Docker) Ναι Ναι (Oracle DB) Ναι Ναι
Σημείωση benchmark: μόνο το R@5 του agentmemory είναι δικό μας μετρημένο αποτέλεσμα (LongMemEval-S, αναπαραγώγιμο από το benchmark/COMPARISON.md). Τα στοιχεία των mem0 και Letta είναι οι δημοσιευμένες τιμές τους στο LoCoMo (διαφορετικό dataset)· τα στοιχεία των MemPalace, supermemory, TencentDB (PersonaMem), και oracleagentmemory είναι αυτοαναφερόμενοι ισχυρισμοί προμηθευτών που δεν έχουμε αναπαράγει ανεξάρτητα (η εκτέλεση του oracleagentmemory χρησιμοποίησε GPT-5.5 έναντι μιας Oracle AI Database). Παρουσιάζονται δίπλα-δίπλα μόνο για κατά προσέγγιση σύγκριση, όχι ως απευθείας αντιπαράθεση σε ταυτόσημα δεδομένα. Οι μετρήσεις αστεριών είναι κατά προσέγγιση και μεταβάλλονται με τον χρόνο. **Νεότεροι παίκτες** που αξίζει να γνωρίζετε, συγκρίνονται αναλυτικά στο [`benchmark/COMPARISON.md`](../benchmark/COMPARISON.md): | Σύστημα | ⭐ | Προσέγγιση | |--------|---|-------| | Zep / Graphiti | 30K | Χρονικός γράφος γνώσης· τα ισχυρότερα δημοσιευμένα αποτελέσματα σε χρονικά ερωτήματα (LongMemEval 63.8%), αλλά ο γράφος χτίζεται ασύγχρονα, οπότε τα νέα δεδομένα μπορεί να καθυστερούν | | Cognee | 30K | Εισαγωγή εγγράφων σε γράφο γνώσης, μόνο σε Python, σχεδιασμένο για δομημένη εξαγωγή οντοτήτων παρά για καταγραφή συνεδριών | Κανένα από αυτά δεν κάνει αυτόματη καταγραφή από hooks agent κώδικα, δεν διαθέτει local-first viewer, και δεν λειτουργεί χωρίς κλειδί — τον συνδυασμό γύρω από τον οποίο είναι χτισμένο το agentmemory. ---

Γρήγορη Εκκίνηση

Συμβατότητα: αυτή η έκδοση στοχεύει το `iii-sdk` 0.22.1 και καθορίζει τον iii-engine στην v0.22.1. ### Δοκιμάστε το σε 30 δευτερόλεπτα ```bash # Terminal 1: start the server npx -y @agentmemory/agentmemory@latest # Terminal 2: seed sample data and see recall in action npx -y @agentmemory/agentmemory@latest demo ``` Το `demo` δημιουργεί 3 ρεαλιστικές συνεδρίες (JWT auth, διόρθωση ερωτήματος N+1, rate limiting) και εκτελεί αναζητήσεις σε αυτές. Οι εγκαταστάσεις χωρίς κλειδί απενεργοποιούν τα vectors, οπότε τα ερωτήματα λέξεων-κλειδιών `mem::search` θα πρέπει να βρίσκουν αποτελέσματα μέσω BM25, ενώ το `database performance optimization` μπορεί να επιστρέψει μηδέν. Το `smart-search` μπορεί επίσης να επιστρέψει δομικές αντιστοιχίσεις γράφου όταν υπάρχουν δεδομένα γράφου. Για να κάνετε το σημασιολογικό ερώτημα να βρει τη διόρθωση N+1 μέσω vectors, ρυθμίστε το `EMBEDDING_PROVIDER=local`, κάντε επανεκκίνηση, και αφήστε την πρώτη λήψη μοντέλου να ολοκληρωθεί. Ανοίξτε το `http://localhost:3113` για να παρακολουθήσετε τη μνήμη να χτίζεται ζωντανά. ### Επιβεβαιώστε μια νέα εγκατάσταση και τη μονιμότητα μετά από επανεκκίνηση Με τον διακομιστή σε λειτουργία, επιβεβαιώστε το REST, το health, το viewer, και την κατάσταση του runtime που βασίζεται στο iii: ```bash curl -fsS http://localhost:3111/agentmemory/livez curl -fsS http://localhost:3111/agentmemory/health curl -fsS -o /dev/null http://localhost:3113/ npx -y @agentmemory/agentmemory@latest status ``` Το πάνελ ετοιμότητας εκκίνησης λαμβάνει υπόψη όλες τις τέσσερις θύρες: REST/MCP HTTP στη 3111, τα iii streams στη 3112, το viewer στη 3113, και το WebSocket του iii worker στη 49134. Το `status` επιβεβαιώνει την υγεία του agentmemory και την ενεργή λειτουργία provider/embedding. Αποθηκεύστε μια δοκιμαστική εγγραφή (probe) και επιβεβαιώστε ότι είναι αναζητήσιμη: ```bash curl -fsS -X POST http://localhost:3111/agentmemory/remember \ -H 'Content-Type: application/json' \ -d '{"content":"agentmemory restart persistence probe","concepts":["install-check"]}' curl -fsS -X POST http://localhost:3111/agentmemory/smart-search \ -H 'Content-Type: application/json' \ -d '{"query":"restart persistence probe","limit":5}' ``` Στη συνέχεια εκτελέστε `npx -y @agentmemory/agentmemory@latest stop`, ξεκινήστε ξανά την κανονική εντολή στο Terminal 1, περιμένετε το `/agentmemory/livez`, και επαναλάβετε την αναζήτηση. Το probe πρέπει να επιστρέφεται ακόμα. Αν επιλέξατε προσαρμοσμένο `--data-dir`, περάστε τον ίδιο κατάλογο στην επανεκκίνηση. ### Καθημερινές εντολές Η εγκατάσταση και η ρύθμιση βρίσκονται στο [Εγκατάσταση](#install) παραπάνω (η πρώτη εκτέλεση σας καθοδηγεί). Καθημερινά: ```bash agentmemory # start the server agentmemory stop # stop it cleanly agentmemory connect # wire another agent agentmemory doctor # interactive diagnostics + fix prompts agentmemory remove # uninstall everything we created ``` ### Αναπαραγωγή Συνεδρίας Κάθε συνεδρία που καταγράφει το agentmemory μπορεί να αναπαραχθεί. Ανοίξτε το viewer, επιλέξτε την καρτέλα **Replay**, και μετακινηθείτε στο timeline: τα prompts, οι κλήσεις εργαλείων, τα αποτελέσματα εργαλείων, και οι απαντήσεις αποδίδονται ως διακριτά events με play/pause, έλεγχο ταχύτητας (0.5x έως 4x), και συντομεύσεις πληκτρολογίου (space για εναλλαγή, βέλη για βήμα-βήμα). Για να εισάγετε παλαιότερα JSONL transcripts του Claude Code: ```bash # Import everything under the default ~/.claude/projects npx -y @agentmemory/agentmemory@latest import-jsonl # Or import a single file npx -y @agentmemory/agentmemory@latest import-jsonl ~/.claude/projects/-my-project/abc123.jsonl ``` Οι εισαγμένες συνεδρίες εμφανίζονται στον επιλογέα Replay μαζί με τις εγγενείς. Στο παρασκήνιο, κάθε καταχώρηση διέρχεται από τα iii functions `mem::replay::load`, `mem::replay::sessions`, και `mem::replay::import-jsonl`, χωρίς πλευρικούς (side-channel) διακομιστές. Κάθε εισαγμένο transcript ευρετηριάζεται για αναζήτηση, σημαίνεται με κανάλι προέλευσης `import`, και εξορύσσεται για ένα session crystal και μαθήματα. > **Σημαντική σημείωση αν βασίζεστε στο `import-jsonl` ως κύρια διαδρομή καταγραφής:** Το `cleanupPeriodDays` του Claude Code (στο `~/.claude/settings.json`, προεπιλογή **30**) διαγράφει αυτόματα τα JSONL transcripts παλαιότερα από αυτό το παράθυρο από το `~/.claude/projects/`. Αν εγκαταστήσετε το agentmemory από την αρχή σε ένα ιστορικό Claude Code μηνών, οτιδήποτε παλαιότερο από 30 ημέρες έχει ήδη χαθεί πριν από την πρώτη εισαγωγή. Είτε εκτελέστε το `import-jsonl` μέσω cron, αυξήστε το `cleanupPeriodDays` σε μεγαλύτερη τιμή, είτε συνδέστε τα hooks αυτόματης καταγραφής (η προεπιλεγμένη διαδρομή εγκατάστασης plugin) ώστε κάθε γύρος να καταλήγει στο agentmemory ενώ η συνεδρία είναι ενεργή, και ο καθαρισμός JSONL να σταματήσει να έχει σημασία. ### Αναβάθμιση / Συντήρηση Χρησιμοποιήστε την εντολή συντήρησης όταν θέλετε σκόπιμα να ενημερώσετε το τοπικό runtime σας: ```bash npx -y @agentmemory/agentmemory@latest upgrade ``` Προειδοποίηση: αυτή η εντολή τροποποιεί τον τρέχοντα workspace/runtime. Μπορεί να ενημερώσει τις εξαρτήσεις JavaScript και να κατεβάσει την καθορισμένη εικόνα Docker `iiidev/iii:0.22.1`. Ποτέ δεν εγκαθιστά μη καθορισμένη ή νεότερη έκδοση του iii engine. Οι λεπτομέρειες υλοποίησης βρίσκονται στο `src/cli.ts` (δείτε το `runUpgrade` γύρω από την περιοχή `src/cli.ts:544-595`). ### Claude Code (ένα block, επικολλήστε το) ```text Install agentmemory: run `npx -y @agentmemory/agentmemory@latest` in a separate terminal to start the memory server and its pinned iii engine. Then run `/plugin marketplace add rohitg00/agentmemory` and `/plugin install agentmemory` — the plugin registers all 12 hooks, 17 skills, AND auto-wires the `@agentmemory/mcp` stdio server via its `.mcp.json`, so you get 54 MCP tools (memory_smart_search, memory_save, memory_sessions, memory_governance_delete, etc.) without any extra config step. Verify with `curl http://localhost:3111/agentmemory/health`. The real-time viewer is at http://localhost:3113. Keyless mode disables vectors: `memory_recall` uses BM25, and `memory_smart_search` can also use existing structural graph data. Set `EMBEDDING_PROVIDER=local` in `~/.agentmemory/.env` and restart to opt into on-device semantic recall. ``` #### Claude Code χωρίς εγκατάσταση plugin (αυτόνομη διαδρομή MCP) Αν συνδέσετε τον διακομιστή MCP του agentmemory μέσω του `~/.claude.json` απευθείας αντί να χρησιμοποιήσετε το `/plugin install`, το Claude Code δεν επιλύει ποτέ το `${CLAUDE_PLUGIN_ROOT}` και πρέπει να δείξετε τα scripts των hooks σε απόλυτες διαδρομές στο `~/.claude/settings.json`. Αυτές οι διαδρομές συνήθως ενσωματώνουν την έκδοση του agentmemory (π.χ. `~/.codex/plugins/cache/agentmemory/agentmemory/0.9.22/scripts/…`), οπότε η επόμενη αναβάθμιση χαλάει σιωπηλά κάθε hook. Λύση παράκαμψης: ```bash agentmemory connect claude-code --with-hooks ``` Αυτό συγχωνεύει τις ίδιες εντολές hook στο `~/.claude/settings.json` με απόλυτες διαδρομές που αναλύονται στον ενσωματωμένο κατάλογο `plugin/` του πακέτου `@agentmemory/agentmemory` που είναι τρέχουσα εγκατεστημένο. Εκτελέστε ξανά την εντολή μετά την αναβάθμιση του agentmemory για να ανανεωθούν οι διαδρομές. Οι καταχωρήσεις του χρήστη στο ίδιο αρχείο διατηρούνται· αντικαθίστανται μόνο οι προηγούμενες καταχωρήσεις του agentmemory. Η χρήση της διαδρομής `/plugin install` παραμένει η συνιστώμενη προσέγγιση. Για απομακρυσμένες ή προστατευμένες αναπτύξεις, εκκινήστε το Claude Code με ρυθμισμένα τα `AGENTMEMORY_URL` και `AGENTMEMORY_SECRET`. Το plugin περνάει και τις δύο τιμές στον ενσωματωμένο διακομιστή MCP του· όταν το `AGENTMEMORY_URL` είναι άδειο, το MCP shim χρησιμοποιεί το `http://localhost:3111`. ### Codex CLI (πλατφόρμα plugin του Codex) ```bash # 1. start the memory server in a separate terminal npx -y @agentmemory/agentmemory@latest # 2. register the agentmemory marketplace and install the plugin codex plugin marketplace add rohitg00/agentmemory codex plugin add agentmemory@agentmemory ``` Το plugin του Codex διανέμεται από τον ίδιο κατάλογο `plugin/` όπως το plugin του Claude Code. Καταχωρεί: - Μια ενσωματωμένη γέφυρα MCP stdio προς τον ενεργό daemon, χωρίς λήψη μέσω npm ή αποθήκη fallback. Δείτε τον [τοπικό οδηγό Codex](../docs/plugins/codex-local.md) για να δοκιμάσετε ένα μη κυκλοφορημένο build. - 6 hooks κύκλου ζωής: `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `PreCompact`, `Stop` - 9 επικλητά skills: `/recall`, `/remember`, `/session-history`, `/forget`, `/recap`, `/handoff`, `/lesson`, `/commit-context`, `/commit-history`, συν 8 skills αναφοράς που ο agent φορτώνει όταν τα χρειάζεται (πειθαρχία μνήμης, εργαλεία MCP, REST API, ρυθμίσεις, agents, hooks, αρχιτεκτονική, και τον οδηγό συγγραφής skills) Η μηχανή hooks του Codex εισάγει το `CLAUDE_PLUGIN_ROOT` στις υποδιαδικασίες των hooks (σύμφωνα με το [`codex-rs/hooks/src/engine/discovery.rs`](https://github.com/openai/codex/blob/main/codex-rs/hooks/src/engine/discovery.rs)), οπότε τα ίδια scripts hooks λειτουργούν σε αμφότερους τους hosts χωρίς διπλασιασμό. Τα events Subagent / SessionEnd / Notification / TaskCompleted / PostToolUseFailure είναι αποκλειστικά του Claude Code και δεν καταχωρούνται για το Codex. #### Εμπιστοσύνη και συμβατότητα των hooks του Codex Η εγγενής αποστολή (dispatch) των hooks του plugin είναι επιβεβαιωμένη με το Codex CLI 0.150.1. Εμπιστευτείτε (trust) τα hooks του plugin πριν περιμένετε καταγραφή. Η συμπεριφορά του Codex Desktop εξαρτάται από το ενσωματωμένο runtime του· ελέγξτε το `/hooks` και επιβεβαιώστε ένα καταγεγραμμένο event πριν ενεργοποιήσετε μια λύση παράκαμψης. Αν το host σας απαιτεί καθολικά hooks, αντιγράψτε τις εντολές στο `~/.codex/hooks.json`. Όταν το MCP είναι ήδη συνδεδεμένο, ο τρέχων connector χρειάζεται το `--force` για να φτάσει στην εγκατάσταση των hooks: ```bash agentmemory connect codex --with-hooks --force ``` Αυτό συγχωνεύει τα καθολικά hooks και ξαναγράφει την καταχώρηση MCP του agentmemory, διατηρώντας τις άσχετες καταχωρήσεις. Ελέγξτε τυχόν προσαρμοσμένες ρυθμίσεις endpoint του agentmemory πριν χρησιμοποιήσετε το `--force`. Εκτελέστε ξανά μετά την αναβάθμιση για να ανανεωθούν οι διαδρομές των scripts. Ενεργοποιήστε είτε τα εγγενή hooks του plugin, είτε τα καθολικά αντίγραφα, για να αποφύγετε τη διπλή καταγραφή. ### GitHub Copilot CLI Για τη λειτουργία agent του VS Code, χρησιμοποιήστε τον [οδηγό MCP και αυτόματης καταγραφής του Copilot](../docs/plugins/copilot.md#vs-code-copilot-local-agent-sessions). Ο connector CLI δεν ρυθμίζει το VS Code. ```bash # MCP-only wiring agentmemory connect copilot-cli # Alternatively, full hooks/skills plugin from the GitHub subdir copilot plugin install rohitg00/agentmemory:plugin ``` Το `agentmemory connect copilot-cli` συγχωνεύει το `mcpServers.agentmemory` στο `~/.copilot/mcp-config.json` (ή στο `$COPILOT_HOME/mcp-config.json` όταν έχει ρυθμιστεί το `COPILOT_HOME`) και διατηρεί τους υπάρχοντες διακομιστές. Σε native Windows αυτός είναι ο μόνος αυτοματοποιημένος adapter `connect`· ρυθμίστε κάθε άλλο native Windows agent χειροκίνητα. Το `connect` σε WSL υποστηρίζεται μόνο όταν ο στόχος-agent είναι εγκατεστημένος στο ίδιο περιβάλλον WSL. Το Copilot παραλαμβάνει τον διακομιστή MCP στην επόμενη εκκίνηση ή μετά το `/mcp`. Εγκαταστήστε επίσης το plugin όταν θέλετε την πλήρη εμπειρία hooks/skills.
OpenClaw (επικολλήστε αυτό το prompt) ```text Install agentmemory for OpenClaw. Run `npx -y @agentmemory/agentmemory@latest` in a separate terminal to start the memory server on localhost:3111. Then add this to my OpenClaw MCP config so agentmemory is available with all 54 memory tools: { "mcpServers": { "agentmemory": { "command": "npx", "args": ["-y", "@agentmemory/mcp"], "env": { "AGENTMEMORY_URL": "http://localhost:3111" } } } } Restart OpenClaw. Verify with `curl http://localhost:3111/agentmemory/health`. Open http://localhost:3113 for the real-time viewer. For deeper memory-slot integration, copy `integrations/openclaw` to `~/.openclaw/extensions/agentmemory` and enable `plugins.slots.memory = "agentmemory"` in `~/.openclaw/openclaw.json`. ``` Πλήρης οδηγός: [`integrations/openclaw/`](../integrations/openclaw/)
Hermes Agent (επικολλήστε αυτό το prompt) ```text Install agentmemory for Hermes. Run `npx -y @agentmemory/agentmemory@latest` in a separate terminal to start the memory server on localhost:3111. Then add this to ~/.hermes/config.yaml so Hermes can use agentmemory as an MCP server with all 54 memory tools: mcp_servers: agentmemory: command: npx args: ["-y", "@agentmemory/mcp"] memory: provider: agentmemory Verify with `curl http://localhost:3111/agentmemory/health`. Open http://localhost:3113 for the real-time viewer. For deeper 6-hook memory provider integration (pre-LLM context injection, turn capture, MEMORY.md mirroring, system prompt block), copy integrations/hermes from the agentmemory repo to ~/.hermes/plugins/agentmemory. ``` Πλήρης οδηγός: [`integrations/hermes/`](../integrations/hermes/)
### Άλλοι agents Ξεκινήστε τον διακομιστή μνήμης: `npx -y @agentmemory/agentmemory@latest` #### Εγγενή skills μέσω `npx skills add` (50+ agents) Το agentmemory διανέμει 17 skills στη μορφή `/SKILL.md` τύπου Claude Code: 9 επικλητά skills ενέργειας (`remember`, `recall`, `recap`, `handoff`, `forget`, `lesson`, `commit-context`, `commit-history`, `session-history`) και 8 skills αναφοράς που ο agent φορτώνει όταν τα χρειάζεται (`memory-discipline`, `agentmemory-mcp-tools`, `agentmemory-rest-api`, `agentmemory-config`, `agentmemory-agents`, `agentmemory-hooks`, `agentmemory-architecture`, `write-agentmemory-skill`). Τα skills αναφοράς περιέχουν πίνακες δεδομένων που δημιουργούνται από την πηγή, οπότε δεν αποκλίνουν ποτέ. Το CLI [`skills`](https://npmjs.com/package/skills) από την vercel-labs τα εγκαθιστά αυτόματα στον εγγενή κατάλογο skills του agent που το καλεί, σε 50+ agents (Claude Code, Cursor, Cline, Continue, Droid, Warp, Codex, Antigravity, Kiro, OpenCode, Goose, Roo, Trae, Windsurf, και άλλα): ```bash npx skills add rohitg00/agentmemory -y # auto-detects the calling agent npx skills add rohitg00/agentmemory -y -a warp # explicit agent npx skills add rohitg00/agentmemory -y -a '*' # install to every installed agent ``` Αυτό είναι **συμπληρωματικό** του `agentmemory connect `: - Το `agentmemory connect ` γράφει τις ρυθμίσεις του διακομιστή MCP ώστε να είναι διαθέσιμα τα εργαλεία. - Το `npx skills add rohitg00/agentmemory` εγκαθιστά τα skills ώστε ο agent να ξέρει πότε να τα καλέσει. Για τους λίγους agents που το CLI skills δεν καλύπτει ακόμα (Zed v1.3.x και παλαιότερα), τοποθετήστε τα 17 αρχεία SKILL.md μόνοι σας στον εγγενή κατάλογο skills του agent· η ίδια μορφή λειτουργεί παντού. #### Τυπικό block MCP Η καταχώρηση agentmemory είναι το **ίδιο block διακομιστή MCP** σε κάθε host που χρησιμοποιεί τη μορφή `mcpServers` (Cursor, Claude Desktop, Cline, Roo Code, Gemini CLI, OpenClaw): ```json "agentmemory": { "command": "npx", "args": ["-y", "@agentmemory/mcp"], "env": { "AGENTMEMORY_URL": "${AGENTMEMORY_URL}", "AGENTMEMORY_SECRET": "${AGENTMEMORY_SECRET}" } } ``` **Συγχωνεύστε αυτή την καταχώρηση στο υπάρχον αντικείμενο `mcpServers`** στο αρχείο ρυθμίσεων του host· μην αντικαταστήσετε το αρχείο. Αν το αρχείο έχει ήδη άλλους διακομιστές, προσθέστε το `agentmemory` δίπλα τους ως ακόμα ένα κλειδί μέσα στο `mcpServers`. Αν το `mcpServers` λείπει εντελώς, επικολλήστε το block μέσα στο `{ "mcpServers": { ... } }`. Τα placeholders `${VAR}` κληρονομούν τα `AGENTMEMORY_URL` / `AGENTMEMORY_SECRET` από το shell κατά την εκκίνηση του διακομιστή MCP· οι μη ρυθμισμένες μεταβλητές περνούν κενά strings και το shim επιστρέφει στο `http://localhost:3111`. Μία συνδεδεμένη καταχώρηση καλύπτει τόσο τοπικές όσο και απομακρυσμένες (k8s / πίσω από reverse-proxy) αναπτύξεις. | Agent | Αρχείο ρυθμίσεων | Σημειώσεις | |---|---|---| | **Cursor (MCP only)** | `~/.cursor/mcp.json` | Συγχωνεύστε στο `mcpServers`, ή `agentmemory connect cursor`. Διατίθεται επίσης one-click deeplink στον ιστότοπο. | | **Cursor (full plugin)** | `.cursor-plugin/` | Καταχώρηση στο Cursor Marketplace (η υποβολή βρίσκεται υπό έλεγχο) ή Cursor Settings → Plugins → τοπικό checkout. Καταχωρεί 7 hooks αυτόματης καταγραφής (sessionStart, beforeSubmitPrompt, preToolUse, postToolUse, postToolUseFailure, stop, sessionEnd) + 17 skills + τον διακομιστή MCP, με τα `AGENTMEMORY_URL` / `AGENTMEMORY_SECRET` να διαχειρίζονται στο dashboard του plugin του Cursor. Λειτουργεί στο Cursor IDE και στο CLI `cursor-agent`· τα prompts του CLI σε print-mode συμπληρώνονται αναδρομικά από το transcript της συνεδρίας στο τέλος της συνεδρίας. | | **Claude Desktop** | `claude_desktop_config.json` (Application Support) | Συγχωνεύστε στο `mcpServers`. Κάντε επανεκκίνηση του Claude Desktop μετά την επεξεργασία. | | **Cline / Roo Code / Kilo Code** | Ρυθμίσεις MCP του Cline (Settings UI → MCP Servers → Edit) | Το ίδιο block `mcpServers`. | | **Devin CLI (MCP + hooks)** | `~/.config/devin/config.json` | Το `agentmemory connect devin` συγχωνεύει την καταχώρηση MCP· το `--with-hooks` προσθέτει έξι εγγενή hooks αυτόματης καταγραφής (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop, SessionEnd) με τους πεζούς (lowercase) tool matchers του Devin. Επιβεβαιώστε με `devin mcp list` και `/hooks` μέσα στο devin. | | **Devin CLI (full plugin)** | `plugin/.devin-plugin/` | Το `devin plugins install ./plugin` από ένα checkout καταχωρεί όλα τα 17 skills ως εντολές `/agentmemory:` καθώς και τον διακομιστή MCP. Τα hooks του plugin στο Devin δεν μπορούν να ενεργοποιήσουν τα `SessionStart`/`SessionEnd`, οπότε συνδυάστε το με `connect devin --with-hooks` για πλήρη καταγραφή συνεδρίας. | | **Devin (cloud)** | Settings → Connections → MCP servers | Προσθέστε ένα προσαρμοσμένο MCP (STDIO): εντολή `npx`, args `-y @agentmemory/mcp@latest`, env `AGENTMEMORY_URL` που δείχνει σε μια ανάπτυξη agentmemory προσβάσιμη από το δίκτυο, καθώς και `AGENTMEMORY_SECRET` (οι συνεδρίες cloud δεν μπορούν να φτάσουν το localhost — δείτε [`deploy/`](../deploy/)). Αποθηκεύστε το secret στο Devin Secrets, και χρησιμοποιήστε το "Test listing tools" για να επιβεβαιώσετε ότι εμφανίζονται όλα τα 54 εργαλεία. | | **Gemini CLI** | `~/.gemini/settings.json` | `gemini mcp add agentmemory npx -y @agentmemory/mcp --scope user` (συγχωνεύεται αυτόματα). | | **GitHub Copilot CLI (MCP only)** | `~/.copilot/mcp-config.json` | Το `agentmemory connect copilot-cli` συγχωνεύει το `mcpServers.agentmemory`· το Copilot το παραλαμβάνει στην επόμενη εκκίνηση ή με `/mcp`. | | **GitHub Copilot CLI (full plugin)** | Εγκατάσταση plugin Copilot | `copilot plugin install rohitg00/agentmemory:plugin` για το plugin από τον υποκατάλογο GitHub. | | **OpenClaw** | Ρυθμίσεις MCP του OpenClaw | Το ίδιο block `mcpServers`. Για βαθύτερη ενσωμάτωση: το `openclaw plugins install ./integrations/openclaw` διεκδικεί το memory slot του OpenClaw (αλλάζει αυτόματα από το `memory-core`)· ρυθμίστε `plugins.entries.agentmemory.hooks.allowConversationAccess=true` αλλιώς η καταγραφή γύρων μπλοκάρεται σιωπηλά. Δείτε [`integrations/openclaw`](../integrations/openclaw/). | | **Codex CLI (MCP only)** | `.codex/config.toml` | Μορφή TOML: `codex mcp add agentmemory -- npx -y @agentmemory/mcp`, ή προσθέστε χειροκίνητα το `[mcp_servers.agentmemory]`. | | **Codex CLI (full plugin)** | Codex plugin marketplace | `codex plugin marketplace add rohitg00/agentmemory` και μετά `codex plugin add agentmemory@agentmemory`. Καταχωρεί MCP + 6 hooks κύκλου ζωής + 17 skills. Εμπιστευτείτε τα hooks και επιβεβαιώστε την καταγραφή στο host σας· δείτε [ρύθμιση και επικύρωση του Codex](../docs/plugins/codex-local.md). | | **OpenCode (MCP only)** | `opencode.json` | Διαφορετική μορφή: κλειδί `mcp` στο ανώτατο επίπεδο, η εντολή ως array: `{"mcp": {"agentmemory": {"type": "local", "command": ["npx", "-y", "@agentmemory/mcp"], "enabled": true}}}`. | | **OpenCode (full plugin)** | `plugin/opencode/` | 22 hooks αυτόματης καταγραφής που καλύπτουν τον κύκλο ζωής συνεδρίας, τα μηνύματα, τα εργαλεία, τα σφάλματα. Η απόδοση σε project γίνεται ανά συνεδρία, οπότε μία διαδικασία OpenCode που εκτείνεται σε πολλά αποθετήρια καταχωρεί κάθε συνεδρία στο δικό της project. Δύο εντολές με slash (`/recall`, `/remember`). Αντιγράψτε το `plugin/opencode/` στον χώρο εργασίας σας OpenCode και προσθέστε την καταχώρηση του plugin στο `opencode.json`. Δείτε το [`plugin/opencode/README.md`](../plugin/opencode/README.md) για τον πλήρη πίνακα hooks + ανάλυση κενών. | | **pi** | `~/.pi/agent/extensions/agentmemory` | Το `agentmemory connect pi` εγκαθιστά την ενσωματωμένη extension στον κατάλογο αυτόματης ανίχνευσης του pi (ανάκληση στην εκκίνηση του agent, καταγραφή στο τέλος του agent, εργαλεία `memory_search` / `memory_save` / `memory_health`, `/agentmemory-status`). Το `/reload` σε ένα ενεργό pi το παραλαμβάνει. Το [`integrations/pi`](../integrations/pi/) είναι επίσης πακέτο pi (`pi install ./integrations/pi` από ένα checkout). | | **Hermes Agent** | `~/.hermes/config.yaml` | `cp -r integrations/hermes ~/.hermes/plugins/agentmemory` + `memory.provider: agentmemory` δίνει τον πάροχο μνήμης με 6 hooks (prefetch, καταγραφή γύρου, τέλος συνεδρίας, pre-compress, αντικατοπτρισμό MEMORY.md, block system prompt). Επιβεβαιώστε με `hermes plugins doctor` και `hermes memory status`. Δείτε [`integrations/hermes`](../integrations/hermes/). | | **Qwen Code** | `~/.qwen/settings.json` | Το `agentmemory connect qwen` γράφει το τυπικό block `mcpServers`. Το payload των hooks είναι συμβατό ως προς τα πεδία με το Claude Code, οπότε τα υπάρχοντα 12 scripts hooks λειτουργούν χωρίς τροποποίηση· συνδέστε τα μέσω της ενότητας `hooks` στο ίδιο `settings.json`. | | **Antigravity IDE / 2.0** | `~/.gemini/config/mcp_config.json` | Το `agentmemory connect antigravity --with-hooks` εγκαθιστά το MCP και τα hooks καταγραφής στον κοινόχρηστο κατάλογο προσαρμογής. Δείτε [ρύθμιση και περιορισμοί Antigravity](../docs/plugins/antigravity.md). | | **Antigravity CLI** (`agy`) | `~/.gemini/config/mcp_config.json` | Το `agentmemory connect antigravity-cli --with-hooks` χρησιμοποιεί την ίδια ρύθμιση MCP και hooks με τις τρέχουσες εκδόσεις IDE. Οι υπάρχουσες εγκαταστάσεις πρέπει να ανανεωθούν με `--force`· δείτε τις [σημειώσεις αναβάθμισης](../docs/plugins/antigravity.md). | | **Kiro** | `~/.kiro/settings/mcp.json` | Το `agentmemory connect kiro` γράφει τις ρυθμίσεις σε επίπεδο χρήστη. Οι παρακάμψεις workspace μπαίνουν στο `.kiro/settings/mcp.json` δίπλα στον κώδικά σας. | | **Warp** | `~/.warp/.mcp.json` | Το `agentmemory connect warp` γράφει το τυπικό block `mcpServers`. Το Warp επίσης ανακαλύπτει αυτόματα skills από το `.claude/skills/`· μόλις εγκατασταθεί το plugin του Claude Code, τα 8 skills του agentmemory (`remember`, `recall`, `recap`, `handoff`, `forget`, `commit-context`, `commit-history`, `session-history`) εμφανίζονται εγγενώς στην παλέτα εντολών slash του Warp. | | **Cline (CLI)** | `~/.cline/mcp.json` | Το `agentmemory connect cline` γράφει το τυπικό block `mcpServers`. Χρήστες της extension VS Code: επικολλήστε το ίδιο block μέσω Cline Settings → MCP Servers → Edit JSON. | | **Continue.dev** | `~/.continue/config.yaml` (προτιμώμενο) ή `config.json` (παλαιό) | Το `agentmemory connect continue` δημιουργεί το `config.yaml` από την αρχή όταν δεν υπάρχει κανένα από τα δύο, ή τροποποιεί το υπάρχον `config.json`. **Αν έχετε ήδη `config.yaml`**, ο adapter εκτυπώνει το ακριβές block για επικόλληση κάτω από το `mcpServers:`· δεν ξαναγράφει σιωπηλά το yaml σας, επειδή η ασφαλής διατήρηση σχολίων και anchors απαιτεί έναν YAML parser που το πακέτο δεν διαθέτει. Το Continue χρησιμοποιεί μορφή array (όχι object) για το `mcpServers`. | | **Zed** | `~/.config/zed/settings.json` | Το `agentmemory connect zed` γράφει κάτω από το `context_servers` (το κλειδί του Zed, ΟΧΙ `mcpServers`). Απομακρυσμένοι διακομιστές MCP μπορούν να συνδεθούν εναλλακτικά μέσω `{"url": "..."}`. | | **Droid (Factory.ai)** | `~/.factory/mcp.json` | Το `agentmemory connect droid` γράφει το τυπικό block `mcpServers`. Οι παρακάμψεις σε επίπεδο project μπαίνουν στο `/.factory/mcp.json`. Περάστε `--with-hooks` για εγγενή αυτόματη καταγραφή. | | **DeepSeek Harness** | `$DSH_HOME/cordis.patch.yml` | Το `agentmemory connect dsh` προσθέτει μια γραμμή `@deepseek-ai/dsh-mcp-client` στο επίπεδο patch home που φορτώνει κάθε προφίλ Harness· τα εργαλεία καταχωρούνται ως `mcp__agentmemory__*`. Περάστε `--with-hooks` για να συνδέσετε επίσης την αυτόματη καταγραφή: τα ενσωματωμένα scripts hooks του Claude Code εκτελούνται μέσω της πρωτογενούς γέφυρας `@deepseek-ai/dsh-hooks-claude-code` του Harness (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop) μέσω ενός manifest που γράφεται στο `$DSH_HOME/agentmemory.hooks.json`. Προεπιλέγει στο `~/.dsh` όταν το `DSH_HOME` δεν έχει ρυθμιστεί. | | **Goose** | Settings UI MCP του Goose | Το ίδιο block `mcpServers`· χρησιμοποιήστε `goose configure` → Add Extension → MCP. Υποστηρίζεται άμεση επεξεργασία YAML στο `~/.config/goose/config.yaml`, αλλά το σχήμα χρησιμοποιεί `extensions:` + `cmd` (όχι `mcpServers:` + `command`). | | **Aider** | n/a | Επικοινωνήστε απευθείας με το REST API: `curl -X POST http://localhost:3111/agentmemory/smart-search -d '{"query": "auth"}'`. | | **Οποιοσδήποτε agent (32+)** | n/a | Το `npx skillkit install agentmemory` ανιχνεύει αυτόματα τον host και συγχωνεύει. | **Sandboxed MCP clients** (Flatpak / Snap / περιορισμένα containers) που δεν μπορούν να φτάσουν το `localhost` του host: ρυθμίστε επίσης `"AGENTMEMORY_FORCE_PROXY": "1"` στο block `env`, και δείξτε το `AGENTMEMORY_URL` σε μια διαδρομή που το sandbox μπορεί πράγματι να φτάσει (π.χ. η IP του LAN σας). ### Προγραμματιστική πρόσβαση (Python / Rust / Node) Το agentmemory καταχωρεί τις βασικές λειτουργίες του ως iii functions (`mem::remember`, `mem::observe`, `mem::context`, `mem::smart-search`, `mem::forget`). Κάθε γλώσσα με ένα iii SDK μπορεί να τα καλέσει απευθείας μέσω `ws://localhost:49134`, χωρίς ξεχωριστό REST client ανά γλώσσα. ```bash pip install iii-sdk # Python cargo add iii-sdk # Rust npm install iii-sdk # Node ``` ```python from iii import register_worker iii = register_worker("ws://localhost:49134") iii.connect() iii.trigger({ "function_id": "mem::smart-search", "payload": {"project": "demo", "query": "how do tokens refresh"}, }) ``` Ολοκληρωμένο παράδειγμα: [`examples/python/`](../examples/python/) (quickstart + ροή observation/recall). Το REST στη θύρα `:3111` παραμένει διαθέσιμο για hosts χωρίς iii runtime. ### Από τον πηγαίο κώδικα ```bash git clone https://github.com/rohitg00/agentmemory.git && cd agentmemory npm install && npm run build && npm start ``` Αυτό ξεκινά το agentmemory με τοπικό `iii-engine` αν το καθορισμένο binary είναι ήδη εγκατεστημένο, ή χρησιμοποιεί Docker Compose όταν επιλεγεί. Το REST, τα streams, και το viewer συνδέονται στο `127.0.0.1` από προεπιλογή. Η αυτόματη διαδρομή binary για macOS/Linux απαιτεί `curl`, ένα POSIX `sh`, και `tar`. Εγκαταστήστε τον `iii-engine` χειροκίνητα. **Το agentmemory προς το παρόν καθορίζει τον `iii-engine` στην `v0.22.1`**, την ίδια έκδοση με την εξάρτηση `iii-sdk` του· ο worker μιλά το wire protocol αυτού του engine, και η έκδοση 0.20.0 αναδιοργάνωσε την επιφάνεια του SDK, οπότε οι δύο κινούνται μαζί στις εκδόσεις του agentmemory. Παρακάμψτε με `AGENTMEMORY_III_VERSION=` αν τρέχετε τον δικό σας engine και γνωρίζετε ότι ταιριάζει. - **macOS arm64:** `mkdir -p ~/.local/bin && curl -fsSLo iii.tar.gz https://github.com/iii-hq/iii/releases/download/iii/v0.22.1/iii-aarch64-apple-darwin.tar.gz && echo "2b309019b909a896cae874dc947e2cdf877b4f3c51dd026b79850af858517fa4 iii.tar.gz" | shasum -a 256 -c - && tar -xzf iii.tar.gz -C ~/.local/bin && chmod +x ~/.local/bin/iii` - **macOS x64:** αντικαταστήστε το `aarch64-apple-darwin` με `x86_64-apple-darwin` - **Linux x64:** αντικαταστήστε με `x86_64-unknown-linux-gnu` - **Linux arm64:** αντικαταστήστε με `aarch64-unknown-linux-gnu` - **Windows:** κατεβάστε το `iii-x86_64-pc-windows-msvc.zip` από το [iii-hq/iii releases v0.22.1](https://github.com/iii-hq/iii/releases/tag/iii%2Fv0.22.1) και εξάγετε το `iii.exe` στο `%USERPROFILE%\.agentmemory\bin\iii.exe` Κάθε αρχείο archive έχει ένα αντίστοιχο αρχείο `.sha256` στη σελίδα έκδοσης· όταν αλλάζετε πλατφόρμα, χρησιμοποιήστε το hash αυτού του αρχείου στον παραπάνω έλεγχο (σε Windows: `Get-FileHash`). Ο αυτόματος installer στο `npx @agentmemory/agentmemory` καθορίζει αυτά τα hashes και αρνείται ένα archive που δεν ταιριάζει. Ή χρησιμοποιήστε Docker (το ενσωματωμένο `docker-compose.yml` κατεβάζει το `iiidev/iii:0.22.1`). Πλήρη docs: [iii.dev/docs](https://iii.dev/docs). ### Windows Το agentmemory τρέχει σε Windows 10/11, αλλά το πακέτο Node.js από μόνο του δεν αρκεί· χρειάζεστε επίσης το καθορισμένο runtime iii-engine v0.22.1 ως διαδικασία παρασκηνίου. Το CLI δεν εξάγει αυτόματα το Windows ZIP, οπότε οι χρήστες native Windows πρέπει να εγκαταστήσουν το `iii.exe` χειροκίνητα, να χρησιμοποιήσουν WSL2, ή να επιλέξουν Docker Desktop. Η αυτοματοποιημένη σύνδεση MCP σε native Windows υποστηρίζει μόνο το `agentmemory connect copilot-cli`. Για το Claude Code, το Codex, το Cursor, και κάθε άλλο native Windows agent, αντιγράψτε το χειροκίνητο block MCP από το [Άλλοι agents](#other-agents) στις ρυθμίσεις Windows αυτού του agent. Η εκτέλεση του `connect` σε WSL είναι κατάλληλη μόνο όταν ο στόχος-agent είναι εγκατεστημένος επίσης στο ίδιο περιβάλλον WSL· δεν επεξεργάζεται τις ρυθμίσεις ενός agent που τρέχει σε Windows host. **Επιλογή A: προκατασκευασμένο binary για Windows (προτείνεται)** ```powershell # 1. Open https://github.com/iii-hq/iii/releases/tag/iii%2Fv0.22.1 in your browser # (agentmemory pins the engine to the same release as its iii-sdk; # v0.22.1 is the current pair) # 2. Download iii-x86_64-pc-windows-msvc.zip # (or iii-aarch64-pc-windows-msvc.zip if you're on an ARM machine) # 3. Extract iii.exe to agentmemory's private engine directory: New-Item -ItemType Directory -Force "$HOME\.agentmemory\bin" # Copy iii.exe to $HOME\.agentmemory\bin\iii.exe # 4. Verify: & "$HOME\.agentmemory\bin\iii.exe" --version # Should print: 0.22.1 # 5. Then run agentmemory as usual: npx -y @agentmemory/agentmemory@latest ``` **Επιλογή B: Docker Desktop** ```powershell # 1. Install Docker Desktop for Windows # 2. Start Docker Desktop and make sure the engine is running # 3. Select Docker explicitly and run agentmemory: $env:AGENTMEMORY_USE_DOCKER = "1" npx -y @agentmemory/agentmemory@latest ``` **Επιλογή C: μόνο αυτόνομο MCP (χωρίς engine).** Αν χρειάζεστε μόνο τα εργαλεία MCP για τον agent σας και δεν χρειάζεστε το REST API, το viewer, ή τις εργασίες cron, παραλείψτε εντελώς τον engine: ```powershell npx -y @agentmemory/agentmemory@latest mcp # or via the shim package: npx -y @agentmemory/mcp ``` **Διαγνωστικά για Windows:** αν το `npx -y @agentmemory/agentmemory@latest` αποτύχει, εκτελέστε το ξανά με `--verbose` για να δείτε το πραγματικό stderr του engine. Συχνοί τρόποι αποτυχίας: | Σύμπτωμα | Διόρθωση | |---|---| | `The engine process started but the REST API never responded.` | Επιβεβαιώστε ότι είναι ελεύθερες όλες οι τέσσερις παραγόμενες θύρες, επιβεβαιώστε ότι το καθορισμένο `iii.exe` παρέμεινε ενεργό, και μετά εκτελέστε ξανά με `--verbose` και εξετάστε το καταγεγραμμένο stderr του engine | | `Could not start iii-engine` | Δεν είναι εγκατεστημένο ούτε το `iii.exe` ούτε το Docker. Δείτε την Επιλογή A ή B παραπάνω | | Σύγκρουση θύρας | `netstat -ano \| findstr :3111` για να δείτε τι είναι δεσμευμένο, και μετά σκοτώστε τη διαδικασία ή χρησιμοποιήστε `--port ` | | Η εναλλακτική λύση Docker παραλείπεται παρόλο που το Docker είναι εγκατεστημένο | Σιγουρευτείτε ότι το Docker Desktop τρέχει πράγματι (εικονίδιο system tray) | > Σημείωση: ο **engine** του iii είναι ένα προκατασκευασμένο binary, όχι ένα cargo crate, οπότε μην προσπαθήσετε να το κάνετε `cargo install`. (Τα **SDKs** του iii δημοσιεύονται στα crates.io, npm, και PyPI, αλλά το agentmemory δεν τα χρειάζεται.) Οι υποστηριζόμενες μέθοδοι εγκατάστασης του engine είναι όλες καθορισμένες στην v0.22.1: το προκατασκευασμένο binary παραπάνω, η αυτόματη διαδρομή εγκατάστασης macOS/Linux του agentmemory (απαιτούνται `curl`, POSIX `sh`, και `tar`), και η εικόνα Docker `iiidev/iii:0.22.1`. Ένα απλό upstream `install.sh | sh` εγκαθιστά τον τελευταίο engine, που το agentmemory δεν υποστηρίζει. Χρησιμοποιήστε `npx -y @agentmemory/agentmemory@latest`· σε macOS/Linux κατεβάζει τον καθορισμένο engine στο `~/.agentmemory/bin`. ---

Ανάπτυξη

Πρότυπα ανάπτυξης με ένα κλικ για διαχειριζόμενους hosts. Καθένα διανέμει ένα αυτόνομο Dockerfile που κατεβάζει το `@agentmemory/agentmemory` από το npm και αντιγράφει το binary του iii engine από την επίσημη εικόνα `iiidev/iii` του Docker Hub· δεν απαιτείται προκατασκευασμένη εικόνα agentmemory. Η μόνιμη αποθήκευση γίνεται mount στο `/data`· το entrypoint της πρώτης εκκίνησης αντικαθιστά τις ρυθμίσεις iii που διανέμονται με το npm (οι οποίες συνδέονται στο `127.0.0.1`) με μια προσαρμοσμένη για ανάπτυξη έκδοση που συνδέεται στο `0.0.0.0` και χρησιμοποιεί απόλυτες διαδρομές `/data`, δημιουργεί το HMAC secret, και μετά μειώνει τα δικαιώματα από `root` σε `node` μέσω του `gosu` πριν εκτελέσει (exec) το CLI του agentmemory.

Deploy to fly.io Deploy to Railway

Το κουμπί ανάπτυξης με ένα κλικ του Render απαιτεί `render.yaml` στη ρίζα του αποθετηρίου, το οποίο σκόπιμα το κρατάμε καθαρό. Χρησιμοποιήστε τη ροή Render Blueprint που τεκμηριώνεται στο [`deploy/render/`](.././deploy/render/README.md) για να δείξετε χειροκίνητα στο blueprint εντός του αποθετηρίου. Πλήρεις λεπτομέρειες ρύθμισης (καταγραφή HMAC, SSH tunnel για το viewer, περιστροφή, αντίγραφα ασφαλείας, ελάχιστο κόστος) βρίσκονται στο [`deploy/`](.././deploy/README.md): - [`deploy/fly`](.././deploy/fly/README.md): μία μηχανή με `auto_stop_machines = "stop"`· το πιο οικονομικό σε αδράνεια. - [`deploy/railway`](.././deploy/railway/README.md): σταθερή χρέωση στο πλάνο Hobby, volume μέσα από το dashboard. - [`deploy/render`](.././deploy/render/README.md): ροή Blueprint, αυτόματα snapshots δίσκου στα επί πληρωμή πλάνα. - [`deploy/coolify`](.././deploy/coolify/README.md): self-hosted στο δικό σας VPS μέσω του [Coolify](https://coolify.io/self-hosted)· το ίδιο Docker Compose stack, εσείς κατέχετε τον host και τα δεδομένα. Δημοσιεύεται μόνο η θύρα `3111`. Το viewer στη `3113` παραμένει συνδεδεμένο στο loopback εντός του container· το README κάθε προτύπου τεκμηριώνει το μοτίβο SSH-tunnel για να το προσεγγίσετε. ---

Γιατί το agentmemory

Κάθε agent κώδικα ξεχνά τα πάντα όταν τελειώνει η συνεδρία, και κάθε νέα συνεδρία ξεκινά με εσάς να εξηγείτε ξανά το stack σας. Το agentmemory τρέχει στο παρασκήνιο και αφαιρεί αυτό το βήμα. ```text Session 1: "Add auth to the API" Agent writes code, runs tests, fixes bugs agentmemory silently captures every tool use Session ends -> observations compressed into structured memory Session 2: "Now add rate limiting" Agent already knows: - Auth uses JWT middleware in src/middleware/auth.ts - Tests in test/auth.test.ts cover token validation - You chose jose over jsonwebtoken for Edge compatibility Zero re-explaining. Starts working immediately. ``` ### Έναντι της ενσωματωμένης μνήμης agent Κάθε AI agent κώδικα διαθέτει ενσωματωμένη μνήμη: το Claude Code έχει `MEMORY.md`, το Cursor έχει notepads, το Cline έχει memory bank. Αυτά λειτουργούν σαν αυτοκόλλητα σημειωματάρια (sticky notes). Το agentmemory είναι η αναζητήσιμη βάση δεδομένων πίσω από τα sticky notes. | | Ενσωματωμένο (CLAUDE.md) | agentmemory | |---|---|---| | Κλίμακα | Όριο 200 γραμμών | Απεριόριστο | | Αναζήτηση | Φορτώνει τα πάντα στο context | BM25 + vector + graph (μόνο top-K) | | Κόστος tokens | 22K+ σε 240 παρατηρήσεις | ~1,900 tokens (92% λιγότερο) | | Μεταξύ agents | Αρχεία ανά agent | MCP + REST (οποιοσδήποτε agent) | | Συντονισμός | Κανένας | Leases, signals, actions, routines | | Παρατηρησιμότητα | Χειροκίνητη ανάγνωση αρχείων | Viewer σε πραγματικό χρόνο στη :3113 | ---

Πώς Λειτουργεί

### Αγωγός Μνήμης ```text PostToolUse hook fires -> SHA-256 dedup (5min window) -> Privacy filter (strip secrets, API keys) -> Store raw observation -> Synthetic compression by default (LLM-written compression only with a provider + AGENTMEMORY_AUTO_COMPRESS=true) -> Vector embedding when an embedding provider is active -> Index in BM25, plus vectors when enabled Stop / SessionEnd hook fires -> Summarize session -> Knowledge graph extraction (if GRAPH_EXTRACTION_ENABLED=true) -> Slot reflection (if SLOT_REFLECT_ENABLED=true) SessionStart hook fires -> Load project profile (top concepts, files, patterns) -> Hybrid search (BM25 + vector + graph) -> Token budget (default: 2000 tokens) -> Inject into conversation ``` ### Ενοποίηση Μνήμης 4 Επιπέδων Βασίζεται στον τρόπο που ο ανθρώπινος εγκέφαλος επεξεργάζεται τη μνήμη, συμπεριλαμβανομένης της ενοποίησης κατά τον ύπνο. | Επίπεδο | Τι | Αναλογία | |------|------|---------| | **Εργαζόμενη** | Ανεπεξέργαστες παρατηρήσεις από τη χρήση εργαλείων | Βραχυπρόθεσμη μνήμη | | **Επεισοδιακή** | Συμπιεσμένες περιλήψεις συνεδριών | "Τι συνέβη" | | **Σημασιολογική** | Εξαγόμενα γεγονότα και μοτίβα | "Τι γνωρίζω" | | **Διαδικαστική** | Ροές εργασίας και μοτίβα αποφάσεων | "Πώς να το κάνω" | Οι μνήμες φθίνουν με τον χρόνο (καμπύλη Ebbinghaus). Οι μνήμες που προσπελαύνονται συχνά ενισχύονται. Οι μπαγιάτικες μνήμες εκδιώκονται αυτόματα. Οι αντιφάσεις εντοπίζονται και επιλύονται. ### Τι Καταγράφεται | Hook | Καταγράφει | |------|----------| | `SessionStart` | Διαδρομή project, ID συνεδρίας | | `UserPromptSubmit` | Prompts χρήστη (φιλτραρισμένα για ιδιωτικότητα) | | `PreToolUse` | Μοτίβα πρόσβασης αρχείων + ενριχυμένο context | | `PostToolUse` | Όνομα εργαλείου, είσοδος, έξοδος | | `PostToolUseFailure` | Context σφάλματος | | `PreCompact` | Επανεισάγει τη μνήμη πριν από τη συμπίεση (compaction) | | `SubagentStart/Stop` | Κύκλος ζωής sub-agent | | `Stop` | Περίληψη τέλους συνεδρίας | | `SessionEnd` | Δείκτης ολοκλήρωσης συνεδρίας | ### Βασικές Δυνατότητες | Δυνατότητα | Περιγραφή | |---|---| | **Αυτόματη καταγραφή** | Κάθε χρήση εργαλείου καταγράφεται μέσω hooks, χωρίς χειροκίνητη προσπάθεια | | **Σημασιολογική αναζήτηση** | BM25 + vector + γράφος γνώσης με συγχώνευση RRF | | **Εξέλιξη μνήμης** | Versioning, αντικατάσταση (supersession), γράφοι σχέσεων | | **Υγιεινή ανάκλησης** | Οι αντικατεστημένες εκδόσεις μνήμης αφαιρούνται από τα ευρετήρια αναζήτησης· η αλυσίδα εκδόσεων στο KV διατηρεί το πλήρες ιστορικό | | **Υποδείξεις σχεδόν-διπλότυπων** | Οι αποθηκεύσεις αναφέρουν μια συμβουλευτική αντιστοίχιση `similarTo` όταν νέο περιεχόμενο μοιάζει πολύ με μια υπάρχουσα μνήμη | | **Εμβέλεια ανά agent** | Το `agentId` διαπερνά την αποθήκευση και την ανάκληση σε REST, MCP, και το ευρετήριο αναζήτησης, σε λειτουργία shared ή isolated | | **Προέλευση κατά τη συγγραφή** | Κάθε παρατήρηση και μνήμη φέρει ένα αμετάβλητο κανάλι προέλευσης (user, agent, tool, import, ή shared) που σημαίνεται κατά την καταγραφή, την αποθήκευση, και την εισαγωγή | | **Αυτόματη διαγραφή** | Λήξη TTL, εντοπισμός αντιφάσεων, εκδίωξη βάσει σημασίας | | **Ιδιωτικότητα πρώτα** | Τα κλειδιά API, τα μυστικά, και οι ετικέτες `` αφαιρούνται πριν από την αποθήκευση | | **Αυτοθεραπεία** | Circuit breaker, αλυσίδα εναλλακτικών providers, παρακολούθηση υγείας | | **Γέφυρα Claude** | Αμφίδρομος συγχρονισμός με το MEMORY.md | | **Γράφος γνώσης** | Εξαγωγή οντοτήτων + διάσχιση BFS | | **Μνήμη ομάδας** | Κοινή + ιδιωτική μνήμη με namespace μεταξύ μελών της ομάδας | | **Προέλευση παραπομπών** | Ανίχνευση κάθε μνήμης πίσω στις αρχικές παρατηρήσεις | | **Στιγμιότυπα Git** | Version, rollback, και diff της κατάστασης μνήμης | --- Ανάκτηση τριπλής ροής που συνδυάζει τρία σήματα: | Ροή | Τι κάνει | Πότε | |---|---|---| | **BM25** | Αντιστοίχιση λέξεων-κλειδιών με stemming και επέκταση συνωνύμων | Πάντα ενεργό | | **Vector** | Ομοιότητα συνημιτόνου πάνω σε πυκνά embeddings | Έχει ρυθμιστεί πάροχος embedding | | **Graph** | Διάσχιση γράφου γνώσης μέσω αντιστοίχισης οντοτήτων | Εντοπίζονται οντότητες στο ερώτημα | Συγχωνεύονται με Reciprocal Rank Fusion (RRF, k=60) και διαφοροποιούνται ανά συνεδρία (έως 3 αποτελέσματα ανά συνεδρία). Όταν ένα ευρετήριο vector είναι γεμάτο, το `mem::search` (πίσω από το `memory_recall`) χρησιμοποιεί τον υβριδικό ranker BM25 + vector. Χωρίς embeddings χρησιμοποιεί BM25. Το `smart-search` μπορεί επιπλέον να συγχωνεύσει δομικές αντιστοιχίσεις γράφου όταν υπάρχουν δεδομένα γράφου, ακόμα και σε λειτουργία χωρίς κλειδί. Η ανάκληση μαθημάτων (lesson recall) τρέχει σε ένα αποκλειστικό in-memory ευρετήριο BM25 αντί να σκανάρει όλο το corpus σε κάθε ερώτημα. Οι αντικατεστημένες εκδόσεις μνήμης αποκλείονται από κάθε διαδρομή ανάκλησης· η αλυσίδα εκδόσεων διατηρεί το ιστορικό τους. Τα vectors επιβιώνουν από ένα crash ή force-kill. Το ευρετήριο vector αποθηκεύεται σε buckets το πολύ κάθε `AGENTMEMORY_INDEX_SAVE_INTERVAL_MS` (10 λεπτά). Κάθε vector που προστίθεται ή αφαιρείται στο ενδιάμεσο γράφεται επίσης αμέσως σε ένα μικρό εκκρεμές log στο state store, και η επόμενη εκκίνηση το αναπαράγει χωρίς να καλέσει τον πάροχο embedding. Κάθε επιτυχημένη αποθήκευση αδειάζει το log. Τα έγγραφα που εξακολουθούν να μην έχουν vector μετά την αναπαραγωγή επανα-embeddάρονται στο παρασκήνιο σε batches των `AGENTMEMORY_VECTOR_BACKFILL_MAX` (500) μέχρι να μην απομείνει κανένα, και ένα backfill που διακόπτεται συνεχίζει στην επόμενη εκκίνηση. Το `/agentmemory/status` και το viewer δείχνουν το μέγεθος του εκκρεμούς log και την κατάσταση του backfill. Οι εγκαταστάσεις χωρίς κλειδί δεν γράφουν τίποτα. Το BM25 κάνει tokenize Ελληνικά, Κυριλλικά, Εβραϊκά, Αραβικά, και τονισμένα Λατινικά απευθείας. Για μνήμες στα Κινεζικά / Ιαπωνικά / Κορεατικά, εγκαταστήστε τους προαιρετικούς segmenters (`npm install @node-rs/jieba tiny-segmenter`) για να χωρίσετε τις ακολουθίες CJK σε tokens επιπέδου λέξης· χωρίς αυτούς, το agentmemory υποχωρεί ομαλά σε tokenization ολόκληρης της ακολουθίας και εκτυπώνει μία υπόδειξη, μία φορά, στο stderr. ### Πάροχοι Embedding Οι εγκαταστάσεις χωρίς κλειδί απενεργοποιούν τα vector embeddings: το `mem::search` χρησιμοποιεί BM25, ενώ το `smart-search` μπορεί επίσης να χρησιμοποιήσει υπάρχοντα δομικά δεδομένα γράφου. Για να ενεργοποιήσετε δωρεάν σημασιολογικά embeddings στη συσκευή, προσθέστε αυτό στο `~/.agentmemory/.env` και κάντε επανεκκίνηση του agentmemory: ```env EMBEDDING_PROVIDER=local ``` Η κανονική εγκατάσταση npm περιλαμβάνει το προαιρετικό runtime `@huggingface/transformers`. Το πρώτο αίτημα embedding κατεβάζει το `Xenova/all-MiniLM-L6-v2`, οπότε χρειάζεται πρόσβαση στο δίκτυο και μπορεί να διαρκέσει περισσότερο· η επόμενη εξαγωγή συμπερασμάτων τρέχει στη συσκευή. Οι απομακρυσμένοι πάροχοι ανιχνεύονται αυτόματα από τα κλειδιά τους, εκτός αν το `EMBEDDING_PROVIDER` τους παρακάμψει. | Πάροχος | Μοντέλο | Κόστος | Σημειώσεις | |---|---|---|---| | **Τοπικό (προτεινόμενη ενεργοποίηση)** | `all-MiniLM-L6-v2` | Δωρεάν | Στη συσκευή μετά την πρώτη λήψη μοντέλου, +8pp ανάκληση σε σχέση με μόνο BM25 | | Gemini | `gemini-embedding-001` | Δωρεάν βαθμίδα | 100+ γλώσσες, διαστάσεις 768/1536/3072 (MRL), είσοδος 2048 tokens. Αντικαθιστά το `text-embedding-004` ([καταργήθηκε, διακοπή στις 14 Ιαν 2026](https://ai.google.dev/gemini-api/docs/deprecations)) | | OpenAI | `text-embedding-3-small` | $0.02/1M | Υψηλότερη ποιότητα | | Voyage AI | `voyage-code-3` | Επί πληρωμή | Βελτιστοποιημένο για κώδικα | | Cohere | `embed-english-v3.0` | Δωρεάν δοκιμή | Γενικής χρήσης | | OpenRouter | Οποιοδήποτε μοντέλο | Διαφέρει | Proxy πολλών μοντέλων | ---

Διακομιστής MCP

54 εργαλεία, 6 πόροι, 3 προτροπές, και 17 skills. > **MCP shim έναντι πλήρους διακομιστή:** το δημοσιευμένο πακέτο `@agentmemory/mcp` είναι ένα λεπτό shim. Εκθέτει την πλήρη επιφάνεια των 54 εργαλείων **μόνο όταν μπορεί να φτάσει έναν ενεργό διακομιστή agentmemory** μέσω του `AGENTMEMORY_URL` (λειτουργία proxy). Χωρίς προσβάσιμο διακομιστή, το shim επιστρέφει σε ένα τοπικό σύνολο 7 εργαλείων (`memory_save`, `memory_recall`, `memory_smart_search`, `memory_sessions`, `memory_export`, `memory_audit`, `memory_governance_delete`). Η μεταβλητή περιβάλλοντος `AGENTMEMORY_TOOLS=core|all` είναι μια σημαία *από την πλευρά του διακομιστή*· η ρύθμισή της στο block `env` του shim δεν έχει καμία επίδραση. Αν βλέπετε μόνο 7 εργαλεία στο Cursor / OpenCode / Gemini CLI, ξεκινήστε το `npx -y @agentmemory/agentmemory@latest` (ή το Docker stack) και ρυθμίστε `AGENTMEMORY_URL=http://localhost:3111`. ### 54 Εργαλεία Τρεις επιφάνειες εργαλείων, από τη μικρότερη στη μεγαλύτερη: το `AGENTMEMORY_TOOLS=core` περιορίζει την ορατότητα σε 8 βασικά εργαλεία (`memory_save`, `memory_recall`, `memory_consolidate`, `memory_smart_search`, `memory_sessions`, `memory_diagnose`, `memory_lesson_save`, `memory_reflect`)· το βασικό σύνολο παρακάτω είναι τα 14 θεμελιώδη εργαλεία του registry· η προεπιλογή (`AGENTMEMORY_TOOLS=all`) εκθέτει όλα τα 54.
Βασικά εργαλεία (14) | Εργαλείο | Περιγραφή | |------|-------------| | `memory_recall` | Αναζήτηση παλαιότερων παρατηρήσεων | | `memory_compress_file` | Συμπίεση αρχείων markdown με διατήρηση της δομής | | `memory_save` | Αποθήκευση μιας διαπίστωσης, απόφασης, ή μοτίβου | | `memory_file_history` | Παλαιότερες παρατηρήσεις για συγκεκριμένα αρχεία | | `memory_patterns` | Εντοπισμός επαναλαμβανόμενων μοτίβων | | `memory_sessions` | Λίστα πρόσφατων συνεδριών | | `memory_smart_search` | Υβριδική σημασιολογική + αναζήτηση λέξεων-κλειδιών | | `memory_vision_search` | Αναζήτηση παρατηρήσεων εικόνων | | `memory_timeline` | Χρονολογικές παρατηρήσεις | | `memory_profile` | Προφίλ project (concepts, αρχεία, μοτίβα) | | `memory_export` | Εξαγωγή όλων των δεδομένων μνήμης | | `memory_relations` | Ερώτημα γράφου σχέσεων | | `memory_commit_lookup` | Συνεδρίες πίσω από ένα git commit | | `memory_commits` | Commits καταγεγραμμένα για μια συνεδρία |
Εκτεταμένα εργαλεία (54 σύνολο, η προεπιλεγμένη επιφάνεια) | Εργαλείο | Περιγραφή | |------|-------------| | `memory_patterns` | Εντοπισμός επαναλαμβανόμενων μοτίβων | | `memory_timeline` | Χρονολογικές παρατηρήσεις | | `memory_relations` | Ερώτημα γράφου σχέσεων | | `memory_graph_query` | Διάσχιση γράφου γνώσης | | `memory_consolidate` | Εκτέλεση ενοποίησης 4 επιπέδων | | `memory_claude_bridge_sync` | Συγχρονισμός με το MEMORY.md | | `memory_team_share` | Κοινοποίηση σε μέλη ομάδας | | `memory_team_feed` | Πρόσφατα κοινοποιημένα στοιχεία | | `memory_audit` | Ιστορικό ελέγχου (audit trail) λειτουργιών | | `memory_governance_delete` | Διαγραφή με ιστορικό ελέγχου | | `memory_snapshot_create` | Στιγμιότυπο με έκδοση Git | | `memory_action_create` | Δημιουργία στοιχείων εργασίας με εξαρτήσεις | | `memory_action_update` | Ενημέρωση κατάστασης ενέργειας | | `memory_frontier` | Ξεμπλοκαρισμένες ενέργειες κατά σειρά προτεραιότητας | | `memory_next` | Η μία πιο σημαντική επόμενη ενέργεια | | `memory_lease` | Αποκλειστικά leases ενεργειών (πολλών agents) | | `memory_routine_run` | Δημιουργία στιγμιότυπων ρουτινών ροής εργασίας | | `memory_signal_send` | Ανταλλαγή μηνυμάτων μεταξύ agents | | `memory_signal_read` | Ανάγνωση μηνυμάτων με αποδείξεις παραλαβής | | `memory_checkpoint` | Πύλες εξωτερικών συνθηκών | | `memory_mesh_sync` | Συγχρονισμός P2P μεταξύ instances | | `memory_sentinel_create` | Παρατηρητές βάσει events | | `memory_sentinel_trigger` | Ενεργοποίηση sentinels εξωτερικά | | `memory_sketch_create` | Προσωρινοί γράφοι ενεργειών | | `memory_sketch_promote` | Προβιβασμός σε μόνιμο | | `memory_crystallize` | Συμπύκνωση αλυσίδων ενεργειών | | `memory_diagnose` | Έλεγχοι υγείας | | `memory_heal` | Αυτόματη διόρθωση κολλημένης κατάστασης | | `memory_facet_tag` | Ετικέτες dimension:value | | `memory_facet_query` | Ερώτημα βάσει ετικετών facet | | `memory_verify` | Ανίχνευση προέλευσης |
### 6 Πόροι · 3 Προτροπές · 17 Skills | Τύπος | Όνομα | Περιγραφή | |------|------|-------------| | Πόρος | `agentmemory://status` | Υγεία, αριθμός συνεδριών, αριθμός μνημών | | Πόρος | `agentmemory://project/{name}/profile` | Ευφυΐα ανά project | | Πόρος | `agentmemory://project/{name}/recent` | Πρόσφατες παρατηρήσεις για ένα project | | Πόρος | `agentmemory://memories/latest` | Τελευταίες 10 ενεργές μνήμες | | Πόρος | `agentmemory://graph/stats` | Στατιστικά γράφου γνώσης | | Πόρος | `agentmemory://team/{id}/profile` | Κοινό προφίλ ομάδας | | Προτροπή | `recall_context` | Αναζήτηση + επιστροφή μηνυμάτων context | | Προτροπή | `session_handoff` | Δεδομένα handoff μεταξύ agents | | Προτροπή | `detect_patterns` | Ανάλυση επαναλαμβανόμενων μοτίβων | | Skill | `/recall` | Αναζήτηση μνήμης | | Skill | `/remember` | Αποθήκευση σε μακροπρόθεσμη μνήμη | | Skill | `/session-history` | Πρόσφατες περιλήψεις συνεδριών | | Skill | `/forget` | Διαγραφή παρατηρήσεων/συνεδριών | Ο πίνακας δείχνει τα τέσσερα βασικά skills. Το πλήρες σύνολο είναι 9 επικλητά skills συν 8 skills αναφοράς· δείτε την ενότητα Εγγενή skills παραπάνω. ### Αυτόνομο MCP Εκτελέστε χωρίς τον πλήρη διακομιστή, για οποιονδήποτε MCP client. Οποιοδήποτε από τα δύο λειτουργεί: ```bash npx -y @agentmemory/agentmemory@latest mcp # canonical (always available) npx -y @agentmemory/mcp # shim package alias ``` Ή προσθέστε στις ρυθμίσεις MCP του agent σας: Οι περισσότεροι agents (Cursor, Claude Desktop, Cline, Roo Code, Gemini CLI): ```json { "mcpServers": { "agentmemory": { "command": "npx", "args": ["-y", "@agentmemory/mcp"], "env": { "AGENTMEMORY_URL": "http://localhost:3111" } } } } ``` Συγχωνεύστε την καταχώρηση `agentmemory` στο υπάρχον αντικείμενο `mcpServers` του host σας αντί να αντικαταστήσετε το αρχείο. Για sandboxed clients που δεν μπορούν να φτάσουν το `localhost` του host, προσθέστε `"AGENTMEMORY_FORCE_PROXY": "1"` στο block env και ρυθμίστε το `AGENTMEMORY_URL` σε μια διαδρομή που το sandbox μπορεί να φτάσει. OpenCode (`opencode.json`): ```json { "mcp": { "agentmemory": { "type": "local", "command": ["npx", "-y", "@agentmemory/mcp"], "enabled": true } }, "plugin": ["./plugins/agentmemory-capture.ts"] } ``` Αντιγράψτε το αρχείο plugin από το αποθετήριο: ```bash mkdir -p ~/.config/opencode/plugins cp plugin/opencode/agentmemory-capture.ts ~/.config/opencode/plugins/ cp plugin/opencode/commands/*.md ~/.config/opencode/commands/ ``` ---

Viewer σε Πραγματικό Χρόνο

Ξεκινά αυτόματα στη θύρα `3113`. Το viewer φορτώνει ένα snapshot όταν συνδέεται (`GET /agentmemory/viewer/snapshot`) και μετά εφαρμόζει live stream events: νέες μνήμες, μαθήματα, παρατηρήσεις, καταχωρήσεις audit, αλλαγές γράφου, και ενημερώσεις υγείας εμφανίζονται χωρίς polling ή επαναφόρτωση σελίδας. Τα μόνα άλλα αιτήματα είναι οι ενέργειες που κάνετε κλικ, οι σελίδες "load more" και οι αναζητήσεις. Όταν το stream διακόπτεται, το viewer δείχνει πόσο παλιά είναι οι αριθμοί του, επανασυνδέεται με backoff και επανασυγχρονίζεται από ένα snapshot. - **12 καρτέλες σε τέσσερις ομάδες** με ζωντανές μετρήσεις, deep links (`#memories/`, `#sessions/?obs=`, `#graph/`, `#health/consolidation`), συντομεύσεις πληκτρολογίου, και ένα μενού για κινητά. - **Memories:** αναζήτηση από την πλευρά του server, φίλτρα ανά project, agent, και τύπο, ένα πάνελ λεπτομερειών με την αλυσίδα εκδόσεων και ένα word diff, συνδέσμους προέλευσης, κουμπιά αντιγραφής για το id, την κλήση MCP, και μια εντολή curl, επεξεργασία (νέα έκδοση), forget με επιβεβαίωση, μαζικό forget, και εξαγωγή JSON. - **Sessions:** ένα ενσωματωμένο timeline παρατηρήσεων με ευανάγνωστη είσοδο και έξοδο εργαλείων, φίλτρα και paging, και τις μνήμες και τα μαθήματα που παρήγαγε κάθε συνεδρία. - **Graph:** αναζήτηση, λεπτομέρειες κόμβου με σχέσεις και πηγές, ένα υπόμνημα που δεν βασίζεται μόνο στο χρώμα, και χειριστήρια zoom. - **Health:** η ζωντανή έκδοση του `GET /agentmemory/status`. Κάθε πρόβλημα συνοδεύεται από τη διόρθωσή του, καθώς και το state backend, την κατάσταση αποθήκευσης ευρετηρίου, την πρόοδο συμπύκνωσης προέλευσης γράφου, και έναν επεξηγητή ενοποίησης με τα πραγματικά thresholds. - Σελίδες **Audit, Activity, Profile, Replay, Lessons, Actions, και Crystals**, καθεμία με μια κενή κατάσταση που εξηγεί τι είναι η ενότητα, γιατί είναι κενή, και την εντολή που τη γεμίζει, καθώς και ένα tooltip γλωσσαρίου `?` σε κάθε όρο και αριθμό. ```bash open http://localhost:3113 ``` Ο διακομιστής του viewer συνδέεται στο `127.0.0.1` από προεπιλογή και επισυνάπτει το secret του διακομιστή όταν προωθεί αιτήματα στο REST API, οπότε δεν χρειάζεται καμία ρύθμιση. Το endpoint `/agentmemory/viewer` που εξυπηρετείται από το REST ακολουθεί τους κανονικούς κανόνες bearer-token και ανακατευθύνει τους browsers χωρίς token στη θύρα του viewer. Οι κεφαλίδες CSP χρησιμοποιούν ένα script nonce ανά απάντηση και απενεργοποιούν τα inline handler attributes (`script-src-attr 'none'`). ---

iii Console

Το viewer στη `:3113` δείχνει τι **θυμήθηκε** ο agent σας. Η [iii console](https://iii.dev/docs/console) δείχνει τι **έκανε** ο agent σας: κάθε λειτουργία μνήμης ως trace OpenTelemetry, κάθε καταχώρηση KV επεξεργάσιμη, κάθε function επικλητή, κάθε stream προσβάσιμο. Δύο παράθυρα στην ίδια μνήμη: ένα σε σχήμα προϊόντος, ένα σε σχήμα engine. Παρακολουθήστε ένα `memory_smart_search` να ενεργοποιείται και δείτε το BM25 scan → αναζήτηση embedding → συγχώνευση RRF → reranker ως ένα waterfall. Επεξεργαστείτε ένα κολλημένο timer ενοποίησης στον KV browser. Αναπαράγετε ένα hook `PostToolUse` με ένα τροποποιημένο payload. Καρφιτσώστε (pin) το WebSocket stream και παρακολουθήστε τις παρατηρήσεις να καταφθάνουν ζωντανά. Το agentmemory το προσφέρει αυτό δωρεάν επειδή κάθε κλήση function και trigger ενεργοποιείται μέσω του iii· τίποτα προσαρμοσμένο, τίποτα να γίνει instrument.

σελίδα Workers της iii console: συνδεδεμένοι workers συμπεριλαμβανομένων των instances του agentmemory, με ζωντανές μετρήσεις functions και μεταδεδομένα runtime
Σελίδα Workers: κάθε συνδεδεμένος worker, συμπεριλαμβανομένου του ίδιου του agentmemory, με PID, αριθμό functions, runtime, και last-seen.

**Είναι ήδη εγκατεστημένη.** Η console διανέμεται με τον καθορισμένο `iii` engine (0.22+)· δεν χρειάζεται ξεχωριστή εγκατάσταση. Η πρώτη εκκίνηση κατεβάζει το binary της console δίπλα στον engine. **Εκκίνηση παράλληλα με το agentmemory:** ```bash agentmemory console ``` Αυτό εκτελεί το `iii console` του καθορισμένου engine πάνω στις θύρες που επέλυσε το agentmemory (REST, streams, bridge) και το εξυπηρετεί μία θύρα πάνω από το viewer, `http://localhost:3114` από προεπιλογή. Το `--console-port N` επιλέγει άλλη θύρα· τα `--port` και `--instance` επιλέγουν το instance του agentmemory με τον ίδιο τρόπο όπως για το `stop`· κάθε άλλη σημαία περνάει αυτούσια, για παράδειγμα το `--enable-flow` για την πειραματική σελίδα γράφου αρχιτεκτονικής. Το ίδιο πράγμα χειροκίνητα, χρήσιμο όταν το `agentmemory` δεν είναι στο PATH: ```bash ~/.agentmemory/bin/iii console --port 3114 \ --engine-port 3111 \ --ws-port 3112 \ --bridge-port 49134 ``` **Τι μπορείτε να κάνετε από την console:** | Σελίδα | Χρησιμοποιήστε την για | |------|-----------| | **Workers** | Να δείτε κάθε συνδεδεμένο worker και τις ζωντανές μετρήσεις του, συμπεριλαμβανομένου του ίδιου του worker agentmemory. | | **Functions** | Να καλέσετε απευθείας οποιαδήποτε από τις functions του agentmemory με ένα JSON payload· χρήσιμο για τη δοκιμή των `memory.recall`, `memory.consolidate`, `graph.query` χωρίς να συνδέσετε έναν client. | | **Triggers** | Να αναπαράγετε triggers HTTP, cron, event, και state: να ενεργοποιήσετε το cron ενοποίησης χειροκίνητα, να ξαναδοκιμάσετε μια διαδρομή HTTP, να εκπέμψετε μια αλλαγή κατάστασης. | | **States** | Έναν KV browser με πλήρες CRUD πάνω σε sessions, memory slots, χρονόμετρα κύκλου ζωής, και το ευρετήριο embeddings· να επεξεργαστείτε τιμές επί τόπου. | | **Streams** | Ζωντανή παρακολούθηση WebSocket για εγγραφές μνήμης, events hooks, και ενημερώσεις παρατηρήσεων καθώς διαρρέουν μέσα από τα iii streams. | | **Queues** | Durable θέματα ουράς + διαχείριση dead-letter. Να αναπαράγετε ή να απορρίψετε αποτυχημένες εργασίες embedding / συμπίεσης. | | **Traces** | Προβολές waterfall / flame / service-breakdown του OpenTelemetry. Φιλτράρετε κατά `trace_id` για να δείτε ακριβώς ποιες functions, κλήσεις DB, και αιτήματα embedding παρήγαγε ένα μόνο `memory.search`. | | **Logs** | Δομημένα logs OTEL φιλτραρισμένα και συσχετισμένα με IDs trace/span. | | **Config** | Ρυθμίσεις runtime: δείτε ακριβώς με ποιους workers, providers, και θύρες τρέχει ο engine σας. | | **Flow** | (Προαιρετικό, `--enable-flow`) Διαδραστικός γράφος αρχιτεκτονικής κάθε worker, trigger, και stream. |

προβολή waterfall traces της iii console που δείχνει τη διάρκεια ανά span
Traces: waterfall / flame / service breakdown για κάθε λειτουργία μνήμης.

**Τα traces είναι ήδη ενεργά:** Το `iii-config.yaml` διανέμεται με ενεργοποιημένο τον worker `iii-observability` (`exporter: memory`, `sampling_ratio: 0.1`, metrics + logs). Δεν χρειάζεται επιπλέον ρύθμιση· τη στιγμή που ξεκινά το agentmemory, κάθε λειτουργία μνήμης εκπέμπει ένα δομημένο log που μπορεί να διαβάσει η console, και μία στις δέκα (`sampling_ratio: 0.1`) εκπέμπει επίσης ένα trace span. Αν θέλετε να εξάγετε στο Jaeger/Honeycomb/Grafana Tempo αντ' αυτού, αλλάξτε το `exporter: memory` σε `exporter: otlp` και ρυθμίστε το endpoint του collector σύμφωνα με τα docs παρατηρησιμότητας του iii. > **Σημαντική σημείωση:** δεν επιβάλλεται auth στην ίδια την console· κρατήστε τη συνδεδεμένη στο `127.0.0.1` (η προεπιλογή) και ποτέ μην την εκθέσετε δημόσια. ---

Τροφοδοτείται από το iii

Το agentmemory είναι **ήδη ένα ενεργό instance του [iii](https://iii.dev)**. Τρία primitives (worker, function, trigger) συνθέτουν το runtime· η κατάσταση KV, τα streams, και τα traces OTEL προέρχονται από τους workers iii-state, iii-stream, και iii-observability που διανέμονται με το iii. Δεν εγκαταστήσατε Postgres, Redis, Express, pm2, ή Prometheus, επειδή το iii τα αντικαθιστά. Αυτό σημαίνει ότι μία ακόμα εντολή επεκτείνει το agentmemory με μια ολόκληρη νέα δυνατότητα. ### Επέκταση του agentmemory με περισσότερους workers Τα builtins που χρειάζεται το agentmemory βρίσκονται ήδη στο `iii-config.yaml` και εκκινούν μαζί του: `iii-state` (KV), `iii-queue` (durable retries για τους συνδρομητές events), `iii-pubsub`, `iii-cron`, `iii-stream`, και `iii-observability` (traces OTEL, metrics, και logs σε κάθε function). Οτιδήποτε άλλο από το [iii worker registry](https://workers.iii.dev) συνδέεται στον ίδιο engine: αντιγράψτε το `iii-config.yaml` στο `~/.agentmemory/iii-config.yaml` (το CLI προτιμά αυτό το αρχείο έναντι του ενσωματωμένου, και συνεχίζει να αποδίδει θύρες και διαδρομές δεδομένων μέσα του), προσθέστε την καταχώρηση, εγκαταστήστε το runtime του worker μία φορά με `~/.agentmemory/bin/iii update worker`, και κάντε επανεκκίνηση του agentmemory. ```yaml workers: # ...the bundled entries... - name: database # SQL-backed state adapter when you outgrow the KV defaults - name: iii-sandbox # run code that came out of memory_recall inside a throwaway VM - name: mcp # extra MCP servers next to agentmemory's, same engine ``` | Worker | Τι αποκτάτε πάνω από το agentmemory | |---|---| | [`database`](https://workers.iii.dev/workers/database) | Προσαρμογέας κατάστασης βασισμένος σε SQL, όταν ξεπεράσετε τις προεπιλογές in-memory KV | | [`iii-sandbox`](https://workers.iii.dev/workers/iii-sandbox) | Κώδικας που προέκυψε από το `memory_recall` τρέχει μέσα σε ένα αναλώσιμο VM, όχι στο shell σας | | [`mcp`](https://workers.iii.dev/workers/mcp) | Στήστε επιπλέον διακομιστές MCP δίπλα σε αυτόν του agentmemory, μοιραζόμενοι τον ίδιο engine | Στον engine 0.22.x κρατήστε τα ονόματα με πρόθεμα `iii-` για τα builtins παραπάνω· οι καταχωρήσεις χωρίς πρόθεμα `http`, `state`, `queue`, `pubsub`, και `cron` είναι οι αυτόνομοι workers του registry στους οποίους μεταβαίνει το agentmemory με τη μετάβαση στο 0.23. Πλήρες registry: [workers.iii.dev](https://workers.iii.dev). Κάθε worker εκεί συνθέτεται μέσω των ίδιων primitives που χρησιμοποιεί το agentmemory, και το agentmemory που έχετε ήδη είναι ένα από αυτά. ### Ρυθμίσεις Engine και Διεύθυνση Σύνδεσης Το `agentmemory start` διαβάζει τις ρυθμίσεις του engine από το πρώτο αρχείο που υπάρχει: `AGENTMEMORY_III_CONFIG`, `./iii-config.yaml` στον τρέχοντα κατάλογο, `~/.agentmemory/iii-config.yaml`, και μετά το ενσωματωμένο `iii-config.yaml`. Σε κάθε εκκίνηση αποδίδει αυτό το αρχείο (διαδρομές δεδομένων, θύρες, state backend) στο `~/.agentmemory/data/iii-config.runtime.yaml` και ξεκινά τον engine με το αποδοθέν αντίγραφο, οπότε επεξεργαστείτε το αρχείο-πηγή, όχι το αποδοθέν. Οι τιμές `host:` του αρχείου-πηγή διατηρούνται όπως είναι γραμμένες. Το ενσωματωμένο `iii-config.yaml` συνδέεται σκόπιμα στο `127.0.0.1`, και αυτή η προεπιλογή ισχύει και μέσα σε ένα container. Ένα CLI που ξεκινά σε ένα container ακούει στο loopback του container, οπότε οι δημοσιευμένες θύρες δεν φτάνουν πουθενά. Για να εξυπηρετήσετε ένα containerized CLI μέσω δημοσιευμένων θυρών, ρυθμίστε το `AGENTMEMORY_III_CONFIG` σε ρυθμίσεις που συνδέονται στο `0.0.0.0`. Το συνοδευτικό `iii-config.docker.yaml` είναι ένα τέτοιο: συνδέει τα `iii-http`, `iii-stream`, και τη θύρα του engine στο `0.0.0.0` και αποθηκεύει την κατάσταση κάτω από το `/data`, οπότε κάντε mount έναν εγγράψιμο volume εκεί. Κρατήστε ρυθμισμένο το `AGENTMEMORY_SECRET`, και δημοσιεύστε μόνο τις θύρες που χρειάζεστε, στο `127.0.0.1` ή πίσω από ένα proxy που εμπιστεύεστε. Το `docker-compose.yml` αυτού του αποθετηρίου δεν περνάει από την αναζήτηση ρυθμίσεων του CLI: κάνει mount το `iii-config.docker.yaml` στο `/app/config.yaml`, και το container `iii-engine` ξεκινά με `--config /app/config.yaml`. Τα πρότυπα [ανάπτυξης με ένα κλικ](../deploy/) γράφουν τις δικές τους ρυθμίσεις `0.0.0.0` στα entrypoints τους. ### Backend Αποθήκευσης: file (προεπιλογή) έναντι redis Τα `iii-state` και `iii-stream` χρησιμοποιούν από προεπιλογή το ενσωματωμένο file-based KV store του iii-engine: ένα αρχείο JSON ανά scope, που κρατείται στη μνήμη της διαδικασίας του engine και ξαναγράφεται στον δίσκο σε χρονομέτρημα. Αυτή είναι η σωστή προεπιλογή για μια τοπική εγκατάσταση ενός χρήστη· ένας κοινός daemon με πολλούς ταυτόχρονους writers παίρνει αντί αυτού πραγματικές εγγραφές ανά κλειδί από το Redis, με το κόστος ενός network round trip ανά λειτουργία (κάθε κλήση `state::*` εξακολουθεί να σειριοποιείται σε μία σύνδεση Redis, οπότε αυτό ανταλλάζει το lock του file store για ένα socket, όχι για παραλληλία). Ρυθμίστε `AGENTMEMORY_STATE_BACKEND=redis` (μαζί με `AGENTMEMORY_REDIS_URL`) για να αλλάξετε και τους δύο workers στον ενσωματωμένο `redis` adapter του iii-engine, που αποθηκεύει κάθε κλειδί ως πεδίο hash του Redis (`HSET`) αντί να ξαναγράφει ολόκληρο το scope σε κάθε εγγραφή: ```env # ~/.agentmemory/.env AGENTMEMORY_STATE_BACKEND=redis AGENTMEMORY_REDIS_URL=redis://localhost:6379 ``` Το `AGENTMEMORY_STATE_BACKEND` έχει προεπιλογή το `file`· αφήνοντάς το χωρίς ρύθμιση διατηρεί τη σημερινή συμπεριφορά αμετάβλητη, και μια μη αναγνωρισμένη τιμή (οτιδήποτε άλλο εκτός από `file` ή `redis`) είναι σφάλμα εκκίνησης αντί για σιωπηλή επιστροφή σε προεπιλογή. Το `/agentmemory/status` και η σελίδα Health του viewer (η γραμμή State store) αναφέρουν ποιο backend είναι ενεργό και αν αποκρίνεται, ποτέ το URL. **Μόνο απλό `redis://`.** Ο καθορισμένος engine (0.22.1) χτίζει τον Redis client του χωρίς υποστήριξη TLS, οπότε ένα URL `rediss://` (οι περισσότερες διαχειριζόμενες προσφορές Redis, όπως οι Upstash, Redis Cloud, και ElastiCache με κρυπτογράφηση in-transit, έχουν προεπιλογή μόνο TLS) αποτυγχάνει να συνδεθεί. Η σύνδεση είναι χωρίς κρυπτογράφηση, οπότε ο κωδικός του Redis και κάθε αποθηκευμένη μνήμη διασχίζουν το δίκτυο σε καθαρό κείμενο: δείξτε σε έναν τοπικό Redis ή σε έναν σε ιδιωτικό δίκτυο που εμπιστεύεστε. Για οποιοδήποτε άλλο Redis, τρέξτε ένα κρυπτογραφημένο tunnel (stunnel, SSH, ή VPN) στον host του agentmemory, ώστε το απλό hop `redis://` να παραμένει σε αυτόν τον host και η upstream σύνδεση του tunnel να είναι κρυπτογραφημένη και αυθεντικοποιημένη. Αν ο κωδικός του Redis περιέχει μονό εισαγωγικό, κάντε percent-encode (`%27`)· ο engine επεκτείνει το URL μέσα στις ρυθμίσεις YAML του πριν το αναλύσει. **Ένας διακομιστής Redis ανά `--instance`.** Τα προθέματα κλειδιών Redis του engine (`state:`, `stream::`) είναι σταθερά, οπότε δύο instances agentmemory (`--instance 1`, `--instance 2`, ...) που δείχνουν στην ίδια βάση δεδομένων αντικαθιστούν τα δεδομένα το ένα του άλλου. Ένα ξεχωριστό database index (`redis://localhost:6379/1`) κρατά τα αποθηκευμένα δεδομένα ξεχωριστά, αλλά ο engine αναμεταδίδει τα live events του viewer μέσω ενός καναλιού pub/sub του Redis (`stream::events`), και το pub/sub του Redis αγνοεί το database index, οπότε ο viewer κάθε instance θα εξακολουθούσε να δείχνει τα live events του άλλου. Δώστε σε κάθε instance τον δικό του διακομιστή Redis (ή θύρα) όταν τρέχετε περισσότερα από ένα. **Τι παραμένει το ίδιο, και τι διαφέρει.** Κάθε δυνατότητα του agentmemory λειτουργεί στο Redis: sessions, παρατηρήσεις, μνήμες (remember, supersede, evolve, forget), αναζήτηση και τα buckets ευρετηρίου, μαθήματα, ο γράφος, το audit log και τα μηνιαία scopes του, εξαγωγή και εισαγωγή, διαγραφές governance, κατάσταση ενοποίησης, το snapshot του viewer και το live stream του, και ο health monitor. Ο engine αποθηκεύει κάθε scope ως ένα hash Redis (`HSET`/`HGET`/`HGETALL`) και ενεργοποιεί τα ίδια state triggers με το file store. Τρεις διαφορές του engine διαχειρίζονται εντός του agentmemory: - Το Redis επιστρέφει τις εγγραφές ενός scope χωρίς σταθερή σειρά. Το agentmemory τις ταξινομεί από την παλαιότερη (κατά τον χρόνο δημιουργίας στο id της εγγραφής, και μετά το timestamp της) ώστε οι λίστες, το paging, και τα κομμάτια εξαγωγής να επιστρέφουν με την ίδια σειρά όπως στο file store. - Ο engine εφαρμόζει μερικές ενημερώσεις στο Redis μέσα σε ένα script Lua που μετατρέπει τα κενά arrays σε κενά objects. Το agentmemory εφαρμόζει αυτές τις ενημερώσεις μόνο του (ανάγνωση, αλλαγή, εγγραφή υπό ένα lock ανά κλειδί) στο Redis, ώστε πεδία όπως το `tags: []` να παραμένουν arrays. - Ο παλαιός έλεγχος audit log διαβάζει το παλιό scope από το Redis αντί να ψάχνει για το αρχείο του file store στον δίσκο. Μία διαφορά απαιτεί τη δική σας ενέργεια: **μετά από επανεκκίνηση του Redis, ο engine σταματά να αναμεταδίδει live events** στον viewer μέχρι να γίνει επανεκκίνηση του agentmemory. Τα δεδομένα συνεχίζουν να αποθηκεύονται και να διαβάζονται κανονικά. Ο health monitor στέλνει ένα δοκιμαστικό event μέσω Redis κάθε 30 δευτερόλεπτα· όταν δεν επιστρέφει, το `/agentmemory/status` και η σελίδα Health του viewer δείχνουν "Live updates are not reaching the viewer" με τη διόρθωση: επανεκκίνηση του agentmemory. Αν το Redis είναι εκτός λειτουργίας, η αναφορά κατάστασης δείχνει "The state store is not answering" και πώς να το ελέγξετε (`redis-cli -u "$AGENTMEMORY_REDIS_URL" ping`). Η λίστα ενός πολύ μεγάλου scope διαβάζει ολόκληρο το hash σε ένα `HGETALL`, το ίδιο κόστος με το να το κρατά το file store στη μνήμη. **Προτεινόμενες ρυθμίσεις Redis.** Η προεπιλεγμένη πολιτική snapshot `save 3600 1 300 100 60 10000` μπορεί να χάσει λεπτά εγγραφών σε ένα crash, χειρότερο από το παράθυρο flush των 5 δευτερολέπτων του file store. Ρυθμίστε `appendonly yes` για οτιδήποτε θα σας ενοχλούσε να χάσετε. Ρυθμίστε `maxmemory-policy noeviction`· το `allkeys-lru` ή κάτι αντίστοιχο απορρίπτει σιωπηλά μνήμες μόλις το Redis φτάσει το όριο μνήμης του. Μια native (μη-Docker) εκκίνηση, και κάθε πρότυπο [ανάπτυξης](../deploy/) με ένα κλικ (αντικαθιστούν το ενσωματωμένο `iii-config.yaml` και ξεκινούν native), διαβάζουν τα `AGENTMEMORY_STATE_BACKEND`/`AGENTMEMORY_REDIS_URL` και τα αποδίδουν στο `iii-config` που εκκινείται. Το ίδιο το URL δεν γράφεται ποτέ σε αυτό το αποδοθέν αρχείο, μόνο μια αναφορά `${AGENTMEMORY_REDIS_URL}` που η διαδικασία του engine επεκτείνει από το δικό της περιβάλλον κατά την εκκίνηση. Μόνο η δική του διαδρομή Docker Compose αυτού του αποθετηρίου (`AGENTMEMORY_USE_DOCKER=1`, ή η συνέχιση ενός engine που ξεκίνησε ήδη με αυτόν τον τρόπο) κάνει mount το `iii-config.docker.yaml` ως read-only και ποτέ δεν το αποδίδει· το `agentmemory start` προειδοποιεί όταν εντοπίζει αυτόν τον συνδυασμό. Αλλάξτε αυτό το αρχείο χειροκίνητα, ακολουθώντας την ίδια μορφή `name: redis` / `config: redis_url: ...` που φαίνεται στα docs των workers [iii-state](https://workers.iii.dev/workers/iii-state) και [iii-stream](https://workers.iii.dev/workers/iii-stream), και δείξτε το `redis_url` σε ένα Redis προσβάσιμο από το container. Το `docker-compose.yml` περνάει το `AGENTMEMORY_REDIS_URL` μέσα στο container του engine, οπότε το `redis_url: '${AGENTMEMORY_REDIS_URL}'` λειτουργεί εκεί και κρατά το URL έξω από το αρχείο που είναι mounted. Η αποδοθείσα ρύθμιση κρατά το URL έξω από το `~/.agentmemory/data/iii-config.runtime.yaml`, αλλά ο ίδιος ο worker ρυθμίσεων του engine εξακολουθεί να αποθηκεύει μόνιμα την *επεκταμένη* τιμή στα `~/.agentmemory/config/iii-state.yaml` και `iii-stream.yaml` μόλις εκκινήσει (η επέκταση `${VAR}` του iii-engine συμβαίνει πριν αυτός ο worker αποθηκεύσει το seed του, και αποθηκεύει την επιλυμένη τιμή, όχι την αναφορά). Αντιμετωπίστε αυτόν τον κατάλογο ως κάτι που κρατά διαπιστευτήρια: `chmod 700 ~/.agentmemory` σε κάθε κοινό host, και προτιμήστε έναν χρήστη Redis ACL με εμβέλεια σε ό,τι χρειάζεται το agentmemory αντί για τα admin διαπιστευτήρια της βάσης δεδομένων. **Η μετάβαση δεν είναι αυτόματη.** Η αλλαγή του `AGENTMEMORY_STATE_BACKEND` ξεκινά από ένα άδειο store και στις δύο πλευρές· τίποτα δεν αντιγράφει υπάρχοντα δεδομένα από το file στο Redis ή αντίστροφα. Κάντε export από το backend που αφήνετε και import σε αυτό στο οποίο μεταβαίνετε. Αυτό τρέχει ταυτόσημα σε bash και zsh (συμπεριλαμβανομένου του `bash -u`). Ένα array όπως το `AUTH=(${AGENTMEMORY_SECRET:+-H "Authorization: Bearer $AGENTMEMORY_SECRET"})` δεν τρέχει το ίδιο: το zsh κρατά την κεφαλίδα ως μία κακοσχηματισμένη λέξη ενώ το bash τη χωρίζει σε δύο, οπότε και τα δύο αιτήματα επιστρέφουν 401 όποτε έχει ρυθμιστεί το `AGENTMEMORY_SECRET`: ```bash # 0. Use the generated secret when none is exported: AGENTMEMORY_SECRET="${AGENTMEMORY_SECRET:-$(cat ~/.agentmemory/secret 2>/dev/null)}" # 1. On the old backend, while agentmemory is still running on it: if [ -n "${AGENTMEMORY_SECRET:-}" ]; then curl -fsS -H "Authorization: Bearer $AGENTMEMORY_SECRET" http://localhost:3111/agentmemory/export > backup.json else curl -fsS http://localhost:3111/agentmemory/export > backup.json fi # 2. Confirm backup.json is a usable export before switching backends: jq -e '.version and .exportedAt' backup.json > /dev/null || { echo "backup.json is not a valid export; do not switch backends" >&2 exit 1 } # 3. Switch AGENTMEMORY_STATE_BACKEND (and AGENTMEMORY_REDIS_URL if needed), # restart agentmemory against the new backend, then: if [ -n "${AGENTMEMORY_SECRET:-}" ]; then jq -n --slurpfile d backup.json '{exportData: $d[0], strategy: "merge"}' | \ curl -fsS -H "Authorization: Bearer $AGENTMEMORY_SECRET" -X POST http://localhost:3111/agentmemory/import \ -H 'Content-Type: application/json' -d @- else jq -n --slurpfile d backup.json '{exportData: $d[0], strategy: "merge"}' | \ curl -fsS -X POST http://localhost:3111/agentmemory/import \ -H 'Content-Type: application/json' -d @- fi ``` Το `/agentmemory/export` δέχεται επίσης `?maxSessions=` και `?offset=` για τον διαμερισμό ενός μεγάλου corpus σε πολλές κλήσεις· το `strategy` κατά το import είναι `merge` (ασφαλής προεπιλογή), `replace`, ή `skip`. ### Τι Αντικαθιστά το iii | Παραδοσιακό stack | Το agentmemory χρησιμοποιεί | |---|---| | Express.js / Fastify | iii HTTP Triggers | | SQLite / Postgres + pgvector | iii KV State + ευρετήριο vector in-memory | | SSE / Socket.io | iii Streams (WebSocket) | | pm2 / systemd | επιτήρηση workers του iii engine | | Prometheus / Grafana | iii OTEL + monitor υγείας | | Προσαρμοσμένα συστήματα plugin | `iii worker add ` | **219 αρχεία πηγαίου κώδικα · ~52,000 LOC · 2,500+ δοκιμές · 311 functions · 60 KV scopes**, όλα πάνω σε τρία primitives. Δεν υπάρχει `agentmemory plugin install`. Το σύστημα plugin είναι το ίδιο το iii. ---

Ρυθμίσεις

### Πάροχοι LLM Το agentmemory ανιχνεύει αυτόματα τους providers από το περιβάλλον σας. Ένας provider κάνει διαθέσιμες τις λειτουργίες που βασίζονται σε LLM, αλλά μόνο η ρύθμιση του provider δεν ενεργοποιεί τη συμπίεση παρατηρήσεων γραμμένη από LLM. Αυτή η διαδρομή απαιτεί τόσο έναν provider όσο και το `AGENTMEMORY_AUTO_COMPRESS=true`. | Πάροχος | Ρύθμιση | Σημειώσεις | |----------|--------|-------| | **No-op (προεπιλογή)** | Δεν χρειάζεται ρύθμιση | Η συμπίεση/σύνοψη βασισμένη σε LLM είναι απενεργοποιημένη. Η συνθετική συμπίεση και η ανάκληση BM25 συνεχίζουν να λειτουργούν. Δείτε το `AGENTMEMORY_ALLOW_AGENT_SDK` παρακάτω αν βασιζόσασταν στην εναλλακτική λύση συνδρομής Claude. | | Anthropic API | `ANTHROPIC_API_KEY` | Χρέωση ανά token | | MiniMax | `MINIMAX_API_KEY` | Συμβατό με Anthropic | | Gemini | `GEMINI_API_KEY` | Ενεργοποιεί επίσης τα embeddings | | OpenRouter | `OPENROUTER_API_KEY` | Οποιοδήποτε μοντέλο | | OpenAI API | `OPENAI_API_KEY` | Προεπιλογή `gpt-5.6-luna`, παρακάμψτε με `OPENAI_MODEL` | | **Τοπικό (Ollama / LM Studio / vLLM / llama.cpp)** | `OPENAI_API_KEY=local` + `OPENAI_BASE_URL=http://localhost:11434/v1` (Ollama) ή `http://localhost:1234/v1` (LM Studio) + `OPENAI_MODEL=` | Οτιδήποτε συμβατό με το OpenAI API. Μηδενικό κόστος, τρέχει στο δικό σας hardware. Δείτε [Τοπικά μοντέλα](#local-models-ollama--lm-studio--vllm) παρακάτω. | | Εναλλακτική λύση συνδρομής Claude | `AGENTMEMORY_ALLOW_AGENT_SDK=true` | Μόνο με ρητή ενεργοποίηση. Δημιουργεί συνεδρίες `@anthropic-ai/claude-agent-sdk`· παλαιότερα προκαλούσε απεριόριστη αναδρομή στο Stop-hook, οπότε δεν είναι πλέον η προεπιλογή. | ### Τοπικά Μοντέλα (Ollama / LM Studio / vLLM) Το agentmemory επικοινωνεί με οποιονδήποτε διακομιστή συμβατό με το OpenAI API, οπότε οτιδήποτε εκθέτει το `/v1/chat/completions` λειτουργεί χωρίς αλλαγές κώδικα. Χωρίς επί πληρωμή κλειδιά, χωρίς cloud, χωρίς rate limits· τρέχει εξολοκλήρου στο δικό σας hardware. **Ollama** (προεπιλεγμένη θύρα `11434`): ```bash ollama pull qwen3:8b # or qwen3:4b, gpt-oss:20b, qwen3-coder:30b, etc. ollama serve ``` ```env # ~/.agentmemory/.env OPENAI_API_KEY=ollama # any non-empty string; Ollama ignores it OPENAI_BASE_URL=http://localhost:11434/v1 OPENAI_MODEL=qwen3:8b ``` **LM Studio** (προεπιλεγμένη θύρα `1234`): Ανοίξτε το LM Studio → καρτέλα Local Server → Start Server. Επιλέξτε οποιοδήποτε μοντέλο chat από τον επιλογέα (Qwen 3, gpt-oss, DeepSeek R1, κλπ.). ```env # ~/.agentmemory/.env OPENAI_API_KEY=lmstudio # any non-empty string; LM Studio ignores it OPENAI_BASE_URL=http://localhost:1234/v1 OPENAI_MODEL=qwen3-8b # match the model name from LM Studio ``` **vLLM / llama.cpp / Text Generation Inference**: ίδια μορφή. Δείξτε το `OPENAI_BASE_URL` στο URL που εκθέτει ο διακομιστής σας και ρυθμίστε το `OPENAI_MODEL` σε ένα όνομα που θα δέχεται ο διακομιστής σας. **Επιλογές μοντέλων για εργασίες μνήμης**: η συμπίεση και η σύνοψη είναι σύντομες εργασίες (<2K tokens είσοδος, <500 tokens έξοδος) όπου ένα μοντέλο instruct 7B είναι υπεραρκετό. Προτάσεις: | Μοντέλο | Μέγεθος | Γιατί | |-------|------|-----| | `qwen3:8b` | ~5.2 GB | Ισορροπημένη προεπιλογή σε μηχάνημα 16 GB· ισχυρό σε εξαγωγή και κείμενο σε μορφή εργαλείου | | `qwen3:4b` | ~2.6 GB | Η μικρότερη λογική επιλογή· καλό για συμπίεση, πιο αδύναμο για εξαγωγή γράφου | | `qwen3-coder:30b` | ~19 GB | Η καλύτερη τοπική επιλογή για συνεδρίες σε μορφή κώδικα (30B MoE, 3.3B ενεργά) σε hardware 24-32 GB | | `gpt-oss:20b` | ~14 GB | Ισχυρό γενικό μοντέλο που χωράει σε 16 GB RAM | | `deepseek-r1:8b` | ~5.2 GB | Distill συλλογιστικής· πιο αργό αλλά καθαρότερες εξαγωγές | Τα μοντέλα Qwen 3 σκέφτονται από προεπιλογή και μπορούν να καταναλώσουν όλο τον προϋπολογισμό tokens σε συλλογιστική πριν βγάλουν καθόλου έξοδο. Ρυθμίστε `AGENTMEMORY_LLM_NOTHINK=1` για να προσθέσετε `/no_think` στα prompts εξαγωγής γράφου, και ανεβάστε το `MAX_TOKENS` (16384 λειτουργεί) αν οι εξαγωγές επιστρέφουν άδειες. Τα μοντέλα κλάσης reasoning (στυλ `o1` με blocks ``) μπορούν να επιστρέψουν άδειο `content` με ένα πεδίο `reasoning` που ο τοπικός διακομιστής σας μπορεί να μην εμφανίζει. Αν οι εξαγωγές επιστρέφουν κενές, αλλάξτε πρώτα σε ένα μοντέλο χωρίς reasoning. Η μεταβλητή περιβάλλοντος `OPENAI_REASONING_EFFORT=none` μπορεί επίσης να απενεργοποιήσει τη σκέψη σε μοντέλα thinking του Ollama Cloud που αντικατοπτρίζουν το σχήμα reasoning του OpenAI. Τα τοπικά embeddings διανέμονται ως προαιρετική εξάρτηση αλλά δεν είναι ενεργοποιημένα από προεπιλογή. Ρυθμίστε `EMBEDDING_PROVIDER=local` για να ενεργοποιήσετε το `Xenova/all-MiniLM-L6-v2` (384 διαστάσεων). Το πρώτο αίτημα embedding κατεβάζει το μοντέλο· η εξαγωγή συμπερασμάτων γίνεται στη συσκευή στη συνέχεια. Χωρίς αυτή τη ρύθμιση ή ένα απομακρυσμένο κλειδί embedding, τα vectors παραμένουν απενεργοποιημένα, το `mem::search` χρησιμοποιεί BM25, και το `smart-search` μπορεί ακόμα να προσθέσει υπάρχουσες αντιστοιχίσεις γράφου. ### Επιλογή Μοντέλου με Επίγνωση Κόστους Όταν η συμπίεση παρασκηνίου γραμμένη από LLM είναι ενεργοποιημένη με έναν provider και `AGENTMEMORY_AUTO_COMPRESS=true`, τρέχει σε κάθε παρατήρηση, οπότε η επιλογή μοντέλου αλλάζει ουσιαστικά το μηνιαίο κόστος. Δεδομένα καταγεγραμμένου φόρτου: 635 requests / 888K tokens / 35 ώρες ενεργής χρήσης, εκτελέστηκαν σε τρία μοντέλα OpenRouter με τιμολόγηση της 2026-05-23. | Βαθμίδα | Μοντέλο | Είσοδος / 1M | Έξοδος / 1M | Κόστος για τις καταγεγραμμένες 35 ώρες | Σημειώσεις | |------|-------|------------|-------------|---------------------------|-------| | Προτεινόμενο | `deepseek/deepseek-v4-flash-0731` | $0.07 | $0.14 | ~$0.07 (εκτίμηση) | Το πιο πρόσφατο DeepSeek· η πιο οικονομική προτεινόμενη επιλογή για φόρτους συμπίεσης. | | Προτεινόμενο | `deepseek/deepseek-v4-pro` | $0.435 | $0.87 | ~$0.46 | Στέρεη ποιότητα συμπίεσης + σύνοψης σε ~10× χαμηλότερο κόστος από το Sonnet. | | Προτεινόμενο | `qwen/qwen3-coder` | $0.45 | $1.80 | ~$0.55 | Ισχυρή συλλογιστική κώδικα αν οι συνεδρίες σας είναι έντονα σε μορφή κώδικα. | | Premium | `anthropic/claude-sonnet-5` | $3.00 | $15.00 | ~$5.02 (εκτίμηση) | Ίδια λιανική τιμή με τη μετρημένη εκτέλεση Sonnet 4.6· εισαγωγική τιμολόγηση $2/$10 έως 2026-08-31. | | Premium | `openai/gpt-5.6-sol` | $5.00 | $30.00 | ~$9 (εκτίμηση) | Κορυφαία βαθμίδα· ακριβό για πάντα-ενεργή εργασία παρασκηνίου. | | Αποφύγετε | `anthropic/claude-opus-5` | $5.00 | $25.00 | ~$8.40 (εκτίμηση) | Μοντέλο κλάσης flagship· υπερβολική δαπάνη για συμπίεση. | Οι μετρημένες γραμμές προέρχονται από την καταγεγραμμένη εκτέλεση· οι γραμμές (εκτίμηση) κλιμακώνουν το ίδιο μείγμα tokens με τη λιανική τιμή κάθε μοντέλου. Το agentmemory εκτυπώνει μια προειδοποίηση runtime όταν το `OPENROUTER_MODEL` ταιριάζει με ένα μοτίβο βαθμίδας premium. Ρυθμίστε `AGENTMEMORY_SUPPRESS_COST_WARNING=1` για να τη σιγάσετε μόλις κάνετε μια ενημερωμένη επιλογή. Ισορροπία ποιότητας/κόστους για εργασίες μνήμης: η συμπίεση είναι μια εργασία σύνοψης με σχετικά χαλαρά όρια ποιότητας (ο agent ξαναδιαβάζει τη σύνοψη, όχι ο χρήστης). Τα DeepSeek V4 Flash / V4 Pro / Qwen3-Coder προσεγγίζουν το Sonnet σε αυτήν την εργασία μέσα σε περιθώριο στρογγυλοποίησης, ενώ κοστίζουν 10-70× λιγότερο. Κρατήστε τα μοντέλα premium για ερωτήματα που διαβάζετε απευθείας. Πηγές: [Τιμολόγηση OpenRouter για το Claude Sonnet 5](https://openrouter.ai/anthropic/claude-sonnet-5), [DeepSeek V4 Flash](https://openrouter.ai/deepseek/deepseek-v4-flash-0731), [Σημειώσεις τιμολόγησης DeepSeek](https://api-docs.deepseek.com/quick_start/pricing/). ### Μνήμη Πολλών Agents (`AGENT_ID` + `AGENTMEMORY_AGENT_SCOPE`) Σε setups πολλών agents όπου αρκετοί ρόλοι μοιράζονται έναν διακομιστή agentmemory (architect / developer / reviewer / researcher / support-agent), το `AGENT_ID` σημαίνει κάθε εγγραφή με τον ρόλο που την έκανε. Το `AGENTMEMORY_AGENT_SCOPE` ελέγχει αν η ανάκληση φιλτράρει βάσει αυτής της ετικέτας. ```env TEAM_ID=company USER_ID=engineering-team AGENT_ID=architect AGENTMEMORY_AGENT_SCOPE=isolated # optional; default "shared" ``` Δύο λειτουργίες: | Λειτουργία | Σημαίνει εγγραφές | Φιλτράρει ανάκληση | Πότε να τη χρησιμοποιήσετε | |------|------------|---------------|-------------| | `shared` (προεπιλογή) | ναι | όχι | Context μεταξύ agents με ιστορικό ελέγχου. Ο architect μπορεί να δει τι σημείωσε ο developer, αλλά κάθε εγγραφή καταγράφει ποιος το είπε. | | `isolated` | ναι | ναι | Αυστηρός διαχωρισμός. Ο architect δεν βλέπει ποτέ τις παρατηρήσεις / μνήμες / συνεδρίες του developer. | Τι σημαίνεται όταν έχει ρυθμιστεί το `AGENT_ID`: `Session.agentId`, `RawObservation.agentId`, `CompressedObservation.agentId`, `Memory.agentId`. Ο ρόλος ρέει από το `api::session::start` → `mem::observe` → `mem::compress` → KV. Τι φιλτράρεται σε λειτουργία isolated: `mem::smart-search`, `/agentmemory/memories`, `/agentmemory/observations`, `/agentmemory/sessions`. Κάθε endpoint δέχεται `?agentId=` για παράκαμψη ανά αίτημα, και `?agentId=*` για πλήρη εξαίρεση από το scope περιβάλλοντος. Το `/memories` δέχεται επίσης `?includeOrphans=true` για να εμφανίσει μνήμες πριν το AGENT_ID, των οποίων το `agentId` είναι undefined. Παράκαμψη ανά κλήση στο επίπεδο SDK / REST: κάθε endpoint που τροποποιεί δεδομένα (`/session/start`, `/remember`) δέχεται ένα πεδίο `agentId` στο σώμα του αιτήματος που υπερισχύει του περιβάλλοντος. Χρήσιμο για runtimes που δρομολογούν πολλούς ρόλους μέσα από μία διαδικασία διακομιστή. Το εργαλείο MCP `memory_save` εκθέτει το ίδιο πεδίο `agentId`, ο αυτόνομος διακομιστής stdio προωθεί τόσο το `agentId` όσο και το `project`, και οι αποθηκευμένες μνήμες μεταφέρουν το `agentId` στο ευρετήριο αναζήτησης, οπότε η αναζήτηση με εμβέλεια agent καλύπτει τόσο τις μνήμες όσο και τις παρατηρήσεις. Όταν το `AGENT_ID` δεν έχει ρυθμιστεί, η μνήμη παραμένει χωρίς scope (παλαιή συμπεριφορά, χωρίς ετικέτες, χωρίς φίλτρα). ### Θύρες Το agentmemory + iii-engine συνδέονται σε τέσσερις θύρες από προεπιλογή. Αν μια επανεκκίνηση αποτύχει με `port in use`, αυτός ο πίνακας σας λέει ποια διαδικασία να αναζητήσετε. | Θύρα | Διαδικασία | Σκοπός | Παράκαμψη περιβάλλοντος | |------|---------|---------|--------------| | `3111` | agentmemory | REST API + MCP HTTP + `/agentmemory/health` + `/agentmemory/livez` | `III_REST_PORT` | | `3112` | iii-engine | Εσωτερικός worker streams (καταναλώνεται από το agentmemory + viewer) | `III_STREAM_PORT` (προτεινόμενο) ή το παλαιό `III_STREAMS_PORT` | | `3113` | agentmemory | Viewer σε πραγματικό χρόνο (`http://localhost:3113`) | `III_VIEWER_PORT` ή `AGENTMEMORY_VIEWER_URL` για το αναφερόμενο URL | | `49134` | iii-engine | WebSocket· οι workers καταχωρούνται εδώ, η τηλεμετρία OTel ρέει μέσω αυτού | `III_ENGINE_PORT` ή `III_ENGINE_URL` | Το `--port ` αλλάζει την άγκυρα REST και παράγει τα streams στο `N+1`, το viewer στο `N+2`, και το WebSocket του engine στο `N+46023` μόνο όπου η αντίστοιχη ρητή θύρα ή URL παραπάνω δεν έχει ρυθμιστεί. Δεν δημιουργεί ένα απομονωμένο namespace κύκλου ζωής. Χρησιμοποιήστε `--instance 1` για έναν δεύτερο daemon· χρησιμοποιεί άγκυρα 3211, με προεπιλογή `3211/3212/3213/49234`, και λαμβάνει έναν ξεχωριστό κατάλογο δεδομένων και κύκλου ζωής `instance-1`. Τα instances 1 έως 50 ακολουθούν το ίδιο μοτίβο. Ο καθορισμένος engine ξεκινά με `--no-update-check` (χωρίς αναζητήσεις ενημέρωσης ή security-advisory προς το GitHub κατά την εκκίνηση) και με την ανώνυμη τηλεμετρία χρήσης του iii απενεργοποιημένη: το agentmemory ρυθμίζει το `III_TELEMETRY_ENABLED=false` για τον engine που δημιουργεί, εκτός αν εξάγετε εσείς τη μεταβλητή, και το ενσωματωμένο αρχείο compose κάνει το ίδιο. Καθαρισμός παλιωμένων διαδικασιών όταν οι θύρες παραμένουν δεσμευμένες μετά από μια εκτέλεση που κατέρρευσε: ```bash # macOS / Linux — find whatever is on each port and kill it lsof -i :3111,3112,3113,49134 pkill -f agentmemory || true pkill -f 'iii ' || true # Windows netstat -ano | findstr ":3111 :3112 :3113 :49134" taskkill /F /PID ``` Το `agentmemory stop` τερματίζει καθαρά τόσο τον worker όσο και το pidfile του engine σε ομαλή native τερματισμό. Σε λειτουργία Docker, αδειάζει τον native worker, σταματά το ακριβές επικυρωμένο container του engine, και διατηρεί τόσο το container όσο και το mount `/data` του για μια επανεκκίνηση χωρίς απώλειες· η επόμενη εκκίνηση επικυρώνει και συνεχίζει το ίδιο container. Η απεγκατάσταση με Docker απαιτεί `agentmemory remove --keep-data`: αφαιρεί τα κοινά αρχεία που διαχειρίζεται το agentmemory, διατηρώντας το επικυρωμένο container, το data mount του, και την εγγραφή κύκλου ζωής που χρειάζεται για την ανάκτησή τους. Η καταστροφική διαγραφή δεδομένων Docker αφήνεται σκόπιμα στον χειριστή μετά από ένα backup. Το CLI αρνείται επίσης να υιοθετήσει ή να στείλει σήμα σε κατόχους θυρών Docker ή VM (Docker backend, vpnkit, colima) ως τον native engine εκτός αν περαστεί το `--force`. Ο χειροκίνητος καθαρισμός παραπάνω είναι μόνο για την περίπτωση μετά από crash όπου δεν έχει απομείνει κανένα pidfile. ### Αρχείο Ρυθμίσεων Βάλτε τις ρυθμίσεις runtime του agentmemory στο `~/.agentmemory/.env` αντί να εξάγετε μεταβλητές σε κάθε shell. Αν το viewer δείξει μια υπόδειξη ρύθμισης όπως `export ANTHROPIC_API_KEY=...`, αντιγράψτε την σε αυτό το αρχείο ως `ANTHROPIC_API_KEY=...` χωρίς το πρόθεμα `export`, και μετά κάντε επανεκκίνηση του agentmemory. Οι μεταβλητές περιβάλλοντος της διαδικασίας εξακολουθούν να λειτουργούν και υπερισχύουν των τιμών στο αρχείο. Σε Windows, το ίδιο αρχείο βρίσκεται στο `%USERPROFILE%\.agentmemory\.env`: ```powershell New-Item -ItemType Directory -Force $HOME\.agentmemory notepad $HOME\.agentmemory\.env ``` Για να δοκιμάσετε με μια συνδρομή Claude Code Pro/Max αντί για κλειδί API, ενεργοποιήστε το ρητά: ```env AGENTMEMORY_ALLOW_AGENT_SDK=true AGENTMEMORY_AUTO_COMPRESS=true ``` Η συμπίεση παρατηρήσεων γραμμένη από LLM απαιτεί και τις δύο γραμμές: πρόσβαση σε έναν πάροχο LLM (συμπεριλαμβανομένης αυτής της ρητής εναλλακτικής λύσης συνδρομής) και `AGENTMEMORY_AUTO_COMPRESS=true`. Ένας πάροχος από μόνος του αφήνει στη θέση της την προεπιλεγμένη διαδρομή συνθετικής συμπίεσης. Η ενοποίηση (κόμβοι γράφου, μαθήματα, crystals) είναι ενεργή από προεπιλογή όποτε έχει ρυθμιστεί ένας πάροχος LLM. Απενεργοποιήστε ρητά με `CONSOLIDATION_ENABLED=false` αν θέλετε λειτουργία χωρίς LLM. Η εξαγωγή γράφου είναι ξεχωριστή σημαία: ```env GRAPH_EXTRACTION_ENABLED=true # CONSOLIDATION_ENABLED=false # opt out of auto-consolidation ``` ### Μεταβλητές Περιβάλλοντος Δημιουργήστε το `~/.agentmemory/.env`: ```env # LLM provider (pick one — default is the no-op provider: no LLM calls) # ANTHROPIC_API_KEY=sk-ant-... # ANTHROPIC_BASE_URL=... # Optional: Anthropic-compatible proxy / Azure # GEMINI_API_KEY=... # OPENROUTER_API_KEY=... # MINIMAX_API_KEY=... # OPENAI_API_KEY=*** # NOTE: this same key auto-activates BOTH the # # OpenAI LLM provider (here) AND the OpenAI # # embedding provider (further below). Set # # OPENAI_API_KEY_FOR_LLM=false to scope it # # to embeddings only. # OPENAI_BASE_URL=https://api.openai.com # Optional: override for Azure / vLLM / LM Studio / proxies # # Azure: https://.openai.azure.com/openai/deployments/ # # Auto-detected from `.openai.azure.com` hostname; uses # # api-key header + api-version query param. # OPENAI_API_VERSION=2024-08-01-preview # Optional: Azure api-version query param # OPENAI_MODEL=gpt-5.6-luna # Optional: default model # OPENAI_TIMEOUT_MS=60000 # Optional: OpenAI-scoped alias for the outbound fetch # # timeout. Takes precedence over AGENTMEMORY_LLM_TIMEOUT_MS # # for back-compat with v0.9.17. New configs should # # prefer the global AGENTMEMORY_LLM_TIMEOUT_MS below. # OPENAI_REASONING_EFFORT=none # Optional: "low" | "medium" | "high" | "none" # # Honored only by OpenAI's reasoning models (o1, o3, # # gpt-*-reasoning) and providers that mirror that # # schema (Ollama Cloud thinking models). Standard # # chat models reject this field with 400. Set to # # "none" for thinking models that return reasoning # # but no content. # OPENAI_API_KEY_FOR_LLM=false # Optional: set to false to skip OpenAI auto-detection # # for LLM (useful if you only want OpenAI for embeddings) # Opt-in Claude-subscription fallback (spawns @anthropic-ai/claude-agent-sdk); # leave OFF unless you understand the Stop-hook recursion risk: # AGENTMEMORY_ALLOW_AGENT_SDK=true # Embedding provider (BM25-only when unset; local is an explicit opt-in) # EMBEDDING_PROVIDER=local # VOYAGE_API_KEY=... # OPENAI_API_KEY=sk-... # OPENAI_BASE_URL=https://api.openai.com # Override for Azure / vLLM / LM Studio / proxies # OPENAI_EMBEDDING_MODEL=text-embedding-3-small # OPENAI_EMBEDDING_DIMENSIONS=1536 # Required when the model is not in the known-models table # OPENAI_EMBEDDING_BASE_URL=https://... # Embeddings only; falls back to OPENAI_BASE_URL # OPENAI_EMBEDDING_API_KEY=sk-... # Embeddings only; wins over OPENAI_API_KEY when set # Outbound LLM / embedding timeout # AGENTMEMORY_LLM_TIMEOUT_MS=60000 # Default: 60 000 ms (60 s). Applies to every # raw-fetch provider (Gemini, OpenRouter, MiniMax, # OpenAI LLM, OpenAI/Cohere/Voyage/OpenRouter # embedding). For the OpenAI LLM path, the # OpenAI-scoped OPENAI_TIMEOUT_MS alias (above) # takes precedence when set, for back-compat # with v0.9.17. # Increase for slow networks or large batch calls; # decrease to fail-fast on rate-limit holds. # Search tuning # BM25_WEIGHT=0.4 # VECTOR_WEIGHT=0.6 # TOKEN_BUDGET=2000 # Auth (generated into ~/.agentmemory/secret on first start when unset) # AGENTMEMORY_SECRET=your-secret # VIEWER_ALLOWED_ORIGINS=https://memory.example.com # AGENTMEMORY_IMPORT_ROOT=~/projects # Ports (defaults: 3111 API, 3113 viewer) # III_REST_PORT=3111 # Engine usage telemetry (iii). Off unless you set it; true opts in. # III_TELEMETRY_ENABLED=false # Features # AGENTMEMORY_AUTO_COMPRESS=false # OFF by default. Requires an LLM # provider as well. When both are on, # every PostToolUse hook calls your # LLM provider to compress the # observation — expect significant # token spend on active sessions. # AGENTMEMORY_SLOTS=false # OFF by default. Editable pinned # memory slots — persona, # user_preferences, tool_guidelines, # project_context, guidance, # pending_items, session_patterns, # self_notes. Size-limited; agent # edits via memory_slot_* tools. # Pinned slots addressable for # SessionStart injection. # AGENTMEMORY_REFLECT=false # OFF by default. Requires SLOTS=on. # Stop hook fires mem::slot-reflect: # scans recent observations, auto- # appends TODOs to pending_items, # counts patterns in # session_patterns, records touched # files in project_context. Fire- # and-forget; does not block. # AGENTMEMORY_INJECT_CONTEXT=false # OFF by default. When on: # - SessionStart may inject ~1-2K # chars of project context into # the first turn of each session # (this is what actually reaches # the model — Claude Code treats # SessionStart stdout as context) # - PreToolUse fires /agentmemory/enrich # on every file-touching tool call # (resource cleanup, not a token # fix — PreToolUse stdout is debug # log only per Claude Code docs) # Observations are still captured via # PostToolUse regardless of this flag. # GRAPH_EXTRACTION_ENABLED=false # AGENTMEMORY_LLM_NOTHINK=1 # Local reasoning models only: ask the # model to skip its hidden thinking pass # during graph extraction. Faster runs; # relation quality can drop slightly. # CONSOLIDATION_ENABLED=false # on by default when an LLM provider is configured # LESSON_DECAY_ENABLED=true # OBSIDIAN_AUTO_EXPORT=false # AGENTMEMORY_EXPORT_ROOT=~/.agentmemory # CLAUDE_MEMORY_BRIDGE=false # SNAPSHOT_ENABLED=false # Storage and durability # AGENTMEMORY_STATE_BACKEND=file # file (default) or redis; see "Storage backend" below # AGENTMEMORY_REDIS_URL=redis://localhost:6379 # Required with redis, plain redis:// only # AGENTMEMORY_STATE_SAVE_INTERVAL_MS=2000 # How often the engine writes file state to disk. # A hard kill loses at most this window. # AGENTMEMORY_INDEX_SAVE_INTERVAL_MS=600000 # Minimum time between search index saves; # shutdown and deletes still save at once. # AGENTMEMORY_GRAPH_COMPACT_ON_BOOT=true # One-time background trim of oversized graph # provenance; false skips it # Sessions # AGENTMEMORY_SESSION_SWEEP_ENABLED=true # Hourly sweep marks sessions left active past # the threshold as abandoned. Deletes nothing; # new activity makes the session active again. # AGENTMEMORY_SESSION_SWEEP_STALE_HOURS=24 # Capture filters (hooks) # AGENTMEMORY_CAPTURE_ALLOW= # Comma or space list of tool names or globs; # when set, only these tools are captured # AGENTMEMORY_CAPTURE_DENY= # Extra names or globs to skip, added to the # defaults: memory_*, toolsearch, # listmcpresources, fetchmcpresource # AGENTMEMORY_CAPTURE_OUTPUT_MAX=8000 # Max characters of tool output per observation # AGENTMEMORY_PRE_COMPACT_BUDGET=1500 # Token budget for PreCompact context; 0 disables # Audit log # AGENTMEMORY_AUDIT_RETENTION_MONTHS=0 # Drop month scopes older than N months; 0 keeps all # AGENTMEMORY_AUDIT_INDEX_PERSIST=false # 1 or true records index migration and cleanup # rows (debugging only) # Team # TEAM_ID= # USER_ID= # TEAM_MODE=private # Tool visibility: "all" (54 tools, default) or "core" (8 tools, lean) # AGENTMEMORY_TOOLS=core ``` ---

API

138 endpoints στη θύρα `3111`. Το REST API συνδέεται στο `127.0.0.1` από προεπιλογή. Τα προστατευμένα endpoints απαιτούν `Authorization: Bearer `, και τα endpoints mesh sync απαιτούν ένα ρητά ρυθμισμένο `AGENTMEMORY_SECRET` και στους δύο peers. **Η πιστοποίηση είναι ενεργή από προεπιλογή.** Όταν το `AGENTMEMORY_SECRET` δεν έχει ρυθμιστεί (στο shell ή στο `~/.agentmemory/.env`), ο διακομιστής δημιουργεί ένα τυχαίο secret στην πρώτη εκκίνηση και το αποθηκεύει στο `~/.agentmemory/secret` με mode `0600`. Κάθε ενσωματωμένος client το διαβάζει από εκεί όταν μιλά με έναν τοπικό διακομιστή: το CLI, το viewer, τα hooks κάτω από το `plugin/scripts`, ο διακομιστής MCP και το shim `@agentmemory/mcp`, οι ρυθμίσεις που γράφει το `agentmemory connect`, και οι ενσωματωμένες ενσωματώσεις OpenCode, Pi, OpenClaw, Hermes, και filesystem-watcher. Το αποθηκευμένο secret αποστέλλεται μόνο σε loopback URLs (`localhost`, `127.0.0.0/8`, `::1`). Ένα ρητό `AGENTMEMORY_SECRET` υπερισχύει πάντα, και οι απομακρυσμένοι clients εξακολουθούν να το χρειάζονται ρυθμισμένο. Το Docker και τα entrypoints του `deploy/` δημιουργούν και εξάγουν ήδη το δικό τους secret. Για να καλέσετε το API χειροκίνητα: ```bash curl -H "Authorization: Bearer $(cat ~/.agentmemory/secret)" http://localhost:3111/agentmemory/health ``` **Κανόνες αιτημάτων για εγγραφές.** Τα αιτήματα `POST`, `PUT`, `PATCH`, και `DELETE` προς το REST API και το viewer πρέπει να στέλνουν `Content-Type: application/json` (μια παράμετρος `charset` είναι εντάξει) όποτε φέρουν ένα σώμα, και μια κεφαλίδα `Origin`, όταν υπάρχει, πρέπει να είναι μια προέλευση loopback για τη ρυθμισμένη θύρα REST ή viewer ή να αναφέρεται στο `VIEWER_ALLOWED_ORIGINS` (διαχωρισμένο με κόμματα, π.χ. `https://memory.example.com`). Οι clients που δεν στέλνουν κεφαλίδα `Origin` (CLI, hooks, MCP, curl, server-to-server) δεν επηρεάζονται. Το viewer δέχεται επίσης τη δική του προέλευση. **Διαδρομές αρχείων.** Τα endpoints που διαβάζουν ή γράφουν αρχεία (`/compress-file`, `/replay/import-jsonl`, `/graph/import-graphify`) δέχονται μόνο διαδρομές κάτω από το `~/.agentmemory`, τον κατάλογο δεδομένων του instance, ή έναν κατάλογο που αναφέρεται στο `AGENTMEMORY_IMPORT_ROOT` (διαχωρίστε πολλούς με `:`, ή `;` σε Windows). Το `/replay/import-jsonl` δέχεται επίσης το προεπιλεγμένο του `~/.claude/projects`. Το `/obsidian/export` παραμένει εντός του `AGENTMEMORY_EXPORT_ROOT` και το `/migrate` εντός του `~/.agentmemory`. Τα symlinks επιλύονται πριν από κάθε έλεγχο. **Απόκρυψη μυστικών.** Κλειδιά API, bearer tokens, blocks ιδιωτικών κλειδιών PEM, και διαπιστευτήρια ενσωματωμένα σε URLs (`scheme://user:password@host`) αποκρύπτονται πριν αποθηκευτεί το κείμενο, σε κάθε διαδρομή εγγραφής: παρατηρήσεις, remember, evolve, slots, μαθήματα, ενέργειες, sketches, signals, σημεία ελέγχου, imports, jsonl replay, mesh sync, κοινοποιήσεις ομάδας, έξοδο συμπίεσης και σύνοψης, crystals, και κόμβοι γράφου.
Βασικά endpoints | Μέθοδος | Διαδρομή | Περιγραφή | |--------|------|-------------| | `GET` | `/agentmemory/health` | Έλεγχος υγείας (πάντα δημόσιο) | | `GET` | `/agentmemory/status` | Τι πάει στραβά και πώς να το διορθώσετε (HTML για browsers, JSON διαφορετικά) | | `GET` | `/agentmemory/viewer/snapshot` | Όλα όσα δείχνει το viewer, σε μία απάντηση | | `POST` | `/agentmemory/session/start` | Εκκίνηση συνεδρίας + λήψη context | | `POST` | `/agentmemory/session/end` | Τέλος συνεδρίας | | `POST` | `/agentmemory/observe` | Καταγραφή παρατήρησης (δείτε την παράδοση καταγραφής παρακάτω) | | `GET` | `/agentmemory/capture` | Inbox καταγραφής, dead letters, και offline spool | | `POST` | `/agentmemory/capture/retry` | Επανάληψη καταγραφών dead-letter | | `POST` | `/agentmemory/capture/drain` | Αποστολή του τοπικού offline spool τώρα | | `POST` | `/agentmemory/smart-search` | Υβριδική αναζήτηση | | `POST` | `/agentmemory/context` | Δημιουργία context | | `POST` | `/agentmemory/remember` | Αποθήκευση σε μακροπρόθεσμη μνήμη | | `POST` | `/agentmemory/forget` | Διαγραφή παρατηρήσεων | | `POST` | `/agentmemory/enrich` | Context αρχείου + μνήμες + bugs | | `GET` | `/agentmemory/profile` | Προφίλ project | | `GET` | `/agentmemory/export` | Εξαγωγή όλων των δεδομένων | | `POST` | `/agentmemory/import` | Εισαγωγή από JSON | | `POST` | `/agentmemory/graph/query` | Ερώτημα γράφου γνώσης | | `POST` | `/agentmemory/graph/compact` | Περιορισμός υπερμεγέθους προέλευσης γράφου | | `POST` | `/agentmemory/team/share` | Κοινοποίηση σε ομάδα | | `GET` | `/agentmemory/audit` | Ιστορικό ελέγχου | Πλήρης λίστα endpoints: [`src/triggers/api.ts`](../src/triggers/api.ts)
**Παράδοση καταγραφής.** Τα hooks στέλνουν κάθε παρατήρηση μία φορά στο `POST /agentmemory/observe` με ένα `eventId`. Αυτό είναι το δικό του id του host για την κλήση όταν το payload έχει ένα (για παράδειγμα το `tool_use_id` του Claude Code), διαφορετικά ένα hash της συνεδρίας, του τύπου hook, του ονόματος εργαλείου, της εισόδου, της εξόδου, και του timestamp του host. Ο διακομιστής γράφει το event σε ένα inbox καταγραφής στο state store, αποθηκεύει την παρατήρηση, και μετά αφαιρεί την καταχώρηση του inbox. Ο κωδικός κατάστασης λέει τι συνέβη: | Κατάσταση | πεδίο `status` | Σημασία | |---|---|---| | `201` | `accepted` | Αποθηκεύτηκε. Το `observationId` είναι η νέα παρατήρηση. | | `202` | `accepted` (`state: "retrying"`) | Έγινε δεκτό, αλλά η αποθήκευση απέτυχε. Ο διακομιστής το ξαναδοκιμάζει, και μετά από επανεκκίνηση. | | `200` | `duplicate` | Αυτό το `eventId` έγινε ήδη δεκτό. Το `observationId` είναι η υπάρχουσα παρατήρηση· δεν αποθηκεύεται τίποτα νέο. | | `400` / `422` | `rejected` | Μη έγκυρο payload, ή η αποθήκευση απέτυχε οριστικά (το event κρατιέται ως dead letter). | | `503` | `rejected` (`retryable: true`) | Το inbox είναι γεμάτο (`AGENTMEMORY_CAPTURE_INBOX_MAX`). Τα hooks κάνουν spool το event και το στέλνουν αργότερα. | Τα αποτυχημένα events ξαναδοκιμάζονται κάθε `AGENTMEMORY_CAPTURE_RETRY_INTERVAL_MS` (10 δευτ.) με διπλασιαζόμενο backoff, έως `AGENTMEMORY_CAPTURE_MAX_ATTEMPTS` (5). Τα events που συνεχίζουν να αποτυγχάνουν παραμένουν στο inbox ως dead letters, αναφέρονται στο `/agentmemory/status` και στη σελίδα Health του viewer, και μπορούν να ξαναδοκιμαστούν με `POST /agentmemory/capture/retry` (`{"eventId": "..."}` ή `{"all": true}`). Τα αποδεκτά event ids θυμούνται για `AGENTMEMORY_CAPTURE_DEDUP_HOURS` (168 ώρες, το πολύ `AGENTMEMORY_CAPTURE_EVENTS_MAX` ids), οπότε ένα hook που αναπαράγεται μετά από timeout ή επανεκκίνηση αποθηκεύεται μία φορά, ενώ δύο ξεχωριστές κλήσεις εργαλείων με τα δικά τους host ids αποθηκεύονται δύο φορές ακόμα κι αν το περιεχόμενό τους είναι ταυτόσημο. Όταν μια παρατήρηση διαγράφεται (forget, διαγραφή συνεδρίας, εκδίωξη, αυτόματη διαγραφή, ή ένα import που αντικαθιστά το store), το event της σημαίνεται ως διαγραμμένο πριν αφαιρεθεί η παρατήρηση, οπότε μια αναπαραγωγή αυτού του event εντός του ίδιου παραθύρου απαντιέται ως duplicate και δεν αποθηκεύει τίποτα. Το state store γράφει στον δίσκο κάθε 2 δευτερόλεπτα, οπότε ένα event που έχει απαντηθεί μπορεί ακόμα να βρίσκεται μόνο στη μνήμη για μια στιγμή. Για να το καλύψει αυτό, κάθε απάντηση `2xx` φέρει επίσης το `bootId` του διακομιστή (νέο σε κάθε εκκίνηση), το `acceptedAt`, και το `durableAfterMs` (το διάστημα αποθήκευσης συν 1.5 δευτ. στο file store, 1.5 δευτ. στο redis, όπου η μονιμότητα είναι ρύθμιση του χειριστή). Τα hooks κρατούν το event στο τοπικό spool μέχρι να περάσει αυτό το παράθυρο και το διαγράφουν σε μια επόμενη κλήση χωρίς άλλο αίτημα. Αν το `bootId` έχει αλλάξει μέχρι τότε, ο διακομιστής επανεκκινήθηκε, οπότε το hook στέλνει ξανά το event με το ίδιο `eventId`· ένα event που είχε φτάσει στον δίσκο δεν αποθηκεύεται δύο φορές. Ο διακομιστής στέλνει επίσης τέτοια events ο ίδιος κατά την εκκίνηση και σε κάθε διάστημα retry, οπότε μια επανεκκίνηση δεν χάνει τίποτα ακόμα και όταν δεν τρέξει κανένα hook μετά. Τα παλαιότερα hooks αγνοούν τα επιπλέον πεδία, και τα νέα hooks έναντι ενός παλαιότερου διακομιστή απορρίπτουν το event στο `2xx` όπως πριν. Όταν ο διακομιστής είναι εκτός λειτουργίας, δεν απαντά εγκαίρως, ή επιστρέφει 5xx, το hook προσθέτει την παρατήρηση σε ένα τοπικό αρχείο spool, `/capture-spool/-.jsonl` (παρακάμψτε τον φάκελο με `AGENTMEMORY_CAPTURE_SPOOL_DIR`). Το αρχείο είναι ιδιωτικό για τον χρήστη σας (mode 600), τα μυστικά αποκρύπτονται με τον ίδιο τρόπο που τα αποκρύπτει ο διακομιστής, κρατά το πολύ `AGENTMEMORY_CAPTURE_SPOOL_MAX_BYTES` (5 MiB) και αφαιρεί καταχωρήσεις παλαιότερες από `AGENTMEMORY_CAPTURE_SPOOL_MAX_AGE_HOURS` (168). Όταν είναι γεμάτο, οι νέες καταχωρήσεις αφαιρούνται και μετρούνται, και το `/agentmemory/status` το αναφέρει. Το hook συνεχίζει να κάνει exit 0 εντός του χρονικού ορίου του και δεν προσθέτει κανένα αίτημα όταν ο διακομιστής είναι υγιής. Το spool αποστέλλεται στην επόμενη εκκίνηση και από το πρώτο hook που φτάνει ξανά στον διακομιστή, σε μια διαδικασία παρασκηνίου ώστε ο agent να μην περιμένει. Τα event ids το κάνουν ασφαλές: μια παρατήρηση που είχε φτάσει πριν από ένα timeout δεν αποθηκεύεται δύο φορές. Το `npx @agentmemory/agentmemory capture` δείχνει το spool και το inbox του διακομιστή, το `--drain` στέλνει το spool τώρα, και το `GET /agentmemory/capture` επιστρέφει το ίδιο ως JSON. Ρυθμίστε `AGENTMEMORY_CAPTURE_SPOOL=false` για να απενεργοποιήσετε το spool. **Συμπύκνωση προέλευσης γράφου.** Κάθε κόμβος και ακμή γράφου γνώσης κρατά τα ids των 32 πιο πρόσφατων παρατηρήσεων από τις οποίες προήλθε. Stores γραμμένα πριν από αυτό το όριο μπορούν να κρατούν χιλιάδες ids ανά hot κόμβο, κάτι που κάνει την αναζήτηση γράφου και το viewer αργά ή ρίχνει τον worker. Το agentmemory το διορθώνει μόνο του: στην πρώτη εκκίνηση μετά από αναβάθμιση περιορίζει κάθε κόμβο, ακμή, αντικατεστημένη ακμή (το χρονικό ιστορικό γράφου), και το cached snapshot στο όριο, στο παρασκήνιο, σε μικρές φέτες με μια παύση μεταξύ τους, ώστε η αναζήτηση, η καταγραφή, και το viewer να συνεχίζουν να λειτουργούν. Αποθηκεύει την πρόοδό του, συνεχίζει μετά από επανεκκίνηση, και δεν ξανατρέχει μόλις τελειώσει. Το `/agentmemory/status` και η σελίδα Health του viewer το δείχνουν ως εκκρεμές, σε εξέλιξη (με το τρέχον scope και θέση), ολοκληρωμένο, ή αποτυχημένο. Ρυθμίστε `AGENTMEMORY_GRAPH_COMPACT_ON_BOOT=false` για να το απενεργοποιήσετε. Για να το εκτελέσετε χειροκίνητα, καλέστε `POST /agentmemory/graph/compact`. Διασχίζει τα ευρετήρια ονόματος και edge-key αντί να απαριθμεί κάθε κόμβο και ακμή, και είναι ασφαλές να ξανατρέξει. Όταν περιορίζει ids, γράφει μια καταχώρηση audit `graph_compact`. ```bash curl -X POST http://localhost:3111/agentmemory/graph/compact -H "Content-Type: application/json" -d '{}' ``` Σε ένα μεγάλο store, ή όταν η κλήση επιστρέφει 504, εκτελέστε το σε φέτες. Στείλτε `scope` (`nodes`, `edges`, ή `history`), `offset`, και `limit`, και μετά καλέστε ξανά με το επιστρεφόμενο `nextOffset` μέχρι να γίνει `null`. Κάντε το αυτό για τα `nodes`, `edges`, και `history`, και τελειώστε με μία κλήση `{"scope":"snapshot"}`, επειδή μια κλήση σε φέτες δεν αγγίζει το cached snapshot. ```bash curl -X POST http://localhost:3111/agentmemory/graph/compact -H "Content-Type: application/json" -d '{"scope":"nodes","offset":0,"limit":200}' curl -X POST http://localhost:3111/agentmemory/graph/compact -H "Content-Type: application/json" -d '{"scope":"snapshot"}' ``` ---

Για Προγραμματιστές

```bash npm run dev # Hot reload npm run build # Production build npm test # 2,500+ tests npm run test:integration # API tests (requires running services) ``` **Προαπαιτούμενα:** Node.js >= 20 με npm/npx· [iii-engine](https://iii.dev/docs) v0.22.1 ή Docker. Η αυτόματη εγκατάσταση του engine σε macOS/Linux απαιτεί επίσης `curl`, ένα POSIX `sh`, και `tar`· το native Windows χρησιμοποιεί το χειροκίνητο καθορισμένο `iii.exe`, WSL2, ή Docker Desktop.

Άδεια Χρήσης

[Apache-2.0](../LICENSE)