规则配置
MyDeskBot 提供强大的规则系统,支持多种配置方法来定义 AI 助手行为准则,确保生成的代码符合项目标准和团队规范。
规则配置方法
MyDeskBot 支持三种主要的规则配置方式:
1. 配置文件规则(config.yaml)
在项目根目录的 config.yaml 文件中直接定义规则。
2. 规则文件夹(.mydeskbot/rules/)
将 Markdown 格式的规则文件放在 .mydeskbot/rules/ 目录中。
3. 代码库规则文件(rules.md)
在代码库的任何位置放置 rules.md 文件。规则将自动应用于该目录及其子目录。
配置文件规则格式
字符串规则
直接描述需求的简单规则定义:
yaml
# config.yaml
name: 我的 MyDeskBot 配置
version: 0.0.1
schema: v1
rules:
- "始终包含类型注解"
- "遵循现有代码风格"
- "为复杂逻辑添加注释"对象规则
带有名称和描述的详细规则:
yaml
rules:
- name: "comment-complex"
rule: "为复杂逻辑添加注释"
description: "为超过 5 行的复杂函数添加注释"
- name: "test-coverage"
rule: "确保测试覆盖率不低于 80%"
globs: ["**/*.ts", "**/*.js"]Markdown 规则文件格式
基本 Markdown 规则
在 .mydeskbot/rules/ 目录或代码库的 rules.md 文件中:
markdown
---
name: "typescript-style"
globs: ["**/*.ts", "**/*.tsx"]
description: "TypeScript 编码标准"
---
# TypeScript 编码标准
所有 TypeScript 文件必须遵循这些标准:
1. 使用 2 个空格缩进
2. 所有函数参数必须包含类型注解
3. 优先使用 interface 而不是 type
4. 避免使用 any 类型高级 Markdown 规则
markdown
---
name: "component-rules"
globs: ["src/components/**/*.{js,jsx,ts,tsx}"]
regex: ["^[A-Z]"]
alwaysApply: true
invokable: false
---
# React 组件规则
React 组件必须遵循以下规范:
- 组件名称必须以大写字母开头
- 使用函数组件而不是类组件
- 每个组件文件应包含对应的样式文件规则字段说明
基本字段
- name:规则名称(推荐用于标识和引用)
- rule:Markdown 格式的规则内容
- description:规则描述(可选)
应用控制字段
- globs:文件匹配模式,字符串或数组格式
- regex:用于文件内容匹配的正则表达式模式
- alwaysApply:是否始终应用此规则(默认:false)
- invokable:是否允许用户手动触发此规则(默认:false)
- sourceFile:规则源文件路径(自动设置)
文件匹配模式
Glob 模式示例
yaml
# 匹配特定文件类型
globs: ["**/*.ts", "**/*.tsx"]
# 匹配特定目录
globs: ["src/components/**/*"]
# 排除特定文件
globs: ["**/*.ts", "!**/*.test.ts"]
# 多种模式组合
globs: ["src/**/*.{js,ts}", "!src/**/*.d.ts"]Regex 模式示例
yaml
# 匹配文件内容
regex: ["console\\.log", "TODO|FIXME"]
# 复杂正则表达式
regex: ["^\\s*function\\s+\\w+", "class\\s+\\w+.*extends"]规则目录结构
全局规则目录
.mydeskbot/
├── rules/
│ ├── global-style.md # 全局样式规则
│ ├── security.md # 安全规则
│ └── performance.md # 性能规则
└── prompts/
├── code-review.md # 代码审查提示
└── debugging.md # 调试提示代码库规则示例
src/
├── components/
│ ├── Button.tsx
│ └── rules.md # 组件特定规则
├── utils/
│ ├── helper.ts
│ └── rules.md # 工具函数规则
└── rules.md # src 目录规则规则示例
1. 配置文件规则
yaml
# config.yaml
name: 我的 MyDeskBot 配置
version: 0.0.1
schema: v1
models:
- name: "gpt-4"
provider: "openai"
model: "gpt-4"
apiKey: "${OPENAI_API_KEY}"
roles: ["chat"]
rules:
- "始终包含类型注解"
- "遵循现有代码风格"
- name: "typescript-strict"
rule: "TypeScript 代码必须使用严格模式"
globs: ["**/*.ts", "**/*.tsx"]
alwaysApply: true2. Markdown 规则文件
markdown
---
name: "react-components"
globs: ["src/components/**/*.{js,jsx,ts,tsx}"]
alwaysApply: true
invokable: false
---
# React 组件开发标准
所有 React 组件必须遵循以下规范:
## 组件结构
- 使用函数组件而不是类组件
- 组件名称必须以大写字母开头
- 使用默认导出
## 类型定义
- 所有 props 必须定义 TypeScript 接口
- 使用 React.FC 或显式返回类型
- 避免使用 any 类型
## 样式处理
- 优先使用 CSS Modules 或 styled-components
- 避免内联样式
- 考虑响应式设计3. 特定目录规则
markdown
---
name: "test-coverage"
globs: ["**/*.test.{js,ts}", "**/*.spec.{js,ts}"]
regex: ["test|it\\("]
---
# 测试文件规范
测试文件必须包含:
1. **描述性的测试名称**
2. **Arrange-Act-Assert 结构**
3. **边界情况测试**
4. **错误处理测试**
每个测试函数必须有清晰的断言,确保测试覆盖率不低于 80%。高级功能
可调用规则
带有 invokable: true 的规则可以在聊天中手动触发:
markdown
---
name: "code-review"
invokable: true
description: "全面的代码审查"
---
# 代码审查规则
请对提供的代码进行全面审查,检查:
1. **代码质量**:可读性、可维护性
2. **安全性**:潜在的安全漏洞
3. **性能**:性能优化建议
4. **测试**:测试覆盖率
5. **文档**:文档完整性
提供具体的改进建议和最佳实践。规则优先级
- 并置规则:与文件同目录的
rules.md - 全局 Markdown 规则:
.mydeskbot/rules/目录中的规则 - 配置文件规则:在
config.yaml中定义的规则
条件匹配规则
markdown
---
name: "production-safety"
globs: ["src/**/*.{js,ts}"]
regex: ["console\\.(log|warn|error)", "debugger"]
---
# 生产环境安全检查
以下内容不应出现在生产代码中:
- ❌ console.log(), console.warn(), console.error()
- ❌ debugger 语句
- ❌ 硬编码的 API 密钥
- ❌ 注释掉的调试代码
请使用适当的日志系统和环境变量管理。规则管理最佳实践
1. 规则组织
- 按功能模块组织规则文件
- 使用清晰的命名约定
- 定期审查和更新规则
2. 团队协作
markdown
---
name: "team-standards"
globs: ["**/*.{js,ts,jsx,tsx}"]
description: "团队编码标准"
---
# 团队编码标准
此规则定义了所有团队编码标准。请确保所有新代码符合这些规范。
## 命名约定
- 组件:PascalCase
- 变量/函数:camelCase
- 常量:UPPER_SNAKE_CASE
- 文件名:kebab-case
## 代码组织
- 按功能模块组织文件
- 保持文件大小合理(< 300 行)
- 使用 index.ts 导出公共接口3. 规则测试
- 使用示例代码验证规则有效性
- 定期审查规则的实际应用
- 根据团队反馈调整规则内容
故障排除
常见问题
规则未生效
- 检查文件路径和 glob 模式
- 验证 YAML frontmatter 格式
- 确认规则文件位置正确
规则冲突
- 规则按优先级应用,后规则可能覆盖先前的规则
- 使用
alwaysApply: true确保规则始终生效 - 检查 globs 和 regex 匹配逻辑
性能问题
- 避免过于复杂的 regex 模式
- 合理使用 globs 限制规则应用范围
- 定期清理不必要的规则文件