Lzh on GitHub

attempt_completion

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

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

参数

该工具接受以下参数:

  • result (必需):描述所完成工作的最终结果摘要。
  • command (可选):用于演示结果的 CLI 命令。

功能与使用时机

attempt_completion 工具通过提供所完成工作的最终摘要来标记任务的结束。它向用户和系统表明当前任务已完成。如果提供了命令,它还可以通过实时执行来演示结果。

该工具在以下情况中使用:

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

主要功能

  • 提供清晰信号:Roo 认为任务已完成时,会提供一个清晰的信号。
  • 总结成果:以简洁的消息概括已完成的工作。
  • 可选的命令演示:可以选择通过执行命令来演示结果。
  • 支持用户反馈:允许用户提供反馈以进行进一步的改进。
  • 独特的 UI 格式:结果以一种特殊的 UI 格式显示,与常规消息不同。
  • 捕获遥测数据:记录任务完成的遥测数据以进行系统分析。
  • 维持结构化对话流:通过提供检查点来保持对话的结构化。
  • 支持子任务完成:在大型工作流中支持子任务的完成。
  • 确保用户收到清晰摘要:确保用户收到关于已完成工作的清晰摘要。
  • 始终可用:作为“始终可用”工具组的一部分,在所有模式下都可使用。

局限性

  • 依赖先前成功:建议在确认先前的工具使用成功后才使用(仅为指导方针,未强制执行)。
  • 单个命令限制:结果演示仅限于单个命令。
  • 无多命令选项:无法提供多个命令选项。
  • 需要用户批准:命令执行需要用户批准。
  • 仅限 CLI 命令:仅限于通过 CLI 命令演示结果。
  • 不支持部分完成:不能用于部分任务完成或进度更新。
  • 格式化限制:结果格式化会在内部处理中去除 XML 结束标签。

工作原理

attempt_completion 工具被调用时,它遵循以下过程:

  1. 安全考量(指导方针,未强制执行)
  • AI 被指示在调用此工具前确认先前的工具使用已成功。
  • 这是一种最佳实践,而不是一个程序化强制执行的机制。
  1. 结果呈现
  • 以特殊的 “completion_result” UI 格式向用户显示完成消息。
  • 使用 removeClosingTag 函数从结果文本中移除 XML 结束标签。
  • 结果的呈现方式与常规消息不同,以便在视觉上有所区分。
  1. 命令执行(如果提供)
  • 在执行命令之前请求用户批准。
  • 仅在用户批准后才执行。
  • 使用系统的命令执行功能来执行命令。
  • 向用户展示命令的结果。
  1. 反馈收集
  • 等待用户对完成结果的反馈。
  • 处理此反馈并将其返回给 AI。
  • 能够根据用户输入继续进行改进。
  1. 任务完成与继续
  • 在系统中将任务标记为已完成。
  • 为已完成的任务捕获遥测数据。
  • 对于子任务,提供完成子任务并恢复父任务的选项。
  • 通过反馈机制支持持续对话。
  1. 实现集成
  • 工具结果通过 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 元素:UI 中包含用于提供反馈的特殊元素。
  • 检查点:结果在对话流中充当清晰的检查点。

在子任务中使用时:

  • 提供选项:系统提供完成子任务并恢复父任务的选项。
  • 完成子任务:如果获得批准,子任务会连同摘要一起完成。
  • 恢复父任务:父任务会带着来自已完成子任务的上下文继续进行。
  • 支持复杂工作流:这使得复杂的嵌套工作流成为可能,同时保持上下文。

使用示例

  • 在创建网站时,Roo 会展示解决方案并使用 open index.html 来显示结果。用户提供反馈后,Roo 会优化设计。
  • 在实施某个功能时,Roo 会总结所做的更改及其影响。用户要求增加测试覆盖率,Roo 会继续执行任务。
  • 在修复 bug 时,Roo 会解释修复了什么以及解决方案如何解决根本原因。用户确认修复有效。
  • 在设置开发环境时,Roo 会确认所有组件都已安装。用户要求进行额外配置,Roo 会继续。
  • 在创建数据处理脚本时,Roo 会总结其功能。用户建议进行性能改进,Roo 会优化代码。

完成一个只带结果摘要的任务:

<attempt_completion>
  <result>
    I've updated the CSS for the navigation bar to match the design mockup. The changes include:
    1. Updated color scheme to use the new brand colors
    2. Added responsive behavior for mobile devices
    3. Fixed the alignment issues in the dropdown menus
  </result>
</attempt_completion>

完成一个带结果和演示命令的任务:

<attempt_completion>
  <result>
    I've created a simple React application with the following features:
    1. A responsive landing page with the requested hero section
    2. A working contact form with validation
    3. Navigation between all three requested pages
    4. Styling that matches the provided design mockup
  </result>
  <command>npm start</command>
</attempt_completion>

完成一个带执行功能的 Python 脚本任务:

<attempt_completion>
  <result>
    I've created a data processing script that:
    1. Reads the CSV files from the data directory
    2. Cleans and normalizes the data as requested
    3. Generates the summary statistics in JSON format
    4. Outputs the processed data to the output directory
  </result>
  <command>python process_data.py</command>
</attempt_completion>