斜杠命令
创建自定义斜杠命令来自动化重复任务、运行内置命令,并通过简单的 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→/reviewtest-api.md→/test-apideploy-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 面板中的命令图标打开命令管理器。
创建新命令
- 在输入字段中输入命令名称(例如,"示例命令名称")
- 点击 + 按钮创建命令
- 新文件将自动创建并打开(例如,
示例命令名称.md)
使用斜杠命令
在聊天中输入 / 查看包含两种命令类型的统一菜单。菜单在同一界面中同时显示自定义工作流命令和模式切换命令。
- 统一菜单:自定义命令和模式切换命令一起显示
- 自动完成:开始输入以过滤命令(例如,
/示例显示示例命令名称) - 模糊搜索:即使部分匹配也能找到命令
- 描述预览:在菜单中查看命令描述
- 视觉指示器:模式命令通过特殊图标与自定义命令区分
参数提示
参数提示为斜杠命令提供即时帮助,当命令需要额外输入时,显示你需要提供什么类型的信息。
当你输入 / 打开命令菜单时,需要参数的命令旁边会显示浅灰色提示。此提示告诉你命令期望什么类型的参数。
例如:
/mode <mode_slug>– 提示<mode_slug>表示你应该提供像code或debug这样的模式名称/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>)需要替换为实际值。保留提示文本很可能导致命令失败或行为异常。
最佳实践
命令命名
- 使用描述性、面向行动的名称
- 保持名称简洁但清晰
- 多词命令使用连字符
- 避免使用
help或test等通用名称 - 注意:名称会自动 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-1、new-command-2)
关于模式命令
斜杠菜单包含模式切换命令(如 /code、/ask),这些命令从根本上改变 AI 的操作模式——它们不只是注入文本,而是切换整个 AI 上下文。你创建的自定义模式也会作为斜杠命令出现(例如,slug 为 reviewer 的模式变为 /reviewer)。这些模式命令不能被自定义工作流命令覆盖。