agent-memory

agent-memory

Provides long-term memory for AI agents with per-user scoped recall, ranking by relevance, recency, and importance, consolidation of repeated events, and automatic forgetting.

Category
访问服务器

README

agent-memory

Long-term memory for agents, done properly. A memory service that keeps per-user memories, ranks recall by relevance, recency, and importance together, consolidates repeated events into semantic facts, and forgets low-value memories over time. Retrieval is always scoped, so one user's memory can never surface for another. Exposed as an MCP server so an agent can remember and recall over the protocol. Fully offline and keyless.

ci python license offline

An agent that forgets everything between sessions cannot help you twice. But naive memory is worse than none: dump every message into a vector store and recall returns the most recent chatter instead of the fact you need, or worse, one user's data leaks into another's session. This service treats memory as a ranking and governance problem, built from my retrieval and evaluation work.

What this demonstrates

Capability Where
Scoped memory: retrieval never crosses users memory.py
Ranking by relevance, recency, and importance together memory.py
Grounded recall with a refusal path recall.py
Consolidation of repeats into semantic facts memory.py
Decay and forgetting of low-value memories memory.py
Exposed as an MCP server server.py
Recall quality and isolation gated in CI evals.py

Architecture

flowchart LR
    E[events per user] --> S[(scoped store)]
    S --> C[consolidate repeats to facts]
    S --> D[decay and forget low value]
    Q[question + user scope] --> R{{relevance + recency + importance}}
    S --> R
    R --> A[grounded recall or refuse]

Quickstart

make dev            # venv + install -e ".[dev]"

amem demo           # ranked recall vs a most-recent baseline, plus consolidation and decay
amem recall "what is my favorite programming language" --scope alice
amem eval           # the recall and isolation gate
amem serve          # live MCP server: remember / recall / consolidate

No keys, no network. Embeddings are a deterministic hashing vectorizer; set a real embedder behind the same interface in production.

The gate that matters

amem eval answers questions whose facts were introduced in earlier sessions (report):

metric value gate
full_recall 1.000 >= 0.90
naive_recall (most-recent) 0.200 < full
precision_at_k 1.000 >= 0.80
cross_scope_leaks 0 = 0
consolidation_merged 2 reported
forgotten_after_decay 3 reported

The comparison is the point. Ranked recall answers every question; a most-recent baseline answers one in five, because the fact you asked about is usually an older memory buried under recent chatter. Scoped retrieval leaks nothing across users even though two users have a memory about the same topic. CI fails if recall drops, if the baseline is not beaten, or if a single cross-scope leak appears.

What it does

  • Ranks, not just stores. Recall combines relevance, recency, and importance, so a salient old fact beats a trivial recent one. Naive most-recent recall gets this wrong, which the eval measures directly.
  • Keeps users apart. Two users each say "my favorite language is ..."; each only ever recalls their own. Isolation is structural, not best-effort.
  • Consolidates. Repeated events are folded into a single semantic fact with boosted importance, so the store does not bloat with duplicates.
  • Forgets on purpose. Low-importance, old memories decay below a threshold and are pruned, while important facts survive. Forgetting is a feature, and the eval reports what was dropped.
  • Refuses. With nothing relevant in scope, recall says it does not remember rather than returning noise.

Design decisions

  • Scope is the first filter. Retrieval is restricted to the caller's scope before ranking, so cross-user leakage is impossible by construction.
  • One score, three signals. Relevance alone recalls stale facts; recency alone recalls chatter; importance alone ignores the query. Combining them is what makes recall useful.
  • Decay is query-free. Forgetting uses recency and importance only, so the store sheds low-value memories independent of any particular question.

Layout

src/agent_memory/  embed · memory · recall · server · evals · cli
data/  memories.jsonl · questions.jsonl
reports/  memory_report_example.md

Related repositories

Part of a portfolio on production ML and LLM engineering:

License

MIT (c) 2026 Taha Siddiqui

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选