MemoryLake
返回全部文章
Tutorial2026 年 7 月 29 日·6 分钟阅读

自托管 Kimi K3?如何为其赋予持久化记忆 (2026)

Moonshot 于 2026 年 7 月 27 日发布了 Kimi K3 的完整开源权重——这是一个拥有 2.8 万亿参数的稀疏 MoE 模型,原生支持文本-图像-视频,拥有 1M-token 的上下文窗口,量化后大小约为 1.4 TB。如果你有足够的硬件,现在完全可以在自己的基础设施上运行这种前沿级别的能力。而在你第一次成功运行推理后,你注意到的第一件事就是它什么都不记得。

简而言之:自托管的 Kimi K3 默认没有记忆——开源权重是作为一个无状态的推理引擎交付的,因此没有 Memory 功能、没有跨会话存储,也没有用户画像。每一次请求对模型来说都是第一次。记忆是一个需要你自行添加的层,而不是一个可以启用的设置。

本指南将介绍为什么自托管意味着从零记忆开始、自己构建记忆实际涉及哪些工作,以及在自己的技术栈上实现跨会话持久化记忆的最快路径。

为什么自托管的 Kimi K3 没有记忆

开源权重实际带给你的是什么

你得到的是模型:权重、推理服务器(vLLM、SGLang 或类似工具)以及一个端点。这只是一个函数——输入 token,输出 token。人们用来对比的消费级产品(ChatGPT、Claude)在模型外包裹了完整的产品层:账户、对话存储、记忆功能、检索。这些都不会随权重一起提供。当你自托管时,你接收的是引擎,而不是整辆车。

技术层面的无状态原因

推理在设计上就是无状态的。模型仅针对眼前的请求保留上下文——这就是上下文窗口的作用。K3 的 1M-token 窗口非常庞大,这很容易让人产生误解:你可以将整个代码库或一年的笔记塞进一个请求中,因此感觉它像是有记忆。其实不然。关闭请求后,状态就消失了;下一次调用对此一无所知。大窗口只是单一任务的工作记忆,而不是跨任务的持久化记忆。

这会给你带来什么代价

你每次都必须重新发送所有内容。为了维持“对话”,你需要在每轮对话中重放完整的历史记录——随着对话增长,成本和延迟也会攀升,直到触及窗口上限并开始截断。多用户部署没有单用户画像,因此不自行构建就无法实现个性化。而且没有任何积累:你的自托管智能体无法跨会话学习你的项目,因为学习到的内容无处存放。

自行构建记忆(以及其成本)

DIY 技术栈

标准方法是一项实打实的工作,许多团队都在这样做:搭建向量数据库、构建 embeddings 流水线、编写分块(chunking)逻辑、添加提取逻辑以决定什么值得记住,然后进行带相关性排序的检索。这是一条被反复验证的道路,能给你完全的控制权——这也正是人们最初选择自托管的原因。

坦白说,其成本是:在它运行良好之前需要数周的工程投入,外加永久的维护成本。提取质量、去重、当两个会话冲突时的冲突处理、相关性微调——每一个都是独立的调优问题,而且一旦疏于维护,每一个都会悄然退化。

数据库中的对话日志

比向量技术栈更便宜:将对话记录存储在 Postgres 中并进行重放。这在数据量增长之前是可行的,但随后你就会面临发送过多内容或必须自己编写摘要算法的问题——而摘要往往会丢失你最需要保留的细节。

塞满 1M-token 窗口

针对 K3 而言,这很有诱惑力:直接把所有内容都放进提示词(prompt)中。但你必须为每次请求的每个 token 付出代价,延迟会随着输入规模而增加,而且塞满的窗口内的检索质量也会下降——模型需要筛选的内容更多,而不是理解得更深。此外,它在请求结束时依然会重置。

共同的瓶颈:这三种方式都需要你亲自构建基础设施。如果记忆是你正在构建的核心产品,那这是正确的选择。如果记忆只是通往你实际产品道路上的管道工程,那这就是在绕弯路——这与 无状态 MCP 服务器的记忆 的权衡是一样的。

解决方案:为你的自托管技术栈赋予持久化记忆

更快的路径是保持模型在原位,并在其旁边放置一个记忆层。MemoryLake 为你处理提取、冲突检测、版本控制和检索:输入文档和对话,输出结构化的可搜索记忆,你自托管的 K3 在每次请求时对其进行查询。你的权重保留在自己的硬件上;记忆层经过端到端加密,因此它也无法读取你的内容。

步骤 1:创建 API 密钥

登录 MemoryLake,生成一个密钥,然后发送你的第一个请求——这大约需要 30 秒。

创建 MemoryLake API 密钥
创建 MemoryLake API 密钥

步骤 2:上传你的第一批记忆

放入你的部署应该永久了解的内容:项目文档、规格说明、产品知识以及每个用户的事实——文档、图像和其他文件都可以。它只会被解析和索引一次,而不是在每次请求时重新发送。

上传你的第一批记忆到 MemoryLake
上传你的第一批记忆到 MemoryLake

步骤 3:连接你的 AI 和智能体

在你的推理端点前调用 API:检索与请求相关的记忆,并将其包含在系统消息或提示词中,这样每次 K3 调用都会在有背景信息的情况下开始,而不是一片空白。如果你的智能体框架支持 MCP,也可以直接在其中进行连接——这样同样的记忆也可以供 Claude、Codex、OpenClaw 和其他智能体使用,从而让你自托管的模型和商业工具共享同一个上下文。

通过 MCP 连接你的 AI 和智能体
通过 MCP 连接你的 AI 和智能体

无状态推理的实际代价

重放税

没有记忆层,连续性意味着在每次调用时重放历史记录。在自托管硬件上,你付出的是 GPU 时间和延迟,而不是 API 账单——但这是同样的浪费:计算资源被花在重新阅读你已经告诉过模型的内容上,并且随着每一轮对话而增长,直到窗口强制截断。

用检索代替重放

通过在模型旁放置记忆,每个请求只携带相关的片段——事实、决定、段落——而不是整个历史记录。更短的输入、更快的响应,以及在窗口中留出更多空间用于实际工作。如果你在运行自己的部署的同时也运行商业 API,MemoryLake 的 Token 节省计算器可以预测其效果。

自托管记忆的最佳实践

将窗口留给工作,将记忆层留给知识

将 K3 的 1M token 用于当前任务真正需要的内容。持久的知识属于记忆层,按需检索——这就是防止你的提示词无限增长的方法。

存储事实和决定,而不是原始对话记录

完整日志的保留成本很低,但使用成本很高。提炼出的事实、决定和文档的检索效果远好于一整面墙的对话历史记录。

按用户或按项目划分记忆范围

多租户部署从第一天起就需要隔离。每个用户或项目一个范围可以保持检索的相关性,并防止上下文在它们之间泄露。

结论

Kimi K3 的开源权重是一个真正的转变——你可以自己运行的前沿级能力,其窗口大到让人感觉上下文问题已被解决。其实不然:权重是一个无状态的引擎,而记忆是你必须添加的层。如果记忆是你的产品,那就自己构建它;否则,在你的端点旁放一个现成的记忆层,把你的工程精力花在你实际交付的产品上。你的模型运行在你的硬件上。你的记忆只需要存在即可。

常见问题

自托管的 Kimi K3 有记忆吗?

没有。开源权重是一个无状态的推理引擎——没有记忆功能、没有跨会话存储,也没有用户画像。除非你自己添加记忆层,否则每次请求都会重新开始。

1M-token 的上下文窗口不算记忆吗?

不算。上下文窗口是单个请求的工作记忆:它允许你一次性包含大量内容,但当请求结束时它就会重置。跨会话的持久化是一项独立的能力。

我应该直接用向量数据库构建记忆吗?

如果记忆是你的核心产品,是的——你能获得完全的控制权。但要做好准备,在嵌入、分块、提取、去重和相关性微调上投入数周的工作,以及持续的维护。如果它只是管道工程,一个现成的层能让你更快达到目的。相关阅读:为什么 RAG 不是记忆

我可以保持模型自托管,而记忆使用托管服务吗?

可以——这是常见的划分方式。权重和推理保留在你的硬件上;记忆层放在它旁边,并在每次请求时进行查询。该层经过端到端加密,因此除了你之外,任何人都无法读取你的内容。

这也适用于其他开源模型吗?

是的。这里的内容并非 K3 特有——任何位于推理端点背后的自托管模型都可以通过同样的方式获得记忆,这也意味着以后更换模型不会让你失去积累的记忆。