Skip to Content
三. 配置与定制13 · Notepads 记事本

13 · Notepads 记事本

持久化的可引用上下文——把那些你反复告诉 AI 的”背景知识”写成记事本,一 @ 即用。


01 什么是 Notepads

Notepads(记事本) 是 Cursor 在 0.45 版本引入的持久化上下文功能。用一句话概括:

Notepad 就像一张”超级便利贴”——你写一次,存起来,之后在任何对话、任何 Composer、任何 Inline Edit 里都能通过 @NotepadName 随时引用。

在 Notepads 出现之前,你在 Cursor 里给 AI 提供上下文的方式只有两种:

  1. 在聊天窗口里重新描述——每次对话都要重复一遍项目背景、代码规范、架构约定
  2. 打开相关文件让 AI 看——但文件写了太多无关细节,AI 容易”迷失在代码里”

Notepads 解决了这两个痛点。你可以把最核心的背景信息写成一个独立的笔记,然后在任何 AI 交互中通过 @ 符号引用它。

它们是”活的”

Notepad 不是普通的 Markdown 文件。当你在 Chat、Composer 或 Inline Edit 中用 @NotepadName 引用它时,AI 看到的不是文件名——它会完整读入 Notepad 的全部内容。这意味着你写的每一条约定、每一个约束、每一段背景说明,都会像代码本身一样成为 AI 的”决策依据”。


02 创建你的第一个 Notepad

操作路径极其简单:

方式一:从 Notepads 面板创建

  1. 在左侧活动栏找到 Notepads 图标(一个📋样式的图标)→ 点击
  2. 面板顶部点击 “New Notepad”(新建记事本)
  3. 输入标题(比如 frontend-conventions
  4. 在编辑器区域写入内容
  5. Cmd+S 保存

方式二:从命令面板创建

  1. Cmd+Shift+P 打开命令面板
  2. 输入 Notepad: Create New Notepad
  3. 输入标题和内容

方式三:从已有文本快速创建

选中一段代码或文字 → 右键 → “Send to Notepad”(发送到记事本)→ 输入标题 → 保存。这个操作会把选中内容直接变成一个新的 Notepad,省去复制粘贴的步骤。

一个实际的例子

假设你创建了一个名为 api-patterns 的 Notepad,内容如下:

# API 设计约定 ## 端点命名 - 全部使用 RESTful 风格:/resources/{id} - 复数名词:/users, /orders, /products - 版本号在 URL 中:/v1/users/{id} ## 响应格式 所有响应使用统一包装: ```json { "code": 200, "message": "success", "data": { ... }, "meta": { "page": 1, "pageSize": 20, "total": 100 } }

错误处理

  • 业务错误返回 200 + code 非零
  • 系统错误使用 HTTP 状态码
  • 错误信息中英文双语

认证

  • 所有非公开接口使用 Bearer Token
  • Token 从 Authorization 头获取
  • 内部服务间调用使用 Service Account Token
之后在 Chat 或 Composer 中输入 `@api-patterns`,AI 就会**精确理解这套 API 约束**,生成的代码自然遵循这些约定。 --- ## 03 Notepads 面板详解 Notepads 面板位于左侧活动栏,和文件浏览器、搜索、Git 同级。打开后你会发现几个关键区域: ### 列表区 显示所有已创建的 Notepad,按**最近修改时间**排序。每个条目显示: - 名称(标题) - 摘要(第一行内容预览) - 更新时间 ### 筛选与搜索 面板顶部有搜索框——你可以输入名称或关键词快速定位 Notepad。当你的 Notepad 数量多起来之后(10+ 个),这个搜索功能就变得非常实用。 ### 分组管理 Cursor 允许你给 Notepad 添加**标签**或**前缀命名**来实现逻辑分组。比如: | 分组 | 命名惯例 | 示例 | |------|---------|------| | 项目文档 | `doc-` 前缀 | `doc-prd`, `doc-api-design` | | 编码约定 | `rule-` 前缀 | `rule-typescript`, `rule-test` | | 架构笔记 | `arch-` 前缀 | `arch-db-schema`, `arch-auth-flow` | | 团队规范 | `team-` 前缀 | `team-review-checklist`, `team-git-workflow` | 虽然没有官方的"文件夹"功能,但用前缀命名 + 搜索框的组合,已经足够管理几十个 Notepad。 ### 编辑区 点击列表中的任意 Notepad,会在主编辑区打开它的内容——就像编辑一个普通文件。支持完整的 Markdown 语法,也**支持代码块**。 > **注意**:Notepad 和项目文件是不同的概念。Notepad 存储在 Cursor 的内部状态中(跨项目、跨会话持久),而文件是存储在磁盘上的项目代码。这意味着你换一个项目打开,Notepads 依然在。 --- ## 04 如何引用:@NotepadName 精讲 引用 Notepad 的方式和你引用文件、符号、代码库完全一致——在输入框中输入 `@` 后接 Notepad 名称。 ### 基础引用 ```md @api-patterns 请帮我按现有的 API 规范新建一个用户接口

AI 会在执行前读入 api-patterns 的全部内容,然后根据其中的约束生成代码。

模糊匹配

你不必输入完整的 Notepad 名称——Cursor 支持模糊搜索。输入 @api 会列出所有名称中包含 “api” 的 Notepad,你可以用方向键选择。

在哪些入口可用

AI 入口是否支持 @Notepad备注
Chat(Cmd+L)支持最常用的引用场景
Composer / Agent(Cmd+I)支持复杂任务时引用约束
Inline Edit(Cmd+K)暂不支持单文件内的小修改一般不需要
Tab 补全不支持属于被动触发,无输入框

实际对话示例

没有 Notepad 的 Chat:

用户:帮我写一个用户列表接口。 AI:(没有上下文)好的,我创建一个 Express 路由...

有 Notepad 的 Chat:

用户:@api-patterns 帮我写一个获取用户列表的接口。 AI:(读取 api-patterns 后)好的,按照你们的 API 规范: - 端点:GET /v1/users - 响应:统一包装格式 - 认证:需要 Bearer Token - 分页参数:page 和 pageSize

质量差距是巨大的。没有上下文时,AI 只能按照通用最佳实践来写——但这很可能和你的项目风格不匹配。有了 Notepad,AI 知道你要什么风格


05 最佳场景:什么时候该写 Notepad

Notepads 最有价值的地方在于那些反复出现、但粒度不足以写成文件的信息。以下是六个最推荐的场景。

1. PRD / 产品需求文档

把当前迭代的 PRD 要点写成 Notepad,开发时随时引用,AI 不会跑偏:

# sprint-24-prd ## 功能:用户通知中心 - 用户能在右上角看到未读通知数量(小红点) - 点击展开通知列表,最多显示 20 条 - 通知分三类:系统通知、评论回复、状态变更 - 点击通知跳转到对应页面 - 全部标记已读按钮 ## 非功能需求 - 通知实时性:30 秒内推送到前端 - 未读数存在 Redis,不查数据库 - 通知列表分页,每页 10 条 ## 排期 - 后端 API:本周三前 - 前端 UI:本周五前 - 联调测试:下周一

2. 架构决策记录(ADR)

团队做了一个重要的架构决策——写下来,每次开发相关功能时引用:

# arch-auth-flow ## 决策 采用 JWT + Refresh Token 双令牌方案 ## 理由 1. 无状态认证,方便水平扩展 2. Refresh Token 实现"7 天免登录",改善用户体验 3. Access Token 15 分钟过期,降低泄露风险 ## 关键约束 - Access Token 不存数据库 - Refresh Token 存入 Redis,设置 7 天 TTL - 刷新接口 /v1/auth/refresh 不做速率限制(但是要做 Token 轮换) - 退出登录时删除 Redis 中的 Refresh Token ## 相关文件 - src/middleware/auth.ts - src/services/auth.service.ts - src/utils/jwt.ts

3. 编码约定

你的团队有自己的 TypeScript 风格、React 最佳实践、CSS 命名规范?写进 Notepad:

# rule-typescript ## 类型 - 优先使用 interface 而不是 type(对外 API 用 interface) - 引入的第三方库类型用 import type - 避免 any,用 unknown 代替 - 泛型参数用 T 开头:TItem, TResponse ## React - 函数组件 + Hooks,不用类组件 - Props 接口命名为 ComponentNameProps - Context + useReducer 管理全局状态,不用 Redux - 自定义 Hook 用 use 前缀:useAuth, usePagination ## CSS - Tailwind CSS 优先 - 复杂样式用 CSS Module - 颜色变量从 tailwind.config.ts 中读取 - 响应式断点:sm(640) md(768) lg(1024) xl(1280)

4. 数据库表结构

当你的数据库有几十张表,AI 需要知道表结构和关系才能生成正确的查询:

# arch-db-schema ## 核心表 ### users | 字段 | 类型 | 约束 | 说明 | |------|------|------|------| | id | UUID | PK | | | email | VARCHAR(255) | UNIQUE NOT NULL | | | name | VARCHAR(100) | NOT NULL | | | role | ENUM('admin','user') | NOT NULL DEFAULT 'user' | | | created_at | TIMESTAMP | NOT NULL DEFAULT NOW() | | | updated_at | TIMESTAMP | NOT NULL | | ### orders | 字段 | 类型 | 约束 | 说明 | |------|------|------|------| | id | UUID | PK | | | user_id | UUID | FK -> users.id | | | status | ENUM(...) | NOT NULL | pending/paid/shipped/delivered/cancelled | | total | DECIMAL(10,2) | NOT NULL | | | created_at | TIMESTAMP | NOT NULL DEFAULT NOW() | | ### 关系 - users 1:N orders - orders 1:N order_items - order_items N:1 products

5. 测试策略

团队有特定的测试约定?写下来,AI 生成的测试用例自动符合:

# rule-test ## 单元测试(Vitest) - 测试文件放在 __tests__/ 目录下 - 命名:*.test.ts - 每个测试用 describe + it 结构 - Mock 外部依赖,不 mock 内部函数 ## 组件测试(Testing Library) - 优先测试用户行为,不测试实现细节 - 使用 screen.getByRole / findByRole 定位元素 - 避免 data-testid(除非万不得已) ## 覆盖率要求 - 行覆盖率 >= 80% - 分支覆盖率 >= 70% - 核心逻辑(认证、支付)要求 100%

6. 第三方 API 接入文档

对接过的第三方 API 记下来,下次引用:

# doc-stripe-api ## 支付流程 1. 前端调用 POST /v1/payments/create-intent 2. 后端调用 stripe.paymentIntents.create() 创建 3. 返回 client_secret 给前端 4. 前端用 Stripe Elements 完成 3DS 认证 5. stripe webhook 通知 payment_intent.succeeded 6. 后端收到 webhook 后更新订单状态 ## Webhook 验证 - 需要验证 stripe-signature 头 - 使用 stripe.webhooks.constructEvent() - 本地测试用 stripe listen --forward-to localhost:3000/api/webhooks/stripe

06 心智模型

理解 Notepads 的最佳方式是和两种你已经熟悉的概念做类比:

类比一:VSCode 片段(Snippets)

Snippets 让你把经常写的代码片段存起来一键插入。Notepads 可以理解为”思维层面的 Snippets”——你把经常给 AI 的背景信息存起来,一 @ 引用。

SnippetsNotepads
存储什么代码片段背景知识、规则、文档
如何使用键名触发、插入代码@名称触发、供给 AI
用户感知代码直接出现在编辑区AI 理解内容,你看到结果

类比二:备忘录 / 便利贴

Notepad 就像你在显示器上贴的便利贴——上面写着最重要的编码约定、当前迭代的需求要点、数据库表名——只不过这些便利贴是AI 也能看到的

心智模型

Notepad 是你和 AI 之间的”共享记忆”。你写一次,AI 永远记得——只要你在每次对话开始的时候 @ 它一下。

具体来说:

  • 不是 .cursorrules —— .cursorrules 是全局的、总是生效的;Notepad 是按需引入的,你可以有多个 Notepad,在需要的时候才 @
  • 不是文件 —— 文件是项目代码的一部分,有其格式和位置;Notepad 是独立的知识片段,跨项目存在
  • 不是对话历史 —— 对话历史会随着新对话消失;Notepad 永久保存,随时可用

正确的使用姿势

一次性的背景说明 → 在 Chat 里直接打字告诉 AI 重复使用的背景知识 → 写成 Notepad,每次 @ 引用 全局生效的规则 → 写进 .cursorrules 只在当前对话有用的上下文 → 直接在对话中描述

07 Notepads vs Rules vs .cursorrules

这是新手最容易混淆的三件事。Clear 一下三者的区别:

维度NotepadsRules.cursorrules
作用范围按需引用项目级 + 技术栈自动匹配项目级
何时生效你在输入框里 @ 它时自动加入每个 AI 请求自动加入每个 AI 请求
用户控制完全主动Cursor 自动匹配完全主动
数量不限最多 10 条1 个文件
存储位置Cursor 内部状态(跨项目)Cursor 设置项目根目录
支持组织标签 + 名称搜索列表排序单个文件
典型内容PRD、架构决策、API 文档技术栈、框架、语言偏好项目特定的代码规则
适合谁所有开发者项目初期配置团队共享规则

什么时候用哪个

  1. .cursorrules —— 你的项目所有开发者都应该遵守的规则,比如”不要使用 lodash”、“优先使用 React Server Components”。它被提交到 Git,团队成员共享。

  2. Rules —— 技术栈和框架层面的配置,比如”这是一个 Python 项目,使用 FastAPI 框架,数据库是 PostgreSQL”。Cursor 自动匹配这些规则到你的项目。

  3. Notepads —— 你个人在开发中反复依赖的背景知识,比如当前迭代的 PRD、你刚刚研究的某个 API 的使用方式、你们团队的编码约定。它是私有的,不提交到 Git。

一个协作场景的例子

你在一个多人项目中工作:

项目 .cursorrules ├─ "使用 TypeScript 严格模式" ├─ "禁止使用 any 类型" ├─ "测试覆盖率必须 >= 80%" └─ "优先使用 named export" 个人 Notepads ├─ arch-auth-flow(你负责的认证模块设计文档) ├─ rule-test-strategy(你偏好的测试写法) └─ sprint-25-prd(当前迭代的需求要点)

当你开发新功能时:

  • .cursorrules 自动告诉 AI 项目的基本规则
  • 你的 Notepad 主动告诉 AI 当前迭代的需求和你负责的模块设计
  • 两者各司其职,互不冲突

08 进阶技巧

技巧一:Notepad 套 Notepad

在 Chat 或 Composer 中,你可以同时引用多个 Notepad:

@arch-auth-flow @api-patterns @sprint-25-prd 请帮我实现用户注册功能,遵循所有已有的设计约束

AI 会同时读入三个 Notepad 的内容,综合理解项目背景、API 规范和当前的 PRD 需求。这相当于你一次性给 AI “灌输”了整套项目上下文。

技巧二:Notepad + @file + @codebase 组合

Notepad 提供背景知识,@file 提供具体文件内容,@codebase 提供全局搜索:

@arch-auth-flow 我现在在编辑 @src/middleware/auth.ts, 请帮我检查这个中间件是否和我们既定的认证架构一致。 如果有不一致的地方,请搜索整个代码库 @codebase, 找出所有受影响的地方并给出修改方案。

技巧三:版本化你的 Notepad

Notepad 本身不维护版本历史,但你可以手动管理版本:

# arch-decision-v2 ## 更新历史 - v1 (2025-10-01): 初始版本,决定使用 PostgreSQL - v2 (2025-12-15): 增加读写分离方案,引入 PgBouncer 连接池 ## 当前方案 ...

技巧四:模板化你的开发流程

创建一组”启动 Notepad”,每个新功能开发前快速引用:

启动 Notepad内容
kickoff-general团队通用的开发流程、代码 review 清单
kickoff-frontend前端需要的上下文(组件库、CSS 方案、路由约定)
kickoff-backend后端需要的上下文(ORM、中间件、测试配置)

每天开始新功能时,@kickoff-general @kickoff-backend 开始开发新功能...,AI 直接进入状态。


09 局限和注意事项

Notepads 虽然强大,但也有一些需要注意的地方:

不提交到 Git

Notepads 存储在 Cursor 的内部状态中——这意味着它们不会出现在 Git 历史里,也不会被你的队友看到。这是设计使然(Notepad 是个人工具),但如果你的目标是让整个团队共享上下文,你应该使用 .cursorrules 或项目文档文件。

不随项目迁移

因为存储在 Cursor 内部状态中,你换了另一台电脑登录相同的 Cursor 账号——Notepads 不会自动同步(在目前的版本中)。如果你经常在不同设备间切换,建议在项目中维护一份 .cursor/rules.md 作为备份。

内容长度有上限

虽然没有官方文档写死上限,但实践中建议每个 Notepad 控制在 500 行以内。太长的 Notepad 会和 AI 的上下文窗口”抢空间”——如果你的 Notepad 写了 2000 行,AI 能用来处理你代码的空间就少了。

不是 .cursorrules 的替代品

再次强调:Notepads 是主动引用的,而 .cursorrules总是生效的。如果你希望某个规则每次 AI 执行都自动遵守(比如”不要删除已有代码”、“注释必须写中文”),应该把它放在 .cursorrules 中,而不是 Notepad。


10 小结

关键问题答案
Notepads 是什么Cursor 中的”超级便利贴”——持久化、可引用的背景知识
怎么创建Notepads 面板 → New Notepad,或命令面板创建
怎么引用在 Chat/Composer 中输入 @NotepadName
和 .cursorrules 的区别Notepad 按需引用,.cursorrules 始终生效
和 Rules 的区别Notepad 偏个人,Rules 偏技术栈自动匹配
最适合存什么PRD、架构决策、编码约定、API 文档、数据库表结构
不适合存什么太长的大段文档、需要团队共享的规则(用 .cursorrules)

一句话记住 Notepads 的价值

你不是重复告诉 AI 你的”项目是怎么回事”了。写一次,@ 一下,它就懂了。


下一篇:14 Composer 深度解析 —— Composer/Agent 模式的全方位指南,掌握 Cursor 最强 AI 能力的正确打开方式。