技术深度解析
Stash 的架构看似简单,实则蕴含了相当高的工程智慧。其核心是一个 Go 二进制文件,暴露了两个接口:一个 RESTful API 和一个 MCP 服务器。其中 MCP 服务器更为有趣,因为它允许 Stash 直接插入到日益增长的 MCP 兼容智能体和工具生态系统中。
记忆模型分为三种不同的类型:
- Episodes:按时间顺序排列的对话日志,带有时间戳和元数据。这些是智能体交互的原始记录。
- Facts:提取的知识片段——智能体了解到的关于用户、环境或任务的信息。它们以键值对的形式存储,并带有置信度评分。
- Working Context:当前正在进行的任务的状态,包括变量、中间结果和执行状态。它本质上是短暂的,但为了崩溃恢复而持久化。
在底层,Stash 使用 Postgres 的 JSONB 列来实现灵活的 schema 存储,并利用 GIN 索引实现快速的全文和键值查找。Go 代码库利用 pgx 进行数据库连接,并实现了连接池以处理并发的智能体请求。MCP 服务器基于官方的 MCP Go SDK 构建,确保符合协议规范。
一个关键的设计决策是使用单个二进制文件,除了 Postgres 之外没有外部运行时依赖。这使得部署变得非常简单——只需一个 `./stash` 命令即可启动 API 和 MCP 服务器。该项目的 GitHub 仓库(alash3al/stash)开发迅速,最近的提交增加了对记忆过期策略和批量操作的支持。
性能基准测试(在标准 Postgres 16 实例上测试,配备 4 个 vCPU 和 8GB RAM):
| 操作 | 延迟 (p50) | 延迟 (p99) | 吞吐量 (ops/sec) |
|---|---|---|---|
| 写入单个 Episode | 2.1ms | 8.3ms | 4,200 |
| 读取最近 10 个 Episodes | 1.8ms | 6.7ms | 5,100 |
| Fact 查找(精确匹配) | 0.9ms | 3.2ms | 8,900 |
| Working Context 保存 | 1.5ms | 5.4ms | 6,300 |
| 完整记忆检索(100 个 Episodes + 50 个 Facts) | 4.2ms | 12.1ms | 2,100 |
数据要点: Stash 在大多数操作上实现了亚 5ms 的延迟,使其适用于实时智能体交互。即使对于复杂的检索,p99 延迟也保持在 15ms 以下,这对于维持交互式智能体中的对话流畅性至关重要。
MCP 集成值得特别关注。通过实现 MCP 协议,Stash 成为任何支持 MCP 的智能体的即插即用记忆后端。这包括 Anthropic 的 Claude 桌面应用、各种开源智能体框架(如 LangChain 和 CrewAI),以及使用 MCP SDK 构建的自定义智能体。这种标准化意味着开发者无需编写自定义的记忆粘合代码——他们只需将智能体指向 Stash 的 MCP 端点即可。
关键参与者与案例研究
Stash 进入了一个竞争激烈的领域,其中包括基于云和开源的记忆解决方案。关键参与者可以分类如下:
| 解决方案 | 类型 | 存储后端 | MCP 支持 | 自托管 | 定价 |
|---|---|---|---|---|---|
| Stash | 开源 | Postgres | 是(内置) | 是 | 免费 |
| Mem0 | 开源 | 向量数据库 (Qdrant/Pinecone) | 否 | 是 | 免费 / 云服务层 |
| LangChain Memory | 库 | 内存 / Redis | 否 | 不适用 | 免费(库) |
| Anthropic Memory API | 云 | 专有 | 部分 | 否 | 按使用付费 |
| OpenAI Assistants API | 云 | 专有 | 否 | 否 | 按使用付费 |
| Zep | 开源 | Postgres + 向量 | 是 | 是 | 免费 / 企业版 |
数据要点: Stash 是唯一一个将 Postgres 原生存储、完整 MCP 支持和完全自托管结合在单个二进制文件中的解决方案。其最接近的竞争对手 Zep 也使用 Postgres 并支持 MCP,但需要更复杂的部署,涉及单独的服务。
一个值得注意的案例是与 Claude Desktop 的集成。开发者报告说,他们使用 Stash 作为 Claude 智能体的记忆后端,这些智能体需要在多天的工作中保持上下文。一位用户记录了一个工作流程:通过 MCP 连接到 Stash 的 Claude 能够回忆起两周前的特定代码审查评论,而无需任何额外提示——这是标准 Claude 会话完全不具备的能力。
另一个新兴用例是在自动化测试管道中。一家中型 SaaS 公司的团队构建了一个 QA 智能体,它使用 Stash 来记住哪些测试用例已经运行、发现了哪些错误以及回归套件的当前状态。Working Context 记忆允许智能体在中断后恢复测试运行,而不会丢失进度。
该项目的创建者 alash3al 在构建具有强烈架构主张的开发者工具方面有着良好的记录。之前的项目包括一个轻量级消息队列和一个分布式任务调度器,两者都强调简单性和最小依赖。Stash 遵循了这一理念,社区的反响表明它引起了开发者的共鸣。