Cursor Rules不生效是因为规则未被正确加载或语法错误:需确认规则位于工作区根目录的.cursor/rules下并导出默认数组,检查cursor.json格式合法性,多根工作区仅激活根生效,且v0.45+弃用JSON/YAML改用TS导出,缺字段或拼写错误将静默失效。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Cursor Rules不生效,意味着你写好的代码规范、命名约束、安全检查等策略完全没被编辑器读取或执行,补全、校验、自检功能全部失效——哪怕规则文件就放在项目根目录,保存后刷新也毫无反应。
确认规则文件是否被正确加载
第一步:打开命令面板(Ctrl+Shift+P 或 Cmd+Shift+P),输入并执行 Cursor: Show Active Rules Info。
第二步:观察输出内容。如果显示 No rules loaded 或 Rules directory not found,说明编辑器根本没找到你的规则目录;如果显示路径但 rules count: 0,大概率是语法或导出问题。
第三步:检查终端输出——在 Cursor 底部状态栏点击「Output」→ 选择「Cursor Rules」标签页。这里会打印真实加载日志,比如 Failed to load rules from /path/to/.cursor/rules: SyntaxError: Unexpected token 'export',比弹窗报错更准、更早暴露问题。
检查 .cursor/rules 目录结构与导出方式
必须把规则文件放在工作区根目录下的 .cursor/rules 文件夹内,且该文件夹下至少包含一个 index.ts 或 rules.ts 文件。
这个文件必须使用 ESM 语法导出默认数组:export default [ /* 你的规则对象 */ ];
【注意:不能用 CommonJS 的 module.exports,也不能漏掉 export default】——v0.45+ 版本彻底废弃了 JSON/YAML 规则格式和 promptrules 字段,只认 TypeScript 默认导出数组。
如果用了 cursor.json 方式,请确保它位于工作区根目录,且 JSON 格式严格合法:无尾逗号、字符串必须双引号、UTF-8 编码无 BOM。
验证多根工作区下的激活状态
如果你打开了多文件夹工作区(Multi-root Workspace),Cursor 只会加载当前激活的根目录下的 .cursor/rules,其他根目录的规则完全被忽略。
方法一:右键点击资源管理器中某个文件夹 → 选择「Set as Active Folder」,再执行 Cursor: Reload Window。
方法二:关闭所有非必要根目录,仅保留含规则的那个文件夹为唯一根目录,测试是否生效。
这一步常被忽略——你以为所有子项目都共享规则,其实只有焦点所在的那个才起作用。
排查语法与运行时错误
打开 .cursor/rules/index.ts,逐行检查规则对象结构。每条规则必须包含 id、pattern、action 三个顶层字段,缺一不可。
Pattern 中的正则表达式必须用 /.../ 包裹,不能写成字符串形式 "^abc$";action.type 只能是 "error"、"warn" 或 "suggest",拼错即静默失败。
运行 Developer: Toggle Developer Tools → Console 标签页,执行:require('fs').readFileSync('.cursor/rules/index.ts', 'utf8')
确认文件确实被读取,且内容无乱码或截断。
清除缓存并强制重载
第一步:关闭所有 Cursor 窗口。
第二步:删除缓存目录:
Windows:%APPDATA%\Cursor\Cache
macOS:~/Library/Caches/Cursor
Linux:~/.cache/Cursor
第三步:重新启动 Cursor,不要直接打开旧项目,而是通过「File → Open Folder」重新选择工作区根目录。
【关键动作:重启前务必关闭所有窗口,仅靠 Reload Window 不足以清空 LSP 层级的规则缓存】


















