齐卡龙
   
*Zikkaron在希伯来语中意为“记忆”*
每次关闭选项卡时,你的人工智能都会忘记你。你解释的每一个架构决策,你一起经历的每一次调试兔子洞,每一次“记住,我们使用的是Postgres而不是SQLite”的更正。跑了。你开始下一个会话时,对自己的工具一无所知。
Zikkaron是基于计算神经科学的Claude Code的持久内存引擎。它会记住你做了什么,你怎么想,你决定了什么,为什么。不是作为一个被推入上下文的愚蠢文本转储,而是作为一个活的记忆系统,在正确的时间巩固、智能遗忘和重建正确的上下文。
26个子系统。24个MCP工具。完全在您的机器上运行。一个SQLite文件。
两分钟内不要再重复自己
pip install zikkaron添加到您的Claude代码配置中:
{
"mcpServers": {
"zikkaron": {
"command": "zikkaron"
}
}
}告诉克劳德如何使用它。把这个放到你的全局 ~/.claude/CLAUDE.md (您的主目录,而不是每个项目):
## Memory
- On every new session, call `recall` with the current project name
- Before starting any task, call `get_project_context` for the current directory
- After completing significant work, call `remember` to store decisions and outcomes或者让Zikkaron来处理。每次启动时,它都会自动同步 ~/.claude/CLAUDE.md 通过以下方式获取最新说明 sync_instructions。你只设置了一次,就再也不想了。
这到底是什么感觉
星期一。 您花了一个小时调试一个令人讨厌的身份验证令牌竞争条件。Claude帮助您将其追溯到Redis和JWT配置之间的TTL不匹配。你修好它。克劳德会储存记忆。
星期四。 用户报告间歇性注销。在同一个项目中打开Claude Code。在你描述这个bug之前,Claude回忆起周一的Redis TTL修复,检查它是否相关,并询问你添加的中间件是否正在处理Redis在会话中期重启的边缘情况。
这就是区别。不是“这是你的对话历史”,而是真正的回忆。你的工具能够理解你一直在构建的东西的形状,而不仅仅是你上次键入的单词。
实际有效的检索
我们测试了Zikkaron LoCoMo (Maharana等人,ACL 2024),长对话记忆的标准基准。10个对话,1986个问题,从简单的事实查找到多跳推理,再到旨在绊倒你的对抗性技巧问题。
| Zikkaron | 这意味着什么 | |
|---|---|---|
| Recall@10 | 86.8% | 正确的记忆在前10名中出现了近9次 |
| 平均倒数排名 | 0.708 | 正确答案通常是第一个或第二个结果 |
| 单跳MRR | 0.757 | 事实问题,几乎总是在第一次尝试时就确定下来 |
| 时间MRR | 0.712 | “X什么时候发生的?”质疑,强烈的时间意识 |
问题是,在查询时没有运行LLM。没有API调用。没有十亿参数模型。只需要一个22MB的嵌入模型、一个SQLite文件和一堆神经科学算法就可以完成繁重的工作。大多数达到这样数字的系统都需要GPT-4在循环中。Zikkaron通过Hopfield能量评分、扩频激活和交叉编码器重链器实现了这一目标。
BEAM:1000万个对话令牌,一个记忆系统
束 (Tavakoli等人,ICLR 2026)是现存最难的长期记忆基准。10个对话,每个对话涉及1000万个代币。200个探究性问题,涵盖10种记忆能力,其中包括三个之前没有基准测试的问题:矛盾解决、事件排序和指令遵循。
论文中的每个系统都以这种规模崩溃。报告的最佳结果(在Llama-4-Maverick上运行的LIGHT框架)得分为0.266。大多数能力在1000万代币时降至接近零。上下文窗口方法无法适应它。RAG方法淹没在噪声中。
Zikkaron得分 总体0.404,比ICLR 2026论文中的最佳系统提高了52%。
| 能力 | 齐卡龙 | 光(最好) | 发生了什么 |
|---|---|---|---|
| 说明如下 | 0.750 | 0.500 | +50%.Claude Opus即使在不完美的检索中也能很好地阅读 |
| 信息抽取 | 0.650 | 0.375 | +73%.从10K个记忆中检索到的具体事实 |
| 知识更新 | 0.650 | 0.375 | +73%.热衰变揭示了一个事实的最新版本 |
| 偏好遵循 | 0.642 | 0.483 | +33%.跨会话跟踪用户偏好 |
| 弃权 | 0.450 | 0.750 | 知道你 *不要* 没有草稿就很难知道 |
| 总结 | 0.216 | 0.277 | 摘要一次需要多个源段落 |
| 多会话推理 | 0.195 | 0.135 | +44%.跨越遥远的转折点连接证据 |
| 时间推理 | 0.175 | 0.075 | +133%.X相对于Y是什么时候发生的? |
| 矛盾解决 | 0.163 | 0.050 | +226%.检测到相互矛盾的陈述,相隔数千圈 |
| 事件排序 | 0.150 | 0.266 | 检索可以找到事件,但按时间顺序排序很困难 |
| 总体 | 0.404 | 0.266 | +52% |
十种能力中有七种超过了已发表的最新水平。最大的收获在于结构化记忆最有帮助的能力:矛盾解决(+226%)、时间推理(+133%)和知识更新(+73%)。这些是论文中每个系统得分接近零的能力,因为上下文窗口方法没有跟踪事实如何变化或事件何时发生的机制。Zikkaron的热力学衰变、再固结和时间元数据本机处理这些问题。
LIGHT获胜的三种能力(弃权、事件排序和总结)反映了真正的局限性。弃权要求识别信息缺失的时间,这得益于LIGHT的草稿栏,它明确地跟踪了所讨论的内容。事件排序需要完美的时间顺序,而不仅仅是检索正确的事件。摘要需要同时检索许多源段落,而我们的检索预算仅涵盖相关内容的一小部分。
一个重要的警告:BEAM论文的基线使用GPT-4.1-nano作为读者模型。我们使用Claude Opus 4.6,它的性能要高得多。指令遵循结果(0.750,检索MRR仅为0.086)表明,读者质量对QA分数的贡献与检索质量无关。我们的检索指标(MRR 0.422,Recall@100.353)与模型无关,与论文的基线直接可比。
基准配置:BEAM-10M分割,10个对话,200个问题,与论文的RAG模式相匹配的成对块摄入,根据量规二元金块评分 int() 匹配论文评估代码的演员阵容,Kendall tau-b通过scipy进行事件排序,每个对话都有新的数据库。
希波克拉底回放:压实后幸存的背景
这是一个没有人谈论的问题。Claude Code有一个200k/1M的令牌上下文窗口。在长时间会话中,当该窗口填满时 *紧凑型*:总结旧消息,删除工具输出,转述您的说明。重要的细微差别消失了。你在谈话初期所做的决定会变成模糊的总结。
希波克拉底重播 修复此问题。以神经科学现象命名,在这种现象中,你的大脑在睡眠中重放重要的经历,将其巩固为长期记忆,它将上下文压缩视为“睡眠”,并在克劳德“醒来”时重放重要的事情
它是如何工作的:
在压实撞击之前,钩子会发出声音。Zikkaron会耗尽你的活动上下文:你在做什么,哪些文件是打开的,你做了什么决定,哪些错误是未解决的。它将所有这些存储为检查点。
压实后,第二个钩子开火。Zikkaron智能地重建你的上下文。不是把所有东西都放回去,而是组装正确的部分:你最新的检查点、你确定为关键的任何事实、最热门的项目记忆,以及根据你的使用模式对你下一步需要什么的预测。
你也可以明确什么是重要的:
Tool: anchor
content: "We're using the event-sourcing pattern. All state changes go through the event bus."
reason: "Architecture constraint"锚定的记忆得到最大程度的保护。无论发生什么,它们总是能在压实中幸存下来。
每个项目一次设置:
Tool: install_hooks
project_directory: "/path/to/your/project"在那之后,一切都是自动的。你不用想,你不用手动打电话。钩子开火,上下文耗尽,上下文恢复。你的长时间会议。..工作。
零间隙存储器(v1.3.0)
以前的版本仍然存在差距。你会在某件事上工作一个小时,取得渐进式的进展,而Zikkaron的写闸会阻挡其中的一半,因为每一小步相对于最后一步看起来都“不足为奇”。你会做出一个关键的架构决策,它会慢慢变成一个要点。你会回到一个新的会议,克劳德不会知道你刚才在做什么。
v1.3.0修复了所有这些问题:
自适应写门。 系统现在跟踪您最近存储的10个记忆。当你显然在处理同一个任务时——同一个目录、同一个时间段、相似的内容——它降低了令人惊讶的阈值,从而实现了渐进式的进展。大门仍然挡住了噪音。它只是停止阻碍你的工作。
决策自动保护。 当你说“决定使用Redis而不是Memcached”或“选择事件源模式而不是CRUD”时,Zikkaron会检测到决策模式并自动将其标记为受保护。受保护的记忆永远不会压缩,也不会快速衰减。你的决定比你的会议更有效。
自动动作捕捉。 A. PostToolUse 克劳德每次调用工具后,钩子都会开火。文件编辑、bash命令、搜索——所有这些都被捕获到一个轻量级的操作日志中。整合守护进程会定期将这些处理成真实的内存。你不打电话 remember 用于日常工作。系统只知道。
会话上下文注入。 A. SessionStart 钩子在每个新会话上启动,并将您的项目上下文(热记忆、锚定事实、最近的操作、最后一个检查点)直接注入Claude的上下文窗口。克劳德在开始每一节课时都已经知道你在做什么。
微检查点。 该系统现在不再每50次工具调用进行一次检查点,而是自动检查重大事件:遇到的错误、做出的决定、高惊喜信息。关键状态转换在发生的那一刻就被捕捉到了。
会议连贯性。 在过去4小时内创建的记忆会获得线性衰减的热量奖励。你再也不会碰到“我10分钟前才告诉过你”的问题了。
所有钩子都可以在stdio和HTTP传输模式下工作——它们直接访问SQLite数据库,不需要服务器通信。
项目播种:冷启动解决
Zikkaron通过会话有机地构建记忆。这对正在进行的工作来说很棒,但是当你将它安装在你已经工作了一年的代码库上时呢?在克劳德对你的项目进行有意义的报道之前,你会花几十次时间。到那时,你已经重复了五十次了。
seed_project 修复此问题。只需一次调用,Zikkaron就会扫描您的整个项目,并从结构、配置、文档、CI/CD、入口点和每个组件的摘要中创建基础记忆。Claude在开始下一节课时已经知道你的项目是什么,它是用什么构建的,以及它是如何组织的。
# CLI
zikkaron seed /path/to/your/project
# Preview without storing
zikkaron seed /path/to/your/project --dry-run或者在Claude Code中将其称为MCP工具:
Tool: seed_project
directory: "/path/to/your/project"它提取了什么:
- 项目概述 --名称、技术栈、文件计数、目录树
- 配置文件 —
package.json,pyproject.toml,Cargo.toml,go.mod以及15+其他人。正确解析(TOML通过tomllibJSON通过json),而不是正则表达式抓取。依赖关系、脚本、工作区、构建后端——全部提取。 - 文档 --自述,架构,贡献,CLAUDE.md,变更日志
- CI/CD --GitHub Actions、GitLab CI、Jenkins、Travis、Azure管道
- 入口点 —
main.*,index.*,app.*,server.*,__main__.py - 每个组件摘要 --monorepo感知。通过查找嵌套配置文件来检测子项目边界(
packages/web/package.json,services/api/Cargo.toml),而不仅仅是顶级目录
专为重播而设计。 重新播种可以干净地替换旧的种子记忆,而不是附加到它们上面。你的项目不断发展,你重新播种,记忆反映了当前的状态。所有种子记忆都已标记 _seed 用于识别。
热分化。 并非所有种子记忆都是平等的。项目概述和文档开始时比组件文件列表(0.5)更热(0.85-0.9)。克劳德首先展示了重要的东西。
LongMemEval
我们跑完了全程 LongMemEval 基准测试(Wu等人,ICLR 2025),目前用于评估聊天助手长期交互记忆的标准。500个人类策划的问题,分为六个类别,每个类别包含约40个会话历史(约115k个令牌)。该基准测试了LoCoMo没有的东西:你是否能回忆起助手说的话(不仅仅是用户),你是否能跟踪信息随时间的变化,你是否知道你不知道什么,以及你是否能在相隔几周的会话中推理。
| Zikkaron | 这意味着什么 | |
|---|---|---|
| Recall@10 | 96.7% | 几乎每个问题的前10个结果中都显示了正确的记忆 |
| 平均倒数排名 | 0.945 | 正确答案几乎总是返回的第一个结果 |
| 知识更新MRR | 1.000 | 当用户信息发生变化时,Zikkaron总是首先显示最新版本 |
该论文的最佳检索率达到78.4%Recall@10在这个数据集上。Zikkaron在检索循环中没有任何LLM的情况下达到96.7%。
按类别检索细分:
| 类别 | MRR | Recall@10 |
|---|---|---|
| 单会话(用户) | 0.973 | 1.000 |
| 单次会话(助理) | 0.964 | 0.964 |
| 单次会话(首选) | 0.810 | 0.967 |
| 多会话推理 | 0.966 | 0.958 |
| 时间推理 | 0.902 | 0.955 |
| 知识更新 | 1.000 | 0.979 |
知识更新获得了完美的MRR,因为基于热的衰变自然会将新的信息推到同一事实的旧版本之上。这不是为基准设计的。这只是热力学模型的工作原理。
时间推理是最难的类别,最低的MRR为0.902,这仍然意味着正确的记忆通常在前两个结果中。像“我几周前参加了X”这样的问题需要与会话时间戳进行匹配,我们基于嵌入的检索通过我们直接嵌入内存内容的时间元数据来处理这个问题。
完整的QA评估(使用克劳德作为读者和评判者)达到了75.6%的总体准确率,在知识更新(85.9%)和辅助回忆(94.6%)方面表现突出。多会话推理(54.9%)是主要的差距,这是一个读者综合问题,而不是检索问题。对于多会话问题,我们在95.8%的时间里检索到正确的会话。读者只需要做更多的工作来连接它们之间的信息。
基准配置:LongMemEval_S变体,轮级内存分解,每个问题新鲜数据库,端到端评估500个问题。
幕后的科学
Zikkaron并不像数据库存储行那样存储内存。它对待他们更像是大脑对待经验。
记忆有温度。 每一段记忆都是热的。如果你继续访问它,它会一直很热。如果你不这样做,它就会冷却。在阈值以下,它会压缩:首先是要点,然后是标签,最后完全消失。这不是bug。这是速率失真最优遗忘,与你的大脑用来决定什么值得保留的数学框架相同。重要的记忆难以压缩。令人惊讶的是,热量会增加。无聊、多余的东西悄然消失。
仓库有一个看门人。 并非所有事物都值得被铭记。Zikkaron维护着一个关于它已经知道的信息的预测模型,并且只存储违反其预期的信息。重复同样的事情两次,写门会阻止第二次尝试。这是预测编码:与你的新皮层过滤感官输入的机制相同。只有预测误差才能通过。
检索会改变内存。 当你在一个新的环境中回忆起一段记忆时,它不仅仅是被动地把它还给你。它将检索上下文与存储上下文进行比较,如果有足够的不匹配,它 *重新巩固*:更新内存以反映现在的真实情况。严重不匹配会存档旧版本并创建新版本。这才是真正的神经科学。Nader等人在2000年表明,检索到的记忆变得不稳定,可以重写。你的代码库在进化,Zikkaron对它的记忆也在进化。
记忆在争夺空间。 一组印痕槽,每个槽都有一个兴奋性评分,使用时会飙升,随着时间的推移会衰减。当新的记忆到来时,它会进入最容易兴奋的时段。同一时间段内的记忆在时间上相互关联,即使它们的内容毫无共同之处,也会产生相关的体验链。这模拟了真实神经元如何通过CREB依赖性兴奋性分配印迹。
背景巩固就像睡眠一样。 当你空闲时,星形胶质细胞守护进程会醒来并处理最近的经历。它提取实体和关系,构建知识图,合并近重复项,发现因果链,并运行“梦境回放”,比较随机记忆对,出现新的连接。四个领域专用过程以不同的速率处理不同类型的知识:代码结构、架构决策、错误模式和依赖关系。
认知地图组织了一切。 后继表示构建了一个概念空间的二维图,在这个图中,在相似上下文中访问的记忆聚集在一起,即使它们的内容完全不同。调试内存群集在其他调试内存附近。架构决策聚集在一起。浏览这张地图,你会发现关键字搜索永远不会出现的相关知识。
全部24个工具
| 工具 | 目的 |
|---|---|
remember | 通过预测编码写门存储内存 |
recall | 基于热加权排序的多信号检索 |
forget | 删除内存 |
validate_memory | 根据当前文件状态检查过期情况 |
get_project_context | 获取目录的热记忆 |
consolidate_now | 强制执行整合周期 |
memory_stats | 所有子系统的系统统计数据 |
rate_memory | 元记忆跟踪的有用性反馈 |
recall_hierarchical | 在特定抽象级别查询分形层次结构 |
drill_down | 导航到内存集群 |
create_trigger | 设置在匹配上下文时触发的预期触发器 |
get_project_story | 项目的自传体叙事 |
add_rule | 用于过滤和重新排序的神经符号约束 |
get_rules | 列出活动规则 |
navigate_memory | 通过后继表示遍历概念空间 |
get_causal_chain | 实体的因果祖先和后代 |
assess_coverage | 通过差距识别评估知识覆盖率 |
detect_gaps | 查找孤立的实体、过时的区域、缺失的连接 |
checkpoint | 压缩恢复的快照工作状态 |
restore | 通过海马回放重建压实后的上下文 |
anchor | 将关键事实标记为抗压实 |
install_hooks | 启用自动捕获、上下文注入和压缩恢复挂钩 |
sync_instructions | 用最新的Zikkaron功能更新CLAUDE.md |
seed_project | 一次扫描中现有项目的启动内存 |
建筑
一切都在本地运行。具有WAL模式、FTS5全文搜索和 sqlite-vec 用于近似最近邻矢量搜索。
26个子系统分为五层:
Core Storage and Retrieval
| 模块 | 角色 |
|---|---|
storage.py | SQLite WAL引擎,16个表,FTS5索引, sqlite-vec ANN搜索 |
embeddings.py | 句子变换器编码(all-MiniLM-L6-v2),分批操作 |
retrieval.py | 四信号融合:向量相似度、FTS5 BM25、知识图PPR、扩频激活 |
models.py | 用于完整类型层次结构的Pydantic数据模型 |
config.py | 基于环境的配置 ZIKKARON_ 前缀 |
Memory Dynamics
| 模块 | 角色 |
|---|---|
thermodynamics.py | 热度、惊喜、重要性、情感价值、时间衰减 |
reconsolidation.py | Nader等人(2000)提出的三种结果的不稳定检索 |
predictive_coding.py | 通过预测误差过滤冗余的写门 |
engram.py | 具有CREB般兴奋性的竞争性时隙分配 |
compression.py | 三种压缩级别下的率失真最优遗忘 |
staleness.py | 通过SHA-256哈希比较的文件更改监视器 |
Consolidation and Organization
| 模块 | 角色 |
|---|---|
consolidation.py | 星形胶质细胞周期性巩固的背景守护进程 |
astrocyte_pool.py | 用于代码、决策、错误、deps的领域专用工作流程 |
sleep_compute.py | 梦境回放、Louvain社区检测、时间压缩 |
fractal.py | 具有深入导航的多尺度内存树 |
cls_store.py | 互补学习系统:快速情景+慢速语义存储 |
Knowledge Structure
| 模块 | 角色 |
|---|---|
knowledge_graph.py | 具有个性化PageRank的类型化实体关系图 |
causal_discovery.py | 基于编码会话数据的因果DAG的PC算法 |
cognitive_map.py | 基于导航检索的后继表示 |
narrative.py | 自传项目故事合成 |
curation.py | 重复合并、矛盾检测、交叉引用链接 |
Frontier Capabilities
| 模块 | 角色 |
|---|---|
hopfield.py | 现代连续Hopfield网络(Ramsauer等人,2021) |
hdc_encoder.py | 10000维双极空间中的超维计算 |
metacognition.py | 知识覆盖和差距检测的自我评估 |
rules_engine.py | 硬和软神经符号约束 |
crdt_sync.py | 通过CRDT实现多代理内存共享 |
prospective.py | 目录、关键字、实体或时间上的面向未来的触发器 |
sensory_buffer.py | 原始会话内容的情节捕获缓冲区 |
restoration.py | Hippocampal Replay引擎用于上下文压缩弹性 |
seed.py | 项目扫描和基础内存引导 |
高级设置
来源
git clone https://github.com/amanhij/Zikkaron.git
cd Zikkaron
pip install -e .SSE运输
作为持久后台服务器而不是stdio运行:
zikkaron --transport sse然后将Claude Code指向URL:
{
"mcpServers": {
"zikkaron": {
"type": "sse",
"url": "http://127.0.0.1:8742/sse"
}
}
}默认端口为 8742.用覆盖 --port。数据库默认为 ~/.zikkaron/memory.db,用以下命令覆盖 --db-path.
配置
所有设置都使用 ZIKKARON_ 环境变量前缀:
| 变量 | 默认值 | 它控制什么 |
|---|---|---|
ZIKKARON_PORT | 8742 | 服务器端口 |
ZIKKARON_DB_PATH | ~/.zikkaron/memory.db | 数据库位置 |
ZIKKARON_EMBEDDING_MODEL | all-MiniLM-L6-v2 | 句子转换模型 |
ZIKKARON_DECAY_FACTOR | 0.95 | 每个固结周期的热衰变 |
ZIKKARON_COLD_THRESHOLD | 0.05 | 低于此温度,记忆将成为档案候选者 |
ZIKKARON_WRITE_GATE_THRESHOLD | 0.4 | 通过写门的最小惊喜 |
ZIKKARON_HOPFIELD_BETA | 8.0 | Hopfield网络锐度 |
ZIKKARON_SR_DISCOUNT | 0.9 | 继任者代表折扣系数 |
ZIKKARON_COGNITIVE_LOAD_LIMIT | 4 | 活动上下文块限制(Cowan的4+/-1) |
完整列表在 zikkaron/config.py.
测试
python -m pytest zikkaron/tests/ -x -q覆盖每个子系统的34个测试文件中的998个测试。
参考文献
The papers and books behind the implementation
Ramsauer等人,“Hopfield网络是你所需要的一切”(ICLR 2021,arXiv:2008.02217)
纳德、沙夫、勒杜。“恐惧记忆需要杏仁核中的蛋白质合成,以便在检索后重新巩固”(Nature 4062000)
奥山、托尔、巴特、阿马拉尔。“再整合的三个结果”(《公共科学图书馆·综合》,2011)
麦克莱兰、麦克诺顿、奥赖利。“为什么海马体和新皮层有互补的学习系统”(心理学评论1021995)
Sun等人,“在互补学习系统中组织记忆进行泛化”(Nature Neuroscience 262023)
斯泰森菲尔德、博特维尼克、格什曼。“海马体作为预测图”(自然神经科学202017)
Whittington等人,“托尔曼-艾肯鲍姆机器”(Cell 1832020)
斯皮尔特斯,格利莫尔,斯凯恩斯 *因果关系、预测和搜索* (麻省理工学院出版社,2000年)
Kanerva。 *稀疏分布式记忆* (麻省理工学院出版社,1988年)
弗雷迪、克莱科、萨默。“稀疏分布式表示的变量绑定”(IEEE TNNLS,2022)
Toth等人,“通过率失真理论实现最佳遗忘”(PLoS计算生物学,2020)
乔瑟琳,弗兰克兰。“记忆分配:机制和功能”(神经科学年鉴412018)
Rashid等人,“印痕之间的竞争影响恐惧记忆的形成和回忆”(Science 3532016)
周等,“元认知检索增强生成”(ACM Web,2024)
许可证
麻省理工学院
