配置

自定义模式

通过创建具有专门角色、工具限制和团队工作流的自定义模式来调整 Bob 的行为。你可以使用 YAML 格式进行全局配置或按项目配置。

为什么使用自定义模式

  • 专业化:针对文档编写、测试工程或安全审查等特定任务优化模式
  • 安全性:限制敏感操作的命令或文件访问
  • 团队协作:在团队中共享标准化工作流程
  • 实验:测试不同的配置而不影响其他模式

模式组件

组件描述
Slug内部使用的唯一标识符,用于特定于模式的指令文件
名称Bob 界面中显示的显示名称
角色定义定义 Bob 个性和行为的核心身份和专业知识
何时使用(可选)何时使用此模式的指导,由编排器用于任务协调
可用工具模式可以使用的工具组和文件访问权限
自定义指令(可选)其他行为指南或规则
描述(可选)模式选择器中显示的简短摘要
允许的子代理(可选)限制模式可以使用的子代理预设

如何创建自定义模式

您可以使用设置菜单或手动编辑配置文件来创建自定义模式。

使用设置菜单

  1. 单击 Bob 面板中的 图标以打开设置。
  2. 选择模式选项卡。
  3. 单击 按钮创建新模式。
  4. 填写名称Slug保存位置角色定义何时使用(可选)描述(可选)可用工具自定义指令字段。
  5. 单击保存

Bob 以 YAML 格式保存新模式。您可以通过手动 YAML 配置为 edit 工具组添加文件类型限制。

手动编辑配置文件

您可以手动编辑 YAML 格式的模式配置文件:

  • 全局模式:通过设置 → 模式 → 编辑全局模式编辑 ~/.bob/settings/custom_modes.yaml
  • 项目模式:编辑项目中的 .bob/custom_modes.yaml。单击设置 → 模式 → 编辑项目模式

这些文件以 YAML 格式定义了一个自定义模式数组。

示例~/.bob/settings/custom_modes.yaml.bob/custom_modes.yaml):

customModes:
  - slug: docs-writer
    name: 📝 文档编写器
    description: 编写和修订 Markdown 文档。
    roleDefinition: 您是一位专门从事清晰文档的技术作家。
    whenToUse: 使用此模式编写和编辑文档。
    customInstructions: 专注于文档的清晰性和完整性。
    groups:
      - read
      - - edit
        - fileRegex: ".*\\.(md|mdx)$"
          description: 仅 Markdown 文件
      - skill

模式配置属性

可用工具组

  • read:读取文件和目录
  • edit:修改文件(可以使用 fileRegex 限制)
  • execute:执行终端命令
  • mcp:访问 MCP 服务器
  • skill:加载技能
  • workflow:启动预定义工作流
  • todo:更新任务待办事项列表
  • subtask:创建子任务
  • subagent:生成子代理
  • mode:切换到另一个模式

编辑工具的文件限制

使用 YAML 格式的 fileRegex 限制模式可以编辑哪些文件:

groups:
  - read
  - - edit
    - fileRegex: ".*\\.(js|ts)$"
      description: 仅 JavaScript 和 TypeScript 文件

常见正则表达式模式

模式匹配示例文件
.*\.md$Markdown 文件readme.mddocs/guide.md
^src/.*src 目录中的文件src/app.jssrc/components/button.tsx
`.*.(cssscss)$`CSS 和 SCSS 文件
`^(?!.*(testspec)).*.(jsts)$`
提示:

让 Bob 为你生成正则表达式模式,而不是手动编写。

重要的验证规则

  • slug 必须仅使用字母、数字和连字符。
  • 保持每个 slug 唯一。重复的 slug 可能会阻止模式正确加载。
  • 仅使用支持的组名称。未知的组名称不授予访问权限。
  • 如果省略 groups,模式将不会获得任何分组工具。
  • 如果设置 allowedSubagents,则该模式中仅列出的子代理预设可用。
  • 无效的 fileRegex 值可能会阻止模式文件加载。

添加特定于模式的指令

您可以使用目录结构(首选)或单个文件添加特定于模式的指令。

首选方法(目录结构):

01-style-guide.md
02-formatting.txt

替代方法(单个文件):

.bobrules-{mode-slug}

如果两者都存在,目录方法优先。目录中的文件按字母顺序加载,并与模式配置中的 customInstructions 属性组合。

要添加特定于模式的指令:

  1. 在项目根目录中创建一个 .bob/rules-{mode-slug}/ 目录(或一个 .bobrules-{mode-slug} 文件)。
  2. 将指令文件添加到目录(例如,01-style-guide.md02-formatting.txt)。

当您使用该模式时,Bob 会自动加载这些指令。

如何覆盖默认模式

您可以通过在项目配置中创建具有相同 slug 的自定义模式来覆盖默认 Bob 模式(例如 Agent、Ask 或 Plan)。

要覆盖默认模式:

  1. 单击 Bob 面板中的 图标以打开设置。
  2. 选择模式选项卡。
  3. 单击编辑项目模式以编辑 .bob/custom_modes.yaml 文件。
  4. 使用要覆盖的默认模式的 slug 添加模式配置:
customModes:
  - slug: ask  # 匹配默认 Ask 模式
    name: ❓ Ask
    roleDefinition: 你是这个 React 和 TypeScript 代码库的知识渊博的助手。
    whenToUse: 使用此模式询问有关代码库的问题。
    customInstructions: 回答时始终引用相关文件。如果用户尝试进行更改,建议使用 Ask 模式。
    groups:
      - read
      - mcp
      - skill

特定于项目的覆盖优先于全局覆盖,全局覆盖优先于默认值。

YAML 格式

YAML 是自定义模式的首选和推荐格式:

YAML 优势:

  • 基于缩进的结构更易读
  • 支持注释(#
  • 更简洁的多行字符串语法
  • 所需标点符号更少
  • 更易于编辑和维护

自动迁移:

  • 全局模式:启动时自动从旧版 custom_modes.json 迁移到 custom_modes.yaml
  • 项目模式:通过 UI 编辑时转换为 YAML

虽然旧版 JSON 格式文件仍然支持向后兼容,但所有新模式都应以 YAML 格式创建。

了解更多

动手试试,并通过创建自定义 product manager 模式来扩展 Bob 的能力

这个主题怎么样?