mcpField
A
Agentmem

Agentmem

本地服务
thezenmonster.github.io记忆与知识628 周前更新

关于 Agentmem

Agentmem 是面向 Claude Code、Cursor 和 Codex 的本地优先 Agent 记忆系统,提供 Python API、命令行和内置 MCP 服务。它通过可信度状态、来源追踪、冲突与过时检测,帮助长期编码 Agent 管理可验证的项目记忆。

主要功能

  1. 01按类型保存与检索记忆
  2. 02可信度状态与排序召回
  3. 03检测冲突和过时记忆
  4. 04来源追踪及 Markdown 同步
  5. 05记忆健康评分
  6. 06SQLite 本地存储

适用场景

  1. 01跨编码会话保留项目决策
  2. 02查找并处理过期项目规则
  3. 03同步 Markdown 规范并追踪来源

MCP 相关

内置 MCP 服务向 Claude Code、Cursor 及其他兼容客户端提供记忆增删改查、会话管理、可信度调整和健康检查等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"agentmem": {
"command": "uvx",
"args": [
"quilmem"
]
}
}
}
启动命令uvx quilmem

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiquilmem0.2.5

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

agentmem

为 Claude Code、Cursor 和 Codex 提供共享记忆,并能判断哪些内容仍然有效。保存会话、发现过时和冲突的规则,避免 Agent 重复犯旧错误。

PyPI Python License: MIT Tests

问题

你的 AI 编码助手会忘记不同会话之间的所有内容。它会重复犯旧错误,也分不清当前规则和过时规则。上下文会被压缩,恢复过程令人头疼。

大多数记忆工具解决的是存储问题。agentmem 解决的是可信度问题。

开始使用(Claude Code / Cursor / Codex)

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

就这么简单。重启编辑器,你的 Agent 就有了 13 个记忆工具。运行 memory_health 进行确认。

agentmem 演示:安装、初始化、健康检查

仅使用 Python? 无需安装 MCP extra 即可运行 pip install quilmem。请参阅下文的 Python API。

60 秒演示

from agentmem import Memory

mem = Memory()

# Store typed memories
mem.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 yet
hypothesis = 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 limit
context = mem.recall("building a narration track", max_tokens=2000)

# Lifecycle — promote what's proven, deprecate what's not
mem.promote(hypothesis.id)                # hypothesis -> active -> validated
mem.deprecate(hypothesis.id, reason="Disproven by data")

# Supersede: replace an outdated memory with a newer one
replacement = 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_check
report = health_check(mem._conn)
# Health: 85/100 | Conflicts: 0 | Stale: 2 | Validated: 14

与众不同之处

其他记忆工具只存储内容。 agentmem 知道哪些内容仍然有效。

Mem0LettaMengramagentmem
记忆存储是是是是
全文搜索向量Agent 驱动知识图谱FTS5
记忆生命周期状态否部分支持否假设 -> 活跃 -> 已验证 -> 已弃用 -> 已取代
冲突检测否否部分支持内置
过时检测否否否内置
健康评分否否否内置
来源追踪否否否source_path + source_hash
按可信度排序回忆否否否已验证 > 活跃 > 假设
人类可读的源文件否否否规范 Markdown
本地优先,无需基础设施否可自托管可自托管始终如此
MCP 服务单独提供单独提供是内置

可信度治理

核心理念:每条记忆都有一个状态,用于追踪你应该在多大程度上信任它。

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.

**这很重要的原因:**没有治理机制,Agent 的记忆就会积累过时规则、矛盾和过时决策。它不知道 1 月份的语音设置已在 3 月份被覆盖。它会同时检索两者,再由大模型随机选择。治理记忆可以解决这个问题。

冲突检测

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 会找出相互矛盾的记忆:

  • 检测主题重叠(Jaccard 相似度)
  • 区分重复项与矛盾项
  • 在句子级别匹配否定表达(而非只扫描关键词)
  • 严重程度:critical(两者均为活跃状态)与 warning(其中一条已弃用)

过时检测

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

通过以下方式查找过时记忆:

  • 年限(N 天内未更新)
  • 源文件缺失(引用的文件已删除)
  • 哈希漂移(源文件内容已更改,但记忆未更新)

健康检查

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)}")

根据冲突、过时比例、孤立引用、已弃用权重,以及是否存在任何已验证的记忆,为你的记忆系统评出 0-100 分。

感知来源的同步

将规范 Markdown 文件同步到数据库,并追踪来源:

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

同步引擎会:

  • 哈希相同 = 跳过(幂等,重复运行不会改变任何内容)
  • 哈希不同 = 更新(源文件已更改)
  • 章节已移除 = 弃用(并记录原因)
  • 章节已恢复 = 恢复(重新激活已弃用的记忆)

三种接口

Python API
from agentmem import Memory

mem = Memory("./my-agent.db", project="frontend")

# CRUD
record = 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 + recall
results = mem.search("typescript migration", type="decision")
context = mem.recall("setting up the build", max_tokens=3000)

# Governance
mem.promote(record.id)              # hypothesis -> active -> validated
mem.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 persistence
mem.save_session("Working on auth refactor. Blocked on token refresh.")
mem.load_session()                  # picks up where last instance left off

# Health
mem.stats()
CLI
# Get started in 30 seconds
agentmem init --tool claude --project myapp

# Check if everything's working
agentmem doctor

# Core
agentmem add --type bug --title "CSS grid issue" "Flexbox fallback needed"
agentmem search "grid layout"
agentmem recall "frontend styling" --tokens 2000

# Governance
agentmem promote <id>
agentmem deprecate <id> --reason "Fixed in v2.3"
agentmem health
agentmem conflicts
agentmem stale --days 14

# Import + sessions
agentmem import ./errors.md --type bug
agentmem save-session "Finished auth module, starting tests"
agentmem load-session

# MCP server
agentmem serve
MCP 服务

为 Claude Code、Cursor 和任何 MCP 客户端提供内置的 Model Context Protocol 服务。

pip install quilmem[mcp]

Claude Code 配置(.claude/settings.json):

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

MCP 工具: 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

告诉你的 Agent 如何使用记忆: 将Agent 指令复制到你的 CLAUDE.md、.cursorrules 或 AGENTS.md 中。这会教会你的 Agent 会话协议、信任层级,以及何时搜索而非添加。

类型化记忆

七种类型,涵盖真实的 Agent 工作流:

类型存储内容示例
setting配置、参数“语音速度:atempo 1.08”
bug错误及其修复方法“loudnorm 会抬高噪声底”
decision规则、策略、选择“禁止使用第三人称旁白”
procedure工作流、流水线“TTS -> 速度 -> 48kHz -> 混音”
context背景知识“项目使用 FFmpeg + Python 3.11”
feedback用户纠正“始终直接选择,不要询问”
session当前工作状态“正在处理身份验证。受令牌问题阻碍。”

按信任度排序的回忆

recall() 不只是查找相关记忆,还会找出最可信的相关记忆:

  1. FTS5 搜索返回候选项
  2. 为每项评分:相关性 (25%) + 信任状态 (20%) + 来源信息 (20%) + 新近度 (15%) + 频率 (10%) + 置信度 (10%)
  3. 已验证的规范记忆排名高于缺少来源信息的假设性记忆
  4. 完全排除已弃用和已取代的记忆
  5. 以贪心方式打包,直到达到令牌预算

项目范围

frontend = Memory("./shared.db", project="frontend")
backend = Memory("./shared.db", project="backend")

frontend.search("bug")  # Only frontend bugs
backend.search("bug")   # Only backend bugs

经实战检验

这并非纸上谈兵。agentmem 经历了 2 个多月的日常生产使用考验:

  • 制作了 65 多个 YouTube Shorts,未重复出现任何制作故障
  • 330 多条记忆用于管理语音生成、FFmpeg 组装、图像提示词和上传工作流
  • 每个故障只发现一次、修复一次,再也没有重复
  • 治理引擎将冲突误报从 1,848 个降至 11 个真实问题

工作原理

  • 存储: 使用 WAL 模式的 SQLite(支持并发读取,线程安全)
  • 搜索: 使用 Porter 词干提取和 unicode61 分词器的 FTS5
  • 排序: 综合评分:文本相关性 + 信任状态 + 来源信息 + 新近度 + 频率 + 置信度
  • 治理: 状态生命周期、冲突检测、过时检测、健康度评分
  • 同步: 感知来源信息,支持源哈希和复原
  • 零基础设施: 无需 API 密钥、云服务或向量数据库,只需一个 .db 文件。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。