Engram

io.github.kael-bit由 GitHub 账号 kael-bit 发布v0.10.0更新于 Oct 24, 2026

Hierarchical memory for AI agents. Three-layer (buffer/working/core) with decay and promotion.

发布方自己的服务:Engram

已验证STDIO仅桌面知识与记忆AI 与机器学习

概览

AI 生成的概览

为 AI 助手提供分层长期记忆的本地服务器,具备三层衰减与晋升机制,让助手能存储、搜索并在开场时恢复上下文。

可以做什么
存储与唤回记忆:写入新记忆、按语义或关键词搜索,并按令牌预算取回结果。管理记忆生命周期:三层(缓冲、工作、核心)按重要度衰减与晋升,并自动去重与合并。浏览主题树:由向量聚类与 LLM 命名,可先扫目录再展开特定主题。按标签触发:用 trigger 标签在动作前取回相关教训。会话恢复:一次取回核心规则、近期变动、主题索引与触发清单。用命名空间隔离不同项目的记忆。
适用场景
适合希望助手在多次会话之间保留长期记忆,并自动整理、淡忘与合并重复内容的使用者。若需要跨项目隔离记忆,或想在部署等风险操作前自动唤回相关经验,也值得加入。
运行要求
以 npm 包在本机运行,需要 Node.js 与 npx。需连接本机的 engram 服务器,用 ENGRAM_URL 指定地址、用 ENGRAM_API_KEY 验证。若要启用智能功能(分类、晋升判断、合并、主题命名),需另行配置兼容的 LLM 端点与密钥。
安装前请注意
需提供 ENGRAM_API_KEY 作为验证,请妥善保管。若启用 LLM 功能,记忆内容会发送给所配置的第三方模型服务,可能包含敏感信息。服务器会自动写入、合并并削减记忆重要度,后台维护会定期改动数据。安装脚本以 curl 直接执行远程内容,运行前应先检查。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Engram,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

engram-rs

[CI] [License: MIT] [Rust] [GitHub stars] [Docker]

Memory engine for AI agents. Two axes: time (three-layer decay & promotion) and space (self-organizing topic tree). Important memories get promoted, noise fades, related knowledge clusters automatically.

Most agent memory is a flat store — dump everything in, keyword search to get it back. No forgetting, no organization, no lifecycle. engram-rs adds the part that makes memory actually useful: the ability to forget what doesn't matter and surface what does.

[engram demo — store, context reset, recall]

Single Rust binary, one SQLite file, zero external dependencies. No Python, no Redis, no vector DB — curl | bash and it runs. ~10 MB binary, ~100 MB RSS, single-digit ms search latency.

Quick Start

bash
# Install (interactive — will prompt for embedding provider config)curl -fsSL https://raw.githubusercontent.com/kael-bit/engram-rs/main/install.sh | bash
# Store a memorycurl -X POST http://localhost:3917/memories \  -d '{"content": "Always run tests before deploying", "tags": ["deploy"]}'
# Recall by meaningcurl -X POST http://localhost:3917/recall \  -d '{"query": "deployment checklist"}'
# Restore full context (session start)curl http://localhost:3917/resume

What It Does

Three-Layer Lifecycle

Inspired by the Atkinson–Shiffrin memory model, memories are managed across three layers by importance:

Buffer (short-term) → Working (active knowledge) → Core (long-term identity)      ↓                       ↓                           ↑   eviction              importance decay           LLM quality gate
  • Buffer: Entry point for all new memories. Temporary staging — evicted when below threshold
  • Working: Promoted via consolidation. Never deleted, importance decays at different rates by kind
  • Core: Promoted through LLM quality gate. Never deleted

LLM Quality Gate

Promotion isn't rule-based guesswork — an LLM evaluates each memory in context and decides whether it genuinely warrants long-term retention.

Buffer → [LLM gate: "Is this a decision, lesson, or preference?"] → WorkingWorking → [sustained access + LLM gate] → Core

Automatic Decay

Decay is activity-driven — it only fires during active consolidation cycles, not wall-clock time. If the system is idle, memories stay intact.

Exponential decay follows the Ebbinghaus forgetting curve — fast at first, then long-tail. Memories never fully vanish (floor = 0.01), remaining retrievable under precise queries. When a memory is recalled, it gets an activation boost, strengthening frequently-used knowledge.

KindDecay rateHalf-lifeUse case
episodicFastest~35 epochsEvents, experiences, time-bound context
semanticMedium~58 epochsKnowledge, preferences, lessons (default)
proceduralSlowest~173 epochsWorkflows, instructions, how-to

Algorithm Visualizations

ChartWhat it shows
[图片]Sigmoid score compression. Raw scores are mapped through a sigmoid function, approaching 1.0 asymptotically. High-relevance results remain distinguishable instead of being crushed into the same value.
[图片]Ebbinghaus forgetting curve. Exponential decay with kind-differentiated rates — episodic memories fade fastest, procedural slowest. Floor at 0.01 means memories never fully vanish; they remain retrievable under precise queries.
[图片]Kind × layer weight bias. Additive biases adjust memory weight by type and layer. Procedural+core memories rank highest, episodic+buffer lowest — but the spread stays bounded so no single combination dominates.
[图片]Reinforcement signals. Repetition and access bonuses follow logarithmic saturation. Early interactions matter most; later ones contribute diminishing returns, discriminating between "used occasionally" and "used daily".
[图片]Use it or lose it. Left: a memory that's never recalled decays into the buffer layer. Right: periodic recall triggers activation boosts that keep the memory in the working layer. Dashed line shows the unrecalled trajectory for comparison.

Semantic Dedup & Merge

Two memories saying the same thing in different words? Detected and merged automatically:

"use PostgreSQL for auth" + "auth service runs on Postgres"→ Merged into one, preserving context from both

Self-Organizing Topic Tree

Vector clustering groups related memories together, LLM names the clusters. No manual tagging required:

Memory Architecture├── Three-layer lifecycle [4]├── Embedding pipeline [3]└── Consolidation logic [5]Deploy & Ops├── CI/CD procedures [3]└── Production incidents [2]User Preferences [6]

The problem this solves: vector search requires asking the right question. Topic trees let agents browse by subject — scan the directory, drill into the right branch.

Triggers

Tag a memory with trigger:deploy, and the agent can recall all deployment lessons before executing:

bash
curl -X POST http://localhost:3917/memories \  -d '{"content": "LESSON: always backup DB before migration", "tags": ["trigger:deploy", "lesson"]}'
# Pre-deployment checkcurl http://localhost:3917/triggers/deploy

Session Recovery

Agent wakes up, calls GET /resume, gets full context back. No file scanning needed:

=== Core (24) ===deploy: test → build → stop → start (procedural)LESSON: never force-push to main...
=== Recent ===switched auth to OAuth2published API docs
=== Topics (Core: 24, Working: 57, Buffer: 7) ===kb1: "Deploy Procedures" [5]kb2: "Auth Architecture" [3]kb3: "Memory Design" [8]...
Triggers: deploy, git-push, database-migration
SectionContentPurpose
CoreFull text of permanent rules and identityThe unforgettable stuff
RecentRecently changed memoriesShort-term continuity
TopicsTopic index (table of contents)Drill in on demand, no full load
TriggersPre-action tagsAuto-recall lessons before risky ops

Agent reads the directory, finds relevant topics, calls POST /topic to expand on demand.

Search & Retrieval

Semantic embeddings + BM25 keyword search with CJK tokenization (jieba). IDF-weighted scoring — rare terms get boosted, common terms auto-downweighted. No stopword lists to maintain.

bash
# Semantic searchcurl -X POST http://localhost:3917/recall \  -d '{"query": "how do we handle auth", "budget_tokens": 2000}'# Note: min_score defaults to 0.30. Use "min_score": 0.0 to get all results.
# Topic drill-downcurl -X POST http://localhost:3917/topic \  -d '{"ids": ["kb3"]}'

Background Maintenance

Fully automatic, activity-driven — no writes means the cycle is skipped:

Consolidation (every 30 minutes)

  1. Decay — reduce importance of unaccessed memories
  2. Dedup — merge near-identical memories (cosine > 0.78)
  3. Triage — LLM categorizes new Buffer memories
  4. Gate — LLM batch-evaluates promotion candidates
  5. Reconcile — resolve ambiguous similar pairs (results cached)
  6. Topic tree rebuild — re-cluster and name

Topic Distillation — when a topic grows too large (10+ memories), overlapping content is condensed into fewer, richer entries.

Namespace Isolation

Single instance, multiple projects. Use X-Namespace to isolate:

bash
curl -X POST http://localhost:3917/memories \  -H "X-Namespace: my-project" \  -d '{"content": "API uses OAuth2 bearer tokens"}'

Install

bash
# macOS / Linuxcurl -fsSL https://raw.githubusercontent.com/kael-bit/engram-rs/main/install.sh | bash
# Windows (PowerShell)irm https://raw.githubusercontent.com/kael-bit/engram-rs/main/install.ps1 | iex

Docker

bash
docker run -d --name engram-rs \  -p 3917:3917 \  -v engram-data:/data \  -e ENGRAM_LLM_URL=https://api.openai.com/v1 \  -e ENGRAM_LLM_KEY=sk-... \  ghcr.io/kael-bit/engram-rs:latest

LLM Configuration

engram-rs works without an LLM — keyword search and rule-based lifecycle still function. Adding an LLM unlocks intelligent features (triage, gate, merge, topic naming):

bash
export ENGRAM_LLM_URL=https://api.openai.com/v1export ENGRAM_LLM_KEY=sk-...
# Any OpenAI-compatible API (Ollama, LM Studio, etc.)export ENGRAM_LLM_URL=http://localhost:11434/v1
# Anthropic nativeexport ENGRAM_LLM_PROVIDER=anthropicexport ENGRAM_LLM_KEY=sk-ant-...

Two-tier model config — strong model for judgment, lightweight for text processing:

bash
ENGRAM_GATE_MODEL=gpt-4o          # quality decisionsENGRAM_LLM_MODEL=gpt-4o-mini     # text processing

For AI Agents

Add to your agent's system prompt:

Set up engram-rs (persistent memory) by following the guide at:https://raw.githubusercontent.com/kael-bit/engram-rs/main/docs/SETUP.md

Integration

Works with Claude Code, Cursor, Windsurf, OpenClaw, and any MCP-compatible tool.

17 MCP tools (MCP docs) | Full HTTP API (Setup guide)

bash
# MCP (Claude Code)npx engram-rs-mcp
# MCP (Cursor / Windsurf / generic){"mcpServers": {"engram": {"command": "npx", "args": ["-y", "engram-rs-mcp"]}}}

Web Dashboard

Built-in web UI at http://localhost:3917/ui for browsing memories, viewing the topic tree, and monitoring LLM usage.

Specs

Binary~10 MB
Memory~100 MB RSS in production
StorageSQLite, no external database
LanguageRust
PlatformsLinux, macOS, Windows (x86_64 + aarch64)
LicenseMIT

License

MIT

[图片]

来源:README.md,提交 a9134e0

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.10.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Engram 集成