run_slash_command
实验性功能
run_slash_command 工具是一项实验性功能,必须在设置中明确启用。导航至设置 > 实验性设置,并启用“运行斜杠命令”以使用此工具。
run_slash_command 工具执行预定义的斜杠命令以检索特定指令或内容模板。这些命令充当常见任务的可重用指令集,提供 Roo 可解释和执行的详细指导。命令可在三个级别定义,并具有清晰的优先级层次结构:项目 > 全局 > 内置。
参数
该工具接受以下参数:
command(必需):要执行的斜杠命令名称(不带前导斜杠)args(可选):传递给命令的其他参数或上下文
功能说明
此工具检索并执行定义为命令目录中 markdown 文件的指令模板。它通过共享命令模板实现标准化工作流、可重用任务指令和团队范围内的一致性。该工具验证实验性标志状态,通过优先级层次结构解析命令,并返回 Roo 可解释的格式化指令。
使用场景
- 执行需要一致步骤的标准化工作流时
- 检索项目特定或团队范围的指令模板时
- 使用分析和文档初始化代码库时
- 将复杂的多步骤流程作为单个命令访问时
- 维护团队开发实践的一致性时
关键特性
- 三级命令系统:内置、全局 (~/.roo/commands/) 和项目特定 (.roo/commands/) 命令
- 优先级层次结构:项目命令覆盖全局命令,全局命令覆盖内置命令
- 基于 Markdown 的模板:简单的
.md文件,可选 YAML frontmatter 用于元数据 - 动态参数:传递上下文特定参数以自定义命令执行
- 自动发现:命令自动从其各自的目录中找到
- 安全执行:命令仅为需要用户批准的文本指令,而非可执行代码
- 元数据支持:可选 frontmatter 用于描述和参数提示
- 错误恢复:优雅处理,提供有用的错误消息和命令建议
- 无需注册:只需将
.md文件放置在命令目录中
要求
此工具需要明确启用:
- 打开 VS Code 设置
- 导航至实验性设置
- 启用“运行斜杠命令”
- 如有必要,重启 VS Code
限制
- 实验性状态:默认禁用该功能,需要选择启用
- 仅文本指令:命令提供指令,而非直接代码执行
- 需要批准:所有命令执行都需要用户批准
- 基于目录:命令必须位于特定目录位置
- 区分大小写:命令名称匹配区分大小写
- 单个命令:每次工具调用只能执行一个命令
工作原理
当调用 run_slash_command 工具时,它遵循以下流程:
-
实验性标志验证:
- 检查是否启用了
runSlashCommand实验 - 如果功能被禁用,返回描述性错误
- 提供启用功能的说明
- 检查是否启用了
-
参数处理:
- 验证必需的
command参数 - 捕获用于命令自定义的可选
args - 为缺失参数增加错误计数
- 验证必需的
-
命令解析:
- 首先搜索项目目录 (
.roo/commands/) - 回退到全局目录 (
~/.roo/commands/) - 最后检查内置命令
- 如果命令不存在,返回 undefined
- 首先搜索项目目录 (
-
命令加载:
- 读取命令的 markdown 文件
- 使用
gray-matter解析可选的 YAML frontmatter - 提取描述和参数提示(如果存在)
- 返回不带 frontmatter 的命令内容
-
响应格式化:
- 包括命令名称和源位置
- 添加描述和参数提示(如果可用)
- 显示提供的参数以提供上下文
- 返回完整命令内容以供解释
-
错误处理:
- 如果请求的命令未找到,列出可用命令
- 提供带有替代方案的有用错误消息
- 跟踪连续错误以识别错误模式
命令结构
文件格式
命令是放置在指定目录中的 markdown 文件:
---
description: 此命令功能的简要描述
argument-hint: 此命令接受的参数
---
# 命令内容
任务的详细说明写在这里。
这可以包括:
- 分步程序
- 代码模板
- 配置示例
- 最佳实践
命名约定
- 文件名成为命令名称
- 使用
.md扩展名 - 示例:
deploy.md创建/deploy命令 - 区分大小写匹配
目录位置
- 内置命令:硬编码在源代码中
- 全局命令:
~/.roo/commands/ - 项目命令:
<project-root>/.roo/commands/
内置命令
/init 命令
当前唯一的内置命令分析您的代码库并创建文档:
- 分析项目结构和架构
- 创建 AGENTS.md 文档文件
- 识别编码模式和约定
- 记录非显而易见的实现细节
- 提供对 AI 友好的项目上下文
创建自定义命令
分步指南
-
创建命令目录:
# 对于项目特定命令
mkdir -p .roo/commands
# 对于全局命令
mkdir -p ~/.roo/commands -
创建命令文件:
# 创建一个部署命令
touch .roo/commands/deploy.md -
添加命令内容:
---
description: 将应用程序部署到生产环境
argument-hint: 环境名称(staging、production)
---
## 部署流程
1. 运行测试套件以确保所有测试通过
2. 使用优化构建生产包
3. 为目标更新环境变量
4. 部署到指定环境
5. 运行部署后健康检查
6. 更新部署文档 -
使用命令: 命令立即可用,无需注册。
命令优先级系统
当存在多个同名命令时:
-
项目级别(最高优先级)
- 位于
.roo/commands/ - 允许项目特定覆盖
- 提交到版本控制以进行团队共享
- 位于
-
全局级别(中等优先级)
- 位于
~/.roo/commands/ - 跨所有项目共享
- 用户特定自定义
- 位于
-
内置级别(最低优先级)
- 硬编码在扩展中
- 提供默认功能
- 始终作为回退可用
使用示例
- 初始化新项目时,Roo 执行
/init以分析代码库结构并创建综合文档。 - 部署应用程序时,Roo 检索特定于项目基础设施的标准化部署指令。
- 实现功能时,Roo 通过自定义命令访问团队约定的模式和最佳实践。
- 设置开发环境时,Roo 一致地遵循项目特定的设置指令。
- 执行代码审查时,Roo 使用定义为命令的标准化审查清单。
使用示例
执行内置初始化命令:
<run_slash_command>
<command>init</command>
</run_slash_command>
使用带有参数的自定义部署命令:
<run_slash_command>
<command>deploy</command>
<args>production environment with zero-downtime strategy</args>
</run_slash_command>
执行带有特定焦点的测试命令:
<run_slash_command>
<command>test</command>
<args>focus on integration tests for authentication module</args>
</run_slash_command>
运行项目特定的构建命令:
<run_slash_command>
<command>build</command>
<args>optimized for production with source maps</args>
</run_slash_command>
访问团队编码标准:
<run_slash_command>
<command>standards</command>
<args>TypeScript and React best practices</args>
</run_slash_command>
最佳实践
命令设计
- 清晰的命名:使用描述性、面向操作的名称
- 全面的说明:包含所有必要步骤
- 参数灵活性:设计命令使其能够在有参数或无参数的情况下工作
- 元数据使用:始终包含描述和参数提示
- 版本控制:提交项目命令以确保团队一致性
组织策略
- 分类:使用前缀对相关命令进行分组(例如
test-unit、test-integration) - 文档:在命令目录中维护 README 文件
- 模板:为常见模式创建模板命令
- 覆盖:使用项目级命令自定义全局命令
- 维护:定期审查和更新命令内容
团队协作
- 标准化:在全局目录中定义团队范围的命令
- 项目特定:使用项目级自定义覆盖
- 文档:记录可用命令及其用法
- 审查流程:在代码审查中包含命令更改
- 培训:在团队成员之间共享命令知识
故障排除
常见问题
功能未启用:
- 错误:"Run slash command is an experimental feature that must be enabled in settings"
- 解决方案:在实验性设置中启用“运行斜杠命令”
命令未找到:
- 错误:"Command 'X' not found. Available commands: Y, Z"
- 解决方案:检查命令名称拼写和可用命令列表
缺少参数:
- 错误:在连续错误计数器中跟踪
- 解决方案:提供必需的
command参数
调试命令
- 验证文件位置:确保
.md文件位于正确的目录中 - 检查文件名:命令名称必须与不带扩展名的文件名匹配
- 验证 Frontmatter:确保 YAML frontmatter 格式正确
- 测试解析:尝试在不同级别使用相同的命令名称以测试优先级
- 审查内容:确保命令内容格式正确的 Markdown