Slash 命令
创建自定义 slash 命令,以自动化工作流并规范团队实践。
在 Bob Shell 中输入 / 可查看所有可用命令,或通过向 .bob/commands/ 或 ~/.bob/commands/ 目录添加 markdown 文件来创建自己的命令。
内置命令
Bob Shell 包含以下内置 slash 命令:
| 命令 | 别名 | 描述 |
|---|---|---|
/help | 显示所有可用 slash 命令 | |
/clear | 清空屏幕并重置对话历史 | |
/condense | 智能压缩上下文窗口以释放空间 | |
/copy | 将对话历史中的某一项复制到剪贴板 | |
/mode | 切换当前模式(打开选择器) | |
/resume | 浏览并恢复之前的对话 | |
/settings | 查看和编辑 Bob Shell 设置 | |
/mcp | 管理已配置的 MCP 服务器 | |
/manage-secrets | 管理 MCP 服务器配置中使用的密钥 | |
/skills | 将技能引用插入提示词 | |
/init | 在当前工作区初始化 Bob | |
/status | /info | 查看会话状态、用量和版本信息 |
/team | 选择团队 | |
/logs | 用系统查看器打开最新日志文件 | |
/docs | 在浏览器中打开 Bob Shell 文档 | |
/bug | 提交错误报告 | |
/exit | /quit、/close | 退出 CLI |
/manage-secrets 子命令
密钥允许您存储敏感值(例如 API key),并在 MCP 服务器配置中引用它们,而无需硬编码。
| 子命令 | 用法 | 描述 |
|---|---|---|
set | /manage-secrets set KEY VALUE | 存储密钥值 |
list | /manage-secrets list | 列出所有已存储的密钥名称 |
rm | /manage-secrets rm KEY | 删除已存储的密钥 |
密钥以加密形式存储在 ~/.bob/settings/ 中,可在 MCP 服务器配置中使用 ${KEY} 语法引用。
为什么使用 slash 命令?
Slash 命令具有以下几大优势:
- 工作流自动化:将复杂的多步骤流程转化为单个命令
- 团队规范化:在团队内共享命令,保持一致的实践
- 上下文保留:在每个命令中包含特定于项目的上下文
- 快速访问:支持模糊搜索和自动补全,即时发现命令
Slash 命令的工作原理
在 Bob Shell 中输入 / 时,会出现一个菜单,显示所有可用命令。这些命令来自两个来源:
| 命令类型 | 来源 | 用途 |
|---|---|---|
| 自定义工作流命令 | .bob/commands/ 或 ~/.bob/commands/ | 用户为特定任务创建的自动化命令 |
| 模式命令 | 内置和自定义模式 | 切换 Bob 的运行上下文 |
创建自定义命令
通过向特定目录添加 markdown 文件,可以扩展 Bob 的功能:
| 位置 | 作用范围 | 路径 |
|---|---|---|
| 项目专属 | 仅在当前项目中可用 | 工作区根目录中的 .bob/commands/ |
| 全局 | 在所有项目中可用 | 主目录中的 ~/.bob/commands/ |
文件名即命令名。例如:
.bob/commands/
├── review.md → /review
├── test-api.md → /test-api
└── deploy-check.md → /deploy-check命令名称处理
通过 UI 创建命令时,Bob Shell 会自动处理命令名称:
- 转换为小写
- 用短横线替换空格
- 删除特殊字符
- 删除首尾的短横线
示例:"My Cool Command!" 变为 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 | 显示在命令菜单中 | "Create a new API endpoint" |
argument-hint | 显示预期参数 | "<endpoint-name> <http-method>" |
工具批准对话框
当 Bob Shell 请求使用工具时,会显示批准对话框。该对话框提供以下选项:
| 选项 | 描述 |
|---|---|
| Approve Once | 允许此次特定工具调用继续执行。未来的调用仍会提示。 |
Approve <group> tools for task | 在任务剩余时间内允许同一工具组中的所有工具。MCP 工具不显示此选项。 |
| Always Allow Command for task | 在任务剩余时间内允许特定的 shell 命令。 |
| Reject | 拒绝工具调用。Bob Shell 不会执行该操作。 |
批准或拒绝工具调用时,您还可以添加可选备注。备注会包含在对话上下文中,以便 Bob Shell 相应调整其行为。
若要在 Bob Shell 完成前中断流式响应,请按 Esc。
在 Bob Shell 中管理命令
Bob Shell 支持与 Bob IDE 相同的 slash 命令。虽然 Bob Shell 没有专用的命令管理 UI,但您可以:
- 在项目中的
.bob/commands/目录或主目录的~/.bob/commands/中手动创建命令文件 - 使用任意文本编辑器编辑现有命令文件
使用 slash 命令
在 Bob Shell 中输入 / 可查看包含以下命令类型的统一菜单:
- 统一菜单:自定义命令和模式切换命令一起显示
- 自动补全:开始输入以过滤命令(例如
/sam显示sample-command-name) - 模糊搜索:即使只有部分匹配也能找到命令
- 描述预览:在菜单中查看命令描述
- 视觉指示器:模式命令通过特殊图标与自定义命令区分
/mode code Switch to Code mode
/mode ask Switch to Ask mode
/review Review code for security issues
/api-endpoint <endpoint-name> <http-method>参数提示
参数提示为 slash 命令提供即时帮助,当命令期望额外输入时,向您展示应提供哪种信息。
输入 / 调出命令菜单时,期望接受参数的命令旁边会显示浅灰色提示。该提示告知您命令期望的参数类型。
例如:
/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.
Include proper error handling and documentation.在命令菜单中将显示为 /api-endpoint <endpoint-name> <http-method>。
参数提示的最佳实践
- 具体明确:使用描述性占位符,如
<file-path>而非通用的<arg> - 显示多个参数:如果命令需要多个输入,全部显示:
<source> <destination> - 使用一致格式:始终将占位符用尖括号括起:
<placeholder> - 保持简洁:提示应简短且清晰
关于参数的常见问题
| 问题 | 回答 |
|---|---|
| 如果我不提供参数会怎样? | 命令可能无法按预期工作,或者可能提示您提供更多信息。提示的作用是帮助您第一次就输入正确。 |
| 所有命令都有提示吗? | 不是,只有设计为接受参数的命令才会有提示。无需额外输入即可工作的命令不会显示提示。 |
| 我可以不替换提示直接使用命令吗? | 提示文本(如 <mode_slug>)需要替换为实际值。保留提示文本可能导致命令失败或行为异常。 |
最佳实践
命令命名
- 使用描述性、动作导向的名称
- 保持名称简洁但清晰
- 多词命令使用短横线
- 避免使用
help或test等通用名称 - 注意:名称会自动被 slug 化(小写,删除特殊字符)
.md扩展名会根据需要自动添加/删除
命令内容
- 以清晰的指令开头
- 使用结构化格式(列表、章节)
- 包含具体要求
- 引用项目规范
- 使命令专注于单一任务
组织管理
- 将相关命令分组到子目录中
- 使用一致的命名模式
- 为复杂命令编写文档
- 对命令进行版本控制
- 在项目仓库中共享团队命令
故障排除
命令不显示
如果命令未出现在菜单中:
- 检查文件位置:确保自定义命令文件位于
.bob/commands/或~/.bob/commands/中 - 验证文件扩展名:自定义命令必须是
.md文件
找不到命令
当 slash 命令未找到时,LLM 将看到:
The slash command '/unknown-command' was not found. Please check the command name and try again.命令冲突
- 自定义项目命令会覆盖同名的全局自定义命令
- 使用唯一名称以避免冲突
- 通过 UI 创建重复名称时,会追加数字(例如
new-command-1、new-command-2)
关于模式命令
slash 菜单包含模式切换命令(如 /mode code、/mode ask),这些命令从根本上改变 AI 的运行模式——不只是注入文本,而是切换整个 AI 上下文。您创建的自定义模式也会作为 slash 命令出现(例如,slug 为 reviewer 的模式变为 /reviewer)。这些模式命令不能被自定义工作流命令覆盖。
跨平台兼容性
Slash 命令在 Bob Shell 和 Bob IDE 中的工作方式完全相同。这意味着:
- 在一个环境中创建的命令可以在另一个环境中使用
- 相同的命令语法和行为适用于两个环境
- 无论团队成员使用哪个界面,团队共享命令都能一致运行