switch_mode
switch_mode
工具使 Kilo Code 能够在不同操作模式之间切换,每种模式都具有针对特定任务类型的专业能力。当当前任务需要不同的专业知识时,可以无缝切换到 Code、Architect、Ask 或 Debug 模式。
参数
该工具接受以下参数:
mode_slug
(必填):要切换到的模式标识符(例如 "code"、"ask"、"architect")reason
(可选):切换模式的原因,为用户提供上下文
功能
该工具在当当前任务更适合由其他模式处理时请求模式切换。它在切换过程中保持上下文,同时调整 Kilo Code 的焦点和可用工具集,以匹配新任务阶段的需求。
使用场景
- 从信息收集过渡到代码实现时
- 从编码切换到架构或设计时
- 当前任务需要仅在另一个模式中可用的功能时
- 复杂项目的特定阶段需要专业知识时
主要特性
- 在模式切换过程中保持上下文连续性
- 为模式切换提供清晰的推理
- 需要用户批准所有模式更改
- 强制执行特定模式的工具组限制
- 根据所选模式无缝调整工具可用性
- 适用于标准和自定义模式
- 在 UI 中显示模式切换和原因
- 使用 XML 格式指定参数
- 强制执行某些模式的文件类型限制
限制
- 无法切换到系统中不存在的模式
- 每次模式转换都需要用户明确批准
- 在切换完成前无法使用特定模式的工具
- 模式切换后应用 500ms 的延迟以确保更改生效
- 某些模式有文件类型限制(例如 Architect 模式只能编辑 markdown 文件)
- 模式保存仅适用于
new_task
功能,不适用于一般模式切换
工作原理
当调用 switch_mode
工具时,它会遵循以下流程:
-
请求验证:
- 验证请求的模式是否存在于系统中
- 检查是否提供了
mode_slug
参数且有效 - 确认用户尚未处于请求的模式
- 确保
reason
参数(如果提供)格式正确
-
模式切换准备:
- 将模式更改请求与提供的原因打包
- 向用户展示更改请求以获取批准
-
模式激活(用户批准后):
- 更新 UI 以反映新模式
- 根据模式的工具组配置调整可用工具
- 应用模式特定的提示和行为
- 应用 500ms 延迟以确保更改生效再执行下一个工具
- 强制执行模式特定的文件限制
-
继续执行:
- 使用新模式的功能继续任务
- 保留之前交互的相关上下文
工具组关联
switch_mode
工具属于 "modes" 工具组,但也包含在 "always available" 工具列表中。这意味着:
- 它可以在任何模式下使用,不受模式配置的工具组限制
- 它与
ask_followup_question
和attempt_completion
等核心工具一起可用 - 它允许在工作流的任何阶段进行模式切换,以适应任务需求的变化
模式结构
系统中的每个模式都有特定的结构:
slug
:模式的唯一标识符(例如 "code"、"ask")name
:模式的显示名称(例如 "Code"、"Ask")roleDefinition
:模式的专业角色和能力customInstructions
:可选的模式特定指令,用于指导行为groups
:模式可用的工具组,可设置限制
模式能力
核心模式提供以下专业能力:
- Code 模式:专注于编码任务,完全访问代码编辑工具
- Architect 模式:专用于系统设计和架构规划,仅限于编辑 markdown 文件
- Ask 模式:优化用于回答问题并提供信息
- Debug 模式:配备用于系统问题诊断和解决
自定义模式
除了核心模式外,系统还支持特定项目的自定义模式:
- 可以定义具有特定工具组启用的自定义模式
- 可以指定自定义角色定义和指令
- 系统会先检查自定义模式,然后再回退到核心模式
- 自定义模式定义优先于具有相同标识符的核心模式
文件限制
不同的模式可能有特定的文件类型限制:
- Architect 模式:只能编辑扩展名为
.md
的文件 - 尝试编辑受限制的文件类型会导致
FileRestrictionError
- 这些限制有助于在模式之间强制执行适当的关注点分离
使用示例
- 讨论新功能时,Kilo Code 从 Ask 模式切换到 Architect 模式以帮助设计系统结构。
- 在 Architect 模式中完成架构规划后,Kilo Code 切换到 Code 模式以实现设计的功能。
- 在开发过程中遇到错误时,Kilo Code 从 Code 模式切换到 Debug 模式进行系统问题排查。
使用示例
切换到 Code 模式进行实现:
<switch_mode>
<mode_slug>code</mode_slug>
<reason>需要基于我们讨论的架构实现登录功能</reason>
</switch_mode>
切换到 Architect 模式进行设计:
<switch_mode>
<mode_slug>architect</mode_slug>
<reason>需要在实现前设计系统架构</reason>
</switch_mode>
切换到 Debug 模式进行问题排查:
<switch_mode>
<mode_slug>debug</mode_slug>
<reason>需要系统诊断认证错误</reason>
</switch_mode>
切换到 Ask 模式获取信息:
<switch_mode>
<mode_slug>ask</mode_slug>
<reason>需要回答关于已实现功能的问题</reason>
</switch_mode>