为什么您的记忆可能无法到达智能体
默认智能体在功能底层发生了变化
上面引用的句子同时做了两件事。它将记忆的范围限制在“仅限旧版 Cascade 智能体”,并告诉您实际正在使用的是哪个智能体:“Devin Local 智能体——新标签页的默认智能体”。
没有出现故障。一个更新的智能体成为了默认智能体,而一个较旧的持久化机制没有随之而来。但对于任何假设自己积累的上下文会一直跟随他们的人来说,实际效果是显而易见的:打开一个新标签页,它就不存在了。
厂商已经建议不要依赖它们
这并非文档与实践不一致的情况。Devin 自己的指南(在智能体问题出现之前就已编写)说明了持久知识应该归于何处:
“建议: 对于您希望 Cascade 可靠重用的知识,请将其编写为 Rule 或添加到您仓库中的 AGENTS.md 中,而不是依赖自动生成的记忆。Rules 是版本控制的、可与您的团队共享,并为您提供对激活的显式控制。”而且功能对比表直截了当地说明了记忆的用途:“让 Cascade 记住一次性的事实;对于持久知识,首选 Rules 或 AGENTS.md。”
因此,迁移向导并不是针对退化问题的临时解决方案。它是一个帮助您执行文档推荐操作的工具。
四种持久化机制,每种都有不同的触发器
之所以“直接将其移动到 Rule”不是一条简单的指令,是因为 Devin Desktop 区分了四种事物,而正确的目的地取决于您拥有的内容。
Rules “告诉 Cascade 如何表现(例如‘使用 bun,而不是 npm’)”,并通过 always_on、glob、model_decision 或 manual 之一激活。最适合“编码规范、样式指南、项目约束”。
AGENTS.md 提供“零配置的、限定位置的规则”,自动激活:“根目录 = always-on,子目录 = glob”。最适合“没有 frontmatter 的特定目录规范”。
Workflows 是“可重复的多步骤任务的提示词模板”,仅通过 /[workflow-name] 斜杠命令“手动激活”。最适合“部署、PR 评审、发布清单”。
Skills 是“与支持文件(脚本、模板)捆绑在一起的多步骤程序”,“由模型动态调用,或通过 @ 提及”,文档特别指出了它们:“Cascade 需要参考文件的复杂任务——在此投入精力”。
最后一行解释了为什么向导专门针对技能(skills)而不是规则(rules)。
激活模式有已记录的上下文成本
如果您准备将大量内容移动到规则中,首先应该阅读此表,因为 Devin 公布了每种模式的成本。
always_on 将“完整规则内容……放入每条消息的系统提示词中”,成本为“每条消息”。model_decision “仅在系统提示词中显示描述。当 Cascade 判定描述相关时,会读取完整的规则文件”——成本为“始终显示描述;按需读取完整内容”。glob 适用于“当 Cascade 读取或编辑匹配 glob 模式的文件时”,成本为“仅在触及匹配文件时”。manual “不在系统提示词中”,并在您输入 @rule-name 时激活。
需要记住的两个例外:“全局规则文件(global_rules.md)和根目录级别的 AGENTS.md 文件不使用 frontmatter——它们始终开启(always on)。”
存在硬性字符限制
在迁移过程中容易让人措手不及的限制:
“工作区规则文件限制为每个 12,000 字符。全局规则文件限制为 6,000 字符。”
全局规则保存在 ~/.codeium/windsurf/memories/global_rules.md 的单个文件中,“应用于所有工作区”,始终开启,上限为 6,000 字符。工作区规则是“每个规则一个文件,每个文件都有自己的激活模式”,每个文件限制 12,000 字符,位于 .devin/rules/*.md(首选)或 .windsurf/rules/*.md(备用),并且工作区根目录下的“旧版单文件 .windsurfrules”仍会被读取。
因此,全局文件是您拥有的最小预算,也是大多数人最先想到的文件。将一年的记忆倾倒进去是装不下的。
常见的尝试与误区
假设记忆会跟随新智能体。 这是最常见的假设,也是本文存在的原因。它们仅适用于旧版 Cascade 智能体。
断定 Devin 没有持久化上下文。 这在另一个方向上也是错误的。Rules、AGENTS.md、Workflows 和 Skills 都会持久化,并且比自动生成的记忆具有更显式的激活控制。
将所有内容粘贴到 global_rules.md 中。 这可以理解——一个文件,始终开启,无需学习 frontmatter。但它也受 6,000 字符的限制,并且在每个工作区的每条消息中都要为此付费(消耗上下文)。
将每个规则都设为 always_on。 这种看似安全的选择会悄悄消耗上下文窗口。model_decision 的存在正是为了能够以低成本描述长规则并按需读取。
手动逐个迁移记忆。 没有必要。有一个专门的命令可以做到这一点:Devin: Open Cascade Migration Wizard。
将规则视为文件柜。 Devin 的最佳实践直接予以驳斥:“保持规则简单、简洁和具体。过长或模糊的规则可能会混淆 Cascade”,以及“无需添加通用规则(例如‘编写优秀的代码’)”。项目事实并非行为指令,将它们放入规则中会导致规则目录失效——这也是为什么 Devin 会忘记您的编码风格(即使该风格已在某处写明)背后的模式。
解决方案:整理记忆,然后将每种记忆送回正确的归宿
步骤 1:读取您记忆中实际存在的内容
在运行向导之前,先看看您拥有什么。记忆是“Cascade 在对话过程中自动生成的上下文”,因此内容会很杂——而这种混杂正是单一目的地不合适的原因。
在阅读时,将您发现的内容分类到四个堆中。
行为(Behavior)。 “使用 bun,而不是 npm。”“首选提前返回。”这些将成为 Rules,激活模式是一个真正的决定,而不仅仅是形式。
特定位置的规范(Location-specific conventions)。 任何仅在单个目录内成立的内容。这些将成为 AGENTS.md 文件,您无需任何 frontmatter 即可获得 glob 行为。
带有支持文件的程序(Procedures with supporting files)。 任何需要脚本或模板的多步骤内容。这些是 Skills,也是文档告诉您要投入精力的地方。
事实(Facts)。 为什么 API 在路径中进行版本控制。某个领域术语在内部意味着什么。哪个服务拥有哪个队列。这些与四种机制中的任何一种都无法完美匹配,我们稍后会回到这一点。
步骤 2:运行向导,然后根据激活模式放置其余内容
打开命令面板并运行 Devin: Open Cascade Migration Wizard。这是针对您所依赖的记忆的官方路径,它针对的是技能(skills)——专为与参考文件捆绑在一起的程序而构建的机制。
对于向导未涵盖的所有内容,请刻意进行放置:
必须在所有地方生效的行为放入 ~/.codeium/windsurf/memories/global_rules.md,请记住 6,000 字符的上限,并且它始终开启且没有 frontmatter。
限定于项目范围的行为放入 .devin/rules/*.md——这是首选位置,其“优先级高于”.windsurf/。在 frontmatter 中为每个规则指定一个 trigger。对于文件类型规则,使用带有模式的 glob;对于足够长、您宁愿为描述付费也不愿为整个文件付费的任何内容,使用 model_decision;并将 always_on 保留给真正适用于每条消息的简短列表。
目录规范放入相关目录中的 AGENTS.md,其中根目录级别是 always-on,子目录是“该目录的自动 glob”。
两个可以节省调试时间的发现细节。Devin 会“向上搜索至 git 根目录,以在父目录中查找规则”,并且当打开多个文件夹时,“规则会被去重并以最短的相对路径显示”。但是,当您创建规则时,它“将保存在当前工作区的 .devin/rules 目录中,而不一定在 git 根目录下”——因此请检查它的落脚点。
在此过程中,请遵循格式指南。Devin 要求使用“项目符号、编号列表和 markdown”,而不是长段落,并指出“XML 标签可以是传达和将相似规则分组在一起的有效方式”。
步骤 3:为第四堆内容找一个容身之所
四个堆中的三个现在有了合适的归宿。第四个没有,而假装它有正是导致规则目录退化的原因。
关于项目的客观事实并不是指令。它们没有天然的激活模式:always_on 会为您偶尔需要的内容支付过高的成本,glob 需要事实所不具备的文件模式,manual 要求您知道该规则存在并进行 @ 提及,而 model_decision 虽然更接近,但仍然要求您编写事实的描述,而不是事实本身。与此同时,全局文件有 6,000 字符限制,每个工作区规则有 12,000 字符限制,这些预算都不应该花在背景知识上。
记忆层可以在没有激活模式的情况下保存它们,因为智能体是在提及该主题时读取它,而不是在模式匹配时。只需三个步骤即可设置 MemoryLake。
步骤 1:创建 API 密钥
登录并从您的仪表板生成一个 API 密钥。它不绑定到特定的智能体,因此它不具备引发本文讨论的属性——它没有任何部分属于 Cascade 而不属于 Local 智能体。

步骤 2:上传您的第一批记忆
放入第四堆内容:架构决策及其背后的原因、领域词汇、服务归属、为什么存在临时解决方案、以及您多次给出的纠正。

将行为留在 rules 中,将程序留在 skills 中。这些机制在各自的工作中表现出色,并且具有已记录的激活语义;而这里是为那些没有任何激活语义的材料准备的。
步骤 3:连接您的 AI 和智能体
将 Devin Desktop 指向该存储。您的字符预算用于行为,您的 always-on 集合保持足够简短以便被遵循,并且使旧记忆具有价值的知识不再取决于标签页碰巧是用哪个智能体打开的——正如将项目文档转化为 AI 记忆中所阐述的观点。

这在实践中改变了什么
第一个改变是,智能体的选择不再是一个关于知识的决定。目前,自动生成层是否适用取决于标签页是 Cascade 还是 Local。知识不应该依赖于标签页。
第二个改变是,字符限制不再是设计约束。全局 6,000 字符和每个工作区规则 12,000 字符对于行为来说是可行的,但对于行为加上事实来说就显得捉襟见肘了,而且后者根本不需要存在于那里。
第三个改变是,版本控制的论点终于适用于所有内容。Devin 推荐使用 Rules 而不是 Memories 的依据是它们“受版本控制、可与您的团队共享,并为您提供对激活的显式控制”。这些是正确的属性,背景事实也理应拥有它们——这也是在有人离职时保留团队 AI 上下文背后所关注的问题。
Devin Desktop 规则和技能的最佳实践
- 运行向导,而不是手动迁移。
Devin: Open Cascade Migration Wizard是官方推荐的路径。 - 将每个记忆与一种机制相匹配。 行为归入 Rules,目录规范归入
AGENTS.md,带有文件的程序归入 Skills。 - 刻意选择
trigger。 文档公布了每种模式的上下文成本;always_on是昂贵的那一个。 - 遵守上限。 每个工作区规则文件限制为 12,000 字符,全局文件限制为 6,000 字符。
- 首选
.devin/而不是.windsurf/。 它是首选位置并具有优先级;旧版的.windsurfrules仍会被读取。 - 检查新规则保存在何处。 它会保存到当前工作区的
.devin/rules中,而不一定是 git 根目录。 - 保持规则简短且具体。 过长或模糊的规则“可能会混淆 Cascade”,而通用建议已经存在于模型中。
- 了解系统规则是添加而非覆盖。 企业系统级规则“与工作区和全局规则合并……不会覆盖用户定义的规则”,并带有用户无法删除的“System”标签。
结论
需要采取行动的具体事项是微小且具体的:自动生成的记忆仅适用于旧版 Cascade 智能体,新标签页的默认智能体不会持久化它们,并且有一个官方向导可以将您依赖的内容移动到技能中。运行它。
更重要的一点是 Devin 自己的文档所阐述的。自动生成的记忆适用于一次性的事实,但对于您需要可靠获取的知识来说,它是一个糟糕的基础。整理您拥有的内容,将行为和程序放在它们所属的地方,并配合适合的激活模式,然后将背景事实保留在不属于任何单一智能体的层中。