JordyZomer/lemmalog

A Datalog engine for LLM agent memory: stratified rules, provenance-tracked facts, incremental derivation, and an MCP server that lets your harness use it as a shared brain.

Lemmalog – 基于 Datalog 的 LLM 代理记忆引擎

是什么 – Lemmalog 是一个 Rust 库(带 CLI 和可选的 MCP 服务器),允许 LLM 驱动的代理将观察结果存储在 演绎数据库 中,而非普通的向量存储。事实以三元组形式声明(主语 --rel[置信度]→ 客体),Datalog 引擎推导出额外事实、时间视图、聚合结果和标准化实体名称。该引擎可回答查询,解释事实成立的原因,并在不修改真实存储的情况下模拟“如果……会怎样”的更新。

为何使用 Datalog? – 作者认为,代理的记忆应具备 可验证性增量更新能力。通过将记忆视为分层 Datalog 程序,Lemmalog 可以:

  • 保留溯源信息(每个事实由哪个事件产生),
  • 传播置信度分数,
  • 仅重新计算新事实到达时实际发生变化的部分数据库。

核心功能(均在 README 中标记为 ✅)

  • 支持分层、否定即缺失、循环检测的完整 Datalog 解释器。
  • 采用增量维护的半朴素不动点求值,实现快速增量更新。
  • 支持双时态事实(valid_from, valid_to, asserted_at)和 now() 内置函数。
  • 置信度注释(乘积 t-范数)和在重新推导时合并的溯源集合。
  • 生成证明树(why())并具备循环保护机制。
  • 规则头中支持算术运算(例如 D = Dm + 1),线性求解。
  • 通过魔数集(ask_deep)实现高效点查询评估。
  • 使用索引和 WAM 风格回溯,可在数百万条事实中实现亚微秒级查找。
  • LLM 查询的混合检索:在渲染后的事实上使用 BM25 + 实体增强 + 预算感知的位置组装。
  • 提供提取层(Extractor trait),包含模拟提取器和基于 LLM 的提取器。
  • 通过星型别名边、标准视图投影和冲突检测实现实体解析。
  • 通过快照保存/加载实现持久化;支持增量流式变更馈送(Added, Retracted, Cleared)。
  • 支持“如果……会怎样”模拟,可将存储恢复到先前的字节级完全一致状态。
  • 提供 MCP 服务器(JSON-RPC),使 Claude Code 或 Kimi CLI 可将 Lemmalog 作为工具调用。
  • 提供 REPL,支持交互式规则编辑、查询和调试。
  • 提供评估框架(scenario::run_eval),可对 LongMemEval 基准测试的准确性、令牌使用量和延迟进行测量。

如何使用

  1. 观察 – LLM 从对话中提取三元组,并通过 lemmalog_observe 发送(行协议 S --rel[conf]--> O)。
  2. 规则安装 – 安装领域特定的 Datalog 规则(例如 reports_to(X,Y) :- current(X,"manager",Y).)。
  3. 查询 – 代理发起目标查询(lemmalog_query),接收绑定结果;也可请求证明(lemmalog_why)。
  4. 上下文组装 – 在回答用户问题前,AgentMemory::context_for_query 使用 BM25 + 实体增强构建一个令牌预算内的上下文,仅将最相关事实输入 LLM。
  5. 工具集成 – MCP 服务器通过 JSON-RPC 暴露相同操作,使 Claude Code 或 Kimi CLI 可将 Lemmalog 视为原生工具使用。

基准测试 – 在 LongMemEval 和 MemEval 套件中,Lemmalog 达到:

  • 102 问题的 MemEval 基准测试中 F1 ≈ 0.49(约 50 万回答阶段令牌,远少于全上下文基线)。
  • LoCoMo 基准测试中具有竞争力的得分(F1 ≈ 0.57,仅次于 PropMem)。
  • 400 万事实存储中亚毫秒级查询延迟。

成熟度 – README 将所有列出功能标记为已实现(✅),仅“Leapfrog triejoins(最坏情况最优连接)”和“DBSP 流式增量”仍在计划中。包含全面测试套件(450 个随机程序 vs. 简单 Oracle、解析器模糊测试、差分测试),并提供 REPL 用于手动实验。

谁会受益?

  • 需要 可解释可增量更新 记忆的 LLM 代理研究人员。
  • 希望用规则驱动知识库替代原始向量存储的 AI 助手开发者。
  • 任何需要对提取事实进行确定性溯源推理的人(例如审计追踪、多代理协作)。

快速上手 – 克隆仓库,运行 cargo run --bin lemmalog 启动 REPL,或使用 cargo build --release --features mcp 构建 MCP 服务器,并按 README 指示注册到 Claude Code/Kimi。

相关

  • 项目
  • 项目
  • 项目
  • 项目