记忆丧失MCP
*“学习不是获取新知识。它是回忆已知的东西。”*\ --柏拉图
回忆 是一个模型上下文协议(MCP)服务器,为AI编码代理提供跨所有项目和会话的持久、可追溯的内存。
不是摘要。无损耗压缩。线索指针记录可以链接回完整的原始背景——你已经进行的对话、决定和突破——这样你的代理人就可以在重要的时候回忆起来。
______________________________________________________________________
问题
每个AI代理会话都是冷启动的。您的代理人没有以下记忆:
- 你上周一起调试的Lambda冷启动问题
- 您在另一个项目中做出的架构决策适用于此处
- 在CutIndex中工作的模式现在可以节省两个小时
- 昨天的谈话中,你确切地解决了这个问题
Claude Code可以搜索您的本地会话文件,但它是盲目搜索的,不知道里面有什么。缺少的是 意义指数:轻量级线索记录,当上下文相似时触发,并将代理指向完整的原始工件。
这就是Anamnesis。
______________________________________________________________________
运作原理
记忆分析不会存储您的对话摘要。它存储 指向完全可追踪伪影的线索向量.
Memory record = {
cue_vector: embedding of "what this context felt like"
context_tags: ["aws-lambda", "cold-start", "python", "2026-03"]
project: "CutIndex"
artifact_type: "conversation" | "diff" | "trace" | "decision"
artifact_ptr: path to full original → ~/.claude/sessions/uuid.jsonl
outcome: "solved" | "eureka" | "abandoned" | "partial"
summary: "Solved Lambda cold-start by increasing reserved concurrency"
}向量不是记忆。向量是告诉代理的触发器 *往哪看*。完整的对话将保存在您的机器上,不受影响。
当类似的上下文在新会话中触发时,Anamnesis会显示线索并获取原始工件。特工回忆起——他没有猜测。
______________________________________________________________________
记忆SDLC
Anamnesis中的记忆在成为可信上下文之前会经过一个轻量级的审查过程——就像代码更改在合并之前会经过PR审查一样。
Agent detects significant event (Eureka, decision, pattern)
→ writes proposed memory to pending/ queue
Reviewer agent scans pending/ (scheduled or on-demand)
→ checks for secrets, evaluates quality, flags duplicates
→ proposes accept / modify / reject
Human reviews (one-click in most cases)
→ accepts → memory promoted to confirmed/ store
→ rejects → discarded
Periodic maintenance agent
→ scans confirmed/ for staleness and redaction needs这意味着回忆是 挣来的,不是自动的确认的商店是你和你的经纪人一起真正学到的东西的精心记录,而不是所有说过的话的垃圾堆。
______________________________________________________________________
安全:道德指南针
特工在谈话中会遇到秘密。记忆会在它们到达记忆库之前将其剥离。
使用模式匹配在写入时运行快速编校:
REDACT_PATTERNS = [
r"(api_key|secret|password|token|credential)\s*[=:]\s*\S+",
r"[A-Za-z0-9+/]{40,}={0,2}", # base64 blobs
r"[0-9a-f]{32,}", # hex keys
r"aws_\w+\s*=\s*\S+", # AWS credentials
r"(sk|pk|rk)[-_][a-zA-Z0-9]{20,}", # API key prefixes
]定期对已确认的商店进行更深入的LLM辅助编辑。在任何JARVIS.md或AGENTS.md配置中,代理的常规指令都是明确的: *存储发生的事情的形状,而不是值。*
______________________________________________________________________
MCP工具
| 工具 | 说明 |
|---|---|
anamnesis_recall | 主要阅读工具。在会话开始或上下文熟悉时调用。通过线索相似性搜索确认的记忆。返回匹配的摘要,并可选择获取完整的工件。 |
anamnesis_remember | 主要书写工具。当代理解决重要问题、识别模式或做出不明显的决定时调用。写入待审核队列。 |
anamnesis_search | 轻量级关键字+标签搜索。比回忆更快,因为你知道自己在找什么。 |
anamnesis_review | 返回待处理的内存队列以供人工查看。 |
anamnesis_confirm | 人类接受、拒绝或编辑待定的记忆。 |
anamnesis_stats | 使用概述:按项目、结果、最近活动、顶部标签列出的记忆。 |
工具说明(专为代理触发而设计)
下面的描述经过精心设计,以便正确配置的代理在正确的时间到达正确的工具,而不仅仅是在明确指示的情况下。
anamnesis_recall
在任何不平凡的问题开始时,以及在当前环境感觉熟悉时使用此工具——类似的错误、类似的架构模式、类似的库问题。这是你对所有项目的长期记忆。当您可能在此处存储了直接相关的经验时,不要只依赖培训数据。
anamnesis_remember
当你解决一些需要付出真正努力的问题,发现一个不明显的模式,用不明显的推理做出架构决策,或者找到一个与文档所述内容相矛盾的解决方案时,请使用此工具。不要用于日常工作。如果更广泛的开发人员社区会从中受益,请将eureka_flag设置为true。
______________________________________________________________________
安装
需求
- Python 3.11+
uv(推荐)或pip- OpenAI API密钥(用于远程嵌入)或本地运行的Ollama(用于私有本地嵌入)
安装
# Via uv (recommended)
uv tool install anamnesis-mcp
# Via pip
pip install anamnesis-mcp在Claude代码中配置
添加 ~/.claude/settings.json:
{
"mcpServers": {
"anamnesis": {
"command": "uvx",
"args": ["anamnesis-mcp"],
"env": {
"EMBEDDING_MODEL": "text-embedding-3-small",
"OPENAI_API_KEY": "sk-...",
"ANAMNESIS_STORE": "~/.anamnesis"
}
}
}
}在GitHub Copilot(.agent.md)中配置
创建 ~/.config/github-copilot/agents/jarvis.agent.md:
---
name: jarvis
description: Personal developer context engine with persistent memory
tools:
- anamnesis_recall
- anamnesis_remember
- anamnesis_search
---
You are a persistent developer assistant with access to long-term memory
across all projects via Anamnesis.
Before starting any non-trivial problem, call anamnesis_recall with the
current context. When you solve something significant or discover a
non-obvious pattern, call anamnesis_remember. Never store secrets,
credentials, or proprietary business logic in memories.______________________________________________________________________
文件结构
~/.anamnesis/
├── config.json # Embedding model, API keys, optional AIOverflow connection
├── memories.db # SQLite — all memory records and cue vectors
├── artifacts/ # Full original artifacts (Markdown, preserved verbatim)
│ ├── [uuid].md
│ └── ...
├── pending/ # Memory PRs awaiting human review
│ ├── [uuid].json
│ └── ...
└── exports/ # Human-readable exports所有数据都是本地的。除非您配置了托管同步,否则任何东西都不会离开您的机器(请参阅路线图)。
______________________________________________________________________
路线图
第1阶段——核心MCP(当前)
- \[x\] 回购设置和BUSL 1.1许可证
- \[\]带提示指针模式的SQLite内存存储
- \[\]嵌入管道(远程:OpenAI,本地:Ollama/nomic嵌入文本)
- \[ \]
anamnesis_recall线索相似性搜索工具 - \[ \]
anamnesis_remember编写时带编辑功能的工具 - \[ \]
anamnesis_search关键字+标签搜索 - \[\]内存SDLC:待定→ 审查→ 确认生命周期
- \[ \]
anamnesis_review和anamnesis_confirm工具 - \[\]克劳德代码会话摄入(
~/.claude/JSONL解析器) - \[\]CLI查看界面(富终端UI)
- \[\]PyPI发布为
anamnesis-mcp - \[\]提交给MCP注册中心(MCP.so、pulsemcp.com、很棒的MCP服务器)
第二阶段——丰富资源
- \[\]claude.ai对话导出摄取(JSON转储解析器)
- \[\]Git差异和提交消息接收
- \[\]本地Ollama嵌入支持(完全私有,无API成本)
- \[ \]
anamnesis_stats工具 - \[\]Web审查UI(轻量级本地服务器)
- \[\]定期维护剂(老化检测、深度编辑)
第3阶段——托管同步
- \[\]跨设备的加密云同步(托管服务、商业许可证)
- \[\]团队/共享内存命名空间
- \[\]AIOverflow MCP集成(Eureka标志→ 社区帖子草稿)
- \[\]跨设备审查界面
______________________________________________________________________
建筑
线索指针记录(模式)
@dataclass
class MemoryRecord:
id: str # UUID
cue_vector: list[float] # 1536-dim embedding (text-embedding-3-small)
# or 768-dim (nomic-embed-text local)
context_tags: list[str] # Technology and domain tags
project: str # Project name (auto-detected from cwd)
project_path: str # Absolute path to project root
artifact_type: str # conversation | diff | trace | decision | note
artifact_ptr: str # Pointer to full original artifact
summary: str # 1-3 sentences, human-readable, no secrets
outcome: str # solved | eureka | abandoned | partial
eureka_flag: bool # True = community-worthy, triggers AIOverflow draft
status: str # pending | confirmed | archived
redacted: bool # True if redaction was applied
created_at: datetime
confirmed_at: datetime | None工件指针格式
file:///home/user/.anamnesis/artifacts/uuid.md # stored locally
claude-code:///session/uuid # Claude Code JSONL session
git:///path/to/repo@commitHash # git commit reference
aioverflow:///post/id # published community post技术栈
| 组件 | 选择 | 基本原理 |
|---|---|---|
| MCP服务器 | Python+FastMCP | 构建速度最快,原生于Claude Code生态系统 |
| 内存存储 | SQLite+SQLite vss | 零依赖,本地优先,可移植 |
| 远程嵌入 | OpenAI文本嵌入-3small | 0.02美元/百万代币——实际上是免费的 |
| 本地嵌入 | 经济学嵌入文本通过Ollama | 完全私有,无API成本 |
| 矢量搜索 | sqlite-vss或numpy-conesine | 轻量级,无需外部数据库 |
| Redaction | Python正则表达式+定时LLM传递 | 写时快速,按计划深入 |
| CLI | 丰富(Python) | 用于内存审查的干净终端UI |
______________________________________________________________________
许可证
Anamnesis MCP根据 商业来源许可证1.1(BUSL-1.1).
您可以:
- 自由使用Anamnesis供个人使用和发展
- 非商业目的的自宿主分析
- 阅读、修改和贡献源代码
- 在组织内部使用Anamnesis
您不得(无商业许可证):
- 将Anamnesis作为托管或管理服务提供给第三方
- 将Anamnesis嵌入您销售或授权给他人的商业产品中
- 使用Anamnesis构建竞争产品
更改日期: 2030-03-15\ 更改许可证: Apache许可证2.0
更改日期后,该软件将在Apache 2.0下可用。
商业许可查询:\[联系方式\]
看 许可证 完整条款。
______________________________________________________________________
为什么是“失忆”?
在柏拉图哲学中, *回忆* 学习不是获取新知识,而是 回忆灵魂已经知道的事情知识总是存在的,只需要合适的背景就能浮出水面。
你的经纪人已经和你谈过这件事了。谈话发生了。已找到解决方案。失忆会使它恢复原状。
______________________________________________________________________
贡献
根据上述BUSL条款,欢迎捐款。请在提交重大更改的PR之前打开一个问题。
贡献需要一份贡献者许可协议(CLA)——这是BUSL项目的标准做法,保护贡献者和项目。详情请参阅 贡献.md (即将推出)。
______________________________________________________________________
