mcpField
A
Amem

Amem

本地服务
github.com/amanasmuei记忆与知识227 周前更新

关于 Amem

Amem 是面向 AI 编码工具的本地优先记忆 MCP 服务,可跨会话保存和检索项目偏好、决策与纠正内容。它使用本地 SQLite 文件,并提供搜索、历史记录、整合和反思功能。

主要功能

  1. 01使用本地 SQLite 存储记忆
  2. 02自动与手动捕获记忆
  3. 03语义、文本、图谱和时间搜索
  4. 04记忆分层与版本历史
  5. 05矛盾检测与记忆整合

适用场景

  1. 01在不同 AI 工具间沿用编码偏好
  2. 02在新会话中查找项目决策
  3. 03检查并整合累积的记忆

MCP 相关

Amem 通过 stdio 向 MCP 客户端提供记忆工具、资源和提示词。客户端可存储、搜索、修改和管理记忆。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"amem": {
"command": "npx",
"args": [
"-y",
"@aman_asmuei/amem"
]
}
}
}
启动命令npx -y @aman_asmuei/amem

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

安装包
npm@aman_asmuei/amem

工具

还没有获取到工具列表

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

详细介绍

amem

amem

AI 编码工具的记忆层。
只需告诉 AI 一次,它就会在所有地方记住。

npm CI MIT MCP Node 18+


🎯 97.8% R@5⚡ ~14ms p50🛠 33 个工具🔒 100% 本地运行
LongMemEval-S,500 个问题完整的召回流程完整的记忆工具集无需云服务

快速开始 · 工作原理 · 基准测试 · 工具 · 仪表板 · 架构


💡 问题所在

每个 AI 工具都从零开始。每个会话都如此。每个工具都如此。

- You: "Don't use 'any' in TypeScript"     → told Claude 3 times. Copilot still doesn't know.
- You: "We chose PostgreSQL over MongoDB"   → explained in Cursor. Claude has no idea.
+ With amem: tell it once, every AI tool remembers — forever.
查看实际效果
You (in Claude Code):  "Don't use any type in TypeScript"
  └─ amem stores this as a correction (priority 1.0, confidence 100%)

You (switch to Copilot): starts coding
  └─ Copilot already knows — amem feeds it the same correction

You (open Cursor): "What do you remember about TypeScript?"
  └─ Instantly recalls: "Don't use any type" + all related preferences

无需云服务,无需 API 密钥,只需一个 SQLite 文件。所有内容都保留在你的设备上。


🚀 快速开始

Claude Code(推荐)

/plugin marketplace add amanasmuei/amem
/plugin install amem

GitHub Copilot CLI

copilot plugin marketplace add amanasmuei/amem
copilot plugin install amem
📦 Cursor / Windsurf / 任意 MCP 客户端
npm install -g @aman_asmuei/amem
amem-cli init      # Detects & configures all installed AI tools
amem-cli rules     # Generates extraction rules for proactive memory use

也可以手动添加到 MCP 配置中:

{
  "mcpServers": {
    "amem": {
      "command": "npx",
      "args": ["-y", "@aman_asmuei/amem"]
    }
  }
}

验证是否正常运行:

amem-cli stats     # Should show "0 memories" initially

💬 告诉 AI:“记住:始终使用严格模式 TypeScript,绝不使用 any 类型”

🔄 开始一个新会话:“你还记得哪些关于 TypeScript 的内容?”——它会立即回想起来。


🧬 由 amem-core 提供支持

amem 是 MCP 服务。检索引擎位于 @aman_asmuei/amem-core 中。

     Claude Code / Copilot / Cursor / any MCP client
                        │
                        │ MCP (stdio)
                        ▼
        ┌──────────────────────────────────┐
        │  @aman_asmuei/amem  (this pkg)   │
        │  33 Tools · 7 Resources · 2 Prompts
        │  CLI · Hooks · Dashboard         │
        └───────────────┬──────────────────┘
                        │ imports
                        ▼
        ┌──────────────────────────────────┐
        │  @aman_asmuei/amem-core          │
        │  Embeddings · HNSW · Recall      │
        │  Knowledge Graph · Reflection    │
        │  97.8% R@5 on LongMemEval-S      │
        └───────────────┬──────────────────┘
                        ▼
              ┌────────────────────┐
              │  SQLite + WAL      │
              │  ~/.amem/memory.db │
              └────────────────────┘
为什么拆分成两个包?
包角色安装
@aman_asmuei/amem (本包)MCP 服务 + CLI + 钩子npm i -g @aman_asmuei/amem
@aman_asmuei/amem-core纯 TS 库,不依赖 MCPnpm i @aman_asmuei/amem-core

同一个引擎为 amem(MCP 服务)、aman-agent(CLI)、aman-tg(Telegram 机器人)以及任何接入记忆功能的 Node 应用提供支持。检索功能的改进通过 amem-core 发布,MCP 工具的变更则通过 amem 发布。两个包的版本独立管理。

97.8% R@5 这一指标体现的是 amem-core 引擎的性能(LongMemEval-S,按会话评估,500 个问题,零 API 调用)——无论通过 MCP 调用,还是直接导入库,都能获得相同的效果。


⚙️ 工作原理

amem 通过三个层级捕获知识——从全自动到完全手动:

层级方式功能
自动生命周期钩子捕获工具观察结果,在会话结束时自动提取纠正内容、决策和模式
AI 驱动提取规则当你纠正 AI、做出决策或表达偏好时,AI 会主动调用 memory_store
手动自然语言“记住:我们使用 PostgreSQL” 或 “忘掉 Redis 相关记忆”
记忆类型
优先级类型示例
1.0correction"不要在集成测试中模拟数据库"
0.85decision"选择 Postgres 而不是 Mongo,以满足 ACID 要求"
0.7pattern"偏好提前返回,而不是嵌套"
0.7preference"使用 pnpm,而不是 npm"
0.5topology"Auth 模块位于 src/auth/"
0.4fact"API 于 2025 年 1 月上线"

更正始终会优先显示——它们是 AI 的硬性约束。

🔄 记忆层级与时效性
记忆层级
层级行为
Core在会话开始时始终注入(约 500 个 token)。最关键的更正。
Working仅限当前会话,自动显示与当前任务相关的内容。
Archival默认层级。可搜索,但不会自动注入。
时效性

记忆并非永远有效。事实发生变化时:

  • 旧记忆会被标记为过期(而非删除)——保留下来,以便回答*"3 月份的情况是什么?"*
  • 矛盾会被自动检测:存储新决策时,旧决策会自动过期
  • 使用 memory_since 查询任意时间点的情况
🧠 自我进化记忆循环

你的记忆不只是存储内容——它还会从自身结构中学习。调用 memory_reflect 以触发反思引擎:

memory_reflect → Analyzes your entire memory graph
  │
  ├─ Clusters related memories (HNSW neighbor graph)
  ├─ Detects contradictions (negation pairs, numerical, low-overlap)
  ├─ Identifies synthesis candidates
  ├─ Surfaces knowledge gaps (topics with sparse recall)
  └─ Returns a structured report with suggested actions

进化循环:

  1. 反思 — memory_reflect 将记忆聚类并寻找模式
  2. 综合 — AI 通过 memory_store 将相关聚类合并为更高阶的原则
  3. 关联 — memory_relate 将综合结果与源记忆连接起来(通过综合溯源进行追踪)
  4. 重复 — 每轮循环都会让图谱变得更连贯、更抽象

当需要进行反思时,系统会自动提醒(距离上次运行超过 7 天,或新增记忆超过 50 条)。

📊 反思报告示例
# Memory Reflection Report
Analyzed 127 memories in 12ms
Health Score: 68/100

## Stats
- Clusters: 8 (avg size: 4.2)
- Clustered: 34 | Orphans: 93
- Contradictions: 2
- Synthesis candidates: 3
- Knowledge gaps: 4

## Contradictions Found
⚠ Opposing language detected (23d apart, 87% similar)
  A: a1b2c3d4 "Always use semicolons in JavaScript..."
  B: e5f6g7h8 "Never use semicolons in JavaScript..."
  → Expire older memory a1b2c3d4 — newer supersedes it

## Synthesis Candidates
### cluster-0 (4 patterns)
  "These 4 related memories form a cluster about 'typescript, types':
  [patterns]:
    - 'Always use strict TypeScript types'
    - 'Prefer strict null checks'
    - 'Use unknown instead of any'
    - 'Enable strictNullChecks in tsconfig'

  Synthesize into a higher-order principle..."

## Knowledge Gaps
- "kubernetes deployment" — asked 3x, avg 25% confidence
- "database migration strategy" — asked 2x, avg 0% confidence

📈 基准测试

召回准确率(LongMemEval)

所有数据均来自 amem-core v0.5.1——为此 MCP 服务提供支持的检索引擎。零 API 调用,完全本地运行,可完全复现。

LongMemEval-S(会话级)——核心指标

指标得分
R@195.0%
R@397.0%
R@5🏆 97.8%
R@1099.0%

500 个问题 · 仅使用 CPU · 零 API 调用

LongMemEval Oracle(轮次级)

指标得分
R@166.2%
R@390.8%
R@594.6%
R@1097.5%

479 个可评分问题 · 运行时间 301 秒 · Node 22

流水线:本地 bge-small-en-v1.5 双编码器 + ms-marco-MiniLM-L-6-v2 交叉编码器(int8、批处理、默认启用)。完整的分类细分、流水线演进和客观说明,请参阅 amem-core 基准测试。

为什么这对“用 Rust 重写它”的问题很重要。 上面的 10.3 毫秒重排耗时,相较于被替换的逐对实现,速度提升了约 30%——只用了约 20 行批处理代码和 int8 量化,无需原生重写。热点路径本来就很高效;剩余的性能提升来自更谨慎地使用它们。我们继续使用 TypeScript。

搜索延迟

完整召回流程(v0.5.1+)

阶段p50占比
嵌入(双编码器)3.0ms22%
检索(HNSW + 多策略)0.1ms1%
重排(int8 交叉编码器)10.3ms74%
总计~14ms100%

仅 HNSW 索引(向量搜索)

记忆数HNSW暴力搜索加速比
1000.05ms0.10ms2x
1,0000.06ms0.50ms8x
5,0000.08ms2.44ms30x
10,0000.08ms5.35ms67x

测量方式:对 100 次搜索取平均,使用 384 维嵌入,返回前 10 个结果。

任何规模下均低于 0.1ms——实际复杂度为 O(log n)。HNSW 是可选依赖;不可用时将回退到暴力搜索。


🛠️ 工具参考

核心记忆(7 个工具)
工具说明
memory_store存储记忆,包含类型、标签和置信度。自动删除私人内容的敏感信息,并自动使矛盾内容过期。
memory_recall语义搜索——默认使用精简模式(约节省 10 倍令牌)。使用 memory_detail 获取完整内容。
memory_detail精简召回后,通过 ID 获取完整内容。
memory_context加载与某个主题相关的所有上下文,按类型整理并进行令牌预算管理。
memory_extract从对话中批量保存多条记忆。
memory_forget按 ID 或查询删除(需确认)。
memory_inject在开始编码前呈现更正、决策和图谱邻居。
精准检索、历史记录、高级、管理、提醒和维护工具(另有 26 个)
精准检索与历史记录(5 个工具)
工具说明
memory_patch精确修改字段,并自动创建快照。
memory_versions查看完整编辑历史或恢复到任意版本。
memory_search通过 FTS5 进行精确全文搜索,并支持精简模式。
memory_since使用自然语言范围(7d、2w、1h)进行时间查询。
memory_relate在记忆之间构建带类型的知识图谱。
高级(6 个工具)
工具说明
memory_multi_recall使用精简模式进行多策略搜索:语义 + FTS5 + 图谱 + 时间。
memory_tier在不同层级间移动记忆:核心 / 工作 / 归档。
memory_expire将记忆标记为不再有效——保留历史记录,但不纳入召回。
memory_summarize存储结构化会话摘要,包含决策、更正和指标。
memory_history查看过往会话摘要。
memory_reflect自我演进式反思引擎——聚类记忆、检测矛盾、识别综合候选项并呈现知识缺口。
管理与同步(4 个工具)
工具说明
memory_doctor对 amem 数据库运行只读健康诊断。
memory_repair对 amem 数据库执行安全且有针对性的修复。
memory_config在安全保护机制下获取或设置 amem 配置。
memory_sync在 amem 与其他系统(Claude 自动记忆、Copilot 指令)之间导入或导出记忆。
提醒(4 个工具)
工具说明
reminder_set创建提醒,可选择设置截止时间和作用范围。
reminder_list列出有效(或所有)提醒,可按作用范围筛选。
reminder_check显示已逾期、今天到期和即将到期(7 天内)的提醒。
reminder_complete将提醒标记为已完成(支持部分 ID)。
日志与维护(7 个工具)
工具描述
memory_log追加原始对话轮次(无损、仅追加)。
memory_log_recall按会话、关键词或时间新近度搜索或重放日志。
memory_log_cleanup根据可配置的保留策略清理旧条目。
memory_stats计数、类型细分、置信度分布。
memory_export导出为 Markdown 或 JSON。
memory_import从 JSON 批量导入并自动去重。
memory_consolidate合并重复项、清理过时内容、提升常用内容的优先级、降低闲置内容的权重。

📖 使用指南

存储记忆

自然语言(最简单)

"Remember: we use PostgreSQL, not MongoDB"
"Store a correction: never use console.log in production"
"Note that the auth module is in src/auth/"

显式工具调用

memory_store({
  content: "Never use 'any' — define proper interfaces",
  type: "correction",
  tags: ["typescript"],
  confidence: 1.0
})
回忆记忆
// Step 1: Compact index — ~50-100 tokens (default)
memory_recall({ query: "auth decisions", limit: 5 })
// -> a1b2c3d4 [decision] Auth service uses JWT tokens... (92%)
// -> e5f6g7h8 [correction] Never store tokens in localStorage... (100%)

// Step 2: Full details only for what you need
memory_detail({ ids: ["a1b2c3d4", "e5f6g7h8"] })
更多搜索选项
// Multi-strategy: semantic + FTS5 + graph + temporal
memory_multi_recall({
  query: "authentication architecture",
  limit: 10,
  weights: { semantic: 0.4, fts: 0.3, graph: 0.15, temporal: 0.15 }
})

// Exact keyword search (FTS5 syntax)
memory_search({ query: "OAuth PKCE" })
memory_search({ query: '"event sourcing"' })     // phrase match
memory_search({ query: "auth* NOT legacy" })      // boolean
管理记忆
编辑、设置过期时间、提升优先级、建立关联
// Surgical edit with auto-snapshot for rollback
memory_patch({ id: "a1b2c3d4", field: "content", value: "Updated text", reason: "clarified" })

// View edit history / restore
memory_versions({ memory_id: "a1b2c3d4" })

// Expire (preserve for history, exclude from recall)
memory_expire({ id: "a1b2c3d4", reason: "Migrated to GraphQL" })

// Promote to core tier (always loaded at session start)
memory_tier({ id: "a1b2c3d4", tier: "core" })

// Link related memories (graph builds itself, but you can add manual links)
memory_relate({ action: "relate", from_id: "abc", to_id: "xyz", relation_type: "supports" })

关系类型:supports、contradicts、depends_on、supersedes、related_to、caused_by、implements,也可以自定义。

提醒
跨会话截止日期跟踪
reminder_set({ content: "Review PR #42", due_at: 1743033600000, scope: "global" })

reminder_check({})
// -> [OVERDUE] Review PR #42
// -> [TODAY] Deploy auth service
// -> [upcoming] Write quarterly report

reminder_complete({ id: "a1b2c3d4" })
隐私
自动脱敏
// Private blocks stripped before storage
memory_store({
  content: "DB password is <private>hunter2</private>, connect to prod at db.example.com",
  type: "topology", tags: ["database"]
})
// Stored: "DB password is [REDACTED], connect to prod at db.example.com"

// API keys, tokens, passwords auto-redacted by pattern matching
// Configure patterns in ~/.amem/config.json

⚔️ 坦诚比较:amem 与 graphify

点击展开 — amem 与 graphify 的对比

graphify 是人们了解 amem 后最常问的“那 X 呢?”。它们解决的是本质上不同的问题,而且确实可以互补。

各工具的作用
amemgraphify
一句话概括在 AI 会话间持久保存记忆代码库 → 知识图谱
核心问题“我的 AI 了解了我什么?”“这个代码库是什么样的?”
输入自然语言(更正、决策、偏好)文件(代码、文档、PDF、图片、视频)
输出按相关性排序的回忆记忆结构图谱 + 报告 + 交互式 HTML
持久性始终持久 — 记忆可跨会话和工具保留快照 — graph.json 会持久保存,但不会随时间学习
运行时机持续运行,每个会话都会运行按需运行(/graphify .),或通过 git hook 在提交时运行
技术对比
amemgraphify
运行环境TypeScript / Node(≥18)Python(≥3.10)
协议MCP 服务(33 个工具、7 个资源)AI 技能(斜杠命令)+ 可选的 MCP 服务
存储SQLite + FTS5 + WALNetworkX 图 → JSON 文件
搜索语义嵌入 + FTS5 + 图 + 重排序图遍历(BFS/DFS)+ 节点查找
嵌入本地 bge-small-en-v1.5(384 维)无 — 使用图拓扑,而非向量相似度
代码理解无 — 存储你告诉它的内容深度理解 — 使用 tree-sitter AST 支持 25 种语言
多模态仅文本代码、文档、PDF、图片、视频、音频
是否需要 LLM否(完全本地运行)是,处理文档/图片时需要(代码通过 tree-sitter 处理,无需 LLM)
基准测试在 LongMemEval-S 上的 R@5 为 97.8%与直接读取原始文件相比,token 减少 71.5 倍
AI 工具支持Claude Code、Copilot、Cursor、任何 MCP 客户端Claude Code、Codex、Copilot、Cursor、Gemini、Aider、Kiro 等 10 多种工具
各自的优势

amem 的优势:

  • 跨项目和工具记住你的偏好、纠正和决策
  • 语义检索——通过模糊查询找到合适的记忆(R@5 为 97.8%)
  • 时间智能——跟踪某项信息何时为真,并自动让矛盾信息过期
  • 自我进化——反思引擎会对信息进行聚类、检测矛盾并找出缺漏
  • 不依赖 LLM——所有操作都在本地运行,无需 API 调用

graphify 的优势:

  • 理解代码结构——调用图、导入关系、类层次结构、跨文件关系
  • 多模态摄取——放入代码、论文、截图、视频,都能生成图谱
  • 高效利用 Token——71.5 倍压缩,意味着 AI 读取的是结构,而非原始文件
  • 支持多种语言——通过 tree-sitter AST 支持 25 种编程语言
  • 支持多种 AI 工具——覆盖 15+ 个平台,并提供专用安装命令
坦诚的结论
  1. 两者并不互相竞争。 amem 记住你的知识(决策、纠正、偏好)。graphify 映射代码库的结构(调用图、依赖关系、架构)。处理的数据不同,访问模式也不同。

  2. 你可以同时使用两者。 运行 graphify . 获取项目的结构图。使用 amem 记住“我们选择这种架构是因为 X”。图谱告诉 AI 有什么。记忆告诉它为什么会这样。

  3. graphify 支持的平台更广(15+ 种 AI 工具)。amem 在支持的平台上集成得更深入(通过 MCP 协议提供 33 个工具、结构化资源和提示词)。

  4. 处理非代码文件时,graphify 需要 LLM。 amem 完全在本地运行——无需 API 调用,也不需要本地嵌入模型之外的模型推理。

  5. 真正的选择取决于你的痛点。 如果 AI 总是忘记你的偏好和决策 → 选 amem。如果 AI 无法高效浏览你的代码库 → 选 graphify。如果两者都是问题 → 两者一起用。


🌐 平台兼容性

功能Claude CodeGitHub Copilot CLICursor / Windsurf / Other
一键安装插件是是--
33 个 MCP 工具是是是
AI 技能147--
自动捕获钩子是是--
会话自动摘要是是--
自动记忆同步是----
CLI 设置(amem-cli init)是是是

Claude Code 集成最深入(插件 + 钩子 + 自动记忆同步)。Copilot CLI 紧随其后。其他 MCP 客户端通过手动配置即可使用完整的 33 工具服务。

AI 技能
各平台提供的技能
你说的话技能Claude CodeCopilot CLI
“记住,永远不要使用 any 类型”remember是是
“你还记得哪些关于 auth 的内容?”recall是是
“为这项任务加载上下文”context是是
“显示记忆统计信息”stats是是
“运行记忆诊断”doctor是是
“导出我的记忆”export是是
“列出所有纠正”list是是
“同步我的 Claude 记忆”sync是--
“打开记忆仪表板”dashboard是--
“安装钩子”hooks是--
## 🔄 使用 Claude Code 自动记忆

amem 与 Claude 内置的自动记忆互为补充,而非替代。

Claude 自动记忆amem
捕获自动,无需配置带置信度评分的类型化记忆
存储单个 Markdown 文件支持搜索、图谱和时序功能的 SQLite
召回每次会话都会加载整个文件仅呈现相关记忆
历史记录更新时覆盖带版本记录和时效性
搜索无语义搜索 + FTS5 + 图谱 + 重排序

**建议:**同时启用两者。运行 amem-cli sync,将 Claude 的记忆导入 amem,以便统一、结构化地访问。

Claude → amem 同步
amem-cli sync              # Import all projects
amem-cli sync --dry-run    # Preview what would be imported
amem-cli sync --project myapp  # Import specific project
Claude 类型amem 类型置信度
feedbackcorrection1.0
projectdecision0.85
userpreference0.8
referencetopology0.7
amem → Copilot 同步

将 amem 记忆导出到 .github/copilot-instructions.md,让 Copilot 将其作为持久上下文读取:

amem-cli sync --to copilot              # Export to current project
amem-cli sync --to copilot --dry-run    # Preview without writing
amem-cli sync --to copilot --project /path/to/repo

此操作会按优先级分组,生成结构化 Markdown:

  1. 更正(必须遵循)——硬性约束
  2. 决策——架构选择
  3. 偏好——用户偏好
  4. 模式——编码约定
  5. 上下文——拓扑结构 + 事实

amem 部分由 `` 标记包围,文件中现有的非 amem 内容会保留。

**跨工具同步:**在 Claude 会话中做出的决策会自动同步给 Copilot:

Claude Code → amem sync → amem DB → amem sync --to copilot → copilot-instructions.md

📊 仪表板与知识图谱

amem-cli dashboard              # Opens at localhost:3333
amem-cli dashboard --port=8080  # Custom port

功能齐全的 Web 仪表板,包含:

  • 🔍 记忆浏览器——搜索,按类型、层级和来源筛选,并提供内联操作(提升、降级、过期)
  • 🕸️ 交互式知识图谱——缩放、平移、点击聚焦并高亮邻域、详情面板、搜索、有向边
  • 📈 分析——置信度分布、类型细分、会话时间线
  • ⏰ 提醒——查看和管理跨会话任务
  • 📋 Copilot 预览——查看将导出到 copilot-instructions.md 的内容

💻 CLI 参考

# Setup
amem-cli init                          # Auto-configure AI tools
amem-cli rules                         # Generate extraction rules
amem-cli hooks                         # Install hooks for Claude Code
amem-cli hooks --target copilot        # Install hooks for GitHub Copilot CLI
amem-cli hooks --uninstall             # Remove hooks
amem-cli sync                          # Import Claude auto-memory → amem
amem-cli sync --to copilot             # Export amem → copilot-instructions.md
amem-cli doctor                        # Health diagnostics
amem-cli repair                        # Repair corrupted database from backups

# Dashboard
amem-cli dashboard                     # Web dashboard (localhost:3333)

# Memory operations
amem-cli recall "authentication"       # Semantic search
amem-cli stats                         # Statistics
amem-cli list --type correction        # List by type
amem-cli export --file memories.md     # Export to file
amem-cli forget abc12345               # Delete by short ID
amem-cli reset --confirm               # Wipe all data

🏗 架构

                        Your AI Tool
           Claude Code / Copilot CLI / any MCP client
                    │                │
                    │ MCP (stdio)    │ Lifecycle Hooks
                    ▼                ▼
          ┌─────────────────────────────────┐
          │   @aman_asmuei/amem             │  ← this package
          │                                 │
          │  33 Tools · 7 Resources · 2 Prompts
          │  Slash commands · CLI · Hooks   │
          │  Config: ~/.amem/config.json    │
          └────────────────┬────────────────┘
                           │ imports
                           ▼
          ┌─────────────────────────────────┐
          │   @aman_asmuei/amem-core        │  ← the engine
          │                                 │
          │  Multi-Strategy Retrieval       │
          │  [HNSW] + [FTS5] + [Graph] + [Temporal]
          │       + query expansion         │
          │       + cross-encoder reranker   │
          │                                 │
          │  Self-Evolving Reflection       │
          │  [Clustering] + [Contradictions]│
          │  + [Synthesis] + [Gap Detection]│
          │                                 │
          │  Embeddings: bge-small-en-v1.5  │
          │  Reranker: ms-marco-MiniLM int8 │
          │  97.8% R@5 on LongMemEval-S     │
          └────────────────┬────────────────┘
                           │
                           ▼
          ┌─────────────────────────────────┐
          │   SQLite + WAL + FTS5           │
          │   ~/.amem/memory.db             │
          │                                 │
          │   memories       (tiered)       │
          │   conversation_log (raw)        │
          │   memory_versions (history)     │
          │   memory_relations (graph)      │
          │   synthesis_lineage             │
          │   knowledge_gaps                │
          │   session_summaries             │
          │   reminders                     │
          └─────────────────────────────────┘

**amem MCP 服务是 amem-core 的轻量封装。**检索引擎、嵌入、知识图谱和反思功能都位于 amem-core 中,并独立进行版本管理。MCP 连接出现错误?重新发布 amem。需要改进记忆召回?重新发布 amem-core。两者互不耦合。

排名公式
score = relevance x 0.45 + recency x 0.2 + confidence x 0.2 + importance x 0.15
因素工作方式
相关性通过 HNSW 索引计算余弦相似度;查询扩展关键词回退
时效性指数衰减(0.995^hours)
置信度通过重复确认强化(0-1)
重要性基于类型:更正 1.0……事实 0.4

加法评分可确保不会因某个单项因素得分较低而导致排名失效。


⚙️ 配置

环境变量
变量默认值描述
AMEM_DIR~/.amem存储目录
AMEM_DB~/.amem/memory.db数据库路径
AMEM_PROJECT(自动从 git 获取)项目范围覆盖值
配置文件(~/.amem/config.json)

自动使用默认值创建:

{
  "retrieval": {
    "semanticWeight": 0.4,
    "ftsWeight": 0.3,
    "graphWeight": 0.15,
    "temporalWeight": 0.15,
    "rerankerEnabled": true
  },
  "privacy": {
    "enablePrivateTags": true,
    "redactPatterns": ["..."]
  },
  "tiers": {
    "coreMaxTokens": 500,
    "workingMaxTokens": 2000
  },
  "hooks": {
    "enabled": true,
    "captureToolUse": true,
    "captureSessionEnd": true
  }
}
📋 版本历史
v0.23.0 — 交互式知识图谱仪表板

全宽图谱浏览器,支持缩放/平移、点击聚焦并高亮邻域、带关系导航的详情面板、搜索与筛选、有向边、力导向布局。管理工具(doctor、repair、config、sync)。18 个测试套件共 255 项测试。

v0.19.0 — 自我演进记忆循环

反思引擎,支持基于 HNSW 的聚类、3 层矛盾检测(否定词 + 数值 + 低重叠度)、带有谱系跟踪的综合候选项、知识缺口检测、效用评分,以及在 memory_inject 中自动触发提示。新增数据库表:synthesis_lineage、knowledge_gaps、reflection_meta。迁移版本 v5。

v0.18.0 — 渐进式披露与规模扩展

HNSW 向量索引(在 10k 条数据时快 67 倍)、召回/搜索默认启用精简模式、数据库修复 CLI、并发访问安全、启发式对话提取器、会话结束时自动提取。

v0.13.0 — 一流的召回能力

bge-small-en-v1.5 嵌入、加法评分、查询扩展、自动关联知识图谱、图感知注入、amem doctor、CI 基准测试。

v0.9.x — 时间智能

时间有效性、自动过期矛盾、多策略检索、交叉编码器重排、记忆层级、隐私标签、生命周期钩子、会话摘要、仪表板、配置系统。

v0.7.0 — v0.8.0

导入/导出、置信度衰减、嵌入缓存、多进程安全、自动配置 CLI、仪表板。

v0.1.0 — v0.5.x

核心存储/召回、本地嵌入、SQLite + WAL、整合、项目范围限定、提醒、对话日志、知识图谱、FTS5、渐进式披露。


🧰 技术栈

层级技术
协议MCP SDK ^1.25
语言TypeScript 5.6+,严格模式
数据库SQLite + WAL + FTS5
嵌入HuggingFace bge-small-en-v1.5(本地,80MB)+ HNSW 向量索引
重排ms-marco-MiniLM-L-6-v2(默认启用,int8,批处理,本地)
验证使用 .strict() 模式的 Zod 3.25+
测试Vitest — 19 个测试套件中的 281 项测试 + 召回基准测试
CI/CDGitHub Actions,发布时通过 npm 发布

🤝 贡献

git clone https://github.com/amanasmuei/amem.git
cd amem && npm install
npm run build   # zero TS errors
npm test        # 281 tests pass

PR 必须通过 CI 检查后才能合并。请查看 Issues 中的待处理任务。



由 Aman Asmuei 在 🇲🇾 马来西亚倾情打造

GitHub npm 问题

MIT 许可证 · 如果 amem 帮你的 AI 摆脱健忘,请点亮 ⭐

评论

支持 Markdown

第一次接触 MCP?

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

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