LemmaLog Skill:用 Datalog 引擎重新定义 AI Agent 的记忆系统
LemmaLog Skill:用 Datalog 引擎重新定义 AI Agent 的记忆系统
主流 AI Agent 的记忆方案几乎都是向量数据库——把文档切成块, embedding 检索,相似度搜索。但业务场景的遗忘往往不是”记不住”,而是”记错了”:供应商 3 月变了、合同已经过期、旧方案被废弃。向量检索能给出一个听起来相关的结果,却无法表达这些时态约束和因果链条。
LemmaLog 干了件反共识的事:用 Datalog 规则引擎替代向量存储,给 Agent 构建一套可推导、可溯源、可计数的记忆系统。截至 2026-09-03,该项目在 GitHub 已获 265 Star、18 Fork,紧急登上 Rust 仓库 Trending,并在 AI 社区引发关于” Agent 记忆是否应该走向符号推理”的持续讨论。
核心能力与设计原则
LemmaLog 的核心设计理念是:Agent 的记忆应该是一个演绎数据库(Deductive Database),而不是一个更好的向量检索系统。
整个系统分为四层:
- 事实存储层(Fact Store):以三元组(主体,关系,客体)持久化存储事实,每个事实携带来源元数据(provenance),记录这条信息是谁、在哪次对话中产生的。
- 分层推导引擎(Stratified Inference Engine):实现分层 Datalog 语义,避免递归悖论;支持增量推导(incremental derivation),事实增删时只重算受影响规则,不全量重推。
- MCP 服务适配层:将 Datalog 引擎暴露为 MCP 服务器,支持 Claude Code / Kimi CLI 等主流 Agent 框架直接连接作为共享记忆。
- 查询 API:低延迟读写端点,支持
ask()/ask_deep()/context_for_query()等操作。
设计原则强调:可验证(verifiable)而非概率性(plausible)、增量更新(incremental)而非全量重推导(batch recompute)、溯源可查(provenance-tracked)。
认可度
- GitHub Star:265(截至 2026-09-03,上线约 8 天,日均增速极快)
- GitHub Fork:18
- Issues:0(目前零已知问题,维护质量高)
- 语言:Rust(性能优先,无 GC 停顿)
- 第三方报道:被 Enterprise DNA 专题报道,被称为”向量存储的替代方案”;AISignal 标记为”+554% 周增速”的高潜力项目
- Benchmark 数据:LongMemEval 上 0.463 F1(比全上下文基线少用 38 倍上下文tokens);LoCoMo 上 0.533 F1
链接
GitHub 仓库:https://github.com/JordyZomer/lemmalog
原作者
Jordy Zomer(GitHub: @JordyZomer),独立开发者,专注于 LLM 推理基础设施与记忆系统研究。该项目是他对”LLM 记忆应该走向符号推理而非向量相似度”这一论点的完整工程实现,附带了详细的设计文档(datalog-context-engine-design.md)和诚实的状态日志。
项目介绍
当前的 AI Agent 记忆方案本质上都是在做”语义相似度检索”:把历史对话和文档 embedding 后存进向量数据库,查询时取 top-k 最相似的片段。但这种方案有三个根本缺陷:
第一,无法表达时态约束。 “供应商变了”和”供应商没变过”在向量空间里可能距离很近,但业务上这是互斥的。第二,无法追踪来源。 Agent 告诉你一个结论,但你不知道这个结论是来自上周的合同还是上月的邮件。第三,无法推导闭包。 很多事情需要规则才能得到,比如”A是B的供应商,B是C的客户”推导出”A间接影响C”,这需要规则引擎而非向量检索。
LemmaLog 用 Datalog 解决了这三点。它是一个完整的、运行态解析的分层 Datalog 解释器(而非宏展开生成),核心特点包括:否定即缺失(negation-as-absence)配合负环拒绝;半朴素不动点配合每轮增量 delta 维护;双时态事实(valid_from / valid_to / asserted_at);置信度 × 来源的半环标注;以及 why() 证明树(带环保护)。
特点
- 零幻觉记忆:所有记忆都是显式assert的事实,不存在”听起来相关但实际不对”的问题
- 完整溯源:每条事实标注来源(哪个LLM、在哪次对话中产生),Agent 可以说”为什么我相信这个”
- 增量推导:事实变化时只重算受影响规则,相比全量重推导延迟降低 10 倍以上
- MCP 原生:直接作为 MCP 服务器暴露工具,Claude Code / Kimi CLI 无需额外适配代码即可接入
- 性能优秀:4M 事实规模下点查询约 100µs(WAM 风格索引路径)
- 可假设推演:
what_if模式允许 Agent 在假设空间里推演,不用真改事实就能验证后果 - 混合检索:支持 BM25 + 语义 embedding 混合,在需要时提供向量检索能力
使用方法
安装(Rust 二进制):
cargo install lemmalog
安装(MCP 服务器模式,支持 Claude Code):
cargo install lemma-mcp --features mcp
Docker 部署:
docker run -p 8080:8080 ghcr.io/jordyzomer/lemmalog
在 Claude Code 中启用:在 ~/.claude/settings.json(或项目级 .mcp.json)添加 MCP 服务器配置:
{
"mcpServers": {
"lemmalog": {
"command": "lemma-mcp",
"args": ["--repo", "/path/to/workspace"]
}
}
}
基础 REPL 用法:
cargo run --bin lemmalog
# > + father(tom, bob). # 添加事实
# > ? father(X, bob). # 查询
# > why father(tom,bob). # 查看推导路径
Agent Skill 用法:skills/lemmalog/SKILL.md 提供了一套记忆使用规范(assert-as-you-verify、rules-as-experiments、query-before-reason 等),适合作为长线调查、代码审计、多 Agent 协作等场景的工作记忆区。
使用场景与人群
适用场景:
- 代码调查与调试:让 Agent 记住之前的排查路径、尝试过的方案和失败原因,避免重复踩坑
- 多轮审计:需要记录每一步证据来源的合规审查或安全审计
- 多 Agent 协作:多个 Agent 共享同一 Datalog 记忆层,实现跨会话的上下文连续性
- 长线任务:超过单一上下文窗口的复杂项目研究,Agent 需要跨天/月保留关键判断
目标用户:用 Claude Code、Kimi CLI 或其他 MCP 兼容 Agent 进行严肃开发工作的工程师;关注 LLM 推理可审计性、需要可验证记忆系统的技术团队。
输入与输出案例
案例一:供应商历史查询
输入(Agent 查询):
"过去一年里我们换过几次供应商?有哪些供应商在2025年内已经不再合作了?"
LemmaLog 底层执行:
current_supplier(X) :- supplier(X), valid_to(X, D), D < today().
changed_supplier(X) :- supplier(X, P1), retracted(supplier(X, P1)), asserted(supplier(X, P2)).
输出:
[
{supplier: "AcmeCorp", valid_to: "2025-03-15"},
{supplier: "BetaInc", valid_to: "2025-08-22"}
]
附:每条结果均标注来源对话 ID 和时间
案例二:调试时的假设验证
输入(Agent 怀疑是 OAuth scope 配置问题):
"如果我把 token 的 scope 从 read 改成 read:write,受影响的 API 调用有哪些?"
LemmaLog what_if 模式:
临时应用 scope change 规则 → 推导出受影响的 API 路径集合 →
输出受影响的 7 个端点,但不修改真实记忆 → Agent 确认后决定是否 assert
LemmaLog 证明了”规则引擎 + 溯源追踪”在 LLM Agent 记忆领域的可行性,填补了从”相似度匹配”到”可验证推理”之间的空白。随着 Agent 系统从单轮对话走向多轮协作,这类结构化记忆基础设施的重要性将持续上升。
评论区
登录后可评论。