我一直在研究名为 **[Neotoma](/posts/truth-layer-agent-memory)** 的东西。[^1]

还没有什么可以尝试的。这不是发布帖子，我也不是在宣布产品或要求注册。这个问题已经困扰我一段时间了，更重要的是，它一直在积极妨碍我一直在努力做的工作。

在过去的一年里，我花了很多时间尝试代理系统：自动化工作流程、将任务委派给代理、让系统跨会话操作而不是每次都从头开始。一次又一次，我遇到了同一堵墙。这些系统功能强大，通常令人印象深刻，但我不能相信它们具有真实的、持续的状态。

这种限制不仅仅是理论上的。它是自动化的实际障碍。

## 人工智能系统正在悄然改变角色

它们曾经是你刚刚咨询过的东西：你提出一个问题，得到答案，然后继续前进。他们越来越多地采取行动。他们编写文件和文档、调用工具和 API、跨会话参考过去的对话，并随着时间的推移串联决策，而无需明确提示每个步骤。

那时，个人数据不再是参考资料，而是开始成为“状态”。

而且国家有不同的要求。

## 不断打破的不是智慧，而是信任

当前的人工智能记忆系统是围绕便利性而构建的。它们针对召回率、速度和流畅性以及系统是否“感觉”上记住了您进行了优化。没有一个是围绕出处、可检查性、重播或明确的因果关系构建的。

在实践中，这意味着我可以让代理做某事一次，但我犹豫是否让它“再次”做某事。记忆会隐含地改变。语境发生变化。假设不断累积。当出现问题时，我无法回答发生了什么变化，为什么发生变化，或者如果我从头开始重新运行系统是否会做出相同的决定。

当人工智能是建议性的时，这是可以容忍的，但当人工智能是可操作的时，这是可以容忍的。

## 部分问题是类别不匹配

我们仍然将个人数据视为笔记、文本块或松散上下文。与此同时，代理将相同的数据视为输入、约束、触发器和长期状态。您无法安全地对无法检查、比较、审核或重放的数据进行自动化。

这不是用户体验问题。这是一个系统问题。

## 感觉缺少的是一个基本的原语

明确的、可检查的、可重播的个人状态。

其他域很久以前就解决了这个问题。数据库使应用程序状态可靠。事件日志使分布式系统变得易于理解。分类账使财务历史变得可审计。个人数据以前从未需要如此严格的水平，因为人类可以在头脑中携带上下文或通过手动查看记录来重建它。

特工改变了这一假设。

## 令人不舒服的含义是，正确执行此操作会增加摩擦

状态改变不能是隐式的。

内存更新必须被命名为操作而不是副作用。输入必须是可见的而不是推断的。历史必须是可重构的，而不是可以随意改变的。

你放弃了一些魔法并接受了更多的仪式。否则，你和你的经纪人最终将通过不同的现实视角不可靠地生活在一起。

这种权衡没有捷径。便利优先的系统和代理安全的系统朝着相反的方向发展。

## 我以生产系统处理状态的方式处理个人数据

这会导致一些不可避免的后果。行为必须是契约优先：状态更改是显式的、类型化的操作，而不是临时更新。突变必须是明确的。没有什么“只是更新记忆”。

如果代理要采取行动，他们需要受约束的、可审计的界面，而不是不透明的提示或嵌入。重播与当前答案一样重要：能够解释你是如何到达这里的，这是事实的一部分。

相同的输入总是产生相同的输出，因为记忆层是确定性的，并且智能体有可靠的基础。更改是不可变且可查询的，因此您可以随时查看实体状态。

记忆来自您上传的文档和代理在对话期间写入的数据，这是一个统一实体和事件的结构化图表，以便代理可以对所有内容进行推理。

这些不是审美偏好。他们试图在不失去对执行工作的系统的信任的情况下实现真正的工作流程自动化，但一再失败，直接失败了。

## 为什么我要这样设计

我将 MCP 和 CLI 放在首位。没有网络用户界面，也没有隐藏内存。默认情况下它是本地优先的，具有显式的代理接口。我只摄取我明确提供的内容，没有自动扫描或后台摄取。这些不是遗漏，而是护栏。无论是意外还是其他原因，它们都使得在系统所知道的信息以及系统如何到达那里的问题上撒谎变得更加困难。

我还通过设计使其跨平台和隐私优先。它通过 MCP 与 ChatGPT、Claude 和 Cursor 配合使用，而不是锁定到单个提供商。您的数据仍然属于您，由用户控制，从未用于培训。这些都不是便利；而是便利。它们是信任的先决条件。

## 这不是什么

它不是一个笔记应用程序或“第二大脑”；它是一个应用程序。它是代理的结构化记忆基底。

它不是提供商控制的 ChatGPT Memory 或 Claude Projects；它是您自己的基质，通过 MCP 暴露，因此任何代理都可以使用它。

它不是向量存储或 RAG 层；而是它是模式优先、有来源的结构化内存。

它不是一个具有隐形记忆的自主代理、工作流引擎或人工智能助手；这是内存层代理的读写操作，由您控制。


我认为这还不是可靠的。我试图在假装保证存在之前构建基础层。

## 为什么现在

我们正在标准化代表我们采取行动、坚持信念并随着时间的推移积累决策的系统。当这些系统失败时（它们确实会失败），第一个问题将是：“这是怎么发生的？”

目前，大多数工具都无法回答这个问题。在过去的一年里，这种无能一直是阻止我在重要事情上信任代理人的主要原因。这个问题即将扩大规模。

代理网络正在兴起。我们需要一种用户仍然可以控制内存的方式，而不是一种将内存交给中心化平台并由代理使用不透明、不可靠的方法代表我们行事的方式。我正在构建 Neotoma 来提供：随着代理网络的增长，可检查、可重播和用户控制的底层。

## 即将推出的开发者预览版

我正在努力发布开发者预览版以供我自己使用和公开测试。它将是粗糙且明显不可靠的（例如 API 可能会改变）。其目的是在实际使用中对这些想法进行压力测试，而不是出售任何东西。

我如何进行构建：我首先在自己的代理堆栈中进行测试，这样我就可以看到决定论和出处实际上在哪里有帮助，以及它们在哪里阻碍。用例包括：

- **任务和执行** — 任务、计划、项目和结果以及截止日期和后续提醒
- **联系人和关系** — 链接到通信、任务和事件的联系人记录和关系图
- **通信** — 电子邮件分类、工作流触发处理和对话跟踪
- **财务** — 交易、流量、收入、持有、转让和成本记录
- **记录保存** — 采购、账户、财产和一次性分析报告
- **内容** — 帖子、个人历史、最喜欢的媒体和消费来源
- **健康** — 习惯、锻炼和持续跟踪

在根据使用规模添加更多表面积、压力测试实体和关系解析以及时间线查询之前，我会优先考虑 MCP 稳定性和最小 CLI。

如果这个框架引起共鸣，那么这项工作正在这里公开进行：
[https://github.com/markmhendrickson/neotoma](https://github.com/markmhendrickson/neotoma)

对存储库加注星标是跟踪其发展的最简单方法。总是欢迎人们对代理系统和可扩展状态进行思考的意见。

[^1]：以 *Neotoma*（Packrats）属命名，该属以收集和保存材料而闻名。