Skip to main content

提示结构

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


核心消息类型

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

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

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

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

理解这些消息类型有助于你更高效地使用 Roo,也有助于排查问题或进行高级自定义。


系统提示

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

  • 角色定义:基于所选模式(Code、Ask、Debug 等)的核心角色指令
  • 工具描述:关于可用工具的详细信息,包括参数和示例
  • 工具使用指南:关于如何使用工具的规则(顺序执行、等待结果等)
  • 能力说明:描述 Roo 在当前环境下能做什么
  • 可用模式:所有可用模式及其描述的列表
  • 操作规则:处理文件、项目结构和用户交互的关键指南
  • 系统信息:你的环境详情(操作系统、shell、工作目录等)
  • 自定义指令:你的全局和模式特定自定义内容

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

自定义系统提示

高级用户可以通过在工作区放置 .roo/system-prompt-<mode_slug> 文件,为特定模式创建自定义系统提示。当该文件存在时,Roo 会使用它而不是标准的系统提示部分,从而实现对该模式下 Roo 行为的完全自定义。


用户消息

用户消息包含你直接输入给 Roo 的内容,以及额外的上下文信息:

  • 你的查询:你在聊天界面输入的文本
  • 图片:你在消息中包含的图片(适用于支持的模型)
  • 环境详情:自动附加的工作区状态信息:
    • 打开的文件/标签页
    • 光标位置
    • 活跃终端及其输出
    • 最近修改的文件
    • 当前时间
    • Token/费用信息
    • 当前模式
    • 文件列表(首次连接时)

这种自动上下文丰富机制帮助 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 的全部能力,使其能够理解你的请求并高效利用可用工具完成任务。