Neotoma 是人工智能代理的结构化记忆层。它以生产系统处理状态的方式处理个人数据：类型化实体、稳定 ID、完整来源、确定性查询。该开发者版本现已推出。通过 npm 安装，通过 MCP 连接您的 AI 工具，并在您的计算机上运行它。

文档和设置：[neotoma.io](https://neotoma.io)。仓库：[github.com/markmhendrickson/neotoma](https://github.com/markmhendrickson/neotoma)。

## 问题

在过去的一年里，我一直通过人工智能代理运行工作流程：电子邮件、任务、财务、联系人、内容。代理商有能力。问题在于信任。

记忆会隐含地改变。语境发生变化。代理在新会话中对同一问题给出不同的答案。它会覆盖联系人并且之前的状态消失。我无法追踪错误号码的来源。我无法使用不同工具中的相同记录。

这些不是边缘情况。一旦代理处理正在进行的状态：任务、交易、承诺、关系，它们就会出现。我委派的越多，限制就越尖锐。

不断破坏的不是智力。这是信任。我首先在[为持久代理内存构建真相层](/posts/truth-layer-agent-memory) 中写到了这一点。

## 当前内存不足的地方

如今大多数代理记忆都是检索：RAG、代理搜索、嵌入相似性、提供者控制的记忆。检索适用于探索和一次性问题。它因持续状态而崩溃。

当代理内存是有界的、连贯的流时，[RAG 会填充冗余结果](/posts/why-agent-memory-needs-more-than-rag)。 Top-k 返回重复而不是您需要的内容。修剪碎片证据链。相似性忽略了结构。

提供者内存（ChatGPT Memory，Claude Projects）仅用于对话且受平台限制。它是不透明的，没有来源或回滚，并且不能跨工具工作。您无法确定性地查询它或追踪事实的来源。

[代理搜索](/posts/agentic-search-and-the-truth-layer) 重新推断每个会话。没有持久的规范身份，无法保证相同的问题产生相同的结果。它适用于编码和探索。对于任务、联系人、交易和事件，您下周需要相同的答案、全套和审计跟踪。检索并不能提供这一点。

[有用的分割](/posts/agent-memory-truth-problem) 是检索与结构化状态，而不是图形与降价。检索优化相关性和发现。结构化状态优化了一致性、完整性和来源。主要项目（Zep、Mem0、Letta、LangMem）正在添加结构，但全面融合面临架构障碍。当代理人代表您行事时，您需要后者。

我单独写过关于[六种结构趋势](/posts/six-agentic-trends-betting-on)的文章，随着时间的推移，这些趋势使这一差距越来越大：代理变得有状态，错误变得定价，平台保持不透明，工具保持碎片化。

## Neotoma 是什么

Neotoma 是一个真相层：位于你的代理之下的记忆基底。代理继续做他们所做的事情（浏览、编写、调用工具）。 Neotoma 拥有他们读写的状态。

您可以在代理对话中上传文档或共享信息。 Neotoma 解析跨源的实体。人员、公司、任务、发票、事件获得稳定的 ID。每一个事实都可以追溯到它的起源。时间线来自日期字段。更正保留历史而不是覆盖它。

该图与执行无关。它模拟的是存在的东西，而不是工作的完成方式。 Cursor、ChatGPT、Claude 或任何 MCP 客户端都可以提供相同的数据。当你[切换工具](/posts/openclaw-and-the-truth-layer)时，记忆不会漂移。

它不是一个笔记应用程序或“第二大脑”。不是提供商控制的内存。不是向量存储或 RAG 层。不是自主代理人。它是您控制的模式优先的结构化状态。

## 此版本包含哪些内容

此开发者版本公开了核心合约：

- **CLI** 用于人类。
- **MCP** 用于代理（ChatGPT、Claude、Cursor、Claude Code）；代理使用 MCP 作为备份。
- **OpenAPI** 作为单一事实来源。

具体功能：

- **双路径存储。** 上传文件或将代理对话中的结构化数据写入一张图表中。
- **实体解析。** 基于哈希的规范 ID 统一了所有源中的同一实体。
- **模式注册表。** 类型化实体和类型化关系。模式随着数据的发展而发展。
- **时间线。** 从跨实体的日期字段自动生成时间线。
- **完整出处。** 每条记录均可追溯到其来源。修正会产生新的观察结果，而不是覆盖。
- **结构检索。** 按实体类型、ID、关系或时间范围查询。用于跨实体推理的图邻域。

没有网络应用程序。这是基础设施，而不是产品。接口有 CLI、MCP 和 API。

## 原则以及为什么本地优先

设计的三个基础：

**隐私第一。** 您的数据保留在您的计算机上。仅本地存储：SQLite 和本地文件。没有云依赖。从未用于训练。您可以控制什么进入和什么留下。

**确定性。** 相同的输入，相同的输出。基于哈希的实体 ID。模式优先提取。存储或检索的关键路径中没有法学硕士。每张唱片都有完整的出处。

**跨平台。**跨工具的一个内存层。 ChatGPT、Claude、Cursor 和 Claude Code 通过 MCP 连接。没有提供商锁定。切换工具，内存保持不变。

此版本在设计上仅限于本地。信任始于控制。在添加远程基础设施之前，合同和保证必须是可靠的。仅本地意味着您可以验证系统所做的一切。对于声称值得信赖的层来说，这是正确的起点。

## 这是给谁的

开发人员和代理构建者熟悉 CLI 优先的工作流程。构建或操作代理系统的人们需要跨会话和工具的持久内存。任何将个人数据视为生产基础设施的人。

不适合（目前）：UI 优先的用户、随意做笔记的用户或任何期望今天获得稳定性保证的人。重大变化是意料之中的。此版本的存在是为了对基础进行压力测试。

## 安装并连接

````bash
npm install -g neotoma # 安装
neotoma init # 初始化
neotoma # 启动交互式会话
````

完整设置、API 文档、MCP 配置和架构参考：[neotoma.io](https://neotoma.io)。

仓库：[github.com/markmhendrickson/neotoma](https://github.com/markmhendrickson/neotoma)。

## 要点

- **隐私第一。** 您机器上的数据；仅本地，无云，从未用于培训。
- **CLI、MCP、OpenAPI。** 人类和代理的一份合同。
- **模式优先的结构化状态。** 类型化实体、完整来源、确定性查询。

## 尝试一下，打破它，告诉我

我希望你能帮助强化这一点。运行它。遇到边缘情况。报告错误、令人困惑的行为或缺失的部分。

我最看重的反馈是：保证失败的地方、合同阻碍的地方、设计做出错误权衡的地方。在 GitHub 上打开问题、提交补丁或开始讨论。

这个版本是故意粗糙的。可靠性来自真实的使用和真实的反馈，而不是孤立的打磨。