agentmem

io.github.Thezenmonster由 GitHub 帳號 Thezenmonster 發布v0.2.5更新於 Oct 24, 2026

Governed memory for coding agents. Trust lifecycle, conflict detection, health scoring.

已驗證STDIO僅桌面知識與記憶開發者工具

概覽

AI 產生的概覽

為編碼助理設計的本地記憶伺服器,依類型儲存專案記憶,具備信任狀態、衝突與過期偵測以及健康評分。

可以做什麼
  • 新增、更新、刪除與列出依專案隔離的類型化記憶(設定、缺陷、決策、流程、背景、回饋、工作階段)
  • 搜尋與召回記憶,召回結果依權杖預算打包,並依相關性、信任狀態、來源與新舊程度排序
  • 透過提升、棄用與取代操作管理記憶生命週期,從假設到生效再到已驗證
  • 儲存與載入工作階段狀態,讓助理接續上次的進度
  • 檢查記憶健康度、衝突與過期項目
適用情境
適合編碼助理在不同工作階段間反覆犯同樣錯誤,或把過時規則與現行規則混在一起時使用,也適合希望以本地檔案保存記憶並追蹤哪些內容仍然可信的情境。
執行需求
以本地 stdio 程序執行,從 PyPI 套件 quilmem 安裝並加上 mcp 附加元件,需要 Python 環境。不需 API 金鑰、帳號或雲端服務。資料存放在本地 SQLite 檔案中,需在用戶端設定中指定資料庫路徑與專案名稱。
安裝前請注意
此伺服器可寫入、更新與刪除已儲存的記憶,同步引擎也會依來源檔案變更棄用或恢復項目,請指向願意被修改的資料庫。記憶保存在本地 SQLite 檔案中,應將該檔案視為可能被分享或備份的專案知識。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 agentmem,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

agentmem

Shared memory for Claude Code, Cursor, and Codex that knows what's still true. Save sessions, catch stale and conflicting rules, and stop your agent from repeating old mistakes.

[PyPI] [Python] [License: MIT] [Tests]

The Problem

Your AI coding assistant forgets everything between sessions. It repeats old mistakes. It can't tell current rules from outdated ones. Context compresses and recovery is painful.

Most memory tools solve storage. agentmem solves trust.

Get Started (Claude Code / Cursor / Codex)

bash
pip install quilmem[mcp]agentmem init --tool claude --project myapp

That's it. Restart your editor. Your agent now has 13 memory tools. Run memory_health to confirm.

[agentmem demo: install, init, health check]

Python-only? pip install quilmem works without the MCP extra. See the Python API below.

60-Second Demo

python
from agentmem import Memory
mem = Memory()
# Store typed memoriesmem.add(type="bug", title="loudnorm undoes SFX levels",        content="Never apply loudnorm to final mix. It re-normalizes everything.",        status="validated")
mem.add(type="decision", title="Use per-line atempo",        content="Bake speed into per-line TTS. No global pass.",        status="active")
# Something you're not sure about yethypothesis = mem.add(type="decision", title="Maybe try 2-second gaps before CTA",        content="Hypothesis from last session. Needs testing.",        status="hypothesis")
# Search — validated and active memories rank highest.# Deprecated and superseded memories are excluded automatically.results = mem.search("audio mixing")
# Context-budgeted recall — fits the best memories into your token limitcontext = mem.recall("building a narration track", max_tokens=2000)
# Lifecycle — promote what's proven, deprecate what's notmem.promote(hypothesis.id)                # hypothesis -> active -> validatedmem.deprecate(hypothesis.id, reason="Disproven by data")
# Supersede: replace an outdated memory with a newer onereplacement = mem.add(type="decision", title="Use 1-second gaps before CTA",        content="Confirmed by A/B test.", status="active")mem.supersede(hypothesis.id, replacement.id)  # old points to replacement
# Health check — is your memory system trustworthy?from agentmem import health_checkreport = health_check(mem._conn)# Health: 85/100 | Conflicts: 0 | Stale: 2 | Validated: 14

What Makes This Different

Other memory tools store things. agentmem knows what's still true.

Mem0LettaMengramagentmem
Memory storageYesYesYesYes
Full-text searchVectorAgent-drivenKnowledge graphFTS5
Memory lifecycle statesNoPartialNohypothesis -> active -> validated -> deprecated -> superseded
Conflict detectionNoNoPartialBuilt-in
Staleness detectionNoNoNoBuilt-in
Health scoringNoNoNoBuilt-in
Provenance trackingNoNoNosource_path + source_hash
Trust-ranked recallNoNoNoValidated > active > hypothesis
Human-readable source filesNoNoNoCanonical markdown
Local-first, zero infrastructureNoSelf-host optionSelf-host optionYes, always
MCP serverSeparateSeparateYesBuilt-in

Truth Governance

The core idea: every memory has a status that tracks how much you should trust it.

hypothesis    New observation. Not yet confirmed. Lowest trust in recall.    |  active      Default. Currently believed true. Normal trust.    | validated    Explicitly confirmed. Highest trust in recall.
 deprecated   Was true, no longer. Excluded from recall. Kept for history. superseded   Replaced by a newer memory. Points to replacement.

Why this matters: Without governance, your agent's memory accumulates stale rules, contradictions, and outdated decisions. It doesn't know that the voice setting from January was overridden in March. It retrieves both and the LLM picks randomly. Governed memory solves this.

Conflict Detection

python
from agentmem import detect_conflicts
conflicts = detect_conflicts(mem._conn)# Found 2 conflict(s):#   !! [decision] "Always apply loudnorm to voice"#      vs [decision] "NEVER apply loudnorm to voice"#      Contradiction on shared topic (voice, loudnorm, audio)

agentmem finds memories that contradict each other:

  • Detects topic overlap (Jaccard similarity)
  • Separates duplicates from contradictions
  • Sentence-level negation matching (not just keyword scanning)
  • Severity: critical (both active) vs warning (one deprecated)

Staleness Detection

python
from agentmem import detect_stale
stale = detect_stale(mem._conn, stale_days=30)# [decision] "Use atempo 0.90" — Source changed since import (hash mismatch)# [bug] "Firewall blocks port" — Not updated in 45 days

Finds outdated memories by:

  • Age (not updated in N days)
  • Source file missing (referenced file was deleted)
  • Hash drift (source file content changed but memory wasn't updated)

Health Check

python
from agentmem import health_check
report = health_check(mem._conn)print(f"Health: {report.health_score}/100")print(f"Conflicts: {len(report.conflicts)}")print(f"Stale: {len(report.stale)}")

Scores your memory system 0-100 based on: conflicts, stale percentage, orphaned references, deprecated weight, and whether you have any validated memories.

Provenance-Aware Sync

Sync canonical markdown files into the DB with source tracking:

python
# Each memory tracks where it came frommem.add(type="bug", title="loudnorm lifts noise",        content="...",        source_path="/docs/errors.md",        source_section="Audio Bugs",        source_hash="a1b2c3d4e5f6")

The sync engine:

  • Same hash = skip (idempotent, re-running changes nothing)
  • Different hash = update (source file changed)
  • Section removed = deprecate (with reason)
  • Section restored = resurrect (reactivates deprecated memory)

Three Interfaces

Python API

python
from agentmem import Memory
mem = Memory("./my-agent.db", project="frontend")
# CRUDrecord = mem.add(type="decision", title="Use TypeScript", content="...")mem.get(record.id)mem.update(record.id, content="Updated reasoning.")mem.delete(record.id)mem.list(type="bug", limit=20)
# Search + recallresults = mem.search("typescript migration", type="decision")context = mem.recall("setting up the build", max_tokens=3000)
# Governancemem.promote(record.id)              # hypothesis -> active -> validatedmem.deprecate(record.id, reason="No longer relevant")replacement = mem.add(type="decision", title="Use v2 approach", content="...")mem.supersede(record.id, replacement.id)  # links old to replacement
# Session persistencemem.save_session("Working on auth refactor. Blocked on token refresh.")mem.load_session()                  # picks up where last instance left off
# Healthmem.stats()

CLI

bash
# Get started in 30 secondsagentmem init --tool claude --project myapp
# Check if everything's workingagentmem doctor
# Coreagentmem add --type bug --title "CSS grid issue" "Flexbox fallback needed"agentmem search "grid layout"agentmem recall "frontend styling" --tokens 2000
# Governanceagentmem promote <id>agentmem deprecate <id> --reason "Fixed in v2.3"agentmem healthagentmem conflictsagentmem stale --days 14
# Import + sessionsagentmem import ./errors.md --type bugagentmem save-session "Finished auth module, starting tests"agentmem load-session
# MCP serveragentmem serve

MCP Server

Built-in Model Context Protocol server for Claude Code, Cursor, and any MCP client.

bash
pip install quilmem[mcp]

Claude Code config (.claude/settings.json):

json
{  "mcpServers": {    "agentmem": {      "command": "agentmem",      "args": ["--db", "./memory.db", "--project", "myproject", "serve"],      "type": "stdio"    }  }}

MCP tools: add_memory, search_memory, recall_memory, update_memory, delete_memory, list_memories, save_session, load_session, promote_memory, deprecate_memory, supersede_memory, memory_health, memory_conflicts

Tell your agent how to use memory: Copy the agent instructions into your CLAUDE.md, .cursorrules, or AGENTS.md. This teaches your agent the session protocol, trust hierarchy, and when to search vs add.

Typed Memory

Seven types that cover real agent workflows:

TypeWhat it storesExample
settingConfiguration, parameters"Voice speed: atempo 1.08"
bugErrors and their fixes"loudnorm lifts noise floor"
decisionRules, policies, choices"3rd-person narration banned"
procedureWorkflows, pipelines"TTS -> speed -> 48kHz -> mix"
contextBackground knowledge"Project uses FFmpeg + Python 3.11"
feedbackUser corrections"Always pick, don't ask"
sessionCurrent work state"Working on auth. Blocked on tokens."

Trust-Ranked Recall

recall() doesn't just find relevant memories. It finds the most trustworthy relevant memories:

  1. FTS5 search returns candidates
  2. Each scored: relevance (25%) + trust status (20%) + provenance (20%) + recency (15%) + frequency (10%) + confidence (10%)
  3. Validated canonical memories rank above unprovenanced hypothesis memories
  4. Deprecated and superseded memories are excluded entirely
  5. Packed greedily into your token budget

Project Scoping

python
frontend = Memory("./shared.db", project="frontend")backend = Memory("./shared.db", project="backend")
frontend.search("bug")  # Only frontend bugsbackend.search("bug")   # Only backend bugs

Battle-Tested

This isn't theoretical. agentmem was built under production pressure over 2+ months of daily use:

  • 65+ YouTube Shorts produced with zero repeated production bugs
  • 330+ memories governing voice generation, FFmpeg assembly, image prompting, upload workflows
  • Every bug caught once, fixed once, never repeated
  • Governance engine reduced conflicts from 1,848 false positives to 11 real findings

How It Works

  • Storage: SQLite with WAL mode (concurrent reads, thread-safe)
  • Search: FTS5 with porter stemming and unicode61 tokenizer
  • Ranking: Composite score: text relevance + trust status + provenance + recency + frequency + confidence
  • Governance: Status lifecycle, conflict detection, staleness detection, health scoring
  • Sync: Provenance-aware with source hashing and resurrection
  • Zero infrastructure: No API keys, no cloud, no vector DB. Just a .db file.

License

MIT

來源:README.md,提交 f0b4961

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

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

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分