
1. 从 44.2k Star 的 System_Prompts_Leaks 说起大模型“家规”到底长什么样System_Prompts_Leaks 是一个在 GitHub 上拿到 44.2k Star 的开源项目用 JavaScript 维护专门收集主流大模型和 Agent 产品的系统提示词。所谓系统提示词就是模型在收到你问题之前先被塞进去的一段“家规”——它规定模型是谁、用什么语气说话、能做什么、不能做什么、输出要不要结构化。你平时觉得 Claude 回答稳、Grok 爱开玩笑、Gemini 老爱提搜索来源这些差异很大一部分就写在这段提示词里。这个项目适合谁想系统研究提示词工程的开发者、做 AI 应用需要设计角色与安全边界的工程师、以及想给自己的 Agent 写一套靠谱 system prompt 的人。它把 Anthropic、OpenAI、Google、xAI、Cursor、Copilot、Perplexity 等产品的提示词整理成可检索的数据集采用 CC0-1.0 许可持续更新。但直接 clone 下来看一堆 Markdown 文件效率其实不高。我试过把它当成一个“提示词语料库”来做工程化拆解用 JavaScript 写抓取脚本同步仓库、解析每个提示词的模块结构、统计长度与关键词分布最后形成自己的分析工作流。下面就把这套可复制的脚本骨架和本地验证步骤拆开讲你跟着做就能跑起来。2. 前置准备用 TaoToken 打通模型调用与提示词分析链路分析提示词不只是“读文本”你还得能实际调用模型去验证某段 system prompt 的效果。比如你想知道“把 Anthropic 的注入检测模块删掉后模型行为怎么变”就需要一个稳定的模型调用入口。我这边用的是 TaoToken它提供统一的 API 网关兼容主流模型的对话接口省去分别申请多家 Key 的麻烦。TaoToken 官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 这个不加 UTM。你需要先去控制台创建一个 API Key然后就能在脚本里用标准的 OpenAI 兼容格式调用。具体操作路径注册并登录后进入控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite在 API Keys 页面生成密钥https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite想先手动试对话效果可以用模型对话页https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite接入细节看文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite注意API Key 只放在本地环境变量里不要硬编码进提交到 Git 的脚本。我一般用.env加dotenv管理。环境准备清单依赖版本建议用途Node.js18 LTS 及以上跑抓取与解析脚本git任意较新版本克隆 System_Prompts_Leaks 仓库dotenv^16读取本地 API Keynode-fetch 或内置 fetchNode 18 自带调用模型接口初始化项目mkdir prompt-lab cd prompt-lab npm init -y npm install dotenv echo TAOTOKEN_API_KEY你的密钥 .env3. 可复制配置JavaScript 抓取与解析脚本骨架3.1 同步 System_Prompts_Leaks 仓库项目本身是 JavaScript 维护的提示词列表最稳的同步方式就是直接 clone 或 pull。写一个sync.js把仓库拉到本地data/目录后续解析都基于本地文件避免频繁请求 GitHub。// sync.js import { execSync } from node:child_process; import { existsSync } from node:fs; const REPO https://github.com/xxx/System_Prompts_Leaks.git; const DIR ./data/System_Prompts_Leaks; if (!existsSync(DIR)) { console.log(首次克隆仓库...); execSync(git clone --depth 1 ${REPO} ${DIR}, { stdio: inherit }); } else { console.log(拉取最新更新...); execSync(git -C ${DIR} pull --ff-only, { stdio: inherit }); } console.log(同步完成文件位于, DIR);运行node sync.js你会看到仓库被拉到本地。项目里通常按产品分目录每个提示词是一个 Markdown 或文本文件文件名往往带模型名和版本。3.2 解析提示词的模块结构系统提示词虽然长但结构高度重复身份声明、能力边界、安全规则、输出格式、工具调用说明。写一个parse.js用正则把每个文件切成模块输出 JSON方便后续统计和对比。// parse.js import { readdirSync, readFileSync, writeFileSync } from node:fs; import { join, extname } from node:path; const DIR ./data/System_Prompts_Leaks; // 模块识别规则命中关键词即归入对应模块 const MODULE_RULES [ { name: identity, pattern: /(you are|your name is|你是|身份)/i }, { name: safety, pattern: /(harmful|illegal|安全|禁止|不得|refuse)/i }, { name: injection, pattern: /(prompt injection|ignore previous|注入|覆盖)/i }, { name: format, pattern: /(format|markdown|json|输出格式|结构化)/i }, { name: tools, pattern: /(tool|function call|工具|调用)/i }, ]; function walk(dir) { const out []; for (const entry of readdirSync(dir, { withFileTypes: true })) { const full join(dir, entry.name); if (entry.isDirectory()) out.push(...walk(full)); else if ([.md, .txt].includes(extname(entry.name))) out.push(full); } return out; } function parseFile(file) { const text readFileSync(file, utf-8); const lines text.split(\n); const modules {}; let current misc; for (const line of lines) { const hit MODULE_RULES.find((r) r.pattern.test(line)); if (hit) current hit.name; modules[current] (modules[current] || ) line \n; } return { file, length: text.length, moduleKeys: Object.keys(modules), modules, }; } const files walk(DIR); const result files.map(parseFile); writeFileSync(./parsed.json, JSON.stringify(result, null, 2)); console.log(解析 ${result.length} 个文件输出 parsed.json);跑完node parse.jsparsed.json里每个条目都带length和moduleKeys。你可以立刻看出 Anthropic 系提示词普遍更长、模块更多而 ChatGPT 系相对精简。3.3 用 TaoToken 验证提示词效果光解析不够还得实际调用模型对比。下面这段verify.js读取某个提示词文件把它作为 system message再发一个固定问题观察输出差异。// verify.js import dotenv/config; import { readFileSync } from node:fs; const API https://taotoken.net/api/v1/chat/completions; const KEY process.env.TAOTOKEN_API_KEY; async function ask(systemPrompt, userInput) { const res await fetch(API, { method: POST, headers: { Content-Type: application/json, Authorization: Bearer ${KEY}, }, body: JSON.stringify({ model: claude-3-5-sonnet, messages: [ { role: system, content: systemPrompt }, { role: user, content: userInput }, ], temperature: 0.3, }), }); const data await res.json(); return data.choices?.[0]?.message?.content ?? JSON.stringify(data); } const prompt readFileSync(./data/System_Prompts_Leaks/xxx/claude.md, utf-8); const answer await ask(prompt, 用一句话解释什么是提示词注入。); console.log(answer);把model换成你想对比的模型名就能做 A/B 测试。比如同一段安全规则分别用 Claude 和 GPT 跑看谁更严格地拒绝越界请求。4. 验证请求与成功结果跑通整条链路按顺序执行node sync.js node parse.js node verify.js成功时你会看到sync.js输出“同步完成”data/下出现仓库文件。parse.js输出“解析 N 个文件”parsed.json生成里面能看到每个提示词的模块分布。verify.js打印模型返回的一段解释文本说明 API 调用链路通了。进一步做统计可以加一段脚本按模块出现频率排序// stats.js import { readFileSync } from node:fs; const data JSON.parse(readFileSync(./parsed.json, utf-8)); const counter {}; for (const item of data) { for (const key of item.moduleKeys) { counter[key] (counter[key] || 0) 1; } } console.table( Object.entries(counter) .sort((a, b) b[1] - a[1]) .map(([module, count]) ({ module, count })) );跑node stats.js你会得到一张表直观看到哪些模块是各家“家规”的标配。实测下来safety和identity几乎 100% 出现injection在 Anthropic 系里出现频率明显更高。5. 本篇常见错排查报错一fetch is not definedNode 版本低于 18。升级到 18 LTS 以上或安装node-fetch并 import。报错二401 UnauthorizedAPI Key 没读到。检查.env文件是否在项目根目录变量名是否和脚本里一致dotenv/config是否在文件顶部 import。报错三ENOENT: no such file or directorysync.js没跑成功data/目录不存在。先确认 git clone 没被网络或权限拦住再跑解析脚本。报错四解析结果模块全是misc说明提示词文件的语言或格式和正则不匹配。打开一个文件看看实际用词把MODULE_RULES里的关键词补上比如加上中文的“角色”“边界”。报错五模型返回空内容检查model字段是否是 TaoToken 支持的模型名。不确定就先在模型对话页手动发一条消息确认模型可用再写进脚本。报错六parsed.json体积过大提示词文件多且长时正常。可以只保留length和moduleKeys把modules正文另存避免单文件过大影响编辑器。6. 把分析工作流固定下来这套流程跑通后你可以把它变成日常习惯每周node sync.js拉一次更新node parse.js重新解析node stats.js看模块分布有没有变化。想深入对比两个模型的提示词差异就把两份文件都读进来做 diff或者分别作为 system prompt 调 TaoToken 跑同一组问题记录输出差异。长期做编码和 Agent 开发的话建议把常用模型调用统一走 Coding Plan省去反复切换配置的麻烦https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。如果你主要用 Claude Code 这类工具做提示词实验接入说明在 https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 。最后提醒一句System_Prompts_Leaks 的数据仅用于研究和学习别拿泄露的提示词去做越狱或绕过安全限制的事。把它当成一面镜子照出各家产品在角色设计、安全边界、输出约束上的取舍然后把这些经验用回你自己的 AI 应用里这才是 44.2k Star 背后真正值得带走的东西。