Skip to main content

Footgun Prompting:覆盖系统提示

Footgun Prompting(系统提示覆盖)允许你为特定的itBuilder模式替换默认的系统提示。这提供了细粒度的控制,但会绕过内置的安全机制。请谨慎使用。

激活系统提示覆盖时的警告指示器

警告指示器: 当前模式启用系统提示覆盖时,itBuilder会在聊天输入区显示警告图标,提醒你默认行为已被修改。

footgun (名词)
  1. (编程俚语,幽默,带贬义) 任何可能导致程序员“自食其果”的特性。

系统提示覆盖被认为是footgun,因为在没有深入理解的情况下修改核心指令,可能导致意外或异常行为,尤其是在工具使用和响应一致性方面。


工作原理

  1. 覆盖文件: 在工作区根目录下创建名为.roo/system-prompt-{mode-slug}的文件(如.roo/system-prompt-code用于Code模式)。

  2. 内容: 该文件内容将成为该模式的新系统提示。

  3. 激活: itBuilder会自动检测此文件。存在时,将替换大部分标准系统提示部分。

  4. 保留部分: 仅保留核心roleDefinition和你为该模式设置的customInstructions。标准部分如工具描述、规则和能力将被绕过。

  5. 构建方式: 发送给模型的最终提示如下:

    ${roleDefinition}

    ${content_of_your_override_file}

    ${customInstructions}

如何访问该功能

在itBuilder UI中找到该选项和说明:

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

使用上下文变量

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

可用变量如下:

  • {{mode}}:当前itBuilder模式的slug(短名)(如codechat-mode)。
  • {{language}}:VS Code中配置的显示语言(如enes)。
  • {{shell}}:VS Code中配置的默认终端shell(如/bin/bashpowershell.exe)。
  • {{operatingSystem}}:你的计算机运行的操作系统类型(如LinuxDarwin代表macOS、Windows_NT)。
  • {{workspace}}:当前项目工作区的根路径。

示例用法:

你可以直接在提示文件内容中这样写:

你正在“{{mode}}”模式下协助用户。
他们的操作系统是{{operatingSystem}},默认shell为{{shell}}。
项目位于:{{workspace}}。
请用{{language}}回复。

itBuilder会在发送提示前替换这些占位符。


关键注意事项与警告

  • 适用对象: 仅适合对itBuilder提示系统及修改核心指令影响有深入了解的用户。
  • 对功能的影响: 自定义提示会覆盖标准指令,包括工具使用和响应一致性的说明。如果管理不当,可能导致意外行为或错误。
  • 模式专属: 每个覆盖文件仅适用于其文件名指定的模式({mode-slug})。
  • 无文件则无覆盖:.roo/system-prompt-{mode-slug}文件不存在,itBuilder会为该模式使用标准系统提示生成流程。
  • 空文件被忽略: 若覆盖文件存在但为空(空白),将被忽略,使用默认系统提示。
  • 目录自动创建: itBuilder会确保.roo目录存在后再读取或创建覆盖文件。

请谨慎使用此功能。不正确的实现会严重降低itBuilder在受影响模式下的性能和可靠性。