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 整合