# 固化 · 用 Rules 和 AGENTS.md 钉住偏好 · Cursor · 一台元工具

**作者** Aklman · **章节** 06 / 11 · **首发** 2026.07 · **语言** 中文为主, 中英双语
**原文** https://library.aklman.com/books/cursor/06-rules
**全书 markdown** https://library.aklman.com/books/cursor/llms.md
**上一章** https://library.aklman.com/books/cursor/05-context/llms.md
**下一章** https://library.aklman.com/books/cursor/07-mcp/llms.md

> 本章来自 Aklman · Library, 完整免费阅读。允许 AI 摘读、引用、问答; 转载请保留作者署名与原文链接 (CC BY-NC-ND 4.0, https://library.aklman.com/license)。

---

> 同一句要求你跟它说了十遍：用这个库、按这个风格、别碰那个目录。模型不跨会话记事，但你可以把这些钉进文件。Rules（.cursor/rules 里的 .mdc）和 AGENTS.md 就是项目的长期记忆 —— 每次开工自动加载。这一章讲什么该写进去、什么不该，四种触发怎么选，以及固化的落点如何从 Rules 扩到 skills、subagents、hooks 与 Customize 面板。

同一句要求你跟它说了十遍：用这个库、按这个风格、别碰那个目录。模型不跨会话记事，但你可以把这些钉进文件。Rules（.cursor/rules 里的 .mdc）和 AGENTS.md 就是项目的长期记忆 —— 每次开工自动加载，不用你再交代一遍。

这件事在非代码项目里同样成立：一个写作或调研文件夹里放一份 AGENTS.md，写清口吻、引用格式、文件命名，agent 的产出就按你的规矩来。这一章讲什么该钉、用哪种触发钉、以及为什么钉多了反而没用。

### I · Rules 是项目的长期记忆

说十遍不如钉一遍。

三层各管一摊：Project Rules 放在 .cursor/rules 下、是 .mdc 文件、随仓库走、团队共享；User Rules 是你的全局个人偏好（口吻、习惯）；Team Rules 从 dashboard 下发、是组织标准、优先级最高。[^1]它们都在 prompt 层提供持久上下文，每次开工自动注入 —— 这就是你不用每次重新交代「这个项目用 pnpm 不用 npm」的原因。

一个容易踩的点：User Rules 不作用于 Cmd+K 的行内编辑，只对 Agent 生效。所以你那条「永远用中文注释」写成 User Rule，Cmd+K 不一定听 —— 想让它在所有地方生效，写进项目里。

---

### II · 四种触发，别全设成 always

rule 设得越多、always 设得越多，它越读不过来。

每条 rule 的触发由 frontmatter 决定，四种：`alwaysApply: true`（每次都加进上下文，且会让同一条里的 globs / description 失效）、`description`（让 agent 按描述智能判断相不相关）、`globs`（按文件路径，如 `src/components/**/*.tsx`）、手动（只在 @ 提到时进）。[^1]判断很简单：一条 rule 只挑一种触发 —— 全局铁律才 always，其余按需或按文件。下面是一条按文件触发的项目 rule：

| 要保存什么 | 放哪里 | 原因 |
|---|---|---|
| 跨工具、跨 agent 的项目说明 | AGENTS.md | 简单 markdown，Cursor / Codex / Claude 都容易读 |
| Cursor Agent 的自动触发规范 | .cursor/rules/*.mdc | 支持 globs、description、alwaysApply |
| 给人看的背景、架构、安装说明 | README.md / docs | 不是每次 agent 都该注入全文 |
| 只对这一次任务成立的限制 | Prompt | 不要写进长期规则污染未来任务 |

_.cursor/rules/components.mdc —— 只在改组件文件时注入_
```text

```md
---
description: React 组件约定
globs: src/components/**/*.tsx
alwaysApply: false
---

- 组件用函数式 + hooks，不用 class。
- 样式走 Tailwind，不写内联 style。
- 每个组件配一个同名 .test.tsx。
```

```

把所有 rule 都设成 always，等于把整本规范每次全塞进上下文 —— 又占额度，又稀释重点，它反而抓不住真正要紧的那几条。always 留给「永远成立」的三五条，其它交给触发条件。

---

### III · AGENTS.md：简单到该先写

复杂的 .mdc 之前，先写一份 AGENTS.md —— 一份纯 markdown，门槛最低。

AGENTS.md 就是项目里一份简单的 markdown，写明 agent 该守的规矩；它可以按子目录嵌套，子目录里的就近覆盖父级。[^2]什么时候上 .mdc：你需要按文件 glob、或按描述智能触发，而不是「永远生效」时。多数项目，一份根目录的 AGENTS.md 加一两条按文件的 .mdc，就够了。

_AGENTS.md 起手式 —— 放项目根目录，agent 每次开工先读_
```text

```md
# Project Agent Guide

## Scope
- This repository is <what this project is>.
- Before editing, read <canonical docs / architecture file>.

## Commands
- Install: pnpm install
- Test: pnpm test
- Lint: pnpm lint
- Typecheck: pnpm typecheck

## Style
- Follow existing patterns before introducing abstractions.
- Keep changes scoped to the requested files and nearby tests.
- Prefer small diffs and explain trade-offs.

## Safety
- Do not read .env* or private keys.
- Do not run destructive shell commands without explicit approval.
- Do not push, deploy, or change production resources.

## Done Means
- Relevant tests pass.
- Diff is explained.
- Risks and follow-ups are listed.
```

```

#### 坏规则

 写高质量代码，注意性能，风格要好，尽量不要出 bug。

#### 好规则

 修改 `src/api/**` 时必须新增或更新同路径 `*.test.ts`；如果不加测试，解释具体原因。不要改 `lib/db.ts` 的连接生命周期。

诚实的边界：rules 会腐烂。项目变了、约定改了，旧 rule 还在误导 agent —— 它比没有 rule 更糟，因为你信它。定期删一条过期的，比一直加新的更重要。钉得太多又没人读，等于没钉。

---

### IV · 固化的落点，从「说法」扩到「做法」

Rule 钉的是「怎么说」；现在可钉的还有「怎么做、谁去做、什么绝不许做」。

2026 年年中起，Cursor 把可固化的东西扩成了一族原语，并给了它们一个统一的家：Customize 页（3.9 起）把 plugins、skills、MCPs、subagents、rules、commands、hooks 收进一个面板，按 user / team / workspace 三层管理，还能从 Marketplace 一键装、看团队排行榜。[^3]别被名词吓到 —— 它们都是同一件事的延伸：把你不想重复交代的东西写成文件。区别只在钉的是什么：

- **Skill —— 钉一类活怎么做**: 一个装着 SKILL.md 的文件夹，可带脚本和模板，按需加载、/ 一下调用。[^4]你反复贴的那段长 prompt ——「按这个步骤出报告」「照这套规范迁移」—— 升格成 skill，流程本身成了资产。

- **Subagent —— 钉谁去做**: 给一类活配一个专职角色：自己的 prompt、工具、模型，独立上下文、可并行。[^5]内置的 Explore / Bash / Browser 就是三个官配 —— 把搜代码、跑命令、开浏览器这些吵闹的中间过程隔离在主会话之外。

- **Hook —— 钉铁律**: hooks.json 里的脚本挂在 agent loop 的节点上，能观察、拦截、改写：改完自动跑 formatter、扫密钥、把危险写入挡在闸前。[^6]rule 是请求，模型可能没听；hook 是强制，代码替你把门。

- **Command —— 钉常用的那句话**: 一个 markdown 文件、/ 调用，装一段复用 prompt。[^3]比 skill 轻，够用就别升级。

升级路径还是老的：先一份 AGENTS.md；同一句话说了十遍，写成 rule；同一套带脚本的流程重复到第三遍，升成 skill；同一类活需要固定角色、要并行跑，配 subagent；只有「每次都必须、违反就出事」的硬约束，才值得上 hook。Customize 和 Marketplace 解决的是「放哪儿、怎么装」，不替你回答「该不该钉」—— 上一节那条纪律原样适用：钉得越多，读得越少。

> 让 agent 自己起草：做完一个任务后，让它把刚才反复纠正它的那几点固化下来 —— 内置的 /create-rule、/create-skill、/create-subagent 就是干这个的，它起草、你审一遍再留下。比你凭空想「该写哪些规矩」更准 —— 它知道自己在哪儿踩了坑。

- 这条规则是否可执行、可检查，而不是愿望？

- 它是否只说一件事？如果有三件，拆三条。

- 它是否有正确触发方式，而不是无脑 alwaysApply？

- 它是否引用现有文件，而不是复制一大段会过期的内容？

- 它是否含密钥、个人偏好、临时任务限制？这些不该提交。

把你最常重复的那句话钉下来：

- **找出你跟 Cursor 重复最多的一条要求**:
 可能是某个库、某种风格、某个别碰的目录，或某种写作口吻。

- **写成一条 rule 或一行 AGENTS.md，选对触发**:
 全局就 always / User Rule，按文件就 globs，偶尔才用就 description 或手动。

- **跑一个任务验证它被遵守，再删一条过期的**:
 确认你没再重复那句话；顺手清掉一条已经不成立的旧 rule。

> 说十遍不如钉一遍，
> 钉多了又没人读

## 引用与参考

01 · Cursor Docs · Rules —— 模型不跨会话记忆；Rules 在 prompt 层提供持久、可复用的上下文。Project Rules 放 .cursor/rules 下的 .mdc（随仓库版本化），User Rules 全局，Team Rules 走 dashboard、优先级最高。触发由 frontmatter 控制：alwaysApply / description（智能判断）/ globs（按文件）/ 手动 @。截至 2026-07-10。  (Cursor Docs · Rules)
02 · Cursor Docs · Rules / AGENTS.md —— AGENTS.md 是放在项目里的一份简单 markdown，定义 agent 指令，支持项目根目录与子目录；是相对 .mdc 更轻量的写法。注意：User Rules 不作用于 Inline Edit（Cmd/Ctrl+K），只对 Agent 生效。截至 2026-07-10。  (Cursor Docs · AGENTS.md)
03 · Cursor Docs · Customize Cursor —— Customize 页（3.9，2026-06-22 起）把 plugins、skills、MCPs、subagents、rules、commands、hooks 收进一个面板，按 user / team / workspace 三层管理；可从 Cursor Marketplace 一键安装，并有团队最常用插件的排行榜。截至 2026-07-10。  (Cursor Docs · Customize)
04 · Cursor Docs · Agent Skills —— skill 是一个装着 SKILL.md 的文件夹（可带脚本、模板、参考资料），从 .cursor/skills / .agents/skills（项目级）与 ~/.cursor/skills 等（用户级）自动发现，兼容 .claude/skills / .codex/skills；agent 按相关性自动选用，也可用 / 手动调用；内置 /automate、/babysit、/review、/create-rule、/create-skill、/create-subagent 等。截至 2026-07-10。  (Cursor Docs · Skills)
05 · Cursor Docs · Subagents —— subagent 是可委派的专职 agent：独立上下文窗口、可并行、可前台或后台跑，能配自己的 prompt、工具与模型；内置 Explore / Bash / Browser 三个；自定义放 .cursor/agents/（兼容 .claude/agents / .codex/agents）；编辑器、CLI、Cloud Agents 里都能用。截至 2026-07-10。  (Cursor Docs · Subagents)
06 · Cursor Docs · Hooks —— 在 hooks.json（项目或用户级，也可随插件装）里定义脚本，挂在 agent loop 的节点上，可观察、拦截、改写行为：改完跑 formatter、扫 PII / 密钥、把危险操作（如 SQL 写入）挡在闸前；cloud agents 也会执行仓库里 command 型的 hooks。截至 2026-07-10。  (Cursor Docs · Hooks)

---

*固化 · 用 Rules 和 AGENTS.md 钉住偏好 · Cursor · 一台元工具 · Aklman 著 · CC BY-NC-ND 4.0 · https://library.aklman.com/books/cursor/06-rules*
