功能

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,但您可以:

  1. 在项目中的 .bob/commands/ 目录或主目录的 ~/.bob/commands/ 中手动创建命令文件
  2. 使用任意文本编辑器编辑现有命令文件

使用 slash 命令

在 Bob Shell 中输入 / 可查看包含以下命令类型的统一菜单:

  1. 统一菜单:自定义命令和模式切换命令一起显示
  2. 自动补全:开始输入以过滤命令(例如 /sam 显示 sample-command-name
  3. 模糊搜索:即使只有部分匹配也能找到命令
  4. 描述预览:在菜单中查看命令描述
  5. 视觉指示器:模式命令通过特殊图标与自定义命令区分
/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> 表示您需要提供模式名称,如 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.
Include proper error handling and documentation.

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

参数提示的最佳实践

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

关于参数的常见问题

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

最佳实践

命令命名

  • 使用描述性、动作导向的名称
  • 保持名称简洁但清晰
  • 多词命令使用短横线
  • 避免使用 helptest 等通用名称
  • 注意:名称会自动被 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-1new-command-2

关于模式命令

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

跨平台兼容性

Slash 命令在 Bob Shell 和 Bob IDE 中的工作方式完全相同。这意味着:

  • 在一个环境中创建的命令可以在另一个环境中使用
  • 相同的命令语法和行为适用于两个环境
  • 无论团队成员使用哪个界面,团队共享命令都能一致运行
这个主题怎么样?