Lzh on GitHub

手枪式提示:覆盖系统提示

手枪式提示(系统提示覆盖) 允许您替换特定 Roo Code 模式的默认系统提示。这提供了精细的控制,但绕过了内置的安全措施。请谨慎使用。

手枪式提示(系统提示覆盖) 允许您替换特定 Roo Code 模式的默认系统提示。这提供了精细的控制,但绕过了内置的安全措施。请谨慎使用。

警告指示器:当当前模式的系统提示覆盖处于活动状态时,Roo Code 将在聊天输入区域显示一个警告图标,以提醒您默认行为已被修改。
footgun(名词)
  1. (编程俚语,幽默,贬义)任何可能导致程序员 “自食其果” 的功能。

系统提示覆盖被认为是一个“手枪式功能”,因为在没有深入理解的情况下修改核心指令可能会导致意外或破坏性行为,尤其是在工具使用和响应一致性方面。

工作原理

  • 覆盖文件:在您的工作区根目录中创建一个名为 .roo/system-prompt-{mode-slug} 的文件(例如,.roo/system-prompt-code 用于代码模式)。
  • 内容:此文件的内容将成为该特定模式的新系统提示。
  • 激活:Roo Code 会自动检测此文件。如果存在,它将替换大多数标准系统提示部分。
  • 保留的部分:只有核心的 roleDefinition 和您为该模式设置的任何 customInstructions 会与您的覆盖内容一起保留。工具描述、规则和功能等标准部分将被绕过。
  • 构建:发送给模型的最终提示看起来像这样:
${roleDefinition}

${content_of_your_override_file}

${customInstructions}

访问该功能

在 Roo Code UI 中找到选项和说明:

  1. 单击 Roo Code 顶部菜单栏中的 Roo Code 图标
  2. 展开 “高级:覆盖系统提示” 部分。
  3. 点击说明中的文件路径链接,将在 VS Code 中打开或创建当前所选模式的正确覆盖文件。

使用上下文变量

创建自定义系统提示文件时,您可以使用特殊的变量(占位符),Roo Code 会自动将其替换为有关当前环境的相关信息。这使您的提示更具动态性和上下文感知能力。

以下是可用的变量:

  • {{mode}}:正在使用的当前 Roo Code 模式的 slug(简称)(例如,codechat-mode)。
  • {{language}}:在 VS Code 中配置的显示语言(例如,enes)。
  • {{shell}}:在 VS Code 中配置的默认终端 shell(例如,/bin/bashpowershell.exe)。
  • {{operatingSystem}}:您的计算机正在运行的操作系统类型(例如,LinuxDarwin 用于 macOS、Windows_NT)。
  • {{workspace}}:您当前项目工作区根目录的文件路径。

示例用法:

您可以像这样将这些变量直接包含在您的提示文件内容中:

You are assisting a user in the '{{mode}}' mode.
Their operating system is {{operatingSystem}} and their default shell is {{shell}}.
The project is located at: {{workspace}}.
Please respond in {{language}}.

Roo Code 在将提示发送给模型之前会替换这些占位符。

主要注意事项和警告

  • 目标受众:最适合那些非常熟悉 Roo Code 提示系统以及修改核心指令所带来的影响的用户。
  • 对功能的影响:自定义提示会覆盖标准指令,包括那些用于工具使用和响应一致性的指令。如果管理不当,这可能会导致意外行为或错误。
  • 特定于模式:每个覆盖文件仅适用于其文件名中指定的模式({mode-slug})。
  • 没有文件,就没有覆盖:如果 .roo/system-prompt-{mode-slug} 文件不存在,Roo Code 将为该模式使用标准的系统提示生成过程。
  • 忽略空文件:如果覆盖文件存在但为空,它将被忽略,并使用默认系统提示。
  • 目录创建:Roo Code 在尝试读取或创建覆盖文件之前,会确保 .roo 目录存在。请谨慎使用此功能。不正确的实现可能会显著降低受影响模式的 Roo Code 性能和可靠性。