Memories 是用于在多次对话间共享并持久化上下文的系统。
在 Windsurf 中有两种机制:Memories (由 Cascade 自动生成) 和 Rules (由用户在全局、工作区或系统级手动定义) 。
Memories、Rules、Workflows,还是 Skills?
| Feature | What it does | How it’s activated | When to use it |
|---|---|---|---|
| Rules | 告诉 Cascade 应如何运作 (例如“使用 bun,不要用 npm”) | always_on、glob、model_decision 或 manual (见下文) | 编码规范、风格指南、项目约束 |
| AGENTS.md | 按位置生效且零配置的规则 | 自动——根目录 = 始终启用,子目录 = glob | 无需 frontmatter 的目录级约定 |
| Workflows | 用于可重复多步骤任务的提示模板 | 仅手动,通过 /[workflow-name] 斜杠命令 | 部署、PR 审查、发布检查清单 |
| Skills | 将多步骤流程与配套文件 (脚本、模板) 打包在一起 | 由模型动态调用,或通过 @mention | 适用于 Cascade 需要参考文件的复杂任务——优先投入这里 |
| Memories | Cascade 在对话中自动生成的上下文 | 在相关时自动检索 | 让 Cascade 记住一次性事实;对于长期知识,优先使用 Rules 或 AGENTS.md |
如何管理 Memories
Customizations 图标,或通过右下角的“Windsurf - Settings”进入,以访问并配置 Memories 和 Rules。要编辑现有的 Memory,只需打开该项,然后点击 Edit 按钮。
Memories
~/.codeium/windsurf/memories/ 中。Cascade 会在认为相关时检索它们。在一个工作区中生成的 Memories 不会在其他工作区中可用,并且它们不会提交到你的仓库。
自动生成的 Memories 仅保存在你的设备上。如果你希望 Cascade 持久记住某些内容——并与团队共享——请让 Cascade 将其写入
.windsurf/rules/ 中的某条 Rule 或你的仓库中的 AGENTS.md。Rules
| Scope | Location | Notes |
|---|---|---|
| 全局 | ~/.codeium/windsurf/memories/global_rules.md | 单个文件,适用于所有工作区。始终启用。限制为 6,000 个字符。 |
| 工作区 | .windsurf/rules/*.md | 每条 Rule 对应一个文件,每个文件都有自己的激活模式。每个文件限制为 12,000 个字符。 |
| AGENTS.md | 工作区中的任意目录 | 由同一 Rules 引擎处理——根目录级别 = 始终启用,子目录 = 自动对该目录进行 glob 匹配。 |
| 系统 (Enterprise) | 因操作系统而异 (例如 /etc/windsurf/rules/) | 由 IT 部署,终端用户只能读取。 |
规则发现
- 当前工作区和子目录:当前工作区及其子目录中的所有
.windsurf/rules目录 - Git 仓库结构:对于 Git 仓库,Windsurf 还会向上搜索至 Git 根目录,在父级目录中查找规则
- 多工作区支持:当同一工作区中打开多个文件夹时,规则会去重,并以最短的相对路径显示
Rules Storage Locations
- 当前工作区目录中的
.windsurf/rules - 工作区任意子目录中的
.windsurf/rules - 沿父级目录向上直至 git 根目录 (适用于 git 仓库) 中的
.windsurf/rules
.windsurf/rules 目录中,不一定位于 git 根目录。
要开始使用 Rules,请在 Cascade 右上角的滑动菜单中点击 Customizations 图标,然后进入 Rules 面板。在这里,你可以点击 + Global 或 + Workspace 按钮,分别在全局或工作区级别创建新的 Rules。
每个工作区 Rule 文件的长度限制为 12,000 个字符。全局 Rules 文件的长度限制为 6,000 个字符。
Activation Modes
trigger 字段声明一种激活模式。这决定了该 Rule 的内容会在何时提供给 Cascade,以及会占用多少上下文窗口:
| Mode | trigger: value | How it reaches Cascade | Context cost |
|---|---|---|---|
| 始终启用 | always_on | 完整的 Rule 内容会在每条消息中包含在系统提示中。 | 每条消息 |
| 模型决策 | model_decision | 系统提示中只会显示 description。当 Cascade 判断该描述相关时,它会读取完整的 Rule 文件。 | 始终包含描述;按需包含完整内容 |
| Glob | glob | 当 Cascade 读取或编辑与 globs 模式匹配的文件时,Rule 会生效 (例如 *.js、src/**/*.ts) 。 | 仅在处理匹配文件时 |
| 手动 | manual | 该 Rule 不会出现在系统提示中。你可以通过在 Cascade 输入框中输入 @rule-name 来激活它。 | 仅在被 @ 提及时 |
全局 Rules 文件 (
global_rules.md) 和根级别的 AGENTS.md 文件不使用 frontmatter——它们始终启用。最佳实践
- 保持规则简单、精炼且具体。过长或含糊的规则可能会让 Cascade 产生困惑。
- 无需添加泛泛的规则 (例如 “write good code”) ,这些内容已包含在 Cascade 的训练数据中。
- 使用项目符号、编号列表和 Markdown 来编写规则。相较于大段文字,这些格式更便于 Cascade 理解和执行。例如:
- 使用 XML 标签是传达信息并将相似规则归类在一起的有效方式。例如:
系统级规则 (Enterprise)
.md 格式) 放在对应操作系统的指定目录中。系统会自动从这些目录中加载所有 .md 文件。
系统级规则的工作原理
重要:系统级规则应由贵公司的 IT 或安全团队进行管理。请确保内部团队根据组织的政策来处理部署、更新和合规性要求。你可以使用诸如移动设备管理 (MDM) 或配置管理等标准工具和工作流程来完成这些工作。