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 继续任务。
  • 修复 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>