一. 简介
Rules(行为约束) 是指开发者或用户通过自然语言或结构化指令,强制规定模型在生成内容时必须遵守的边界、风格、逻辑和禁忌。
Rules 的出现是为了解决 Agent 最常犯的低级错误,比如修改后不编译、不测试、擅自修改上游制品、使用错误的模型语法等。但因 Rules 是
自然语言指令,而非程序化约束,故存在 AI 的遵守度会随着上下文的逐步复杂而下降的问题,这也是为什么需要后续的 Skills、Agents 和 Scripts 模块来逐步加固。
二. Rules 注入 Agent 的方式
Rules 以
.mdc文件形式存在于./cursor/rules/目录中,通过YAML frontmatter注册,由cursor IDE按 激活模式 决定何时注入 Agent 上下文。
1. Cursor IDE(AI 辅助编程工具(AI Coding Assistants))
- 什么是 Cursor IDE Cursor 是一款基于 VS Code 深度定制的 AI 原生代码编辑器,也就是我们经常听到的 Agent 助手 。它可以读取整个项目作为全局上下文,可以更精准定位问题并给出不会破坏现有架构的修改方案。
在使用Cursor IDE的过程中,不需要安装任何额外的插件,也不需要手动在代码中引入(import),只需要按照它约定的目录结构和文件格式去创建文件,Cursor 就会自动识别并生效。
2. 激活模式
因为大语言模型(LLM)的上下文窗口是有限的,如果每次对话都把项目中所有的规则文件全部塞给 AI,会导致"信息过载"甚至影响 AI 的判断。因此,Cursor 设计了不同的"激活模式",让系统像智能路由一样,根据当前场景按需加载规则。
三. 创建第一个 Rule
1. .mdc 文件结构
每个 Rule 文件由 YAML frontmatter + Markdown 正文组成 。frontmatter 是 cursor IDE 识别和注入 Rule的注册接口,不是装饰。
-
YAML frontmatter :
YAML Frontmatter (通常简称为 Frontmatter)是一种在纯文本文件(如 Markdown、HTML)的最顶部 嵌入结构化元数据(Metadata)的约定格式。
一句话理解:如果把 AI 当作一个员工,.mdc 文件就是写给他的"员工手册"或"操作规范"。而 YAML frontmatter 就是这本手册的"封面"或"标签"。
YAML Frontmatter编写格式:frontmatter 必须放在文件的第一行 ,并且用三根短横线
---包裹起来。里面通常使用 YAML 语法(键值对)来编写。-
一个典型的 .mdc 规则文件结构如下:
yaml--- # 这部分就是 YAML Frontmatter description: 设计规范 alwaysApply: true updatedAt: 2026-05-18T01:19:41.034Z --- # 这部分是正文内容(Markdown) # TATF 手机端测试完整规范 > **📌 每次写新用例前,必须按顺序执行:【速查表逐项打勾】→【五步检查法】→ 写业务逻辑(每调API必查证)→【自验证流程】** > **⚠️ 历史教训:logcat start/stop、if __name__ 入口、__init__ 是最高频遗漏项,速查表中已用 ⚠️ 标记!** > **🚨 致命教训:API 方法名禁止凭记忆/猜测编写,必须在 tatf_aw 实际库或 Skill API 参考中验证存在后再使用!(曾因 `get_bluetooth_state_adb` 等不存在的方法导致运行报错)**
-
2. 创建 Rule 约束
- 创建第一个约束,也可以直接拿别人的 Rule 文件放到自己项目的
./cursor/rules/目录下,Agent 助手会自己扫描并注入-
我这里直接和 Agent 对话,让它给我的项目中添加一个代码规范的约束规则

-
Agent 在
./cursor/rules/目录下生成对应的 Rule
-
Agent 生成 Rule 示例
yaml--- description: alwaysApply: true enabled: true updatedAt: 2026-06-11T09:20:20.348Z provider: --- # Python 项目编码规范 ## 项目概述 这是一个 **Python + pytest** 测试项目,包含: - `src/` --- 被测试的业务代码 - `tests/` --- pytest 测试用例 - `utils/` --- 工具脚本(API 调用、设备重启等) - `ai/` --- AI 相关模块(LangChain + 通义千问) - `data/` --- YAML 测试数据 - `conftest.py` --- 全局 fixture 配置 - `pytest.ini` --- pytest 配置 ## 一、命名规范(核心约束) ### 1.1 驼峰命名强制要求 **新增代码必须使用驼峰命名(camelCase)**,禁止使用下划线命名(snake_case)。 | 类型 | 规范 | 示例 | |------|------|------| | 变量名 | lowerCamelCase | `deviceSn`, `userName`, `resultList` | | 函数名 | lowerCamelCase | `getUserInfo()`, `connectDb()`, `loadMapping()` | | 方法名 | lowerCamelCase | `sendMail()`, `getTopActivity()` | | 类名 | UpperCamelCase (PascalCase) | `SimpleTongyiQA`, `TestWithYaml` | | 模块常量 | UPPER_CASE(允许全大写+下划线) | `MAP_FILE`, `DEFAULT_TIMEOUT` | | 私有方法/变量 | `_` 前缀 + lowerCamelCase | `_provideDebugSuggestions` | ### 1.2 文件名命名 - Python 文件:使用 **lowerCamelCase**,如 `replaceProjectName.py` - 测试文件:`test` 前缀 + camelCase,如 `testUserLogin.py` - 禁止:中文文件名、纯数字编号、无意义短名(如 `aaa.py`) ### 1.3 pytest 相关命名 - 测试文件:`test` + CamelCase 描述 - 测试类:`Test` 前缀 + PascalCase,如 `TestUserLogin` - 测试方法:`test` 前缀 + CamelCase 描述 - fixture 函数:lowerCamelCase - 自定义标记:lowerCamelCase -
校验 Rule 是否生效

- 结果满足预期

-