amem
The memory layer for AI coding tools.
Tell your AI once — it remembers everywhere.
| 🎯 5%时为97.8%⚡ ~14毫秒p50 | 🛠 33工具 | 🔒 100%本地 | |
|---|---|---|---|
| LongMemEval-S,500q | 完整召回流程 | 完整内存工具包 | 无需云 |
Quick Start · How It Works · Benchmarks · Tools · Dashboard · Architecture
______________________________________________________________________
💡 问题
每个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.See it in action
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文件。一切都在你的机器上。
______________________________________________________________________
🚀 快速开始
克劳德代码 (推荐)
/plugin marketplace add amanasmuei/amem
/plugin install amemGitHub Copilot 命令行工具
copilot plugin marketplace add amanasmuei/amem
copilot plugin install amem📦 Cursor / Windsurf / Any MCP Client
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,永远不要使用任何类型”* 🔄 开始a 新 会话: *“你还记得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 │
└────────────────────┘Why two packages?
| 包 | 角色 | 安装 |
|---|---|---|
@aman_asmuei/amem *(这个)* | MCP服务器+CLI+挂钩 | npm i -g @aman_asmuei/amem |
@aman_asmuei/amem-core | 纯TS库,零MCP deps | npm i @aman_asmuei/amem-core |
相同的发动机功率 amem (MCP服务器), aman-agent (CLI), aman-tg (Telegram机器人),以及任何你给内存的Node应用程序。检索改进通过 amem-core.MCP工具通过以下方式更换船只 amem。它们独立版本。
这 5时为97.8% 标题是发动机质量 amem-core (LongMemEval-S,会话级,500个问题,零API调用)-无论您是通过MCP调用它还是直接导入库,都会得到确切的结果。______________________________________________________________________
⚙️ 运作原理
amem捕获知识 三层 --从全自动到全手动:
| 层 | 如何 | 它做什么 |
|---|---|---|
| 自动 | 生命周期挂钩 | 捕获工具观察结果,在会话结束时自动提取纠正/决策/模式 |
| AI驱动 | 提取规则 | 您的AI主动调用 memory_store 当你纠正它、做出决定或表达偏好时 |
| 手册 | 自然语言 | *“记住:我们使用PostgreSQL”* 或 *“忘记Redis内存”* |
内存类型
| 优先级 | 类型 | 示例 |
|---|---|---|
| 1.0 | 修正 | *“不要在集成测试中嘲笑数据库”* |
| 0.85 | 决定 | *“为ACID选择Postgres而不是Mongo”* |
| 0.7 | 模式 | *“比起筑巢,更喜欢提前返回”* |
| 0.7 | 偏好 | *“使用pnpm,而不是npm”* |
| 0.5 | 拓扑 | *“Auth模块位于src/Auth/中”* |
| 0.4 | 事实 | *“API于2025年1月发布”* |
修正总是先出现的——它们是人工智能的硬约束。
🔄 Memory Tiers & Temporal Validity
内存层
| 层级 | 行为 |
|---|---|
| 核心 | 始终在会话开始时注入(约500个令牌)。你最关键的修正。 |
| 工作 | 会话范围,为当前任务自动显示。 |
| 档案 | 默认值。可搜索但不能自动注入。 |
时间有效性
记忆不是永恒的。当事实发生变化时:
- 旧的记忆得到 过期的 (未删除)--保留 *“三月的事是真的吗?”*
- 矛盾是 自动检测 ��� 存储新决策会自动使旧决策过期
- 使用查询任意时间点
memory_since
🧠 Self-Evolving Memory Loop
你的记忆不仅仅是储存 从自身结构中学习.致电 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进化循环:
- 反映 —
memory_reflect整理你的记忆,找出模式 - 合成 --人工智能通过以下方式将相关集群合并为高阶原则
memory_store - 链接 —
memory_relate将合成与源记忆联系起来(通过合成谱系跟踪) - 重复 --每个周期,图形都变得更加连贯和抽象
当反思到期时(自上次运行以来>7天或>50个新记忆),系统会自动推送。
📊 What the reflection report looks like
# 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@1 | 95.0% |
| R@3 | 97.0% |
| R@5 | 🏆 97.8% |
| R@10 | 99.0% |
500个问题·仅限CPU·零个API调用
LongMemEval Oracle(回合级别)
| 度量 | 分数 |
|---|---|
| R@1 | 66.2% |
| R@3 | 90.8% |
| R@5 | 94.6% |
| R@10 | 97.5% |
479个可评分问题·301秒运行时间·节点22
管道:当地 bge-small-en-v1.5 双编码器+ ms-marco-MiniLM-L-6-v2 交叉编码器(int8,批处理,默认打开)。看 amem核心基准 查看完整的每种类型的细分、管道演变和诚实的笔记。
为什么这对“用Rust重写”问题很重要。 上面10.3ms的重新排序数字反映了它所取代的每对实现的约30%的加速——通过约20行批处理加int8量化实现,无需本机重写。热门路径已经很有效了;剩下的胜利来自于更谨慎地使用它们。我们继续使用TypeScript。
搜索延迟
全面召回流程(v0.5.1+)
| 阶段 | p50 | 分享 |
|---|---|---|
| 嵌入式(双编码器) | 3.0ms | 22% |
| 检索(HNSW+多策略) | 0.1ms | 1% |
| 重新排序(int8交叉编码器) | 10.3毫秒 | 74% |
| 总计 | ~14ms | 100% |
仅HNSW索引(矢量搜索)
| 回忆 | HNSW | 暴力 | 加速 |
|---|---|---|---|
| 100 | 0.05毫秒 | 0.10毫秒 | 2倍 |
| 1000 | 0.06毫秒 | 0.50毫秒 | 8x |
| 5000 | 0.08毫秒 | 2.44毫秒 | 30倍 |
| 10000 | 0.08毫秒 | 5.35毫秒 | 67x |
测量:平均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 | 编码开始前的曲面校正+决策+图形邻居。 |
Precision, History, Advanced, Admin, Reminders, and Maintenance tools (26 more)
精度和历史(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"] })More search options
// 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管理记忆
Edit, expire, promote, link
// 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 --或者定义你自己的。
提醒事项
Cross-session deadline tracking
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" })隐私
Automatic redaction
// Private blocks stripped before storage
memory_store({
content: "DB password is
hunter2
, 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
Click to expand — how amem compares to graphify
图形化 当人们找到amem时,最常见的是“X怎么样?”。他们解决 根本不同的问题 并且是真正互补的。
每个工具的作用
| 阿门 | 图形化 | |
|---|---|---|
| 一个衬垫 | 跨AI会话的持久内存 | 代码库→ 知识图谱 |
| 核心问题 | *“我的AI从我身上学到了什么?”* | *“这个代码库是什么样子的?”* |
| 输入 | 自然语言(更正、决策、偏好) | 文件(代码、文档、PDF、图像、视频) |
| 输出 | 按相关性排序的回忆 | 结构图+报告+交互式HTML |
| 坚持 | 始终--内存在会话和工具之间生存 | 快照-- graph.json 坚持,但不会随着时间的推移而学习 |
| 当它运行时 | 持续,每次会话 | 按需(/graphify .)或者通过git钩子提交 |
技术比较
| 阿门 | 图形化 | |
|---|---|---|
| 运行时 | Types/Node(≥18) | Python(≥3.10) |
| 协议 | MCP服务器(33个工具,7个资源) | AI技能(斜线命令)+可选MCP服务器 |
| 存储 | SQLite+FTS5+WAL | 网络X图→ JSON文件 |
| 搜索 | 语义嵌入+FTS5+图+重排序 | 图遍历(BFS/DFS)+节点查找 |
| 嵌入 | 本地 bge-small-en-v1.5 (384 dim) | 无--使用图拓扑,而不是向量相似性 |
| 代码理解 | 无——存储你告诉它的内容 | 深度——25种语言的树保姆AST |
| 多模态 | 纯文本 | 代码、文档、PDF、图像、视频、音频 |
| 需要LLM | 否(全部为本地) | 对于文档/图像,答案是肯定的(通过树保姆,代码是LLM免费的) |
| 基准 | LongMemEval-S上的R@5为97.8% | 与原始文件读取相比,令牌减少了71.5倍 |
| AI工具支持 | Claude Code,Copilot,Cursor,任何MCP客户端 | Claude Code、Codex、Copilot、Cursor、Gemini、Aider、Kiro,+10更多 |
每个人都赢了
阿梅姆在以下位置获胜:
- 记住您的偏好、更正和决定 跨项目和工具
- 语义回忆——从模糊查询中找到正确的记忆(97.8%R@5)
- 时间智能——追踪真实情况 *当*,自动到期矛盾
- 自我进化——反射引擎集群,检测矛盾,识别差距
- 零LLM依赖-一切都在本地运行,无需API调用
图形化获胜地点:
- 理解 代码结构 --调用图、导入、类层次结构、跨文件关系
- 多模式摄取——插入代码、论文、屏幕截图、视频,并将它们全部绘制出来
- 令牌效率——71.5倍压缩意味着您的AI读取结构,而不是原始文件
- 语言支持的广度——通过树型AST实现25种编程语言
- 广泛的AI工具支持——15个以上平台,带有专用安装命令
诚实的收获
- 他们不竞争。 阿梅姆记得 *你的* 知识(决策、修正、偏好)。绘制地图 *代码库的* 结构(调用图、依赖关系、架构)。不同的数据,不同的访问模式。
- 如果你愿意,可以两者都用。 跑
graphify .获取项目的结构图。使用amem记住“我们选择这个架构是因为X。”图形告诉你的人工智能 *对存在*记忆告诉它 *为什么事情是这样的*.
- graphify的平台覆盖范围更广 (15+AI工具)。amem在工作的地方有更深入的集成(MCP协议,有33个工具、结构化资源、提示)。
- graphify需要非代码文件的LLM。 amem完全是本地的-没有API调用,没有超出本地嵌入模型的模型推理。
- 真正的选择取决于你的痛点。 如果你的人工智能总是忘记你的偏好和决定→ amem.如果你的AI不能有效地浏览你的代码库→ 图形化。如果两者都有→ 两者都用。
______________________________________________________________________
🌐 平台兼容性
| 功能 | 克劳德代码 | GitHub Copilot命令行界面 | 游标/Windsurf/其他 |
|---|---|---|---|
| 一个命令插件安装 | 是 | 是 | -- |
| 33个MCP工具 | 是 | 是 | 有 |
| 人工智能技能 | 14 | 7 | -- |
| 自动捕捉挂钩 | 是 | 是 | -- |
| 会话自动摘要 | 是 | 是 | -- |
| 自动内存同步 | 是 | -- | -- |
CLI设置(amem-cli init) | 是 | 是 | 有 |
克劳德代码 具有最深入的集成(插件+钩子+自动内存同步)。 Copilot命令行界面 是第二位。 其他MCP客户端 通过手动配置获取完整的33工具服务器。
人工智能技能
Available skills by platform
| 你说什么 | 技能 | 克劳德代码 | Copilot CLI |
|---|---|---|---|
| *“记住永远不要使用任何类型”* | remember | 是 | 是 |
| *“关于auth,你还记得什么?”* | recall | 是 | 是 |
| *“加载此任务的上下文”* | context | 是 | 是 |
| *“显示内存统计信息”* | stats | 是 | 是 |
| *“运行内存医生”* | doctor | 是 | 是 |
| *“导出我的记忆”* | export | 是 | 是 |
| *“列出所有更正”* | list | 是 | 是 |
| *“同步我的克劳德记忆”* | sync | 是 | -- |
| *“打开内存控制面板”* | dashboard | 是 | -- |
| *“安装挂钩”* | hooks | 是 | -- |
______________________________________________________________________
🔄 使用Claude Code自动内存
amem是对Claude内置自动存储器的补充,它不会取代它。
| 克劳德汽车存储器 | amem | |
|---|---|---|
| 捕捉 | 自动、零配置 | 键入置信度得分 |
| 存储 | 单个markdown文件 | 带搜索、图形、时态的SQLite |
| 召回 | 每次会话加载整个文件 | 只显示相关内存 |
| 历史 | 更新时重写过多 | 版本、时间有效性 |
| 搜索 | 无 | 语义+FTS5+图形+重新排序 |
推荐: 保持两者都启用。跑 amem-cli sync 将克劳德的记忆导入amem,以实现统一、结构化的访问。
Claude → amem sync
amem-cli sync # Import all projects
amem-cli sync --dry-run # Preview what would be imported
amem-cli sync --project myapp # Import specific project| 克劳德型 | 名字型 | 信心 |
|---|---|---|
feedback | correction | 1.0 |
project | decision | 0.85 |
user | preference | 0.8 |
reference | topology | 0.7 |
amem → Copilot sync
将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这将生成按优先级分组的结构化标记:
- 更正 (必须遵守)——硬约束
- 决策 --建筑选择
- 偏好 --用户偏好
- 模式 --编码惯例
- 上下文 --拓扑+事实
amem部分被包裹在 `` marks--保留文件中现有的非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功能齐全的网络仪表板,包括:
- 🔍 内存浏览器 --搜索、按类型/层/源过滤、内联操作(升级、降级、过期)
- 🕸️ 交互式知识图谱 --缩放、平移、单击以通过邻域突出显示、细节面板、搜索、定向边进行聚焦
- 📈 分析 --置信度分布、类型细分、会话时间线
- ⏰ 提醒事项 --查看和管理跨会话任务
- 📋 副驾驶预览 --看看会出口到什么
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 |
加性评分确保没有单一的低因素会影响排名。
______________________________________________________________________
⚙️ 配置
Environment variables
| 变量 | 默认值 | 描述 |
|---|---|---|
AMEM_DIR | ~/.amem | 存储目录 |
AMEM_DB | ~/.amem/memory.db | 数据库路径 |
AMEM_PROJECT | *(自动从git)* | 项目范围覆盖 |
Config file (~/.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
}
}📋 Version history
v0.23.0——交互式知识图谱仪表板
具有缩放/平移功能的全宽图形浏览器,单击以聚焦邻域突出显示,具有关系导航的详细信息面板,搜索和过滤,定向边,强制定向布局。管理工具(医生、维修、配置、同步)。18个套件中的255个测试。
v0.19.0——自进化记忆回路
基于HNSW聚类的反射引擎、三层矛盾检测(否定+数值+低重叠)、具有谱系跟踪的合成候选、知识差距检测、效用评分、自动触发微调 memory_inject.新建数据库表: synthesis_lineage, knowledge_gaps, reflection_meta迁移v5。
v0.18.0——渐进式披露和规模
HNSW矢量索引(10k时速度快67倍)、调用/搜索的紧凑模式默认值、DB修复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 |
| 嵌入 | 拥抱脸bge-small-en-v1.5(本地,80MB)+HNSW矢量索引 |
| 重新排序 | ms-marco-MiniLM-L-6-v2(默认开启,int8,批处理,本地) |
| 验证 | Zod 3.25+ .strict() 模式 |
| 测试 | Vitest——19个套件中的281个测试+回忆基准 |
| CI/CD | GitHub操作,npm发布 |
______________________________________________________________________
🤝 贡献
git clone https://github.com/amanasmuei/amem.git
cd amem && npm install
npm run build # zero TS errors
npm test # 281 tests passPR在合并之前必须通过CI。请参阅 问题 对于开放任务。
______________________________________________________________________
Built with ❤️ in 🇲🇾 Malaysia by Aman Asmuei
MIT License · Star ⭐ if amem saves your AI from amnesia
