Skip to main content

规则优先级系统

高效管理项目级别的 AI 指南。Caret 的规则优先级系统自动阻止多个规则文件的重复,节省令牌使用量,并通过明确的优先级防止设置冲突。

什么是规则系统?

在项目根目录放置规则文件,AI 会自动读取并遵循:

my-project/
├── .caretrules # Caret 专用规则(优先级 1)
├── .clinerules # Cline 兼容规则(优先级 2)
├── .cursorrules # Cursor 兼容规则(优先级 3)
└── src/

效果: AI 会自动遵循项目的编码风格、命名规则和架构模式。

Caret vs Cline vs Cursor

项目ClineCursorCaret
.clinerules✅ 支持❌ 不支持✅ 支持
.cursorrules❌ 不支持✅ 支持✅ 支持
.caretrules❌ 不支持❌ 不支持✅ 支持
优先级系统❌ 无❌ 无✅ 有
多文件合并❌ 无❌ 无✅ 支持

支持的文件格式

.caretrules(推荐)

Caret 专用规则文件,优先级最高:

# 项目规则

## 编码风格
- 使用 TypeScript strict 模式
- 仅使用函数式组件
- 使用 Tailwind CSS

## 命名规范
- 组件: PascalCase
- 函数: camelCase
- 常量: UPPER_SNAKE_CASE

## 禁止事项
- 禁止使用 class 组件
- 禁止使用 any 类型
- 禁止提交 console.log

.clinerules

从 Cline 迁移时兼容:

Use TypeScript for all files
Follow React Hooks best practices

.cursorrules

从 Cursor 迁移时兼容:

Always use arrow functions
Prefer const over let

优先级系统的核心:令牌节省

Caret 规则优先级系统与其他 AI 编码助手的最重要区别在于防止重复

问题:其他工具的重复加载

像 Cline 和 Cursor 这样的工具会同时加载 .clinerules.cursorrules.windsurfrules。这会导致以下问题:

令牌浪费: 即使三个文件内容相似,也会全部发送给 AI,每次请求都会消耗数千个不必要的令牌。

设置冲突: 当每个文件有不同规则时,不清楚哪个优先,导致 AI 混乱。

提示膨胀: 多个规则文件堆积会使提示过长,减少包含重要代码上下文的空间。

解决方案:Caret 的单一选择方式

即使有多个规则文件,Caret 也只会选择一个加载。它遵循以下明确的优先级:

1 优先级: .caretrules
2 优先级: .clinerules
3 优先级: .cursorrules
4 优先级: .windsurfrules

自动运行: 如果存在 .caretrules 文件,所有其他规则文件将自动禁用。如果没有 .caretrules,则查找 .clinerules,如果也没有,则查找 .cursorrules,以此类推。

实际运行示例:

项目文件夹:
├── .caretrules ← 只读取这个
├── .clinerules ← 自动禁用
└── .cursorrules ← 自动禁用

删除 .caretrules 后:
├── .clinerules ← 现在读取这个
└── .cursorrules ← 自动禁用

通过这种方式,可以将令牌使用量减少高达 70%,并从根本上防止设置冲突。

实际应用示例

示例 1: React 项目

# .caretrules

## 技术栈
- React 18 + TypeScript
- Vite 构建
- Tailwind CSS + shadcn/ui

## 组件编写规则
- 所有组件使用函数式编写
- Props 类型使用 interface 定义
- 文件名与组件名相同(PascalCase.tsx)

## 样式规则
- 优先使用 Tailwind 工具类
- 最小化自定义 CSS
- 必须支持暗色模式

## 状态管理
- 本地状态: useState
- 全局状态: Zustand
- 服务器状态: TanStack Query

## 禁止事项
- 禁止使用 styled-components
- 禁止使用 Redux
- 禁止使用 class 组件

示例 2: NestJS 后端

# .caretrules

## 架构
- Controller → Service → Repository 模式
- 必须使用 DTO
- 所有端点必须有 Swagger 文档

## 命名规范
- Controller: `*.controller.ts`
- Service: `*.service.ts`
- DTO: `*.dto.ts`
- Entity: `*.entity.ts`

## 错误处理
- 使用 HttpException
- 定义自定义错误类
- 记录所有错误

## 安全
- 必须使用 JWT 认证
- 应用速率限制
- 必须进行输入验证

示例 3: 多语言项目

# .caretrules

## 语言规则
- 代码: 英语
- 注释: 中文
- 提交信息: 中文
- 文档: 中文

## 代码示例
```typescript
// ✅ 正确示例
function calculateTotal(items: Item[]): number {
// 计算总金额
return items.reduce((sum, item) => sum + item.price, 0)
}

// ❌ 错误示例
function 合计计算(items: Item[]): number {
// Calculate total
return items.reduce((sum, item) => sum + item.price, 0)
}


## 规则激活确认

### 在设置中确认

1. 打开设置(⚙️)
2. **常规**选项卡 → **规则**部分
3. 确认"启用项目规则"

### 状态显示

聊天标题栏显示规则激活状态:

🎯 Caret | Agent 模式 | 📋 规则已激活


### 手动禁用

仅对特定任务忽略规则:

在提示中说明: "忽略规则并快速创建原型"


## 高级功能

### 条件规则

为不同目录应用不同规则:

```markdown
# .caretrules

## 基本规则
- TypeScript strict

## /admin 目录
- 必须进行额外安全验证
- 确认管理员权限

## /public 目录
- 简化代码
- 优先快速加载

团队规则

使用 .caretrules/ 目录细化:

.caretrules/
├── frontend.md # 前端团队规则
├── backend.md # 后端团队规则
└── common.md # 通用规则

外部规则参考

# .caretrules

## 风格指南
- 遵循 Airbnb JavaScript 风格指南
- 参考 Google TypeScript 风格指南

## 参考文档
- https://github.com/airbnb/javascript
- https://google.github.io/styleguide/tsguide.html

规则调试

当 AI 不遵循规则时

检查项:

  1. 文件名是否正确?(.caretrules 而不是 caretrules
  2. 是否位于项目根目录?
  3. 规则是否模糊不清?
  4. 是否有其他优先级更高的规则文件?

解决方法:

"请重新读取并应用项目规则"

确认规则优先级

"显示当前应用的规则"
→ AI 显示读取的规则文件和优先级

规则模板

React + TypeScript

# 项目规则

- TypeScript strict 模式
- 仅使用函数式组件
- 必须使用 Props interface
- 使用 Tailwind CSS
- 测试覆盖率 80% 以上

Node.js API

# 项目规则

- Express + TypeScript
- RESTful API 设计
- Joi 验证
- Winston 日志
- Jest 单元测试

全栈 Monorepo

# 项目规则

## 通用
- TypeScript
- ESLint + Prettier
- Conventional Commits

## /apps/web
- Next.js 14
- App Router
- Tailwind CSS

## /apps/api
- NestJS
- Prisma ORM
- PostgreSQL

迁移指南

Cline → Caret

保留现有 .clinerules 并添加 .caretrules

# 复制现有规则
cp .clinerules .caretrules

# 编辑 .caretrules 添加 Caret 功能

Cursor → Caret

.cursorrules 转换为 .caretrules

mv .cursorrules .caretrules
# 如需要调整格式

常见问题

Q: 规则文件大小限制? A: 建议 10KB 以下。太长可能导致 AI 无法记住所有内容。

Q: 修改规则后是否立即生效? A: 是的,从下一条消息开始立即应用。

Q: 多个规则文件内容冲突时? A: 按 .caretrules.clinerules.cursorrules 顺序应用优先级。

Q: 可以在规则中放敏感信息吗? A: 不行。规则文件会发送给 AI,请勿包含 API 密钥等敏感信息。

下一步


统一规则系统是 Caret 独有功能。 Cline 仅支持 .clinerules,Cursor 仅支持 .cursorrules