跳转到主要内容

自定义模式

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 属性外,您还可以使用专用文件来存储模式特定的指令:

  1. 在您的工作区根目录下创建一个名为 .clinerules-{mode-slug} 的文件
    • {mode-slug} 替换为您的模式 slug (例如, .clinerules-docs-writer)
  2. 将您的自定义指令添加到此文件中
  3. YouCode 将自动将这些指令应用到指定的模式

这种方法特别适用于:

  • 将冗长的指令与您的模式配置分开
  • 通过版本控制管理指令
  • 允许非技术团队成员在不编辑 JSON 的情况下修改指令

注意: 如果 .clinerules-{mode-slug} 文件和 customInstructions 属性都存在,它们将被合并,文件内容将追加在 JSON 属性之后。

配置优先级

模式配置按以下顺序应用:

  1. 项目级模式配置 (来自 .youcodemodes)
  2. 全局模式配置 (来自 custom_modes.yaml)
  3. 默认模式配置

这意味着项目特定的配置将覆盖全局配置,而全局配置又将覆盖默认配置。

创建自定义模式

您有三种选择来创建自定义模式:

1. 询问 YouCode! (推荐)

您可以通过询问 YouCode 来快速创建一个基本的自定义模式。例如:

创建一个名为 "Documentation Writer" 的新模式。它应该只能读取文件和写入 Markdown 文件。

YouCode 将引导您完成此过程。但是,对于微调模式或进行特定调整,您需要使用下面描述的提示标签或手动配置方法。

2. 使用提示标签

  1. 打开提示标签: 点击 YouCode 模式中的编辑选项

  2. 创建新模式: 点击模式标题右侧的 按钮

  3. 填写字段:

    提示标签中的自定义模式创建界面

    自定义模式创建界面,显示名称、slug、保存位置、角色定义、简短表述、使用场景和自定义指令的字段。

    • 名称: 为模式输入一个显示名称
    • 标识符: 输入一个小写标识符(仅限字母、数字和连字符)
    • 保存位置: 选择全局(通过 custom_modes.yaml,在所有工作区中可用)或项目特定(通过项目根目录中的 .youcodemodes 文件)
    • 角色定义: 定义 YouCode 在此模式下的专业知识和个性(出现在系统提示的开头)
    • 简短表述: 输入一个简短的描述,用于在 UI 中显示模式
    • 使用场景: 描述模式使用场景
    • 自定义指令: (可选) 添加特定于此模式的行为指南(出现在系统提示的末尾)
  4. 创建模式: 点击 "Create Mode" 按钮以保存您的新模式

注意:文件类型限制只能通过手动配置添加。

3. 手动配置

您可以通过提示标签编辑 JSON 文件来配置自定义模式:

全局和项目特定的配置都可以通过提示标签进行编辑:

  1. 打开提示标签: 点击 YouCode 模式中的编辑选项
  2. 访问设置菜单: 点击模式标题右侧的 按钮
  3. 选择配置:
    • 选择 "Edit Global Modes" 以编辑 custom_modes.yaml (在所有工作区中可用)
    • 选择 "Edit Project Modes" 以编辑 .youcodemodes 文件 (在项目根目录中)
  4. 编辑配置: 修改打开的 JSON 文件
  5. 保存更改: 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.mdscript.js, readme.md.bak
^src/.*src/app.js, src/components/button.tsxlib/utils.js, test/src/mock.js
\.(css|scss)$styles.css, theme.scssstyles.less, styles.css.map
docs/.*\.md$docs/guide.md, docs/api/reference.mdguide.md, src/docs/notes.md
^(?!.*(test|spec)).*\.js$app.js, utils.jsapp.test.js, utils.spec.js

模式构建块

  • \. - 匹配文字点(句号)
  • $ - 匹配字符串的结尾
  • ^ - 匹配字符串的开头
  • .* - 匹配任意字符(换行符除外)零次或多次
  • (a|b) - 匹配 "a" 或 "b"
  • (?!...) - 负向先行断言(排除匹配)

测试您的模式

在将正则表达式模式应用于自定义模式之前:

  1. 在示例文件路径上测试它,以确保它匹配您的预期
  2. 请记住,在 JSON 中,每个反斜杠都需要加倍(\d 变成 \\d
  3. 从较简单的模式开始,逐步增加复杂性
提示

让 YouCode 为您构建正则表达式模式

与其手动编写复杂的正则表达式模式,不如让 YouCode 为您创建!只需描述您想要包含或排除的文件:

创建一个匹配 JavaScript 文件但排除测试文件的正则表达式模式

YouCode 将生成适当的模式,并为 JSON 配置正确转义。