自定义模式
YouCode 允许您创建自定义模式,以根据特定任务或工作流调整 YouCode 的行为。自定义模式可以是全局(适用于所有项目)或项目特定(在单个项目中定义)。
为什么要使用自定义模式?
-
专业化: 创建针对特定任务优化的模式,例如“文档编写器”、“测试工程师”或“重构专家”
-
安全: 限制模式对敏感文件或命令的访问。例如,“审查模式”可以限制为只读操作
-
实验: 安全地尝试不同的提示和配置,而不会影响其他模式
-
团队协作: 与您的团队共享自定义模式以标准化工作流
YouCode 用于创建和管理自定义模式的界面。
自定义模式中包含什么?
自定义模式允许您定义:
- 唯一的名称和 slug: 便于识别
- 角色定义: 放置在系统提示的开头,这定义了 YouCode 在该模式下的核心专业知识和个性。此位置至关重要,因为它塑造了 YouCode 对任务的基本理解和方法
- 自定义指令: 放置在系统提示的末尾,这些指令提供了修改或完善 YouCode 行为的特定指南。与
.clinerules文件(仅在末尾添加规则)不同,这种角色和指令的结构化放置允许对 YouCode 的响应进行更细致的控制 - 允许的工具: 该模式可以使用的 YouCode 工具(例如,读取文件、写入文件、执行命令)
- 文件限制: (可选)将文件访问限制为特定文件类型或模式(例如,仅允许编辑
.md文件)
自定义模式配置(JSON 格式)
全局和项目特定配置都使用相同的 JSON 格式。每个配置文件都包含一个模式定义数组 customModes:
{
"customModes": [
{
"slug": "mode-name",
"name": "Mode Display Name",
"roleDefinition": "Mode's role and capabilities",
"groups": ["read", "edit"],
"customInstructions": "Additional guidelines"
}
]
}
必需属性
slug
- 模式的唯一标识符
- 使用小写字母、数字和连字符
- 保持简短和描述性
- 示例:
"docs-writer","test-engineer"
name
- 在 UI 中显示的名称
- 可以包含空格和正确的大小写
- 示例:
"Documentation Writer","Test Engineer"
roleDefinition
- 模式角色和功能的详细描述
- 定义 YouCode 在此模式下的专业知识和个性
- 示例:
"您是一位专注于清晰文档的技术作家"
groups
- 允许的工具组数组
- 可用组:
"read","edit","browser","command","mcp" - 可以包含文件限制 for the
"edit"group
文件限制格式
["edit", {
"fileRegex": "\\.md$",
"description": "Markdown files only"
}]
理解文件限制
fileRegex 属性使用正则表达式来控制模式可以编辑哪些文件:
\.md$- 匹配以 ".md" 结尾的文件\.(test|spec)\.(js|ts)$- 匹配测试文件 (例如, "component.test.js")\.(js|ts)$- 匹配 JavaScript 和 TypeScript 文件
常用正则表达式模式:
\.- 匹配文字点(a|b)- 匹配 "a" 或 "b"$- 匹配文件名的结尾
可选属性
customInstructions
- 模式的附加行为指南
- 示例:
"专注于解释概念和提供示例"
apiConfiguration
- 用于自定义此模式的 AI 模型和参数的可选设置
- 允许为特定任务优化模型选择
- 示例:
{"model": "gpt-4", "temperature": 0.2}
模式特定的自定义指令文件
除了 JSON 中的 customInstructions 属性外,您还可以使用专用文件来存储模式特定的指令:
- 在您的工作区根目录下创建一个名为
.clinerules-{mode-slug}的文件- 将
{mode-slug}替换为您的模式 slug (例如,.clinerules-docs-writer)
- 将
- 将您的自定义指令添加到此文件中
- YouCode 将自动将这些指令应用到指定的模式
这种方法特别适用于:
- 将冗长的指令与您的模式配置分开
- 通过版本控制管理指令
- 允许非技术团队成员在不编辑 JSON 的情况下修改指令
注意: 如果 .clinerules-{mode-slug} 文件和 customInstructions 属性都存在,它们将被合并,文件内容将追加在 JSON 属性之后。
配置优先级
模式配置按以下顺序应用:
- 项目级模式配置 (来自
.youcodemodes) - 全局模式配置 (来自
custom_modes.yaml) - 默认模式配置
这意味着项目特定的配置将覆盖全局配置,而全局配置又将覆盖默认配置。
创建自定义模式
您有三种选择来创建自定义模式:
1. 询问 YouCode! (推荐)
您可以通过询问 YouCode 来快速创建一个基本的自定义模式。例如:
创建一个名为 "Documentation Writer" 的新模式。它应该只能读取文件和写入 Markdown 文件。
YouCode 将引导您完成此过程。但是,对于微调模式或进行特定调整,您需要使用下面描述的提示标签或手动配置方法。
2. 使用提示标签
-
打开提示标签: 点击 YouCode 模式中的编辑选项
-
创建新模式: 点击模式标题右侧的 按钮
-
填写字段:
自定义模式创建界面,显示名称、slug、保存位置、角色定义、简短表述、使用场景和自定义指令的字段。
- 名称: 为模式输入一个显示名称
- 标识符: 输入一个小写标识符(仅限字母、数字和连字符)
- 保存位置: 选择全局(通过
custom_modes.yaml,在所有工作区中可用)或项目特定(通过项目根目录中的.youcodemodes文件) - 角色定义: 定义 YouCode 在此模式下的专业知识和个性(出现在系统提示的开头)
- 简短表述: 输入一个简短的描述,用于在 UI 中显示模式
- 使用场景: 描述模式使用场景
- 自定义指令: (可选) 添加特定于此模式的行为指南(出现在系统提示的末尾)
-
创建模式: 点击 "Create Mode" 按钮以保存您的新模式
注意:文件类型限制只能通过手动配置添加。
3. 手动配置
您可以通过提示标签编辑 JSON 文件来配置自定义模式:
全局和项目特定的配置都可以通过提示标签进行编辑:
- 打开提示标签: 点击 YouCode 模式中的编辑选项
- 访问设置菜单: 点击模式标题右侧的 按钮
- 选择配置:
- 选择 "Edit Global Modes" 以编辑
custom_modes.yaml(在所有工作区中可用) - 选择 "Edit Project Modes" 以编辑
.youcodemodes文件 (在项目根目录中)
- 选择 "Edit Global Modes" 以编辑
- 编辑配置: 修改打开的 JSON 文件
- 保存更改: YouCode 将自动检测更改
示例配置
每个示例都展示了模式配置的不同方面:
基本文档编写器
{
"customModes": [{
"slug": "docs-writer",
"name": "Documentation Writer",
"roleDefinition": "您是一位专注于清晰文档的技术作家",
"groups": [
"read",
["edit", { "fileRegex": "\\.md$", "description": "Markdown files only" }]
],
"customInstructions": "专注于清晰的解释和示例"
}]
}
带文件限制的测试工程师
{
"customModes": [{
"slug": "test-engineer",
"name": "测试工程师",
"roleDefinition": "您是一位专注于代码质量的测试工程师",
"groups": [
"read",
["edit", { "fileRegex": "\\.(test|spec)\\.(js|ts)$", "description": "Test files only" }]
]
}]
}
项目特定的模式覆盖
{
"customModes": [{
"slug": "code",
"name": "代码(项目特定)",
"roleDefinition": "您是一位具有项目特定约束的软件工程师",
"groups": [
"read",
["edit", { "fileRegex": "\\.(js|ts)$", "description": "JS/TS files only" }]
],
"customInstructions": "专注于项目特定的 JS/TS 开发"
}]
}
通过遵循这些说明,您可以创建和管理自定义模式以增强您与 YouCode 的工作流程。
理解自定义模式中的正则表达式
自定义模式中的正则表达式模式让您能够精确控制 YouCode 可以编辑的文件:
基本语法
当您在自定义模式中指定 fileRegex 时,您正在创建一个文件路径必须匹配的模式:
["edit", { "fileRegex": "\\.md$", "description": "Markdown files only" }]
重要规则
- 双反斜杠: 在 JSON 中,反斜杠必须用另一个反斜杠转义。所以
\.md$变成\.md$ - 路径匹配: 模式匹配完整的文件路径,而不仅仅是文件名
- 大小写敏感: 正则表达式模式默认是大小写敏感的
常见模式示例
| 模式 | 匹配 | 不匹配 |
|---|---|---|
\.md$ | readme.md, docs/guide.md | script.js, readme.md.bak |
^src/.* | src/app.js, src/components/button.tsx | lib/utils.js, test/src/mock.js |
\.(css|scss)$ | styles.css, theme.scss | styles.less, styles.css.map |
docs/.*\.md$ | docs/guide.md, docs/api/reference.md | guide.md, src/docs/notes.md |
^(?!.*(test|spec)).*\.js$ | app.js, utils.js | app.test.js, utils.spec.js |
模式构建块
\.- 匹配文字点(句号)$- 匹配字符串的结尾^- 匹配字符串的开头.*- 匹配任意字符(换行符除外)零次或多次(a|b)- 匹配 "a" 或 "b"(?!...)- 负向先行断言(排除匹配)
测试您的模式
在将正则表达式模式应用于自定义模式之前:
- 在示例文件路径上测试它,以确保它匹配您的预期
- 请记住,在 JSON 中,每个反斜杠都需要加倍(
\d变成\\d) - 从较简单的模式开始,逐步增加复杂性
让 YouCode 为您构建正则表达式模式
与其手动编写复杂的正则表达式模式,不如让 YouCode 为您创建!只需描述您想要包含或排除的文件:
创建一个匹配 JavaScript 文件但排除测试文件的正则表达式模式
YouCode 将生成适当的模式,并为 JSON 配置正确转义。