提示词结构
本页面解释了 Roo Code 中提示词的技术结构 —— 消息是如何构建并发送给大语言模型(LLM)的。
核心消息类型
Roo Code 在与 LLM 通信时使用三种主要消息类型:
- 系统提示词(System Prompt):定义 Roo 的能力、角色和操作规则的初始指令
- 用户消息(User Messages):你(用户)发送给 Roo 的内容
- 助手消息(Assistant Messages):LLM 基于你的请求生成的响应
在 API 层面,还存在第四种消息角色:
- 工具消息(Tool Messages):工具执行的结果,作为输入返回给 LLM
理解这些消息类型有助于你更有效地与 Roo 协作,对于故障排查或高级自定义也非常有价值。
系统提示词
系统提示词是 Roo 行为的基础。它包含:
- 角色定义:基于所选模式(代码、问答、调试等)的核心角色指令
- 工具描述:可用工具的详细信息,包括参数和示例
- 工具使用指南:工具应如何使用的规则(顺序执行、等待结果)
- 能力说明:描述 Roo 在当前环境中可以执行的操作
- 可用模式:所有可用模式及其描述的列表
- 操作规则:处理文件、项目结构和用户交互的关键指南
- 系统信息:你的环境详情(操作系统、Shell、工作目录)
- 自定义指令:你的全局和模式特定的自定义设置
系统提示词在你每次与 Roo 交互时动态生成,根据当前模式、可用工具和自定义设置进行调整。
自定义系统提示词
高级用户可以通过在工作区中放置 .roo/system-prompt-<mode_slug> 文件,为特定模式创建自定义系统提示词。当该文件存在时,Roo 将使用此文件替代生成的标准系统提示词部分,允许对该模式下 Roo 的行为进行完全自定义。
用户消息
用户消息包含你直接输入给 Roo 的内容,以及附加的上下文信息:
- 你的查询:你在聊天界面中输入的文本
- 图像:你在消息中包含的任何图像(适用于支持的模型)
- 环境详情:自动附加的关于工作区状态的信息:
- 打开的文件/标签页
- 光标位置
- 活动终端及其输出
- 最近修改的文件
- 当前时间
- Token/成本信息
- 当前模式
- 文件列表(首次连接时)
这种自动上下文增强帮助 Roo 理解你的工作区,而无需你显式描述它。
助手消息
助手消息是 LLM 的响应,可能包括:
- 文本响应:对你查询的直接回答
- 思考过程:内部推理过程(启用时可见)
- 工具调用:使用特定工具的请求,如读取文件或执行命令
注意,虽然助手消息包含工具调用,但这些工具的结果通过单独的工具消息返回给 LLM,而不是作为助手消息的一部分。
消息流
以下是这些组件如何协同工作:
- 初始设置:Roo 基于你选择的模式和配置生成系统提示词
- 用户输入:你发送一条消息,该消息会自动添加环境详情
- LLM 处理:LLM 接收所有之前的消息以及你的新输入
- 助手响应:LLM 生成响应,可能使用工具
- 工具执行:如果 LLM 请求工具,Roo 执行并提供结果
- 对话历史:所有消息以结构化历史形式保存,用于上下文
技术实现
在内部,Roo 的提示词构建由多个组件处理:
- 系统提示词生成:
src/core/prompts/system.ts中的SYSTEM_PROMPT函数组装完整的系统提示词 - 节生成器:专门的函数创建系统提示词的各个部分
- 消息转换:特定于提供商的转换器将 Roo 的内部消息格式转换为每个 LLM API 所需的格式
- 自定义提示词加载:
loadSystemPromptFile函数检查并处理自定义系统提示词文件
支持提示词
除了主要的聊天流程外,Roo 还为特定代码操作使用专门的模板:
- 代码操作提示词:用于“解释”、“修复”、“改进”或“添加到上下文”等命令
- 基于模板:由
src/shared/support-prompt.ts中的模板生成 - 独立上下文:通常在没有主要聊天历史的情况下运行
- 任务特定格式:针对正在执行的特定代码任务进行优化
这些支持提示词在正常对话流程之外工作,为特定编码任务提供集中的辅助。
优化你的交互
理解此结构可以帮助你:
- 编写更好的提示词:了解 Roo 已有的上下文有助于避免冗余信息
- 排查问题:理解消息流有助于识别问题可能出现的位置
- 创建自定义模式:了解系统提示词结构后,你可以创建更有效的自定义模式
- 使用自定义系统提示词:高级用户可以为特定用例创建完全自定义的系统提示词
这一技术基础支撑了 Roo 的所有功能,使其能够理解你的请求并有效利用可用工具完成任务。