Memories 是用于在多次对话间共享并持久化上下文的系统。 在 Windsurf 中有两种机制:Memories(可由 Cascade 自动生成)和规则(由用户在本地与全局层面手动定义)。

如何管理 Memories

您可以随时通过点击 Cascade 右上角滑动菜单中的 Customizations 图标,或通过右下角的“Windsurf - Settings”进入,以访问并配置 Memories 和 Rules。要编辑现有的 Memory,只需打开该项,然后点击 Edit 按钮。

记忆

在对话过程中,Cascade 遇到认为值得保留的有用上下文时,会自动生成并存储“记忆”。 此外,你可以随时让 Cascade 创建记忆。只需对 Cascade 提示:“create a memory of …”。 Cascade 自动生成的记忆会与其创建时所在的工作区关联,且在认为相关时由 Cascade 自动检索。一个工作区中生成的记忆不会在其他工作区中可用。
创建与使用自动生成的记忆不消耗额度

规则

用户可以明确地定义供 Cascade 遵循的规则。 规则可以在全局或工作区级别进行定义。 global_rules.md - 适用于所有工作区的规则 .windsurf/rules - 工作区级目录,包含与 globs 或自然语言描述关联的规则。

规则发现

Windsurf 会自动从多个位置发现规则,便于灵活组织:
  • 当前工作区和子目录:当前工作区及其子目录中的所有 .windsurf/rules 目录
  • Git 仓库结构:对于 Git 仓库,Windsurf 还会向上搜索至 Git 根目录,在父级目录中查找规则
  • 多工作区支持:当同一工作区中打开多个文件夹时,规则会去重,并以最短的相对路径显示

规则存储位置

规则可以存放在以下任一位置:
  • 当前工作区目录中的 .windsurf/rules
  • 工作区任意子目录中的 .windsurf/rules
  • 沿父级目录向上直至 git 根目录(适用于 git 仓库)中的 .windsurf/rules
当你创建新规则时,它会保存到当前工作区的 .windsurf/rules 目录中,不一定位于 git 根目录。 要开始使用 Rules,请在 Cascade 右上角的滑出菜单中点击 Customizations 图标,然后进入 Rules 面板。在这里,你可以点击 + Global+ Workspace 按钮,分别在全局或工作区级别创建新规则。
你可以在 https://windsurf.com/editor/directory 找到由 Windsurf 团队整理的示例规则模板,帮助你上手。
每个规则文件的大小限制为 12000 个字符。

激活模式

在规则层面,你可以定义某个规则在 Cascade 中的激活方式。 共有 4 种模式:
  1. 手动:可通过在 Cascade 的输入框中使用 @mention 手动激活该规则
  2. 始终开启:该规则将始终生效
  3. 模型决定:根据用户为该规则编写的自然语言描述,由 AI 模型决定是否应用该规则
  4. Glob:根据用户定义的 glob 模式(例如 .js、src/**/.ts),该规则将应用于所有匹配该模式的文件

最佳实践

为帮助 Cascade 更好地遵循你的规则,请参考以下最佳实践:
  • 保持规则简单、精炼且具体。过长或含糊的规则可能会让 Cascade 产生困惑。
  • 无需添加泛泛的规则(例如 “write good code”),这些内容已包含在 Cascade 的训练数据中。
  • 使用项目符号、编号列表和 Markdown 来编写规则。相较于大段文字,这些格式更便于 Cascade 理解和执行。例如:
# 编码规范 
- 我的项目编程语言是 Python
- 尽可能使用提前返回
- 创建新函数和类时务必添加文档
  • 使用 XML 标签是传达信息并将相似规则归类在一起的有效方式。例如:
<coding_guidelines>
- 我的项目编程语言是 Python
- 尽可能使用提前返回
- 创建新函数和类时始终添加文档
</coding_guidelines>