Lzh on GitHub

提示结构

本页解释了 Roo Code 中提示的技术结构——消息是如何构建并发送给大型语言模型(LLM)的。

本页解释了 Roo Code 中提示的技术结构——消息是如何构建并发送给大型语言模型(LLM)的。

核心消息类型

Roo Code 在与 LLM 通信时使用三种主要消息类型:

  • 系统提示:定义 Roo 的能力、角色和操作规则的初始指令。
  • 用户消息:您(用户)发送给 Roo 的内容。
  • 助手消息:LLM 根据您的请求生成的响应。

在 API 层面,还有第四种消息角色:

  • 工具消息:工具执行返回的结果,作为输入发送回 LLM。

了解这些消息类型有助于您更有效地使用 Roo,对于故障排除或高级自定义也很有价值。

系统提示

系统提示是 Roo 行为的基础。它包含:

  • 角色定义:基于所选模式(代码、提问、调试等)的核心角色指令。
  • 工具描述:关于可用工具的详细信息,包括参数和示例。
  • 工具使用指南:如何使用工具的规则(顺序执行、等待结果)。
  • 能力:Roo 在当前环境中的能力描述。
  • 可用模式:所有可用模式及其描述的列表。
  • 操作规则:处理文件、项目结构和用户交互的关键指南。
  • 系统信息:关于您的环境的详细信息(操作系统、shell、工作目录)。
  • 自定义指令:您的全局和特定模式的自定义设置。

系统提示是您每次与 Roo 交互时动态生成的,它会根据您当前的模式、可用工具和自定义设置进行调整。

自定义系统提示

高级用户可以通过在其工作区中放置 .roo/system-prompt-<mode_slug> 文件来为特定模式创建自定义系统提示。如果存在,Roo 将使用此文件而不是生成标准的系统提示部分,从而允许完全自定义 Roo 在该模式下的行为。

用户消息

用户消息包含您对 Roo 的直接输入,以及额外的上下文信息:

  • 您的查询:您在聊天界面中输入的文本。
  • 图片:您在消息中包含的任何图片(对于支持的模型)。
  • 环境详细信息:自动附加的关于您的工作区状态的信息:
    • 打开的文件/标签页。
    • 光标位置。
    • 带有输出的活动终端。
    • 最近修改的文件。
    • 当前时间。
    • 令牌/成本信息。
    • 当前模式。
    • 文件列表(在初始连接时)。

这种自动上下文丰富有助于 Roo 在不需要您明确描述的情况下理解您的工作区。

助手消息

助手消息是 LLM 的响应,可能包括:

  • 文本响应:对您查询的直接回答。
  • 思考:内部推理过程(启用时可见)。
  • 工具调用:调用特定工具的请求,例如读取文件或执行命令。

请注意,虽然助手消息包含工具调用,但这些工具的结果会以单独的工具消息的形式发送回 LLM,而不是作为助手消息本身的一部分。

消息流

以下是这些组件如何协同工作:

  1. 初始设置:Roo 根据您选择的模式和配置生成系统提示。
  2. 用户输入:您发送一条消息,该消息会用环境详细信息进行丰富。
  3. LLM 处理:LLM 接收所有先前的消息以及您的新输入。
  4. 助手响应:LLM 生成一个响应,可能会使用工具。
  5. 工具执行:如果 LLM 请求一个工具,Roo 会执行它并提供结果。
  6. 对话历史:所有消息都保存在结构化的历史记录中以供上下文使用。

技术实现

在内部,Roo 的提示构建由几个组件处理:

  • 系统提示生成src/core/prompts/system.ts 中的 SYSTEM_PROMPT 函数组装完整的系统提示。
  • 部分生成器:专门的函数创建系统提示的每个部分。
  • 消息转换:特定于提供商的转换器将 Roo 的内部消息格式转换为每个 LLM API 所需的格式。
  • 自定义提示加载loadSystemPromptFile 函数检查并处理自定义系统提示文件。

支持提示

除了主聊天流,Roo 还使用专门的模板来处理特定的代码操作:

  • 代码操作提示:用于“解释”、“修复”、“改进”或“添加到上下文”等命令。
  • 基于模板:从 src/shared/support-prompt.ts 中的模板生成。
  • 独立上下文:通常在没有主聊天历史的情况下操作。
  • 任务特定格式:针对正在执行的特定代码任务进行优化。

这些支持提示在正常对话流程之外工作,为特定的编码任务提供集中的帮助。

优化您的交互

了解此结构可以帮助您:

  • 编写更好的提示:了解 Roo 已有的上下文可帮助您避免冗余信息。
  • 解决问题:了解消息流有助于识别可能出现问题的地方。
  • 创建自定义模式:了解系统提示结构后,您可以创建更有效的自定义模式。
  • 使用自定义系统提示:高级用户可以为专门的用例创建完全自定义的系统提示。

这个技术基础为 Roo 的所有功能提供了支持,使其能够理解您的请求并有效利用可用工具来完成任务。