Skip to main content

attempt_completion

attempt_completion工具用于标记Roo认为任务已完成并向用户展示结果。它提供已完成工作的摘要,可选包含演示结果的命令,并通过用户反馈支持持续改进。


参数

工具接受以下参数:

  • result (必填): 总结已完成工作的最终结果描述
  • command (可选): 用于演示结果的CLI命令

功能

该工具通过呈现已完成工作的最终摘要来标记任务结束。它向用户和系统发出当前任务已完成的信号。当提供命令时,还可以通过实时执行来演示结果。


使用场景

  • 当Roo认为用户任务已完成时
  • 总结所做的更改或改进时
  • 通过命令执行演示当前结果时
  • 为解决方案提供用户反馈检查点时
  • 从工作阶段过渡到潜在改进时

主要特点

  • 明确表示Roo认为任务已完成
  • 以简洁消息总结已完成工作
  • 可选通过命令执行演示结果
  • 支持用户反馈以进一步改进
  • 以不同于常规消息的特殊UI格式显示结果
  • 捕获任务完成遥测数据用于系统分析
  • 通过提供检查点维护结构化对话流程
  • 支持大型工作流中的子任务完成
  • 确保用户收到已完成工作的清晰摘要
  • 作为"始终可用"工具组在所有模式下可用

限制

  • 在确认之前工具使用成功前不应使用(指南而非强制)
  • 仅限于单个命令用于结果演示
  • 不能呈现多个命令选项
  • 命令执行需要用户批准
  • 仅限于能通过CLI命令展示的结果
  • 不能用于部分任务完成或进度更新
  • 内部处理会去除结果格式中的XML闭合标签

工作原理

当调用attempt_completion工具时,遵循以下流程:

  1. 安全考虑(指南而非强制):

    • 指示AI确认之前工具使用已成功
    • 这是最佳实践而非程序强制机制
  2. 结果展示:

    • 以特殊的"completion_result"UI格式向用户显示完成消息
    • 使用removeClosingTag函数从结果文本中去除XML闭合标签
    • 以不同于常规消息的方式呈现结果以实现视觉区分
  3. 命令执行(如提供):

    • 执行命令前请求用户批准
    • 仅当用户批准后执行
    • 使用系统的命令执行功能执行命令
    • 向用户显示命令结果
  4. 反馈收集:

    • 等待用户对完成结果的反馈
    • 处理反馈并返回给AI
    • 基于用户输入支持持续改进
  5. 任务完成与继续:

    • 在系统中标记任务为已完成
    • 捕获已完成任务的遥测数据
    • 对于子任务,提供完成子任务并恢复父任务的选项
    • 通过反馈机制支持持续对话
  6. 实现集成:

    • 工具结果通过系统的parse-assistant-message.ts解析机制处理
    • 该工具属于"ALWAYS_AVAILABLE_TOOLS"常量,在所有模式下可用

结果格式指南

结果消息应遵循以下指南:

  • 清晰传达已完成的工作
  • 简洁但完整
  • 聚焦于为用户提供的价值
  • 避免不必要的客套或填充文本
  • 保持专业、直接的语气
  • 以便于扫描和理解的方式呈现信息
  • 确认用户可能提供反馈以进一步改进

注意:系统通过removeClosingTag函数自动从结果文本中去除XML闭合标签。


命令选择指南

包含命令时,遵循以下指南:

  • 选择能直观演示结果的命令
  • 优先选择能向用户展示创建或修改内容的命令
  • 示例包括:
    • open index.html 显示创建的网站
    • npm start 启动开发服务器
    • python app.py 运行创建的应用程序
  • 避免仅打印文本的命令(如echocat)
  • 记住命令执行需要用户批准
  • 确保命令对用户操作系统有效

反馈与UI表示

attempt_completion工具有独特的反馈机制:

  • 结果以特殊的"completion_result"UI格式显示,区别于常规消息
  • 系统在呈现结果后等待用户反馈
  • 反馈被处理并返回给Roo以进一步改进
  • 创建迭代改进循环而非结束对话
  • UI包含提供反馈的特殊元素
  • 结果作为对话流程中的明确检查点

用于子任务时:

  • 系统提供完成子任务并恢复父任务的选项
  • 如批准,子任务以摘要完成
  • 父任务恢复并带有已完成子任务的上下文
  • 支持复杂嵌套工作流同时保持上下文

使用示例

  • 创建网站时,Roo呈现解决方案并使用open index.html展示结果。用户提供反馈后,Roo改进设计。
  • 实现功能时,Roo总结更改及其影响。用户请求额外测试覆盖后,Roo继续任务。
  • 修复错误时,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>