attempt_completion
attempt_completion 工具用于标记 Roo 认为任务已完成,并向用户展示结果。它会提供已达成目标的摘要,可选择性地包含用于演示结果的命令,并支持通过用户反馈进行持续优化。
参数
该工具接受以下参数:
result(必需):总结已达成目标的最终结果描述command(可选):用于演示结果的 CLI 命令
功能说明
此工具通过展示已达成目标的最终摘要来标记任务结束。它向用户和系统发出当前任务已完成的信号。当提供命令时,还可以通过实时执行来演示结果。
使用时机
- 当 Roo 认为用户的任务已完成时
- 当需要总结所做的更改或改进时
- 当需要通过命令执行来演示当前结果时
- 当需要为用户提供解决方案的反馈检查点时
- 当从工作的一个阶段过渡到潜在优化阶段时
主要特性
- 明确标记 Roo 认为任务已完成
- 以简洁的消息总结已达成目标
- 可选择通过命令执行来演示结果
- 支持用户反馈以进行进一步优化
- 以特殊 UI 格式展示结果,与常规消息区分开来
- 捕获任务完成遥测数据用于系统分析
- 通过提供检查点来维持结构化的对话流程
- 支持大型工作流中的子任务完成
- 确保用户收到清晰的操作摘要
- 作为"始终可用"工具组的一部分,在所有模式下都可用
限制
- 不应在确认之前的工具使用成功之前使用(指导原则,非强制)
- 仅限于单个命令用于结果演示
- 无法提供多个命令选项
- 命令执行需要用户批准
- 仅限于演示可通过 CLI 命令展示的结果
- 不能用于部分任务完成或进度更新
- 结果格式化会通过内部处理移除 XML 闭合标签
工作原理
当调用 attempt_completion 工具时,它会遵循以下流程:
-
安全考虑(指导原则,非强制):
- AI 被指示确认之前的工具使用是否成功
- 这是最佳实践而非程序强制执行的机制
-
结果展示:
- 以特殊的"completion_result" UI 格式向用户显示完成消息
- 使用
removeClosingTag函数从结果文本中移除 XML 闭合标签 - 以不同于常规消息的方式展示结果,以便视觉区分
-
命令执行(如果提供):
- 在执行命令前请求用户批准
- 仅在用户批准时执行
- 使用系统的命令执行功能执行命令
- 向用户显示命令执行结果
-
反馈收集:
- 等待用户对完成结果的反馈
- 处理此反馈并将其返回给 AI
- 基于用户输入实现持续优化
-
任务完成与继续:
- 在系统中将任务标记为已完成
- 捕获已完成任务的遥测数据
- 对于子任务,提供完成子任务并恢复父任务的选项
- 通过反馈机制支持持续对话
-
实现集成:
- 工具结果通过
parse-assistant-message.ts中的系统解析机制进行解析 - 该工具是"ALWAYS_AVAILABLE_TOOLS"常量的一部分,使其在所有模式下都可用
- 工具结果通过
结果格式化指南
结果消息应遵循以下指南:
- 清晰传达已达成目标
- 简洁但完整
- 专注于为用户提供的价值
- 避免不必要的客套话或填充文本
- 保持专业、直接的语气
- 以易于浏览和理解的方式呈现信息
- 承认用户可能会提供进一步优化的反馈
注意:系统会通过 removeClosingTag 函数自动从结果文本中移除 XML 闭合标签。
命令选择指南
包含命令时,请遵循以下指南:
- 选择能够直观演示结果的命令
- 优先选择能够向用户展示创建或修改内容的命令
- 示例如下:
open index.html用于显示创建的网页npm start用于启动开发服务器python app.py用于运行创建的应用程序
- 避免仅打印文本的命令(如
echo或cat) - 记住命令执行需要用户批准
- 确保命令对用户的操作系统有效
反馈和 UI 表示
attempt_completion 工具具有独特的反馈机制:
- 结果以特殊的"completion_result" UI 格式显示,与常规消息区分开来
- 系统展示结果后会等待用户反馈
- 反馈被处理并返回给 Roo 以进行进一步优化
- 这创建了迭代改进循环,而不是结束对话
- UI 包含用于提供反馈的特殊元素
- 结果在对话流程中作为清晰的检查点
在子任务中使用时:
- 系统提供完成子任务并恢复父任务的选项
- 如果获得批准,子任务将以摘要形式完成
- 父任务将带着已完成子任务的上下文恢复
- 这使得复杂的嵌套工作流能够在保持上下文的同时进行
使用示例
- 创建网站时,Roo 展示解决方案并使用
open index.html显示结果。用户提供反馈,Roo 优化设计。 - 实现功能时,Roo 总结更改及其影响。用户请求额外的测试覆盖,Roo 继续任务。
- 修复 bug 时,Roo 解释修复内容和解决方案如何解决根本原因。用户确认修复有效。
- 设置开发环境时,Roo 确认所有组件已安装。用户请求额外配置,Roo 继续。
- 创建数据处理脚本时,Roo 总结功能。用户建议性能改进,Roo 优化代码。
使用示例
仅使用结果摘要完成任务:
<attempt_completion>
<result>
我已更新导航栏的 CSS 以匹配设计模型。更改包括:
1. 更新配色方案以使用新的品牌颜色
2. 为移动设备添加响应式行为
3. 修复下拉菜单中的对齐问题
</result>
</attempt_completion>
使用结果和演示命令完成任务:
<attempt_completion>
<result>
我创建了一个具有以下功能的简单 React 应用程序:
1. 具有请求的英雄部分的响应式登陆页面
2. 具有验证功能的工作联系表单
3. 在所有三个请求的页面之间导航
4. 匹配提供的设计模型的样式
</result>
<command>npm start</command>
</attempt_completion>
使用执行完成 Python 脚本任务:
<attempt_completion>
<result>
我创建了一个数据处理脚本,该脚本:
1. 从数据目录读取 CSV 文件
2. 按照要求清理和标准化数据
3. 以 JSON 格式生成汇总统计信息
4. 将处理后的数据输出到输出目录
</result>
<command>python process_data.py</command>
</attempt_completion>