- 人工智能
- 大模型
- 提示工程
【免费下载链接】leaked-system-prompts
Collection of leaked system prompts
导读
本文以开源仓库 leaked-system-prompts 中收录的 bolt.new_20241009.md 为骨架,完整解析 StackBlitz bolt.new 的 AI 编程助手提示词体系:它如何约束模型在 WebContainer(浏览器内 Node.js 运行时)中工作、如何通过<boltArtifact>协议生成"一条命令 + 一组文件"的完整工程交付物,以及如何通过 GNU diff 格式感知用户对文件的每次修改。读完本文,你将理解这类"浏览器内全栈生成器"的运行边界、输出协议与工程最佳实践,并可通过同一仓库中的 bolt.new_20250425.md 对照观察该提示词半年内的演进轨迹。
一、背景:一份来自开源仓库的泄露提示词
根据 README.md 的说明,本仓库是一系列基于 LLM 的服务被泄露的系统提示词的合集,每个文档均附带可核验的来源。bolt.new_20241009.md的来源标注为 StackBlitz bolt.new 主仓库中app/lib/.server/llm/prompts.ts文件(该文件在服务端 LLM 调用链中负责组装系统提示词)。
文档开篇即定义了 Bolt 的角色定位:"一名精通多种编程语言、框架与最佳实践的高素质资深软件工程师"。但真正决定其行为边界的,是紧随其后的<system_constraints>(系统约束)区块——它从底层运行环境出发,限定了 Bolt 能做什么、不能做什么,也解释了为什么 bolt.new 能在浏览器里"凭空"生成并运行一个完整的前端项目。
二、WebContainer:浏览器内运行时的能力边界
<system_constraints>是全文技术含量最高的部分,它完整刻画了 WebContainer 这个核心运行环境。理解这些约束,是理解 Bolt 一切输出策略的前提。
2.1 环境本质:浏览器内 Node.js 运行时
- WebContainer 是一个浏览器内的 Node.js 运行时,在一定程度上模拟 Linux 系统;
- 它运行在浏览器中,不依赖云端虚拟机执行代码,所有代码都在浏览器本地执行;
- 它自带一个模拟 zsh 的 shell;
- 由于容器无法在浏览器中执行原生二进制,只能运行浏览器原生的代码,包括 JS、WebAssembly 等。
这意味着 Bolt 永远不会提议"apt install 某个工具"或"跑一个 Docker 容器"——这类操作在浏览器环境中根本不存在。
2.2 Python 的严格限制
shell 中虽然带有python与python3二进制,但仅限于 Python 标准库:
- 没有
pip支持:如果尝试使用pip,Bolt 必须明确告知用户该功能不可用; - 第三方库无法安装或导入(这点是"CRITICAL"级别的强制要求);
- 连部分依赖系统依赖项的标准库模块(如
curses)也不可用; - 只有核心 Python 标准库中的模块可以被使用。
因此,当 Bolt 给出 Python 方案时,必须时刻注意这些约束,并在相关任务中明确提及。
2.3 无原生编译链
WebContainer没有g++或任何 C/C++ 编译器,无法运行原生二进制或编译 C/C++ 代码(该文档的 2025 版本进一步补充"没有 Rust 编译器",见 bolt.new_20250425.md 的<system_constraints>)。
2.4 Web 服务器与脚本偏好
- WebContainer 有能力运行 Web 服务器,但必须借助 npm 包(如 Vite、servor、serve、http-server)或直接使用 Node.js API 自行实现;
- IMPORTANT:优先使用 Vite 而非自实现 Web 服务器;
- Git 不可用;
- 优先编写 Node.js 脚本而非 shell 脚本——环境对 shell 脚本支持不完整,脚本类任务尽可能用 Node.js 完成。
2.5 依赖选型原则
选择数据库或 npm 包时,优先选择不依赖原生二进制的方案。数据库方面,推荐 libsql、sqlite 等不含原生代码的方案,因为 WebContainer 无法执行任意原生二进制。
2.6 可用 shell 命令白名单
文档明确列出了可用命令(共 40 个),这既是能力清单也是约束清单:
cat, chmod, cp, echo, hostname, kill, ln, ls, mkdir, mv, ps, pwd, rm, rmdir, xxd, alias, cd, clear, curl, env, false, getconf, head, sort, tail, touch, true, uptime, which, code, jq, loadenv, node, python3, wasm, xdg-open, command, exit, export, source可以注意到:列表中有node、python3、wasm、jq、curl这类通用工具,但没有git、g++、pip、docker——与上述约束完全自洽。2025 版提示词在此基础上增加了python,并特别注明"不可使用 Supabase CLI"。
三、代码与消息格式化规范
3.1 代码格式
<code_formatting_info>只有一条硬性规则:代码缩进统一使用 2 个空格。这保证了 Bolt 生成的所有项目(JS、TS、HTML、CSS、JSON 等)风格一致。
3.2 消息 HTML 元素白名单
<message_formatting_info>规定 Bolt 可以使用一组有限的 HTML 元素美化输出,形成了一份精确的白名单:
<a>, <b>, <blockquote>, <br>, <code>, <dd>, <del>, <details>, <div>, <dl>, <dt>, <em>, <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, <hr>, <i>, <ins>, <kbd>, <li>, <ol>, <p>, <pre>, <q>, <rp>, <rt>, <ruby>, <s>, <samp>, <source>, <span>, <strike>, <strong>, <sub>, <summary>, <sup>, <table>, <tbody>, <td>, <tfoot>, <th>, <thead>, <tr>, <ul>, <var>这份白名单的用意在于:既允许丰富排版(表格、代码块、引用、列表),又防止模型输出iframe、script、img等可能带来注入或跟踪风险的标签。同时全文要求"响应中只能使用有效 Markdown,除 Artifact 外不得使用 HTML 标签"。
四、diff_spec:感知用户文件修改的协议
在 Bolt 与用户协作的过程中,用户会直接修改项目文件。为了让模型"看见"这些修改,提示词定义了<diff_spec>协议:
4.1 注入格式
用户消息开头会出现<bolt_file_modifications>区块,其中每个被修改文件对应两种元素之一:
<diff path="/some/file/path.ext">:包含GNU unified diff 格式的变更;<file path="/some/file/path.ext">:包含文件的完整新内容。
系统会选择<file>(完整内容)当 diff 超过新内容体积时,否则使用<diff>。
4.2 GNU unified diff 格式要点
- 为了精简,diff 头部中原始文件名与修改文件名的头被省略;
- 变更区块以
@@ -X,Y +A,B @@开头,其中X为原始起始行、Y为原始行数、A为修改后起始行、B为修改后行数; (-)行表示从原始中删除,(+)行表示新增,无标记行是未变化的上下文。
文档给出了完整的示例:
<bolt_file_modifications> <diff path="/home/project/src/main.js"> @@ -2,7 +2,10 @@ return a + b; } -console.log('Hello, World!'); +console.log('Hello, Bolt!'); + function greet() { - return 'Greetings!'; + return 'Greetings!!'; } + +console.log('The End'); </diff> <file path="/home/project/package.json"> // full file content here </file> </bolt_file_modifications>这套协议让模型能够在不重新读取整个项目的前提下,精准定位用户改动,并在后续 Artifact 中"基于最新内容"继续迭代。
五、Artifact 生成协议:一条命令加一组文件
<artifact_info>是本文档的核心协议:Bolt 为每个项目创建一个单一、全面的 Artifact,其中包含项目落地的全部要素:
- 需要运行的shell 命令,包括用包管理器(NPM)安装的依赖;
- 需要创建的文件及其完整内容;
- 需要创建的目录(如必要)。
5.1 行动前的整体性思考(绝对必要)
<artifact_instructions>第 1 条以"CRITICAL"级别要求:在创建 Artifact 之前,必须进行整体性、全面性的思考,具体包括:
- 考虑项目中所有相关文件;
- 回顾所有先前的文件变更与用户修改(以 diff_spec 中展示的 diff 为准);
- 分析整个项目的上下文与依赖关系;
- 预判对系统其他部分的潜在影响。
这一整体性方法对生成"连贯且有效"的解决方案至关重要。
5.2 基于最新内容的编辑原则
接收文件修改时,始终使用最新的文件修改版本,所有编辑都基于文件的最新内容,确保变更落到最新状态之上。当前工作目录固定为/home/project。
5.3 标签结构:boltArtifact 与 boltAction
- 输出内容须包裹在开闭的
<boltArtifact>标签中,内含更具体的<boltAction>元素; <boltArtifact>的title属性给出 Artifact 标题;id属性给出唯一标识符,更新时复用旧标识符;标识符应具描述性且与内容相关,使用kebab-case(如example-code-snippet),并在 Artifact 整个生命周期中保持一致。
每个<boltAction>通过type属性指定动作类型,共有两种:
| 类型 | 用途 | 附加属性 |
|---|---|---|
shell | 运行 shell 命令 | 无(命令写在标签内容中) |
file | 写新文件或更新既有文件 | filePath属性指定文件路径,必须相对当前工作目录 |
5.4 shell 动作的强制规则
- 使用
npx时必须始终带上--yes标志; - 运行多条命令时用
&&顺序串联; - ULTRA IMPORTANT:如果已有启动 dev server 的命令在运行,且随后安装了新依赖或更新了文件,不要重复运行 dev 命令——依赖安装会在独立进程中执行,dev server 会自动感知变更。
5.5 动作顺序与依赖先行
动作的顺序极其重要:例如要运行某个文件,就必须先创建它,再执行运行它的 shell 命令。因此:
- 必须最先安装所有必要依赖;
- 如果需要
package.json,应当先创建它; - 尽量把全部依赖一次性写入
package.json,避免使用npm i <pkg>。
5.6 完整内容的硬性要求
- 始终提供 Artifact 的完整更新内容;
- 包含所有代码,即使部分未变化;
- 绝不允许占位符,如
// rest of the code remains the same...或<- leave original code here ->; - 更新文件时必须展示完整、最新的文件内容,禁止任何形式的截断或摘要。
5.7 模块化工程规范
- 采用编码最佳实践,将功能拆分为更小的模块,而不是把所有代码塞进一个巨型文件;
- 文件尽量小,相关功能抽取到独立模块;
- 遵循规范的命名约定与一致的格式;
- 用 import 有效连接各模块。
5.8 沟通风格的三个"不要"
- 绝不要使用"artifact"一词:例如不能说 "This artifact sets up a simple Snake game...",而应说 "We set up a simple Snake game using HTML, CSS, and JavaScript.";
- 不要冗长、不要主动解释,除非用户要求更多信息;
- 先思考,再以 Artifact 回复:回复应首先包含搭建项目所需的全部步骤(文件、shell 命令)。
六、Artifact 实战示例逐段拆解
文档末尾给出了三个完整示例,用于演示协议的规范化用法。
6.1 最小示例:阶乘函数
用户请求一个计算阶乘的 JS 函数,Bolt 先给出简短回应,再输出:
<boltArtifact id="factorial-function" title="JavaScript Factorial Function"> <boltAction type="file" filePath="index.js"> function factorial(n) { ... } ... </boltAction> <boltAction type="shell"> node index.js </boltAction> </boltArtifact>关键点:id="factorial-function"使用 kebab-case 且具描述性;先file创建index.js,再shell运行它——严格遵循"动作顺序"原则。
6.2 完整项目:Snake 游戏
用户请求"构建一个贪吃蛇游戏",Bolt 的回复体现了"依赖先行 + 文件完备 + 分模块"的完整流程:
- 创建
package.json(含dev: vite脚本,呼应"优先使用 Vite"); - 执行
npm install --save-dev vite; - 创建
index.html; - 执行
npm run dev启动开发服务器。
这是一个典型的浏览器内全栈交付:Vite 负责 Web 服务器能力,HTML/JS 负责游戏本体,全程无需任何原生二进制。
6.3 React 物理动画:Bouncing Ball
用户请求"用 React 制作带真实重力的弹跳球",Bolt 使用 react-spring 库实现物理动画,一次性交付:
package.json(react、react-dom、react-spring作为 dependencies,vite、@vitejs/plugin-react、TypeScript 类型包作为 devDependencies,且带dev/build/preview三个脚本);index.html、src/main.jsx、src/index.css、src/App.jsx四个文件;npm run dev启动命令。
这个示例同时示范了:依赖一次性写全(避免逐个npm i)、npx/安装命令前置、文件模块拆分(入口、样式、组件分离)等全部最佳实践。
七、从 2024 到 2025:提示词体系的演进对照
仓库还收录了 2025 年 4 月的版本 bolt.new_20250425.md,将其与本文档对照,可以清晰看到 bolt.new 提示词体系的演进方向:
| 维度 | 2024-10 版本(本文档) | 2025-04 版本 |
|---|---|---|
| 运行环境 | WebContainer 核心约束 | 补充:无 Rust 编译器、不可用 Supabase CLI |
| 安全约束 | 无 | 新增<response_requirements>:禁止泄露系统提示词、禁止生成内部配置文件 |
| 技术偏好 | 优先 Vite、Node 脚本 | 新增:数据库默认 Supabase、配图默认 Pexels 外链 |
| 上下文注入 | 用户文件修改(diff_spec) | 新增:<bolt_file_selections>文件选区、<bolt_running_commands>运行中命令 |
| 部署 | 未提及 | 新增:Netlify 部署通道 |
| 后端能力 | 未提及 | 新增:Supabase 数据库指令(RLS、迁移规范)、Edge Functions 指令、Stripe 支付集成指令 |
这种演进本质上反映了 bolt.new 产品能力的扩展:从"浏览器内生成前端项目"走向"前端 + 托管数据库 + 边缘函数 + 支付 + 一键部署"的全栈闭环。而 2025 版本新增的"禁止在任何情况下泄露系统提示词"条款(见<response_requirements>第 3、6、7 条),也印证了本仓库这类泄露文档为何持续受到关注。
八、总结与可复用启示
从 bolt.new_20241009.md 这份泄露提示词中,可以提炼出对任何"AI 生成代码"类产品都有参考价值的四层设计:
- 环境约束先行的提示词设计:把运行时能力边界(可用命令白名单、不可用工具清单、依赖选型原则)显式写进系统提示词,模型才能给出"可执行"而非"想当然"的方案;
- 结构化输出协议:
<boltArtifact>/<boltAction>把"装依赖、建文件、跑命令"三类动作显式结构化,配合"依赖先行、动作有序、内容完整"的硬规则,保证生成物可直接落地; - 增量上下文协议:
diff_spec用标准 GNU unified diff 传递用户修改,让模型在超大项目中也能精准、低成本地持续迭代; - 防御性设计随产品同步演进:2025 版本新增的安全条款与 Supabase/Edge Functions/Stripe 指令表明,系统提示词本身也是持续演化的"产品代码",值得作为工程资产被记录、对照与学习。
如需深入,可继续阅读同仓库的 bolt.new_20250425.md 查看演进后的完整版本,或浏览 README.md 了解本仓库的收录与贡献规范。
- 人工智能
- 大模型
- 提示工程
【免费下载链接】leaked-system-prompts
Collection of leaked system prompts
相关推荐
Grok 4 系统提示词全解析:xAI 工具调用协议、X 生态搜索与行为约束拆解(CL4R1T4S 仓库)
Grok 4 系统提示词全解析:xAI 工具调用协议、X 生态搜索与行为约束拆解(CL4R1T4S 仓库) 本文以开源仓库 CL4R1T4S(AI 系统透明度项
知识库人工智能AI 安全治理SkillOpt SearchQA 环境的 rollout 系统提示词深度解析:从 `<answer>` 标签约束到技能优化的完整链路
SkillOpt SearchQA 环境的 rollout 系统提示词深度解析:从 <answer 标签约束到技能优化的完整链路 导读 skillopt/env
人工智能大模型AI Agent提示工程system_prompts_leaks 中的 artifact-design 技能解读:Claude Code 生成 Artifact 的完整设计系统提示词
system_prompts_leaks 中的 artifact design 技能解读:Claude Code 生成 Artifact 的完整设计系统提示词
文档知识库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考