mcpField
Y
Yantrikdb

Yantrikdb

本地服务
github.com/yantrikos记忆与知识254 天前更新

关于 Yantrikdb

YantrikDB 是面向 AI Agent 的认知记忆 MCP 服务,提供跨会话的持久语义记忆、知识图谱和自适应召回。数据保存在本机 SQLite 中,也可通过 HTTP 集群共享。

主要功能

  1. 01持久化语义记忆与按需召回
  2. 02知识图谱与关系记录
  3. 03矛盾检测与记忆修正
  4. 04本地 SQLite 存储,无遥测
  5. 05可选的多种 Embedder 后端

适用场景

  1. 01让编码 Agent 跨会话保留项目决策与上下文
  2. 02在多台机器之间共享同一套 Agent 记忆
  3. 03减少每次对话加载全部记忆文件带来的上下文开销

MCP 相关

该项目是 MCP 服务,向 Claude Code、Cursor、Windsurf 等 MCP 客户端暴露 21 个记忆相关工具,包括 remember、recall、graph、conflict 等。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"yantrikdb": {
"command": "uvx",
"args": [
"yantrikdb-mcp"
],
"env": {
"YANTRIKDB_DB_PATH": "<YANTRIKDB_DB_PATH>",
"YANTRIKDB_TOOL_PROFILE": "<YANTRIKDB_TOOL_PROFILE>"
}
}
}
}
启动命令uvx yantrikdb-mcp
需要配置的环境变量
YANTRIKDB_DB_PATHDatabase file path (default: ~/.yantrikdb/memory.db)
YANTRIKDB_TOOL_PROFILEAdvertised tool set: full (all 20) or core (10 golden-path)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiyantrikdb-mcp0.24.0

工具

21

收录的工具列表 · 更新于 2 周前

参数类型必填说明
textany否
claimsany否
domainstring否
sourcestring否
summaryany否
valencenumber否
memoriesany否
metadataany否
certaintynumber否
namespacestring否
created_atany否
event_timeany否
importancenumber否
memory_typestring否
emotional_stateany否
idempotency_keyany否

详细介绍

YantrikDB MCP 服务

YantrikDB — 面向 AI Agent 的认知记忆。持久语义召回、知识图谱、矛盾检测与程序性学习。以可嵌入引擎、网络数据库或 MCP 服务形式发布。

适用于 Claude Code、Cursor、Windsurf、Hermes Agent、Prime Agent 以及任何兼容 MCP 的客户端。附带一个可移植的 Agent Skills 技能 — skills/persistent-memory — 它向任何兼容的 harness 传授记忆黄金路径。

PyPI PyPI downloads Python License: MIT

网站: yantrikdb.com · 文档: yantrikdb.com/guides/mcp · GitHub: yantrikos/yantrikdb-mcp · 论文: Skill as Memory, Not Document

yantrikdb-mcp 演示:通过 MCP 存储三条记忆,其中一条被一个与它没有任何共同词汇的问题召回,随后 think() 标记出关于同一位 on-call 负责人的两条已存信念彼此矛盾——下一次会话的召回返回 open_conflicts: 1

屏幕上的每个值都是服务端通过 MCP 给出的自身回答 — 驱动脚本:docs/demo/demo.py,使用 docs/demo/demo.tape 录制。

一览

是什么一个 MCP 服务,为任何兼容 MCP 的 AI Agent 提供跨会话的持久、结构化、可查询记忆
安装pip install yantrikdb-mcp
适用于Claude Code、Cursor、Windsurf、Continue、Claude Desktop、Hermes Agent、Prime Agent、任何 MCP 客户端
存储本地 SQLite,位于 ~/.yantrikdb/memory.db(或任意路径;或 HTTP 集群)
嵌入器内置 64 维 Rust 嵌入器(默认)、384 维 ONNX MiniLM([onnx] extra)、256 维多语言(101 种语言)
工具21 个 — remember、recall、forget、correct、think、memory、graph、conflict、trigger、session、temporal、procedure、category、personality、stats、skill、gaps、conversation、task、pack、atlas
许可证MIT(引擎:Apache-2.0)
隐私所有数据都在你的机器上。无遥测。无外部服务。

安装

# Default — uses the engine's bundled 64-dim embedder. ~10 MB install,
# ~80 ms cold start, no native ML deps.
pip install yantrikdb-mcp

# Optional: higher-quality 384-dim ONNX MiniLM-L6-v2 embedder (~150 MB install).
# Auto-used when an existing pre-v0.6 database is detected.
pip install 'yantrikdb-mcp[onnx]'

使用 Claude Code? 跳过 pip 步骤:/plugin marketplace add yantrikos/yantrikdb-mcp 然后 /plugin install yantrikdb — 直接从本仓库安装,无需经 PyPI 往返。

从 v0.5.x 升级? 你现有的数据库保持 384 维 — 安装 [onnx] extra 即可透明地继续使用它。全新安装默认使用 精简的内置嵌入器。v0.7.0+ 会自动锁定引擎迁移修复。 参见下方的 嵌入器后端。

配置

MCP 服务有三种部署模式。选择适合你环境的那一种。

模式 1 — 本地(默认,推荐单用户使用)

MCP 服务在进程内运行引擎,使用本地 SQLite 数据库。快速、私密、零依赖。

{
  "mcpServers": {
    "yantrikdb": {
      "command": "uvx",
      "args": ["yantrikdb-mcp"]
    }
  }
}

uvx 会按需获取并运行该服务,因此无需安装步骤即可使用 (它需要在 PATH 中有 uv)。如果你自行 用 pip 或 pipx 安装了该包,则 "command": "yantrikdb-mcp" 且不带 args 是等效的。

就这样。Agent 会自动召回上下文、自动记住决策,并自动检测矛盾 — 无需提示。

模式 2 — HTTP 集群(推荐用于共享/多机部署)

将所有工具调用转发到 YantrikDB HTTP 集群,而不是使用嵌入式引擎。MCP 服务是一个无状态的轻量客户端 —— 所有记忆都存放在集群上,可从任意机器访问。

优势:跨机器共享记忆、高可用性、无需本地下载嵌入器、无需本地数据库。

{
  "mcpServers": {
    "yantrikdb": {
      "command": "uvx",
      "args": ["yantrikdb-mcp"],
      "env": {
        "YANTRIKDB_SERVER_URL": "http://node1:7438,http://node2:7438",
        "YANTRIKDB_TOKEN": "ydb_your_database_token"
      }
    }
  }
}
  • 多个节点用逗号分隔,以支持 Raft 集群自动发现
  • 故障转移时自动跟随 leader
  • 请求超时 15s
  • 从集群获取 token:yantrikdb token create --db your_database
模式 3 — SSE 服务(旧版,单个远程实例)

将 MCP 服务本身作为长期运行的 SSE 服务运行,并使用其自带的嵌入式数据库。客户端通过 HTTP 流式连接。

# Generate a secure API key
export YANTRIKDB_API_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")

# Start SSE server
yantrikdb-mcp --transport sse --port 8420
{
  "mcpServers": {
    "yantrikdb": {
      "type": "sse",
      "url": "http://your-server:8420/sse",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

支持 sse 和 streamable-http 传输方式。注意:SSE 连接在空闲时可能断开 —— 对于共享部署,模式 2(HTTP 集群)更可靠。

环境变量
变量用于模式默认值描述
YANTRIKDB_SERVER_URL集群(未设置 → 本地模式)逗号分隔的集群节点 URL
YANTRIKDB_TOKEN集群(无)集群数据库的 Bearer token
YANTRIKDB_DB_PATH本地~/.yantrikdb/memory.db数据库文件路径
YANTRIKDB_EMBEDDER本地auto后端选择器:auto | bundled | onnx | multilingual
YANTRIKDB_EMBEDDING_MODEL本地all-MiniLM-L6-v2ONNX 模型名称(仅在 YANTRIKDB_EMBEDDER=onnx 时使用)
YANTRIKDB_SKILLS_WRITE_ENABLED全部false设为 true 以允许 Agent 通过 skill(action="define") 编写技能(见下方 技能基底)
YANTRIKDB_OUTCOMES_WRITE_ENABLED全部true通过 skill(action="outcome") 进行结果跟踪。默认开启,使反馈闭环开箱即用;设为 false 可锁定结果基底。于 v0.8.1 根据 #8 添加
YANTRIKDB_API_KEYSSE 服务(无)提供 SSE/HTTP 服务时使用的 Bearer token
嵌入器后端

本地模式内置三种嵌入器。MCP 会自动选择一种;可通过 YANTRIKDB_EMBEDDER 覆盖。

后端维度冷启动安装大小语言覆盖使用场景
bundled(引擎默认)64~80 ms~10 MB仅英语新建/空数据库(自动选择)
onnx(MiniLM-L6-v2)384~2 s~150 MB英语(更高召回)已有的 v0.6 之前数据库(自动选择),或显式设置时
multilingual(potion-multilingual-128M)256~2 s + 首次使用时 ~460 MB 下载~10 MB pip + ~500 MB 模型缓存101 种语言(BGE-M3 分词器)仅通过 YANTRIKDB_EMBEDDER=multilingual 主动启用

auto(默认)会读取 YANTRIKDB_DB_PATH 处的 SQLite 文件,如果其中已包含记忆则选择 onnx —— 在升级时保持召回质量 —— 否则选择 bundled。multilingual 永远不会被自动选中,因为其 256 维向量与已有的 bundled(64 维)或 ONNX(384 维)数据库不兼容;仅可在全新数据库上主动启用。

设置 YANTRIKDB_EMBEDDER=bundled|onnx|multilingual 进行覆盖。如果你设置 YANTRIKDB_EMBEDDER=onnx(或自动检测选中了它)但未安装相应扩展,服务会快速失败并给出安装提示:

RuntimeError: Existing DB has memories embedded with the 384-dim ONNX
model, but ONNX deps are missing.
  Install with:  pip install 'yantrikdb-mcp[onnx]'

对于 multilingual 后端,引擎会在首次使用时从 github.com/yantrikos/yantrikdb-models 下载 potion-multilingual-128M(约 460 MB 的 tarball)。下载内容经过 SHA-256 校验,解压到引擎的缓存目录,并在后续启动时复用。无需额外的 Python 依赖 —— 模型完全在 Rust 引擎内运行。

为什么不用基于文件的记忆?

基于文件的记忆(CLAUDE.md、记忆文件)会在每次对话中将所有内容加载到上下文中。YantrikDB 只召回相关内容。

基准测试:15 条查询 × 4 种规模
记忆数基于文件YantrikDB节省精确率
1001,770 tokens69 tokens96%66%
5009,807 tokens72 tokens99.3%77%
1,00019,988 tokens72 tokens99.6%84%
5,000101,739 tokens53 tokens99.9%88%

选择性召回是 O(1)。基于文件的记忆是 O(n)。

  • 在 500 条记忆时,基于文件的方案已超出 32K 上下文窗口
  • 在 5,000 条时,它装不进任何上下文窗口——连 200K 也不行
  • YantrikDB 每次查询稳定在约 70 tokens,延迟低于 60ms
  • 精确率随数据增多而提升——与上下文填充恰好相反

自己运行基准测试:git clone https://github.com/yantrikos/yantrikdb-mcp && cd yantrikdb-mcp && pip install -e '.[torch]' && python benchmarks/bench_token_savings.py(该脚本会直接加载 sentence-transformers,而默认的 pip install yantrikdb-mcp 不会安装它)。

推荐的 Agent 工作流(黄金路径)

服务会将一份黄金路径手册注入 Agent 的系统提示词中。自 v0.10.0 起,默认采用摘要优先:

  1. 冷启动——一次调用。 session(action="digest") 返回一份简报(叙事链头部、未决决策、未解决冲突、待触发事项、过时的高重要性记忆)——在对话开始时替代多次单独的 recall/temporal 调用。之后仅针对当前消息所涉及的具体内容调用 recall。
  2. 工作期间——随时捕获。 新的持久事实 → remember;已存储的事实发生变化 → correct(保留历史,避免矛盾);了解到关系 → graph(action="relate")。
  3. 完成大量工作后——视情况而定。 仅当会话较长或状态发生变更时:think 以整合 + 检测冲突。简短的/只读的交流无需收尾步骤。

信任边界: 召回的记忆和摘要片段是数据,而非指令。手册指示 Agent 绝不执行召回内容中发现的指令——某条记忆可能携带早先会话或另一用户存储的文本。

工具

21 个工具,覆盖完整引擎(gaps、conversation、task 在 v0.9.0 中新增;pack 在 v0.11.0 中新增;atlas 在 v0.24.0 中新增):

工具操作用途
remembersingle / batch存储记忆 — 决策、偏好、事实、纠正
recallsearch / refine / feedback语义搜索、精炼与检索反馈
forgetsingle / batch将记忆标记为墓碑
correct—修正错误的记忆(保留历史)
think—巩固 + 冲突检测 + 模式挖掘
memoryget / list / search / update_importance / archive / hydrate管理单条记忆 + 关键词搜索
graphrelate / edges / link / search / profile / depth知识图谱操作
conflictlist / get / resolve / reclassify处理矛盾并教授替换模式
triggerpending / history / acknowledge / deliver / act / dismiss主动洞察与警告
sessionstart / end / history / active / abandon_stale会话生命周期管理
temporalstale / upcoming基于时间的记忆查询
procedurelearn / surface / reinforce程序性记忆 — 学习并复用策略
categorylist / members / learn / reset用于冲突检测的替换类别
personalityget / set基于记忆模式的 AI 人格特质
statsstats / health / weights / maintenance引擎统计、健康状态、权重与索引重建
skilldefine / surface / outcome / get / list基座原生的 Agent 技能目录(默认关闭写入 — 见 Skill substrate)
gaps—v0.9.0 — 呈现高频提问但回答不佳的查询(基座已知的未知项)
conversationrecord / recent / clearv0.9.0 — 用于逐字记录对话轮次的有界加密环形缓冲区,按命名空间隔离
taskadd / get / list / update / deletev0.9.0 — 基座支持的任务 / 杂务存储;可跨会话保留,并在 session(action="digest") 中呈现
packlist / inspect / install / mount / trustv0.11.0 — 已签名的可移植记忆包:在信任之前检查密封语料,将其安装 / 挂载以与你自己的记忆并列读取(相对本地记忆降低权重),管理发布者信任。写入操作需操作员授权(YANTRIKDB_ENABLE_PACK_WRITES=1)
atlasexport / statusv0.24.0 — 将此存储的 Memory Atlas(每条记忆、实体链接、声明、修订历史、任务)导出为静态页面并在 localhost 上提供服务;只读,仅嵌入式模式

此外,v0.9.0 中在现有工具上新增了以下操作:

  • session(action="digest") — 一次调用即可完成启动时简报(叙事链头 + 未决决策 + 冲突 + 触发器)
  • think(maintenance_cycle=True) — 自主卫生休眠周期
  • think(last_cycle_only=True) — 在不运行的情况下读取上一周期摘要
  • stats(action="audit_leak") — 隐私 / 泄露候选审计
  • stats(action="skill_outcomes") — 持久化技能结果计数
  • graph(action="auto_relate" / "record_link" / "record_unlink" / "linked_records" / "recall_with_links") — 共现边 + 记录间链接 + 链接扩展召回
  • conflict(action="auto_resolve") — 一次性清除无歧义的冲突
  • memory(action="chain_head" / "history") — 链命名空间头 + 修订历史
  • trigger(action="prune") — 限制待处理触发器的积压
  • remember(summary=...) — 草稿模式:引擎将长摘要原子化为相互关联的语义事实(会话结束自动捕获)

完整文档见 yantrikdb.com/guides/mcp。

技能基底(v0.8.0+)

YantrikDB 提供结构化的 Agent 技能目录 —— 独立于松散的 procedure 记忆。技能具有 schema(skill_id、applies_to、triggers、body、type),并存储在专用的 skill_substrate 命名空间中,因此多个使用方(本 MCP、yantrikdb-hermes-plugin、Lane B SDK、WisePick、yantrikdb-server 的 /v1/skills/* 端点)都读写同一基底。背景:Sarkar 2026 — Skill as Memory, Not Document。

安全模型

技能写入会跨会话塑造 Agent 的未来行为,因此 MCP 服务实现了纵深防御。每项控制都有对应的环境变量开关(启动时即锁定 —— C2),完整状态通过 stats(action="stats") 和审计日志暴露。

分层控制(除另有说明外,每项默认开启):

层级控制项环境变量备注
Schemaskill_id 正则,正文 50–5000 字符,applies_to 1–10 个条目,skill_type 枚举(始终开启)与 yantrikdb-server /v1/skills/define 相同的正则集合
A1 提示词注入标记拒绝包含角色混淆 / "ignore previous instructions" 模式的正文YANTRIKDB_SKILLS_DISABLE_SCANNERS=A1 可禁用(已审计)OWASP LLM01
A2 凭据扫描器AWS/GitHub/Slack/Stripe/Google/Anthropic/OpenAI 密钥、SSH/PGP 私钥、JWT、密码赋值=A2 可禁用GitHub 秘密扫描的子集
A3 URL/IP 拦截拒绝正文中的 http(s)、ftp、IPv4 字面量YANTRIKDB_SKILLS_ALLOW_URLS=true 可允许下游 Agent 的数据外泄路径
A4 Unicode 规避拒绝非打印字符(Cf/Cs/Cn,白名单除外)=A4 可禁用双向文本覆盖(U+202E)、零宽空格
A5 编码载荷拒绝 ≥200 字符的 base64/hex 连续串=A5 可禁用启发式 — 对大哈希易产生误报
B1 命名空间允许列表skill_id 第一段必须在操作员列表中YANTRIKDB_SKILLS_ALLOWED_NAMESPACES=workflow,review未设置 = 全部允许
B2 作者归属记录 session_id、os_user、hostname、wall_clock、audit_nonce(始终开启)取证追踪
B3 跨源替换拒绝覆盖由其他消费者写入的技能YANTRIKDB_SKILLS_ALLOW_CROSS_ORIGIN_REPLACE=true 可允许防御 MCP↔hermes-plugin 冲突
B4 Supersedes 完整性supersedes 必须引用同一命名空间中已存在的技能(始终开启)阻止恶意注销合法技能
C1 时限门控门控在时间戳自动关闭(适用于 define + outcome)YANTRIKDB_SKILLS_WRITE_EXPIRES_AT=2026-12-31T00:00:00Z未设置 = 无过期
C1.5 分离 outcome 门控outcome 操作使用自己的门控,默认开启YANTRIKDB_OUTCOMES_WRITE_ENABLED=false 可同时锁定 outcomev0.8.1+:define 和 outcome 具有不同的威胁模型 — outcome 无法引入新指令,只能针对已有技能追加 {succeeded, note≤500}。反馈循环默认工作;如有需要可显式锁定
C2 锁定配置所有 YANTRIKDB_SKILLS_* / YANTRIKDB_OUTCOMES_* 环境变量在启动时读取一次(始终开启)在子进程中修改环境变量无法绕过门控
D1 审计日志以 JSONL 追加每个接受/拒绝/篡改事件YANTRIKDB_SKILLS_AUDIT_LOG=/var/log/yantrikdb/skills.jsonl未设置 = 无审计(启动时警告)
D2 速率限制按 session-id 的滑动窗口写入上限YANTRIKDB_SKILLS_WRITE_RATE=30(默认写入次数/分钟)抵御洪泛攻击
D3 Outcome.note 防护Note ≤500 字符 + 经 A1/A2/A4 扫描(始终开启)关闭 outcome 侧信道
D4 stats 中的计数器按原因统计接受/拒绝次数,通过 stats(action="stats")["skill_substrate"] 暴露(始终开启)操作员仪表板
E1 正文 SHA-256写入时存储,每次读取时重新验证(始终开启)检测带外数据库篡改 — surface/get 会省略不匹配项并记录到审计
E2 作者来源metadata.author_origin 标签 — 默认为 yantrikdb-mcpYANTRIKDB_SKILLS_AUTHOR_ORIGIN=... 可覆盖跨消费者追踪基板来源
F 启动安全检查启动时对危险配置发出警告(始终开启)将 [F.1]–[F.5] 记录到 stderr + 审计
G rule 的审核队列rule 类型技能路由到 skill_pending_review(不被 surface/get/list 暴露)YANTRIKDB_SKILLS_RULE_REQUIRES_REVIEW=false 可禁用(不推荐)规则影响 Agent 策略 — 需要人工批准
多租户防护如果数据库显示多个 actor ID 且未确认,则发出 [F.1] 警告YANTRIKDB_SKILLS_MULTITENANT_ACK=true一个数据库 = 一个租户是安全默认值

企业检查清单:

# Minimum production config when you turn the gate ON:
YANTRIKDB_SKILLS_WRITE_ENABLED=true
YANTRIKDB_SKILLS_WRITE_EXPIRES_AT=2026-12-31T00:00:00Z
YANTRIKDB_SKILLS_ALLOWED_NAMESPACES=workflow,review,onboarding
YANTRIKDB_SKILLS_AUDIT_LOG=/var/log/yantrikdb/skills.audit.jsonl
YANTRIKDB_SKILLS_AUTHOR_ORIGIN=acme-corp-claude-prod
# Defaults are already correct: writes off, scanners on, rate-limit 30/min,
# rule-type routed to review, body-hash verified on read, locked at startup.

审计日志是权威记录。每一次接受、每一次拒绝(附带标记的扫描器)、每一次读取时的篡改检测、每一次因过期而关闭的关卡——全部以 JSONL 形式记录在案。把它接入你的 SIEM。

stats(action="stats") 示例输出(skill_substrate 切片)
"skill_substrate": {
  "counters": {
    "skill_defines_accepted": 12,
    "skill_defines_rejected": {"content_scan:A2": 1, "namespace_not_allowed": 3},
    "skill_outcomes_recorded": 47,
    "skill_pending_review": 2
  },
  "config": {
    "writes_enabled": true,
    "write_expires_at": "2026-12-31T00:00:00+00:00",
    "allowed_namespaces": ["workflow", "review"],
    "audit_log_path": "/var/log/yantrikdb/skills.audit.jsonl",
    "rule_requires_review": true,
    "author_origin": "acme-corp-claude-prod"
  }
}
Schema(写入时校验)
字段约束
skill_id小写点分隔的段,长度 4–200,例如 workflow.git.commit_clean
body50–5000 个字符
applies_to1–10 个小写下划线标识符(不允许连字符——对 substrate 一致性至关重要)
skill_typeprocedure、reference、lesson、pattern、rule 之一
on_conflictreject(默认)或 replace
示例会话
# Define (requires gate enabled)
skill(action="define",
      skill_id="workflow.git.commit_clean",
      body="Before commit: run pytest, run lint, write a clear subject + body.",
      skill_type="procedure",
      applies_to=["git", "release"])

# Surface relevant skills for the current task
skill(action="surface", query="how to commit cleanly", top_k=5)

# Record an outcome after using the skill (gated, append-only)
skill(action="outcome", skill_id="workflow.git.commit_clean",
      succeeded=True, note="caught a flake8 issue pre-push")

结果是以追加方式写入 outcome_substrate 命名空间的事件——不会在父技能上自动汇总,这与 yantrikdb-server 的“schema 而非语义”设计原则一致。Agent(或操作员)可以自行聚合结果来计算成功率。

FAQ

什么是 YantrikDB MCP?

YantrikDB MCP 是一个 Model Context Protocol (MCP) 服务,为 AI Agent 提供跨会话的持久认知记忆。它暴露 21 个工具(remember、recall、forget、correct、think、graph、conflict、trigger、session、temporal、procedure、category、personality、stats、memory、skill、gaps、conversation、task、pack、atlas),任何兼容 MCP 的客户端——Claude Code、Cursor、Windsurf、Continue、Claude Desktop——都可以自动调用,无需提示。

这与 CLAUDE.md 等基于文件的记忆有何不同?

基于文件的记忆会在每次对话时把所有内容加载进上下文,其 token 成本随规模呈 O(n) 增长。YantrikDB 采用选择性语义召回——在 5,000 条记忆时,基于文件的方案每次对话约花费 101K token,而 YantrikDB 仅约 53 token。随着数据增多,精度会提升,而不是随着上下文窗口被填满而下降。基准测试脚本:python benchmarks/bench_token_savings.py。

它与 mem0 / Letta / Zep / 原生 MCP 记忆相比如何?

见下方对比表。简而言之:YantrikDB 是唯一同时以可嵌入的 Rust 引擎和 MCP 服务和具备相同 substrate 语义的网络数据库形式发布的方案。它是唯一具备一等公民式程序性记忆 + 写入时由 schema 校验的技能 substrate + 自主整合/冲突检测的方案。它也是唯一其底层引擎以同行评审论文形式发表的方案(Sarkar 2026, Zenodo DOI 10.5281/zenodo.20128887)。

我可以自托管吗?

可以——有三种方式。(1) 本地:只需 pip install yantrikdb-mcp 并将你的 MCP 客户端指向它。SQLite 位于 ~/.yantrikdb/memory.db。(2) 网络:将 yantrikdb-server 作为多租户 HTTP 集群运行,通过 YANTRIKDB_SERVER_URL 将 MCP 指向它。(3) 混合:SSE 服务模式(yantrikdb-mcp --transport sse),用于共享部署。

我的数据会被发送到任何地方吗?

不会。所有数据都保留在你的机器(或你的集群)上。没有遥测,没有第三方服务。默认嵌入器通过静态查找完全在 Rust 引擎内运行——无需下载模型或调用 API。可选的 [onnx] 和多语言嵌入器会从 HuggingFace 的 CDN 获取一次模型权重,之后在本地运行。

procedure 和 skill 有什么区别?

procedure 用于存储宽泛的操作指南记忆(按有效性排序,无架构)。skill 用于存储结构化目录条目(skill_id、applies_to、triggers、body、type),这些条目位于专用的 skill_substrate 命名空间中,并与 yantrikdb-hermes-plugin、Lane B SDK、WisePick 和 yantrikdb-server /v1/skills/* endpoints 共享。个人操作指南笔记请使用 procedure;需要让其他使用方也能呈现的结构化 Agent 能力请使用 skill。

启用 skill 编写功能安全吗?

默认关闭 skill 写入功能,正是因为它们可能影响 Agent 未来的行为。启用此开关后,将应用七层纵深防御:提示词注入扫描器、凭据扫描器、URL 屏蔽、Unicode 规避扫描器、命名空间允许列表、作者归属、审计日志、速率限制、正文哈希篡改检测,以及针对 rule 类型 skill 的审核队列。请参阅上文的安全模型。

它能用于生产环境吗?

可以——yantrikdb-mcp 已在 YantrikDB 家用实验室集群的生产环境中运行(1973+ 条记忆、SSE 传输,每个发布周期运行 2 周),也是引擎发布决策所依据的参考部署。v0.8.x 将引擎的当日修复节奏引入 MCP 服务本身:迄今社区提交的 3 个问题分别在约 4 小时、5 小时和 4 天内修复——中位时间约为 5 小时,其中 3 个问题有 2 个在当天修复。

引擎是用什么语言编写的?

YantrikDB 引擎使用 Rust 编写(crates.io: yantrikdb),并通过 pyo3 提供 Python 绑定(PyPI: yantrikdb)。MCP 服务本身使用 Python 编写,是围绕引擎的 Python 绑定构建的轻量封装,并包含 stdio/SSE/HTTP 传输层的连接代码。

与其他 Agent 记忆系统的比较

能力YantrikDB MCPmem0Letta (MemGPT)Zep原生 MCP 文件系统记忆
原生支持 MCP✅ 一等支持通过自定义集成通过自定义集成通过自定义集成✅ 文件系统形态
可嵌入(无需服务)✅ Rust + Python❌ 需要服务❌ 需要服务❌ 需要服务✅ 文件系统
网络数据库模式✅ Raft HA 集群✅ Pro / Enterprise✅ 可自托管✅ 托管 + 可自托管❌
语义回忆(向量)✅ HNSW✅✅✅❌(仅文件 grep)
知识图谱✅ 类型化节点 + 边✅(近期新增)部分支持✅❌
矛盾检测✅ 自主执行❌❌❌❌
程序性记忆✅ 按有效性排序❌部分支持❌❌
Skill 基底(经过架构验证)✅ 具备 7 层防御❌❌❌❌
自主整合(think)✅❌部分支持✅❌
时间衰减 + 半衰期✅ 生物学模型❌❌❌❌
主动触发器✅❌❌❌❌
个性特征推导✅ 基于记忆模式❌❌❌❌
存储本地 SQLite + WAL托管本地本地 + 托管文件系统
许可证MIT(引擎为 Apache-2.0)Apache 2.0Apache 2.0Apache 2.0MIT
同行评审论文✅ Zenodo❌✅ MemGPT 论文❌❌
问题当日修复节奏✅(v0.8.x 的 2 个问题均在 4–5 小时内修复)不定不定不定不适用

比较内容反映截至 2026 年 5 月面向公众的功能。如有需要更正的行,欢迎提交 PR。

引用本文

如果你在学术或研究场景中使用 YantrikDB,请引用这篇基底论文:

@misc{sarkar2026skill,
  author       = {Sarkar, Pranab},
  title        = {Skill as Memory, Not Document: A Database-Native Substrate for Agent Skill Catalogs},
  year         = {2026},
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.20128887},
  url          = {https://doi.org/10.5281/zenodo.20128887},
  orcid        = {0009-0009-8683-1481}
}

纯文本引用:

Sarkar, P. (2026). Skill as Memory, Not Document: A Database-Native Substrate for Agent Skill Catalogs. Zenodo. https://doi.org/10.5281/zenodo.20128887

示例

1. 在对话开始时自动召回

用户:“我们对数据库迁移做了什么决定?”

Agent 会自动调用 recall("database migration decision"),并在回复前检索相关记忆——无需手动提示。

2. 记住决策并构建知识图谱

用户:“新服务将使用 PostgreSQL。Alice 负责迁移。”

Agent 会调用:

  • remember(text="Decided to use PostgreSQL for the new service", domain="architecture", importance=0.8)
  • remember(text="Alice owns the PostgreSQL migration", domain="people", importance=0.7)
  • graph(action="relate", entity="Alice", target="PostgreSQL Migration", relationship="owns")
3. 检测矛盾

存储“我们使用 Python 3.11”后,之后又存储“我们已升级到 Python 3.12”,调用 think() 就会检测到冲突。Agent 会指出:

“我发现一处矛盾:你之前说使用 Python 3.11,但最近提到了 Python 3.12。当前使用的是哪个版本?”

然后通过 conflict(action="resolve", conflict_id="...", strategy="keep_b") 解决。

隐私政策

YantrikDB MCP 服务会将所有数据存储在你的本地计算机上(默认路径:~/.yantrikdb/memory.db)。不会向外部服务发送数据,不会收集遥测数据,运行期间也不会联系第三方服务。

  • **数据收集:**仅包括你通过 remember 工具明确存储的内容,或 AI Agent 代表你存储的内容。
  • **数据存储:**存储在文件系统中的本地 SQLite 数据库。你可以通过 YANTRIKDB_DB_PATH 指定路径。
  • **第三方共享:**无。在本地(stdio)模式下,数据绝不会离开你的计算机。
  • **网络模式:**使用 SSE/HTTP 传输时,数据会在客户端与自托管服务之间传输。不会涉及 Anthropic 或第三方服务。
  • **嵌入模型:**使用本地 ONNX 模型(all-MiniLM-L6-v2)。模型文件首次使用时会从 Hugging Face Hub 下载一次,之后缓存在本地。
  • **保留期限:**数据会一直保留,直到你将其删除(使用 forget 工具)或删除数据库文件。
  • **联系邮箱:**[email protected]

完整政策:yantrikdb.com/privacy

贡献

请参阅 CONTRIBUTING.md,了解 venv 环境设置、运行 pytest 和提交 PR 的方法。

支持

相关项目

相同的记忆基础,不同的接入方式:

  • yantrikdb — 本服务所基于的可嵌入 Rust/Python 引擎(pip install yantrikdb)。
  • yantrikdb-server — HTTP 网关和 HA 集群,适用于上述网络部署模式。
  • yantrikdb-client — 面向该服务的类型化 Python 客户端。
  • langchain-yantrikdb — 将 YantrikDB 用作 LangChain 的 VectorStore 和 ChatMessageHistory。
  • yantrikdb-hermes-plugin — NousResearch/hermes-agent 的记忆提供程序,共享相同的技能基础。
  • yantrik-memory — 与框架无关的记忆层,包含 traits 和 bond 演化机制。
  • openclaw-memory-yantrikdb — 由 YantrikDB 提供支持的 OpenClaw 记忆槽插件,已发布到 ClawHub。

许可证

此 MCP 服务采用 MIT 许可证——可在任何项目中自由使用。

注意:此软件包依赖 yantrikdb(认知记忆引擎),该引擎自 2026-08-18 起采用 Apache-2.0 许可证(此前为 AGPL-3.0)。现在,此服务和引擎均采用宽松许可证——你的代码、修改或托管服务均不受 copyleft 义务约束。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。