agentmemory 深度解析:AI Coding Agent 持久化记忆引擎——让 AI 助手真正「记住」你的项目
你有没有过这样的体验:在 Claude Code 里花了一整下午跟 AI 一起搭建了 JWT 认证中间件,配置了 jose 库,写好了测试用例,搞定了 Edge Runtime 兼容性问题。第二天新开一个会话,AI 完全不记得了,你又得从头解释一遍整个 auth 模块的设计决策。这种「健忘症」是当下所有 AI Coding Agent 的共同痛点。agentmemory 的出现,正在从根本上改变这个局面。
一、背景:AI Agent 的「金鱼记忆」困境
1.1 问题的本质
当前主流 AI Coding Agent(Claude Code、Cursor、Codex CLI、OpenClaw 等)的上下文管理,本质上都是**会话级(session-scoped)**的。每个新会话,Agent 对项目的认知从零开始。现有的「记忆」方案主要靠两种机制:
- 静态规则文件:
CLAUDE.md、.cursorrules、.github/copilot-instructions.md等。这些文件需要手动维护,而且有长度上限(通常 200 行左右就难以维护),无法自动演化。 - 上下文注入:把相关文件直接贴进上下文窗口。这种方式在对话轮次增多后迅速触及 token 上限,而且无法跨会话持久化。
本质上,这些都是被动记忆——依赖用户主动提供上下文,而不是 Agent 主动「记住」。
1.2 为什么现有方案不够用
举个真实场景。你在一个 Express 项目中:
- Session 1:你跟 Agent 一起用
jose库实现了 JWT 中间件,放在src/middleware/auth.ts,决策原因是jose支持 Edge Runtime(为了未来迁移到 Vercel Edge Functions)。 - Session 2:你让 Agent 加 rate limiting。它不记得你用
jose的原因,甚至可能建议用jsonwebtoken(不支持 Edge)。你又得解释一遍。 - Session 3:你发现一个 auth 相关的 bug。Agent 不记得之前的测试覆盖了哪些 case,你可能得重新运行一遍测试来解释问题。
这不是智力问题,是记忆基础设施的缺失。
1.3 学界和业界的回应
ICLR 2025 的 LongMemEval 基准测试(500 道问题,专门评估 LLM 长程记忆能力)显示:即便是最强的 LLM,在跨会话记忆检索上,纯 BM25 方案的 R@5 只有 86.2%,MRR 低至 71.5%。
业界出现了几类解法:
| 方案 | 代表项目 | 核心思路 | 问题 |
|---|---|---|---|
| 记忆层 API | mem0 (53K ⭐) | 提供 add()/search() API,开发者手动调用 | 需要改代码,无法自动捕获 |
| Agent 运行时 | Letta/MemGPT (22K ⭐) | 把记忆管理内置于 Agent 运行时 | 框架锁定,迁移成本高 |
| 静态文件 | CLAUDE.md 等 | 手动维护项目规则 | 手动维护,有上限,易过期 |
| MCP 记忆服务器 | agentmemory、mcp-memory | 通过 MCP 协议提供记忆工具 | 需要 Agent 支持 MCP |
agentmemory 的独特之处在于:它不要求你改 Agent 框架,不要求你手动调用 API,而是通过 hooks + MCP 双通道自动捕获会话内容,用混合检索引擎(BM25 + 向量 + 知识图谱,RRF 融合)实现高精准度召回。
二、核心概念:agentmemory 的架构设计
2.1 整体架构
agentmemory 的架构可以分为四层:
┌─────────────────────────────────────────────────┐
│ Agent Integrations Layer │
│ Claude Code (12 hooks) │ Codex (6 hooks) │
│ Cursor (MCP) │ OpenClaw (MCP) │ Hermes ... │
└────────────────────┬────────────────────────────┘
│
┌────────────────────┴────────────────────────────┐
│ MCP Server (Port 3111) │
│ 51 个 MCP 工具:memory_smart_search, │
│ memory_save, memory_sessions, │
│ memory_governance_delete, ... │
└────────────────────┬────────────────────────────┘
│
┌────────────────────┴────────────────────────────┐
│ iii Engine (核心检索引擎) │
│ BM25 + Vector Embedding + Knowledge Graph │
│ RRF (Reciprocal Rank Fusion) 融合排序 │
│ 本地 Embedding: all-MiniLM-L6-v2 (免费) │
└────────────────────┬────────────────────────────┘
│
┌────────────────────┴────────────────────────────┐
│ Storage Layer │
│ SQLite (iii-engine 内置,零外部依赖) │
│ 记忆生命周期管理:consolidation + decay │
└─────────────────────────────────────────────────┘
2.2 记忆的四种生命周期阶段
agentmemory 借鉴了认知科学中人类记忆的模型,将每条记忆分为四个阶段:
Stage 1: Working Memory(工作记忆)
- 当前会话中产生的原始内容(prompt、tool call、response)
- 存储在会话级别的临时缓冲区
- 容量有限,类比于人类短期记忆
Stage 2: Short-term Memory(短期记忆)
- 会话结束后,通过 hooks 触发 consolidation,将工作记忆中有价值的内容提升为短期记忆
- 保留完整的上下文细节
- 在后续会话中优先被检索
Stage 3: Long-term Memory(长期记忆)
- 经过多次检索命中、或置信度评分(confidence scoring)超过阈值的记忆
- 内容被压缩和去重,保留核心语义
- 类比于人类经过重复的「巩固」过程形成的长期记忆
Stage 4: Decay & Forgetting(衰减与遗忘)
- 长期未被访问的记忆,置信度逐步衰减
- 衰减到阈值以下自动删除(auto-forget)
- 这避免了记忆库无限膨胀,也模拟了人类的「遗忘曲线」
这个生命周期机制是 agentmemory 区别于 mem0 等方案的关键——mem0 的记忆是静态的,不会自动演化。
2.3 混合检索引擎:BM25 + Vector + Graph 的 RRF 融合
单一检索方式都有局限性:
- BM25(关键词):精确匹配能力强,但无法处理语义相似(搜 "database performance optimization" 找不到 "N+1 query fix")
- Vector Embedding(语义向量):能捕获语义相似,但对精确关键词匹配(函数名、变量名)不够精确
- Knowledge Graph(知识图谱):能捕获实体间的关系("auth.ts 使用了 jose"),但构建成本高
agentmemory 使用 RRF(Reciprocal Rank Fusion) 将三种检索结果融合:
# RRF 公式(概念性伪代码)
def rrf_fusion(bm25_results, vector_results, graph_results, k=60):
fused_scores = {}
for rank, doc in enumerate(bm25_results, 1):
fused_scores[doc.id] = fused_scores.get(doc.id, 0) + 1/(k + rank)
for rank, doc in enumerate(vector_results, 1):
fused_scores[doc.id] = fused_scores.get(doc.id, 0) + 1/(k + rank)
for rank, doc in enumerate(graph_results, 1):
fused_scores[doc.id] = fused_scores.get(doc.id, 0) + 1/(k + rank)
return sorted(fused_scores.items(), key=lambda x: x[1], reverse=True)
Benchmark 数据(LongMemEval-S):
| 系统 | R@5 | R@10 | MRR |
|---|---|---|---|
| agentmemory(三路融合) | 95.2% | 98.6% | 88.2% |
| BM25-only(fallback) | 86.2% | 94.6% | 71.5% |
| mem0(仅向量) | ~68.5% | - | - |
| Letta(仅向量归档) | ~83.2% | - | - |
R@5(Recall@5)= 前5条结果中包含正确答案的比例。95.2% 意味着几乎每次都能找回相关记忆。
2.4 置信度评分(Confidence Scoring)
每条记忆有一个动态的 confidence 值(0~1),更新规则:
- 检索命中 → confidence += α(默认 0.1)
- 会话中显式确认(用户说「对,就是这样」)→ confidence += β(默认 0.3)
- 衰减周期触发 → confidence *= γ(默认 0.95,每次 decay 周期)
- 显式遗忘(
/forget命令)→ confidence = 0,触发删除
这个机制使得经常访问的记忆会越来越「牢固」,而冷记忆会自动清理。
三、与 Claude Code / Codex / Cursor 的集成机制
3.1 Hooks:零手动操作的自动捕获
agentmemory 对 Claude Code 注册了 12 个 hooks,覆盖会话全生命周期:
| Hook | 触发时机 | 作用 |
|---|---|---|
| SessionStart | 会话启动 | 注入相关记忆到上下文 |
| UserPromptSubmit | 用户提交 prompt | 异步触发记忆检索 |
| PreToolUse | 工具调用前 | 记录工具调用意图 |
| PostToolUse | 工具调用后 | 捕获工具结果,存入工作记忆 |
| PreCompact | 上下文压缩前 | 将重要记忆从工作记忆提升到短期记忆 |
| Stop | 会话停止 | 触发 consolidation,将短期记忆写入持久化存储 |
| Notification | 通知事件 | 记录通知内容 |
| SessionEnd | 会话结束(显式) | 最终化本次会话的记忆 |
| SubagentStart | 子 Agent 启动 | 继承父 Agent 的记忆上下文 |
| SubagentEnd | 子 Agent 结束 | 将子 Agent 记忆合并回父 Agent |
| TaskCompleted | 任务完成 | 标记记忆的完成状态 |
| PostToolUseFailure | 工具调用失败 | 记录失败案例,避免重复错误 |
Codex CLI 的 hook 机制略有不同(参考 codex-rs/hooks/src/engine/discovery.rs),agentmemory 为其适配了 6 个 hooks(SessionStart、UserPromptSubmit、PreToolUse、PostToolUse、PreCompact、Stop),通过 CLAUDE_PLUGIN_ROOT 环境变量注入 hook 子进程。
3.2 MCP 工具:51 个记忆操作原语
当 agentmemory 服务器运行在 localhost:3111 时,任何支持 MCP 的 Agent 可以调用以下工具(摘录最重要的):
检索类:
memory_smart_search— 混合检索(BM25+Vector+Graph),最主要的使用入口memory_search— 仅 BM25 检索memory_vector_search— 仅向量检索memory_graph_traverse— 知识图谱遍历
写入类:
memory_save— 手动保存一条记忆memory_consolidate— 触发记忆巩固memory_session_snapshot— 保存当前会话快照
管理类:
memory_sessions— 列出所有会话memory_session_replay— 回放某个会话(用于调试)memory_governance_delete— 按策略删除记忆(支持按时间、关键词、confidence 阈值)memory_forget— 显式遗忘某条记忆
信号类(多 Agent 协调):
memory_signal— 向其他 Agent 发送信号(例如:Agent A 完成了数据库迁移,发信号给 Agent B)memory_lease_acquire— 获取记忆区的写锁(避免多 Agent 同时修改同一条记忆)
3.3 安装:30 秒完成
Claude Code:
# 终端 1:启动记忆服务器
npx @agentmemory/agentmemory
# 终端 2:安装插件
/plugin marketplace add rohitg00/agentmemory
/plugin install agentmemory
# 验证
curl http://localhost:3111/agentmemory/health
# 预期输出: {"status":"ok",...}
# 实时查看记忆积累
open http://localhost:3113
Codex CLI:
# 终端 1:启动记忆服务器
npx @agentmemory/agentmemory
# 终端 2:安装插件
codex plugin marketplace add rohitg00/agentmemory
codex plugin install agentmemory
Cursor / Windsurf / Claude Desktop(MCP 模式):
在 .cursor/mcp.json(或对应配置)中添加:
{
"mcpServers": {
"agentmemory": {
"command": "npx",
"args": ["-y", "@agentmemory/mcp@latest"]
}
}
}
OpenClaw:
在 OpenClaw 的 MCP 配置中添加:
{
"mcpServers": {
"agentmemory": {
"command": "npx",
"args": ["-y", "@agentmemory/mcp@latest"],
"env": {
"AGENTMEMORY_URL": "http://localhost:3111"
}
}
}
}
四、实战:从零开始用 agentmemory 改造开发流程
4.1 场景设定
假设我们有一个真实的 Express + TypeScript 项目,用 Claude Code 进行开发。我们要实现:
- JWT 认证中间件(使用 jose,支持 Edge Runtime)
- Rate Limiting(基于 Redis)
- 数据库 N+1 查询修复(使用 DataLoader)
4.2 Session 1:JWT 认证中间件
用户 prompt:
帮我在 src/middleware/auth.ts 实现 JWT 认证中间件。
要求:
- 使用 jose 库(不要用 jsonwebtoken,因为需要支持 Edge Runtime)
- 支持 HS256 和 RS256 两种算法
- 错误处理要完善(过期、格式错误、签名错误)
- 写完整的单元测试
Agent 响应(节选):
// src/middleware/auth.ts
import { jwtVerify, createRemoteJWKSet, SignJWT } from 'jose';
interface AuthConfig {
secret?: string;
jwksUri?: string;
algorithm: 'HS256' | 'RS256';
}
export function createAuthMiddleware(config: AuthConfig) {
const { secret, jwksUri, algorithm } = config;
// RS256: 使用远程 JWKS
const jwks = jwksUri ? createRemoteJWKSet(new URL(jwksUri)) : null;
return async (req: Request): Promise<JwtPayload | null> => {
const authHeader = req.headers.get('Authorization');
if (!authHeader?.startsWith('Bearer ')) {
throw new AuthError('MISSING_TOKEN', 'Authorization header missing');
}
const token = authHeader.slice(7);
try {
if (algorithm === 'RS256' && jwks) {
const { payload } = await jwtVerify(token, jwks, {
algorithms: ['RS256'],
});
return payload as JwtPayload;
} else if (algorithm === 'HS256' && secret) {
const { payload } = await jwtVerify(
token,
new TextEncoder().encode(secret),
{ algorithms: ['HS256'] }
);
return payload as JwtPayload;
}
throw new AuthError('INVALID_ALGORITHM', `Unsupported: ${algorithm}`);
} catch (err) {
if (err instanceof jwtVerify.errors.JWTExpired) {
throw new AuthError('TOKEN_EXPIRED', 'Token has expired');
}
if (err instanceof jwtVerify.errors.JWSSignatureVerificationFailed) {
throw new AuthError('INVALID_SIGNATURE', 'Signature verification failed');
}
throw new AuthError('INVALID_TOKEN', 'Token verification failed');
}
};
}
Session 结束后,agentmemory 的 Stop hook 自动触发,本次会话的关键信息被 consolidation 为以下记忆条目(在 http://localhost:3113 查看):
[id: mem_001, confidence: 0.6, type: decision]
主题: JWT 中间件技术选型
内容: 项目选择 jose 而非 jsonwebtoken,原因是需要支持 Edge Runtime(Vercel Edge Functions 兼容)
来源: Session 1, tool call: write_file(src/middleware/auth.ts)
关联文件: src/middleware/auth.ts
4.3 Session 2:Rate Limiting(跨会话记忆召回)
新会话,用户 prompt:
帮我加 rate limiting,用 Redis 实现。
关键:这时 Agent 在 SessionStart hook 中自动调用了 memory_smart_search,召回了 Session 1 的记忆。Agent 的上下文里现在有了:
[自动注入的上下文]
项目背景:
- 认证中间件使用 jose(Edge Runtime 兼容),文件:src/middleware/auth.ts
- 错误处理包含 MISSING_TOKEN、TOKEN_EXPIRED、INVALID_SIGNATURE 三种错误
所以 Agent 在实现 rate limiting 时,不会建议用 jsonwebtoken,也不会忽略 Edge Runtime 兼容性。它可能会这样回应:
好的,我来加 Redis rate limiting。
考虑到你的项目需要 Edge Runtime 兼容(你在 auth 中间件选择了 jose),
我建议使用 @upstash/ratelimit(基于 Redis,支持 Edge)而不是 redis npm 包。
这就是跨会话记忆的价值:Agent 做出了一致的技術决策。
4.4 Session 3:N+1 查询修复
用户 prompt:
我的 /api/users 接口在查用户列表时每个用户都单独查了数据库,
有 N+1 问题,帮我修复。用 DataLoader。
Agent 召回了相关记忆后,给出:
// 修复前(N+1)
router.get('/api/users', async (req) => {
const users = await db.user.findMany();
const result = [];
for (const user of users) {
const posts = await db.post.findMany({ where: { authorId: user.id } }); // N+1!
result.push({ ...user, posts });
}
return result;
});
// 修复后(DataLoader)
import DataLoader from 'dataloader';
const postsByAuthorIdLoader = new DataLoader<number, Post[]>(async (authorIds) => {
const posts = await db.post.findMany({
where: { authorId: { in: [...authorIds] } },
});
const mapped = new Map<number, Post[]>();
for (const post of posts) {
const list = mapped.get(post.authorId) || [];
list.push(post);
mapped.set(post.authorId, list);
}
return authorIds.map(id => mapped.get(id) || []);
});
router.get('/api/users', async (req) => {
const users = await db.user.findMany();
const result = await Promise.all(
users.map(async (user) => ({
...user,
posts: await postsByAuthorIdLoader.load(user.id),
}))
);
return result;
});
语义搜索的价值体现:当你在 Session 4 搜索「database performance optimization」时,memory_smart_search 能通过语义匹配找到这条 N+1 修复记录——纯关键词搜索是做不到的。
4.5 导入历史会话
如果你在安装 agentmemory 之前已经有很多 Claude Code 会话记录(~/.claude/projects/*.jsonl),可以一键导入:
# 导入所有历史会话
npx @agentmemory/agentmemory import-jsonl
# 或导入单个文件
npx @agentmemory/agentmemory import-jsonl ~/.claude/projects/-my-project/abc123.jsonl
导入后,这些历史会话会出现在 http://localhost:3113 的 Replay 选项卡中,可以逐帧回放(包含 prompt、tool call、tool result、response 的时序回放,支持 0.5×~4× 速度控制)。
五、性能与成本分析
5.1 Token 消耗对比
这是 agentmemory 最有说服力的数据之一:
| 方案 | 年 Token 消耗 | 年成本(GPT-4o 价格) |
|---|---|---|
| 粘贴完整上下文(每次从头解释) | 19.5M+ | 不可行(超出上下文窗口) |
| LLM 摘要后注入 | ~650K | ~$500/年 |
| agentmemory(云端 embedding) | ~170K | ~$10/年 |
| agentmemory(本地 embedding) | ~170K | $0/年 |
本地 embedding 模型:all-MiniLM-L6-v2(Sentence Transformers),~80MB,首次运行时自动下载,之后完全离线。不需要 OpenAI API Key,不产生任何费用。
5.2 检索性能
iii Engine(agentmemory 的底层检索引擎)在本地 SQLite 上的检索延迟:
- 纯 BM25:< 5ms(适用于 < 10K 记忆条目的场景)
- 向量检索(本地 embedding):< 20ms(brute force cosine similarity,适用于 < 100K 条目)
- 混合检索(三路 RRF 融合):< 30ms
- 知识图谱遍历:取决于图的大小,通常 < 50ms
对于个人开发者的使用场景(年记忆条目 < 50K),性能完全不是瓶颈。
5.3 存储占用
每条记忆的平均大小约 2KB(包含原始内容、元数据、embedding 向量)。
- 10K 条记忆 ≈ 20MB(SQLite 文件)
- 100K 条记忆 ≈ 200MB
agentmemory 的 decay 机制会自动清理长期未访问的记忆,实际上很难达到 100K 条的规模。
六、进阶:多 Agent 协作与信号机制
6.1 问题场景
在复杂项目中,你可能会同时运行多个 Agent:
- Agent A:负责后端 API 开发
- Agent B:负责前端组件开发
- Agent C:负责测试编写
当 Agent A 修改了 API 接口的返回格式,Agent B 和 C 应该感知到这个变化。传统方案是靠人工协调,或者每个 Agent 各自维护自己的上下文。
6.2 agentmemory 的信号机制
agentmemory 提供了 signal(信号)和 lease(租约)原语:
// Agent A 完成 API 修改后发送信号
await memory_signal({
type: 'api_contract_changed',
payload: {
endpoint: '/api/users',
change: 'added posts field to response',
affectedFiles: ['src/routes/users.ts'],
},
recipients: ['agent-b', 'agent-c'],
});
// Agent B 在 SessionStart 时检查信号
const signals = await memory_check_signals({ recipient: 'agent-b' });
// 如果收到 api_contract_changed 信号,自动更新前端类型定义
lease 机制防止多个 Agent 同时修改同一条记忆:
// Agent A 获取对 mem_001 的独占写权限
await memory_lease_acquire({ memoryId: 'mem_001', ttlSeconds: 30 });
// 写入...
await memory_save({ id: 'mem_001', content: '...' });
// 释放
await memory_lease_release({ memoryId: 'mem_001' });
这在多 Agent 并行工作时避免了记忆的竞态条件。
七、与竞品深度对比
7.1 agentmemory vs mem0
| 维度 | agentmemory | mem0 |
|---|---|---|
| 自动捕获 | 12 个 hooks,零手动操作 | 需要手动调用 add() |
| 检索精度(R@5) | 95.2%(三路融合) | 68.5%(仅向量) |
| 多 Agent 协调 | 信号 + 租约原语 | 无(只有 REST API) |
| 外部依赖 | 零(SQLite + 本地 embedding) | 需要 Qdrant 或 pgvector |
| 框架锁定 | 无(MCP 标准协议) | 无 |
| 实时查看 | 内置 Viewer(Port 3113) | Cloud Dashboard |
结论:mem0 更适合需要集中式记忆服务的企业场景(多用户共享记忆库);agentmemory 更适合个人开发者的本地、私有、零运维场景。
7.2 agentmemory vs Letta (MemGPT)
Letta 是一个完整的 Agent 运行时,记忆管理是其中的一个子系统。如果你用 Letta,你必须用 Letta 的 Agent 框架。
agentmemory 不绑定任何 Agent 框架——通过 MCP 协议,它可以同时服务 Claude Code、Cursor、Codex CLI、OpenClaw 等,记忆在它们之间共享。
这是一个关键区别:agentmemory 是记忆基础设施,Letta 是 Agent 平台。
7.3 agentmemory vs CLAUDE.md(内置方案)
CLAUDE.md 是静态文件,需要手动编辑,有长度上限,无法自动演化。
agentmemory 是动态记忆系统,自动捕获,自动演化,理论上限取决于磁盘空间(而且有 decay 机制防止无限增长)。
两者不是替代关系,而是互补:CLAUDE.md 放项目级的静态规则(编码规范、构建命令等),agentmemory 放会话级的动态上下文(技术决策、bug 修复记录、架构演进历史)。
八、部署与运维实践
8.1 生产环境部署建议
虽然 agentmemory 默认是本地运行,但如果你在一个团队中想共享记忆:
# 在一台始终在线的服务器上运行
npx @agentmemory/agentmemory --host 0.0.0.0 --port 3111
# 其他开发者通过 AGENTMEMORY_URL 环境变量连接
export AGENTMEMORY_URL=http://your-server:3111
注意:目前 agentmemory 没有内置认证机制(Roadmap 中有计划)。在内网部署时,依赖网络隔离;公网部署需要前置反向代理做鉴权。
8.2 数据备份
agentmemory 的数据存储在 ~/.agentmemory/ 目录(SQLite 文件)。
# 备份
cp ~/.agentmemory/db.sqlite ~/backups/agentmemory-$(date +%Y%m%d).sqlite
# 或者设置定时任务(cron)
0 2 * * * cp ~/.agentmemory/db.sqlite ~/backups/agentmemory-$(date +\%Y\%m\%d).sqlite
8.3 升级
npx @agentmemory/agentmemory upgrade
这个命令会:
- 更新
@agentmemory/agentmemorynpm 包 - 必要时运行
cargo install iii-engine --force(iii-engine 是用 Rust 写的) - 迁移数据库 schema(如果有破坏性变更)
九、总结与展望
9.1 核心收获
AI Coding Agent 的健忘症是可以解决的,而且不需要改变你的工作流——agentmemory 的 hooks 机制实现了零摩擦的自动记忆捕获。
混合检索(BM25 + Vector + Graph) 是记忆检索的正确方向,单一检索方式都有无法弥补的短板。agentmemory 的 95.2% R@5 是这个设计的最好证明。
记忆生命周期管理(consolidation + decay + auto-forget)使得记忆库可以长期维护而不膨胀,这是静态方案(如 CLAUDE.md)做不到的。
MCP 协议使得记忆可以成为 Agent 无关的基础设施——你的 Claude Code 会话和 Cursor 会话可以共享同一份记忆,这是框架绑定方案做不到的。
9.2 适用场景
agentmemory 最适合以下开发者:
- 长期使用 AI Coding Agent,受困于跨会话记忆丢失
- 项目有持续的架构演进,希望 AI 能「记住」技术决策的历史上下文
- 重视隐私,希望数据完全本地化
- 使用多个 AI Coding 工具(Claude Code + Cursor + Codex CLI),希望记忆互通
9.3 Roadmap 中的值得关注的特性
根据 agentmemory 的 CHANGELOG 和 GitHub Issues:
- 多用户隔离(team mode):即将支持多用户场景下的记忆隔离与共享策略
- 认证机制:MCP 服务器的 Token 鉴权
- 更大规模的向量检索优化:当记忆条目超过 100K 时,brute force 向量检索会变慢,计划引入 HNSW 索引
- 记忆导出/导入标准化:支持将记忆导出为 Markdown 文件,便于人工审查和编辑
十、快速上手检查清单
-
npx @agentmemory/agentmemory启动服务器 - 在 Claude Code 中执行
/plugin install agentmemory - 验证:
curl http://localhost:3111/agentmemory/health返回{"status":"ok"} - 打开
http://localhost:3113实时查看记忆积累 - 进行一次完整会话,然后在新会话中测试记忆召回
- (可选)导入历史 JSONL 会话:
npx @agentmemory/agentmemory import-jsonl
参考资源:
- GitHub: https://github.com/rohitg00/agentmemory
- 官网: https://agent-memory.dev
- iii Engine: https://github.com/iii-hq/iii
- LongMemEval 论文: ICLR 2025
- NPM 包: https://www.npmjs.com/package/@agentmemory/agentmemory
如果你也在用 AI Coding Agent,且受困于跨会话记忆丢失问题,agentmemory 值得一试。它不会改变你的工作流,却能让你的 AI 助手真正「记住」你的项目。