MemoryLake
返回全部文章
Pain Point2026 年 5 月 22 日7 分钟阅读

为什么 Windsurf 会忘记 Cascade 上下文?

你在 Cascade 中花了一个小时,带着它对四个文件进行重构。它跟踪了一切,引用你之前的转折,做出聪明的决策。然后在第 30 条消息左右,它对你在第 5 条消息中建立的细节变得沉默——突然间,它建议了一个你在两小时前明确拒绝的模式。

Cascade 并没有崩溃。它只是压缩了。这里是原因,以及如何在每个会话中保持你的项目上下文完整。

简短回答

Windsurf 忘记 Cascade 上下文是因为 Cascade 在一个有限的每会话上下文窗口内运行,该窗口在填充时会自动总结早期的转折,而它的本地记忆是短暂的工作区范围笔记——而不是完整的项目记忆存储。较长的会话会丢失细节,新会话从空白开始。解决方案是一个持久的项目记忆层,Cascade 在每次转折时读取它。

Windsurf 为什么会忘记 Cascade 上下文

Cascade 是一个强大的代理,运行在一个有限的容器内。三个设计选择解释了遗忘现象:

1. 上下文窗口是每会话的有限窗口。 Cascade 在 Claude Sonnet、GPT-4.1 和其他前沿模型上运行,窗口最大可达 1M 令牌。这个窗口很宽松,但并不是无限的,并且在每个新会话时会重置。长时间的代理运行读取多个文件和运行多个工具时,窗口填充的速度比你预期的要快。

2. Cascade 在窗口填充时自动总结。 当 Cascade 接近其上限时,它会将早期的转折压缩成一个简短的总结,以便对话能够继续进行。Codeium 已公开改进了这种总结,以“更好地处理较长的对话”——之前的版本足够激进,以至于丢失重要的上下文,根据他们的变更日志。即使现在,总结也是有损的。你在第 5 条转折中的推理在第 50 条转折时变成了一行。

3. 记忆是短暂的笔记,而不是文档存储。 Windsurf 的 Cascade 记忆功能允许代理记下工作区范围的笔记(“用户偏好 Tailwind”,“该项目使用 Bun”)。存储位于 ~/.codeium/windsurf/memories/,旨在用于短暂的观察,而不是完整的规格、记录或决策日志。

净效应:Cascade 在会话内表现出色,但在会话之间却失忆。

当 Windsurf 忘记 Cascade 上下文时你会失去什么

每次 Cascade 重置都会让你耗费时间,而这种损失在项目中会累积:

  • 会话中的细节被转述。 你在第 5 条转折中陈述的约束——“遗留的 users_v1 表必须保持其现有模式”——在第 40 条转折中被总结为“尊重遗留用户表”,而 Cascade 安静地放弃了模式冻结规则。
  • 架构决策在会话之间蒸发。 “我们选择 Drizzle 而不是 Prisma 是因为边缘运行时”在昨天的聊天中。今天的 Cascade 聊天对此一无所知,因此它用 Prisma 进行搭建。
  • 跨文件上下文片段。 Cascade 可以读取你工作区中的每个文件,但它无法记住三次会话前读取的内容。每个会话都重新读取、重新总结、重新丢失。

Windsurf 的内置解决方法(以及每个方法的不足之处)

Windsurf 已推出三项功能,部分解决了这个问题。它们都没有完全解决。

Cascade 记忆 在会话期间自动生成工作区范围的笔记。对于“记住我使用 pnpm”很有用。对于“记住我们在上周四的聊天中映射的完整数据流”则有限。记忆设计上是短暂的——通常每条一两句话——并且存储在每个工作区的磁盘上,而不是跨机器的每个项目。

规则 (global_rules.md.windsurfrules) 允许你编写持久的指令,Cascade 在每个会话中加载。适用于约定。不适用于像决策日志、记录或设计文档这样的不断演变的上下文。

工作流 允许你编写可重复的代理程序。对于“运行测试套件,然后格式化”很有用。不是记忆功能。

对于静态行为,本地功能有效。对于长期项目的实质内容,它们则显得不足。你可以阅读 官方 Cascade 记忆文档 以获取完整的细节。

Windsurf 的内置记忆不足之处

Cascade 记忆存在于 Windsurf 内部。它们无法迁移。如果你还在 ChatGPT 中起草规格,在 Claude Code 中运行长时间的代理循环,并在 Cursor 中审查 PR——而我们听到的大多数团队正是如此——那么你项目的一半上下文就存在于 Cascade 无法读取的工具中。

项目是工作单位。记忆需要跟随项目,而不是编辑器。

MemoryLake 如何修复 Windsurf 忘记 Cascade 上下文

MemoryLake 是一个跨模型的记忆层,通过 Cascade 的本地 MCP 支持连接到 Windsurf。你不再依赖 Cascade 的自动总结,而是为项目提供自己的记忆,Cascade 在每次转折时从中读取。

  • 每个项目的记忆,具有文档保真度。 规格、ADR、过去的 Cascade 记录和决策日志都存在于项目中。Cascade 每次转折时获取所需内容——第 5 条转折中的模式约束在第 500 条转折时仍然可以检索。
  • 比原始提示多 10,000 倍的上下文。 MemoryLake 的检索引擎从数十亿个项目记忆的令牌中读取,并仅呈现相关内容。你不再需要关注 Cascade 的总结而丢失重要细节。
  • 可在每个编辑器和 AI 中便携。 相同的项目记忆可以在 Cursor、Claude Code、Claude Desktop、ChatGPT、Gemini 和 Grok 中使用。在项目中切换工具,上下文随之而来。

MemoryLake 在 LoCoMo 长上下文基准测试中得分 94.03%——截至 2026 年的最高已发布结果——具有毫秒级检索和 AES-256 端到端加密。

在 3 个步骤中将 MemoryLake 连接到 Windsurf

  1. 创建项目并加载上下文。 登录 MemoryLake,打开项目管理,点击创建项目,并以你的工作区命名(例如,“acme-api — Cascade 上下文”)。通过文档驱动上传规格、ADR 和过去的 Cascade 记录(支持 PDF、Markdown、Word、Excel、图像)。在记忆标签中添加常驻指令,以便它们随项目一起迁移。
  2. 生成 MCP 服务器端点。 在项目内打开 MCP 服务器标签,点击添加 MCP 服务器,命名为“Windsurf 集成”,然后点击生成。MemoryLake 返回一个 API 密钥 ID、密钥和端点 URL。立即复制密钥——它只显示一次。
  3. 将服务器添加到 Cascade 的 MCP 配置中。 在 Windsurf 中,打开设置 → Cascade → 管理 MCP → 查看原始配置,然后添加一个带有端点 URL 和你的 Bearer 令牌的 memorylake 条目。保存并重启 Cascade。Cascade 现在有一个 memorylake 工具,可以按需调用以提取项目记忆或在会话开始时提取。

常见问题

Windsurf 有记忆吗?

Windsurf 有两种记忆机制:Cascade 记忆(由 Cascade 自动生成的短笔记,存储在 ~/.codeium/windsurf/memories/)和规则(手动编写的 global_rules.md.windsurfrules 文件)。两者都不存储完整的文档或完整的记录,并且都限于工作区。

我如何让 Cascade 在长会话中记住上下文?

通过 Windsurf 的本地 MCP 支持,将 Cascade 连接到像 MemoryLake 这样的外部记忆层。项目文件、决策和过去的 Cascade 记录只存储一次,并在每次转折时提取,因此 Cascade 不再需要压缩你自己的对话以保持在窗口内。

为什么 Cascade 不断忘记我在聊天中早些时候告诉它的事情?

因为 Cascade 在上下文窗口填充时会自动总结早期的转折。Codeium 已承认之前的总结足够激进,以至于丢失重要细节。即使经过改进,总结也是有损的——细粒度的约束被压缩成一句话。

Cascade 的上下文窗口大小是多少?

Cascade 的窗口取决于你选择的模型——在最大模型上可达大约 1M 令牌——并且是每会话的。新会话,新窗口。读取多个文件的长会话会比原始模型规格建议的速度更快地填充窗口。

我可以与 Cursor 或 Claude Code 共享 Cascade 上下文吗?

Cascade 记忆不可移植。MemoryLake 在模型中立的项目中存储记忆,因此相同的上下文可以在 Windsurf、Cursor、Claude Code、Claude Desktop、ChatGPT 和任何支持 MCP 或 REST 的工具中使用。