为什么自托管的 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 秒。

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

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

无状态推理的实际代价
重放税
没有记忆层,连续性意味着在每次调用时重放历史记录。在自托管硬件上,你付出的是 GPU 时间和延迟,而不是 API 账单——但这是同样的浪费:计算资源被花在重新阅读你已经告诉过模型的内容上,并且随着每一轮对话而增长,直到窗口强制截断。
用检索代替重放
通过在模型旁放置记忆,每个请求只携带相关的片段——事实、决定、段落——而不是整个历史记录。更短的输入、更快的响应,以及在窗口中留出更多空间用于实际工作。如果你在运行自己的部署的同时也运行商业 API,MemoryLake 的 Token 节省计算器可以预测其效果。
自托管记忆的最佳实践
将窗口留给工作,将记忆层留给知识
将 K3 的 1M token 用于当前任务真正需要的内容。持久的知识属于记忆层,按需检索——这就是防止你的提示词无限增长的方法。
存储事实和决定,而不是原始对话记录
完整日志的保留成本很低,但使用成本很高。提炼出的事实、决定和文档的检索效果远好于一整面墙的对话历史记录。
按用户或按项目划分记忆范围
多租户部署从第一天起就需要隔离。每个用户或项目一个范围可以保持检索的相关性,并防止上下文在它们之间泄露。
结论
Kimi K3 的开源权重是一个真正的转变——你可以自己运行的前沿级能力,其窗口大到让人感觉上下文问题已被解决。其实不然:权重是一个无状态的引擎,而记忆是你必须添加的层。如果记忆是你的产品,那就自己构建它;否则,在你的端点旁放一个现成的记忆层,把你的工程精力花在你实际交付的产品上。你的模型运行在你的硬件上。你的记忆只需要存在即可。