功能

斜杠命令

创建自定义斜杠命令来自动化重复任务、运行内置命令,并通过简单的 markdown 文件扩展 Bob 的功能。

概述

首先,在聊天中输入 / 查看所有可用命令,或通过向 .bob/commands/~/.bob/commands/ 添加 markdown 文件来创建自己的命令。

主要优势:

  • 工作流自动化:将复杂的多步骤流程转化为单个命令
  • 团队标准化:与团队共享命令以保持一致的实践
  • 上下文保留:在每个命令中包含项目特定的上下文
  • 快速访问:通过模糊搜索和自动完成实现即时命令发现

内置命令

Bob 包含几个提供核心功能的内置命令:

/init

使用 Bob 初始化新项目或 workspace。此命令帮助设置在项目中使用 Bob 所需的配置和结构。

/review

通过全面分析审查代码更改。此命令可以多种方式使用:

  • /review – 审查工作目录中本地未提交的更改
  • /review <branch> – 将分支与当前分支(HEAD)进行比较
  • /review #<issue-number> --issue-coverage – 根据 GitHub issue 验证本地更改
  • /review <issue-url> --issue-coverage – 根据 GitHub issue URL 验证本地更改

review 命令执行彻底的代码分析,包括 bug 检测、安全检查、性能问题和样式一致性。

/create-pr

创建带有 AI 生成描述的拉取请求。此命令分析你的更改并根据分支之间的 diff 生成全面的 PR 描述。

创建自定义命令

自定义命令通过向特定目录添加 markdown 文件来扩展 Bob 的功能:

  • 项目特定:workspace 根目录中的 .bob/commands/
  • 全局:主目录中的 ~/.bob/commands/

文件名成为命令名称。例如:

  • review.md/review
  • test-api.md/test-api
  • deploy-check.md/deploy-check

命令名称处理

通过 UI 创建命令时,命令名称会自动处理:

  • 转换为小写
  • 空格替换为连字符
  • 删除特殊字符
  • 删除前导/尾随连字符

示例:"我的酷命令!"变为 我的酷命令(拉丁字符的情况下为 my-cool-command

基本命令格式

通过添加 markdown 文件创建简单命令:

Help me review this code for security issues and suggest improvements.

带 frontmatter 的高级命令

使用 frontmatter 添加元数据以增强功能:

---
description: Create a new API endpoint
argument-hint: <endpoint-name> <http-method>
---
Create a new API endpoint called $1 that handles $2 requests.
Include proper error handling and documentation.

frontmatter 字段

  • description:显示在命令菜单中,帮助用户了解命令的目的
  • argument-hint:在使用命令时提供关于预期参数的提示

命令管理界面

Bob 提供专用界面来管理自定义命令。

点击 Bob 面板中的命令图标打开命令管理器。

创建新命令

  1. 在输入字段中输入命令名称(例如,"示例命令名称")
  2. 点击 + 按钮创建命令
  3. 新文件将自动创建并打开(例如,示例命令名称.md

使用斜杠命令

在聊天中输入 / 查看包含两种命令类型的统一菜单。菜单在同一界面中同时显示自定义工作流命令和模式切换命令。

  1. 统一菜单:自定义命令和模式切换命令一起显示
  2. 自动完成:开始输入以过滤命令(例如,/示例 显示 示例命令名称
  3. 模糊搜索:即使部分匹配也能找到命令
  4. 描述预览:在菜单中查看命令描述
  5. 视觉指示器:模式命令通过特殊图标与自定义命令区分

参数提示

参数提示为斜杠命令提供即时帮助,当命令需要额外输入时,显示你需要提供什么类型的信息。

当你输入 / 打开命令菜单时,需要参数的命令旁边会显示浅灰色提示。此提示告诉你命令期望什么类型的参数。

例如:

  • /mode <mode_slug> – 提示 <mode_slug> 表示你应该提供像 codedebug 这样的模式名称
  • /api-endpoint <endpoint-name> <http-method> – 显示你需要提供端点名称和 HTTP 方法

选择命令后,它将插入到聊天输入中,后跟一个空格。提示不会被插入;它只是一个视觉指南,帮助你知道接下来要输入什么。你必须在命令后手动输入参数。

向自定义命令添加参数提示

你可以使用 frontmatter 中的 argument-hint 字段向自定义命令添加参数提示:

---
description: Create a new API endpoint
argument-hint: <endpoint-name> <http-method>
---
Create a new API endpoint called $1 that handles $2 requests.

这将在命令菜单中显示为 /api-endpoint <endpoint-name> <http-method>

参数提示的最佳实践

  • 具体明确:使用描述性占位符如 <file-path> 而不是通用的 <arg>
  • 显示多个参数:如果命令需要多个输入,全部显示:<source> <destination>
  • 使用一致格式:始终用尖括号包裹占位符:<占位符>
  • 保持简洁:提示应该简短清晰

常见问题

  • "如果不提供参数会怎样?"命令可能无法正常工作,或者可能会提示你提供更多信息。提示的目的是帮助你第一次就做对。
  • "所有命令都有提示吗?"不,只有设计为接受参数的命令才会有提示。不需要额外输入的命令不会显示提示。
  • "我可以不替换提示直接使用命令吗?"提示文本(如 <mode_slug>)需要替换为实际值。保留提示文本很可能导致命令失败或行为异常。

最佳实践

命令命名

  • 使用描述性、面向行动的名称
  • 保持名称简洁但清晰
  • 多词命令使用连字符
  • 避免使用 helptest 等通用名称
  • 注意:名称会自动 slug 化(小写,删除特殊字符)
  • .md 扩展名根据需要自动添加/删除

命令内容

  • 以明确的指令开始
  • 使用结构化格式(列表、章节)
  • 包含具体要求
  • 引用项目约定
  • 保持命令专注于单一任务

组织

  • 在子目录中对相关命令分组
  • 使用一致的命名模式
  • 记录复杂命令
  • 对命令进行版本控制
  • 在项目仓库中共享团队命令

故障排除

命令未显示

  • 检查文件位置:确保自定义命令文件在 .bob/commands/~/.bob/commands/
  • 验证文件扩展名:自定义命令必须是 .md 文件

命令未找到

当找不到斜杠命令时,LLM 将看到:

The slash command '/unknown-command' was not found. Please check the command name and try again.

命令冲突

  • 自定义项目命令会覆盖同名的全局自定义命令
  • 使用唯一名称以避免冲突
  • 通过 UI 创建重复名称时,会附加数字(例如,new-command-1new-command-2

关于模式命令

斜杠菜单包含模式切换命令(如 /code/ask),这些命令从根本上改变 AI 的操作模式——它们不只是注入文本,而是切换整个 AI 上下文。你创建的自定义模式也会作为斜杠命令出现(例如,slug 为 reviewer 的模式变为 /reviewer)。这些模式命令不能被自定义工作流命令覆盖。

模式自定义模式中了解更多。

这个主题怎么样?