
Windsurf Rules 规则配置教程:四种触发模式示例
Windsurf Rules 的配置可以拆成四步:确认规则目录、在 Customizations 面板新建、用 frontmatter 选触发模式、然后验证是否生效。整套流程免费版也能用,唯一容易踩坑的是改名后规则目录变成了 .devin/rules,旧的 .windsurf/rules 只作为兼容保留。

前置准备:规则到底存在哪个目录
官方文档(现在挂在 Devin 文档站下,Windsurf 插件仍保留入口)给出了四个作用域,先把它们分清楚,后面才不会出现「写了规则但不生效」:
- 全局规则在
~/.codeium/windsurf/memories/global_rules.md,单文件、对所有工作区生效、始终打开,上限 6000 字符。 - 工作区规则在
.devin/rules/*.md(首选)或.windsurf/rules/*.md(兼容),一个规则一个文件、各自带触发模式,单文件上限 12000 字符;工作区根目录的旧版单文件.windsurfrules仍会被读取。 AGENTS.md可以放在任意目录,由同一套规则引擎处理:根目录等于始终打开,子目录则自动按该目录做 glob。- 企业系统级规则放在 OS 对应位置(例如
/etc/devin/rules/,旧路径/etc/windsurf/rules/),由 IT 部署,终端用户只读。
规则发现逻辑也值得留意:它会在当前工作区及其子目录查找,git 仓库会一直向上找到 git 根目录;如果同一个工作区开了多个文件夹,规则会去重并按最短相对路径展示。另外,你新建的规则会保存到当前工作区的 .devin/rules,不一定是 git 根目录。
第一步:在 Customizations 面板新建规则
入口在 Cascade 右上角滑出菜单里的 Customizations 图标,也可以走右下角的 Devin Settings。
进入 Rules 面板后,顶部会看到 + Global 和 + Workspace 两个按钮:
- 点
+ Global新建全局规则,内容写进global_rules.md,对你所有项目生效。 - 点
+ Workspace新建工作区规则,文件落在当前工作区的.devin/rules,可以跟着仓库提交给团队。
选择原则很简单:要团队共享、需要版本追溯的,一定放工作区;只是个人习惯、不想进仓库的,才放全局。
第二步:用 trigger 选四种激活模式
每个工作区规则都在 frontmatter 里用 trigger 字段声明激活方式,它决定了规则什么时候进上下文、占多少上下文:
| 模式 | trigger 取值 | 怎么送到 Cascade | 上下文成本 |
|---|---|---|---|
| Always On | always_on |
每条消息都把完整规则内容放进系统提示 | 每条消息都占 |
| Model Decision | model_decision |
系统提示里只放 description,Cascade 判断相关时再读全文 | 描述常驻,正文按需 |
| Glob | glob |
Cascade 读写命中 globs 模式的文件时应用 |
只在命中文件时占 |
| Manual | manual |
不进系统提示,靠你在输入框输入 @rule-name 激活 |
只在被 @ 时占 |
注意两个例外:全局规则文件和根级 AGENTS.md 不使用 frontmatter,它们天然是始终打开。

一条工作区规则的写法示例:
---
trigger: glob
globs: **/*.test.ts
---
All test files must use `describe`/`it` blocks and mock external API calls.
第三步:写规则正文的四条硬规矩
规则能不能被稳定遵守,多半取决于正文写法:
- 一条规则只讲一件事,写具体约定而不是风格口号,官方建议保持简单、简短、具体。
- 控制长度:工作区规则单文件上限 12000 字符,全局规则文件上限 6000 字符,超了就要拆文件。
- 想清楚放哪一层:需要团队共享、要能版本追溯的写进仓库的
.devin/rules并提交;只对自己有效的放全局。 - 别把自动记忆当规则用:Cascade 自动生成的 Memories 只存在本机、不提交、不跨工作区共享,要可靠复用就写成 Rule 或放进
AGENTS.md。

第四步:验证规则有没有生效
官方没有提供「规则生效指示器」,所以用观察法验证更实际:先建一条 always_on 规则,正文写一条容易观察的约束(例如注释统一用中文),然后让 Cascade 改一个文件,看它是否遵守。
如果规则放在仓库目录,别忘记提交,否则同事拉下来根本看不到这条规则。
官方还提供了一个按场景分类的规则模板库,地址是 windsurf.com/editor/directory,可以直接挑现成的改。
规则不生效时怎么排查
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 规则完全没反应 | 文件放错目录,或扩展名不是 .md |
放到 .devin/rules 或 .windsurf/rules,扩展名用 .md |
| 有时生效有时不生效 | 触发模式是 model_decision,由 Cascade 自行判断 |
改成 always_on 或 glob |
| 规则像被截断 | 超过字符上限(工作区 12000、全局 6000) | 拆成多个文件或精简正文 |
| 手动模式的规则从不自动生效 | 触发模式是 manual |
在输入框用 @rule-name 显式激活 |
| 同事说没有这条规则 | 规则写在你的全局目录里 | 移到仓库的 .devin/rules 并提交 |
常见问题
Windsurf Rules 免费版能用吗?
答:能用。Rules 属于编辑器侧的上下文配置能力,不属于必须付费的模型额度,Free 计划同样可以新建全局与工作区规则。
现在该用 .devin/rules 还是 .windsurf/rules?
答:新项目用 `.devin/rules`,它是官方首选且优先级更高;`.windsurf/rules` 保留为向后兼容,老仓库可以继续用,不必急着迁移。
Rules 和 AGENTS.md 有什么区别?
答:两者由同一套规则引擎处理。AGENTS.md 免 frontmatter、根目录自动始终打开;Rules 则可以用 trigger 精细控制激活时机和上下文成本。
为什么我的 Rules 会消耗上下文?
答:取决于触发模式。`always_on` 每条消息都带完整内容,最占上下文;`glob` 只在命中文件时加载;`manual` 只有被 @ 时才加载。内容多时优先用后两种。
自动生成的 Memories 能替代 Rules 吗?
答:不适合。自动 Memories 只存在本机、不提交、不跨工作区共享,官方也建议把需要可靠复用的知识写成 Rule 或放进 AGENTS.md。
规则写多长比较合适?
答:官方建议简单、简短、具体。硬上限是工作区单文件 12000 字符、全局文件 6000 字符;接近上限时应该按主题拆成多条规则。

京ICP备2024094994号-29