为什么 Cascade 停止了记忆
首先,文档迁移了——产品名称也变了
在开始之前,先说明一个实用注意事项,因为这会让旧指南变得难以参考:docs.windsurf.com 现在会重定向到 docs.devin.ai,并且该编辑器在文档中被称为 Devin Desktop。Cascade 记忆页面位于 docs.devin.ai/desktop/cascade/memories。
您也会在文件路径中看到这一变化。现在,工作区规则的首选位置是 .devin/rules/,而 .windsurf/rules/ 则作为备用保留——文档指出 .devin/ "是首选位置并具有更高优先级。" 如果您阅读的说明中仅提到 .windsurf/,它们仍然有效,但它们描述的是备用方案。
记忆属于旧版智能体
回到主要原因。Devin Desktop 有两个官方文档记录的跨对话持久化上下文的机制:"Memories(记忆)(由 Cascade 自动生成)和 Rules(规则)(由用户在全局、工作区或系统级别手动定义)。"
记忆的作用域仅限于旧版 Cascade 智能体。新标签页默认使用 Devin Local 智能体,根据文档,该智能体"不会持久化保存记忆。" 因此,"昨天还行,今天就一片空白"的症状,往往根本不是记忆丢失了,而是换了一个从未拥有过该记忆的智能体。
文档中给出的解决方法是迁移向导:使用 Devin: Open Cascade Migration Wizard 命令将您依赖的记忆迁移到 Skills 中。
自动生成的记忆一直都是本地且绑定工作区的
即使在旧版智能体上,记忆的范围也比大多数人想象的要窄。Cascade "在遇到它认为值得记住的上下文时,可以自动生成并存储记忆",您也可以随时提示它"创建关于……的记忆"。
但是:它们"与创建它们的工作区相关联,并本地存储在 ~/.codeium/windsurf/memories/ 中。" 并且明确指出——"在一个工作区中生成的记忆在另一个工作区中不可用,并且它们不会被提交到您的代码仓库中。" 文档在一处注释中写得很清楚:"自动生成的记忆仅存在于您的本地机器上。"
因此,新电脑、第二次代码检出或同事的电脑上都不会有这些记忆。一个微小的安慰是:"创建和使用自动生成的记忆不会消耗额度。"
官方自己的建议是不要依赖它们
这是值得认真对待的部分,因为这是官方的建议,而不是外部意见:"对于您希望 Cascade 可靠地重复使用的知识,请将其写为 Rule(规则)或添加到您仓库中的 AGENTS.md 中,而不是依赖自动生成的 Memories(记忆)。Rules 是版本控制的、可与团队共享的,并且能让您显式控制其启用状态。"
功能对比表用一句话说明了同样的事情——Memories 用于让 Cascade "记住一次性的事实",而"对于持久的知识,首选 Rules 或 AGENTS.md。" 对于 Skills,注释更加直接:在此进行投入。
Rules 确实会延续——但仅限于您设置的模式
Rules 可以跨越会话边界。它们是否能在特定消息中传递给 Cascade,完全取决于其 frontmatter 中的 trigger 字段:
| 模式 | trigger: | 如何传递给 Cascade | 上下文成本 |
|---|---|---|---|
| 始终开启 | always_on | 每条消息的系统提示词中都包含完整的规则内容 | 每条消息 |
| 模型决策 | model_decision | 系统提示词中仅包含描述;当 Cascade 判断该描述相关时,才会读取完整文件 | 始终包含描述;按需读取内容 |
| 全局匹配 (Glob) | glob | 当 Cascade 读取或编辑匹配 globs 的文件时应用 | 仅在触及匹配的文件时 |
| 手动 | manual | 不在系统提示词中;您需要输入 @rule-name 来激活 | 仅在被 @ 提及时 |
设置为 manual 的规则在您调用它之前是不可见的。设置为 model_decision 且描述模糊的规则可能永远不会被引入。这两种情况都不是 Bug——这就是声明的行为,它与为什么智能体会忽略您编写的指令文件中描述的问题属于同一类。
有两个值得记住的例外:"全局规则文件(global_rules.md)和根目录级别的 AGENTS.md 文件不使用 frontmatter——它们始终处于开启状态。"
字符限制,以及新规则实际保存的位置
文档记录的上限:位于 ~/.codeium/windsurf/memories/global_rules.md 的全局规则文件"限制为 6,000 个字符",而 .devin/rules/*.md 中的工作区规则"每个文件限制为 12,000 个字符"。工作区根目录下的旧版单文件 .windsurfrules 仍会被读取。
还有一个作用域陷阱:规则发现会搜索您的工作区、其子目录,一直向上到 git 根目录——但"当您创建新规则时,它将保存在当前工作区的 .devin/rules directory 中,而不一定在 git 根目录下。" 如果您将子文件夹作为工作区打开,您的新规则的作用域就会被限制在该子文件夹中。
人们尝试过的方法
每天早上重新解释项目。 永远有效,但代价相同——这正是如何停止向 AI 重新解释上下文中提到的循环。
让 Cascade 对所有重要内容“创建记忆”。 在旧版智能体上聊胜于无,但它产生的是本地的、绑定工作区的、未提交的,并且在新标签页的默认智能体中不可用的内容。
把所有东西都放进 global_rules.md。 它确实始终开启,但这意味着在每个工作区的每条消息中都会附带这 6,000 个字符。这是一个实实在在的预算消耗,而不是一个无底的容器。
将每个规则都设置为 Always On(始终开启)。 通过在每个不相关的任务、每条消息上支付全部上下文成本,来解决可靠性问题。
在机器之间复制 ~/.codeium。 这是不受支持的领域,而且对于需要相同知识的队友毫无帮助——这正是为什么 Windsurf 会忘记项目规则中的普遍情况。
认为重命名破坏了某些功能。 通常并没有。.windsurf/rules 仍可作为备用方案,.windsurfrules 也仍会被读取。在得出功能退化的结论之前,请先检查您标签页中的智能体。
解决方案:告别自动记忆,转向 Rules、AGENTS.md 和 Skills
官方的建议和实际的解决方法是一致的。只需操作一次,标签页级别的智能体差异就不再重要。
运行迁移向导。 如果您依赖自动生成的记忆,请按照文档指示,使用 Devin: Open Cascade Migration Wizard 将它们迁移到 Skills 中。这是大多数人会跳过的一步,然后他们会困惑一整周。
将持久知识放入 AGENTS.md。 根目录级别始终开启,无需 frontmatter;子目录文件会自动对该目录进行 glob 匹配。这是维护成本最低的选择,而且它经过版本控制,因此可以共享。
有针对性地对规则进行分类。 通用约束设为 always_on。特定语言或路径的规范设为 glob。特定场景的指南设为 model_decision,并配有足够精确的描述以便路由。极少需要的流程设为 manual,并记住您必须通过 @ 提及它们。
仅将 global_rules.md 用于真正的全局约束。 6,000 个字符,每条消息,每个工作区。请将其视为昂贵的资源。
在 Skills 上进行投入以处理多步骤流程。 文档特别指出,对于 Cascade 需要参考文件的复杂任务,应使用 Skills——它们也是已迁移记忆的官方文档指定目标。
格式化以提高可读性。 Cascade 自己的最佳实践:保持规则简单、简洁且具体;跳过诸如“写出好代码”之类的通用规则,因为这些已经存在于训练数据中;使用项目符号、编号列表和 markdown,而不是长篇大论的段落;使用 XML 标签对相关规则进行分组。
这解决了工具内部传递的内容。但这些容器都无法承载规范背后的推理——例如您为什么拒绝某种方法,或者哪种约束使得某个奇怪的决定是正确的——因为 Rules 有上限,而 AGENTS.md 是一个规范文件,而不是论证过程。
这就是 MemoryLake 的用武之地:将您项目的持久知识保存在一个您的工具可以读取的层中,这样它就不会局限于单台机器或单个智能体模式。设置只需三个步骤。
步骤 1:创建 API 密钥
登录 MemoryLake 并创建 API 密钥。一个凭证即可连接您使用的所有工具。

步骤 2:上传您的第一批记忆
简短的条目,每条只包含一个主张,专注于那些不适合用规则文件承载的内容:

决策以及产生该决策的约束。 规则可以写“使用队列适配器”。但只有写明原因,才能阻止下周再次有人提出替代方案。
已被排除的方法。 代码仓库中没有记录这些,而每一次全新的对话都会重新建议它们。
跨工作区的知识。 记忆在设计上是绑定工作区的,而规则是针对每个仓库的。您的领域词汇和标准不属于这两者中的任何一个。
您重复过的纠正。 如果您已经说过两次,说明这里缺少一个条目——而原因应该与它放在一起。
步骤 3:连接您的 AI 和智能体
连接您使用的工具。MemoryLake 可以通过 MCP 和 API 访问,因此支持 MCP 的原生智能体(包括 Claude Code、Codex 和 OpenClaw 等)可以通过指向 MCP 服务器进行连接,而其他助手则通过 API 读取相同的记忆。

三个坦诚的限制。MemoryLake 不能替代 Rules 或 AGENTS.md——这些是您引导 Cascade 的方式,您仍然应该正确设置它们;它也无法迁移您自动生成的记忆,那是迁移向导的工作。它只保存您或您的智能体写入其中的内容。并且它不强制执行任何操作:规则是上下文,而不是保证合规的手段。
这在实践中带来了什么改变
哪个智能体打开了标签页不再决定您能保留什么。 AGENTS.md 和记忆层中的知识不依赖于仅限于旧版智能体的记忆功能。
第二台机器就仅仅是第二台机器。 自动生成的记忆仅存在于创建它们的机器上。已提交的规则和外部记忆层则不然。
队友可以获得与您相同的上下文。 记忆不会提交到您的代码仓库中;而规则和 AGENTS.md 会,共享知识则存在于这两者之外。
始终开启的预算重新变得充裕。 一旦 6,000 个全局字符不再承载您的架构笔记,它对于真正的约束来说就绰绰有余了。
重命名不再让您付出任何代价。 从 Windsurf 到 Devin Desktop,从 .windsurf/ 到 .devin/——编辑器之外的知识层对这一切都无感,具体形式已在持久记忆的真正含义中进行了讨论。
保留 Cascade 上下文的最佳实践
首先检查您的标签页正在使用哪个智能体。 记忆仅适用于旧版 Cascade 智能体。这是最行之有效的诊断方法。
首选 AGENTS.md 来保存持久知识。 零配置、在根目录下始终开启、在子目录中自动进行 glob 匹配,且经过版本控制。
使用 .devin/rules/ 存放新规则。 这是首选位置并具有更高优先级;.windsurf/ 仍作为备用。
有目的地设置 trigger。 manual 规则根本不会出现在系统提示词中。如果您不是这个意思,请不要这样设置。
编写可用于路由的描述。 model_decision 仅在描述能告诉 Cascade 该规则何时适用时才起作用。
遵守上限。 全局限制 6,000 个字符,每个工作区规则文件限制 12,000 个字符。宁可拆分,也不要压缩。
确认规则保存的位置。 新规则会保存在当前工作区的 .devin/rules 中,而不一定在 git 根目录下。
将原因保留在规则之外。 规范属于代码仓库;而背后的论证应该放在可以检索的地方——这正是为什么 RAG 不是记忆中提到的普遍问题。
结论
从检查智能体开始。Devin Desktop 中的记忆仅适用于旧版 Cascade 智能体,新标签页的默认智能体不会持久化保存它们,文档中给出的解决方法是使用 Cascade Migration Wizard 将您依赖的内容迁移到 Skills 中。仅这一点就能解释大多数突然丢失上下文的情况。
然后采纳官方自己的建议:持久知识属于 Rules 或 AGENTS.md,而不是存在于单台机器、单个工作区且未提交的自动生成记忆中。合理分类您的规则,以便在需要时加载它们,将全局文件保持在 6,000 个字符以内,并将推理过程(决策、约束、被否决的方法)放在一个不关心是哪个智能体打开了标签页、也不关心本季度编辑器叫什么名字的层中。