news 2026/9/5 20:43:10

解构 prompts.chat 的 PROMPTS.md:一个社区 Prompt 语料库的文件结构、语法与维护管线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解构 prompts.chat 的 PROMPTS.md:一个社区 Prompt 语料库的文件结构、语法与维护管线

解构 prompts.chat 的 PROMPTS.md:一个社区 Prompt 语料库的文件结构、语法与维护管线

【免费下载链接】prompts.chatf.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.项目地址: https://gitcode.com/GitHub_Trending/aw/prompts.chat

PROMPTS.md 是 prompts.chat(前身为 Awesome ChatGPT Prompts)的核心数据档案:一个以纯 Markdown 维护的公开 Prompt 全集,当前规模约 14.4 万行、收录数百条社区贡献的提示词。本文以该文件为骨架,逐层拆解它的条目结构、提示词写作范式(角色设定、模拟器协议、变量占位符、结构化 Prompt)以及背后的自动化同步管线,读完后可独立读懂该语料库的任意条目,并能用仓库中的 prompts.csv 导出格式与数据管线对其做程序化消费。

一、PROMPTS.md 在项目中的定位

prompts.chat 是一个"分享、发现、收集 Prompt"的开源平台,README 中将其定位为 "f.k.a. Awesome ChatGPT Prompts",并明确 PROMPTS.md 与 prompts.csv 并列为项目的两大静态数据格式(见 README.md 的 "Data Formats" 表格)。两者的关系是同一份数据的两种投影

  • PROMPTS.md:面向人类与 LLM 阅读,每条 Prompt 以可折叠的 Markdown 块组织,保留贡献者署名;
  • prompts.csv:面向机器批量处理,同一批 Prompt 以固定五列 CSV 呈现(act,prompt,for_devs,type,contributor)。

许可证方面,LICENSE 声明 Prompt 内容与数据(prompts.csv、PROMPTS.md 及所有用户提交的 Prompt)以CC0 1.0 公共领域授权提供,即可以任意用途复制、修改与分发,这也解释了为什么该文件敢以单一巨型 Markdown 的形式全量开源而不受维护困扰。

文件头部即为全集的元信息:

# Awesome ChatGPT Prompts > A curated list of prompts for ChatGPT and other AI models. ---

其后是逐条追加的 Prompt 块,顺序与提交时间一致(由维护脚本按 CSV 行序同步,见后文管线章节)。

二、条目块结构:PROMPTS.md 的"Schema"

整个文件可以看作一个重复的、强约束的条目块序列。每个条目块固定由 6 个部分组成,以下是一个完整样例(Linux Terminal 条目,PROMPTS.md 第 20-31 行):

<details> <summary><strong>Linux Terminal</strong></summary> ## Linux Terminal Contributed by [@f](https://github.com/f) ```md I want you to act as a linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. do not write explanations. do not type commands unless I instruct you to do so. when i need to tell you something in english, i will do so by putting text inside curly brackets {like this}. my first command is pwd
```

各部分的职责与生成逻辑如下(渲染逻辑可对照维护脚本 scripts/generate-contributors.sh 中的generate_prompt_block函数,该函数正是按此模板拼接字符串):

组成部分作用生成规则
<details>开标签让条目在支持 HTML 的 Markdown 渲染器(如 GitHub)中默认折叠固定模板
<summary><strong>标题</strong></summary>折叠态下仅露出标题,便于在 14 万行文件中扫读标题取自 CSV 的act字段
## 标题展开后的 H2 锚点标题与 summary 同名
Contributed by ...贡献者署名GitHub 用户名渲染为个人主页链接;邮箱类账号渲染为@anonymous(见format_contributor_links,scripts/generate-contributors.sh)
```md围栏代码块承载 Prompt 全文,保持逐字符保真代码块语言标签按类型映射:TEXT→md、JSON→json、YAML→yaml
</details>闭合折叠块固定模板

选择<details>/<summary>而非普通 H2 列表的原因在于单文件可读性:数百条 Prompt 若全部展开,页面将不可浏览;折叠后每个条目只占一行视觉空间,而代码块语法高亮又保证了复制 Prompt 时的格式保真。

维护脚本对条目块的增删改全部基于标题锚定的正则替换,这一约束反过来解释了模板为何必须严格一致。更新某个条目时,脚本以如下正则定位并整体替换目标块(scripts/generate-contributors.sh):

pattern = rf'<details>\n<summary><strong>{re.escape(act)}</strong></summary>.*?</details>\n\n' new_content, count = re.subn(pattern, generate_prompt_block(row), content, flags=re.DOTALL)

也就是说,<details>\n<summary><strong>标题</strong></summary>这一前缀是机器可识别的唯一键——标题(act)即条目 ID。这也意味着:同名条目会被覆盖更新,新增条目只会追加到文件末尾。

三、Prompt 内容范式:从语料中提炼的四类写法

PROMPTS.md 的价值不止于"收录",其条目本身构成一份可研究的提示词写作语料。通读全文可归纳出四类高复用范式。

3.1 角色扮演范式("I want you to act as ...")

文件中最主流的结构,覆盖 Advertiser、Storyteller、Debater、Screenwriter、Novelist、Poet、Recruiter、Dentist、Historian 等大量条目。典型骨架为三段式:角色设定 → 行为契约 → 首个请求锚点。以 Job Interviewer(PROMPTS.md 第 53-57 行)为例:

I want you to act as an interviewer. I will be the candidate and you will ask me the interview questions for the ${Position:Software Developer} position. I want you to only reply as the interviewer. Do not write all the conversation at once. I want you to only do the interview with me. Ask me the questions and wait for my answers. Do not write explanations. Ask me the questions one by one like an interviewer does and wait for my answers. My first sentence is "Hi"

值得注意的两个工程化细节:

  1. "Do not write explanations / only reply ... and nothing else"式的输出面约束反复出现,用于压制模型的"解释癖",让输出可直接作为下游输入;
  2. 末尾的 "My first request is ..." 锚点:给出第一条真实输入,把模型"锁定"进入角色后的第一轮对话,避免模型先长篇自我介绍。

3.2 模拟器范式:把模型当作终端/解释器

Linux Terminal、JavaScript Console、SQL Terminal、Python Interpreter、Text Based Adventure Game 等条目共享同一套"模拟器协议",以 JavaScript Console(PROMPTS.md 第 68-69 行)为例:

I want you to act as a javascript console. I will type commands and you will reply with what the javascript console should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. do not write explanations. do not type commands unless I instruct you to do so. when i need to tell you something in english, i will do so by putting text inside curly brackets {like this}. my first command is console.log("Hello World");

该协议的四个要素可逐条拆解:

  • 单一代码块输出("only reply with ... inside one unique code block"):保证用户端可一键复制执行结果;
  • 禁止越权("do not type commands unless I instruct you"):模型只"显示"不"执行",避免幻觉出用户没输入过的命令;
  • 带外通道("putting text inside curly brackets {like this}"):花括号文本被约定为"用户对模拟器的元指令"而非模拟器内部输入,这是纯文本环境下的极简通道协议;
  • 冷启动命令("my first command is ..."):立即进入第一轮交互。

SQL Terminal 条目则进一步在 Prompt 内内联了数据库 Schema("The database contains tables named Products, Users, Orders and Suppliers"),相当于给"虚拟终端"预置了可查询的数据契约,使模拟结果更自洽。

3.3 变量占位符:${name:default}{name}两种写法

语料中存在两套占位符写法,它们恰好与 prompts.chat 平台的变量系统一一对应:

带默认值的${变量:默认值}语法。例如 Job Interviewer 中的${Position:Software Developer}、English Pronunciation Helper 中的${Mother Language:Turkish}。平台运行时的解析逻辑在 src/components/prompts/variable-fill-modal.tsx 中,正则与语法完全吻合:

// Parse ${variablename:defaultvalue} or ${variablename} patterns const regex = /\$\{([^:}]+)(?::([^}]*))?\}/g;

解析后弹窗列出所有唯一变量及其默认值,用户可直接替换并一键复制/运行;未替换时冒号后的默认值生效。换言之,${Position:Software Developer}这类条目开箱即用——直接粘贴进 ChatGPT 也会把Software Developer作为岗位名使用。

裸占位符{name}语法。如 Character 条目(PROMPTS.md 第 147 行):"I want you to act like {character} from {series} ..."。这类写法面向人工填槽。平台侧对它的态度由 src/lib/variable-detection.ts 定义——该工具会扫描[[name]]{{name}}[NAME]{NAME}<NAME>%NAME%等 7 类变体(dollar_curly${name}视为已合规、不告警),并在提示词编辑界面建议作者将其规范化为${name:default}格式。因此阅读 PROMPTS.md 时可见到两种语法并存,是"存量条目 + 渐进迁移"的自然结果。

3.4 结构化 Prompt:C.R.A.F.T. 与 Agent 风格

文件后半段出现了明显更长、更接近"工程文档"的条目,标志 Prompt 从一句话向系统化结构演进。

Prompt Generator 条目(PROMPTS.md 第 835-878 行)给出了一套名为C.R.A.F.T.的 Prompt 元结构,要求生成器产出的每条 Prompt 都包含五个分区:

分区含义写作要点(原文摘译)
Context上下文说明需要该 Prompt 的场景,帮助模型确定应参考的知识域
Role角色定义为"拥有 20 年以上相关经验的行业领先专家"
Action行动编号化的顺序步骤列表,是模型应遵循的操作序列
Format格式产出的结构组织方式:散文、表格、代码、Markdown 列表等
Target Audience目标受众人口的地理、语言、阅读水平、偏好等

条目还附带一个完整的 C.R.A.F.T. 示例(月度目标指南),以及"先确认主题 → 追问细节 → 必要时用[my placeholder]留空 → 直接输出 Prompt 不解释"的执行流(ACTION 1-7 步)。这是典型的few-shot + 流程约束组合,可作为编写元提示词(prompt about prompts)的参照模板。

Agent/Skill 风格条目。文件末尾(PROMPTS.md 第 143938-143937 行附近)收录了一条以SKILL.md为产物的 "repository-scaffolder" 技能定义:YAML frontmatter(name/description)+ 四步指令流水线(解析项目简报 → 建立架构布局 → 应用非功能标准 → 交付完整工件),并内置了${project_name}${one_sentence_description}等参数化字段与 "No Questions Policy"(对缺失参数做行业默认假设而非反问)。这类条目说明该语料库的边界已从"聊天提示词"延伸到"Agent 技能规范",与仓库中plugins/claude/prompts.chat/skills/下的技能查找功能在主题上呼应。

四、PROMPTS.md 与 prompts.csv 的字段同构

对比文件与 prompts.csv 前若干行(如 Ethereum Developer、Linux Terminal 两条),可确认二者行序一致、内容同源。CSV 表头为:

act,prompt,for_devs,type,contributor

各列的取值逻辑可由线上 CSV 端点 src/app/prompts.csv/route.ts 的源码精确还原:

生成规则(源码依据)
actPrompt 标题,CSV 转义(引号内"加倍为""
prompt内容全文;含逗号/引号/换行的字段整体加引号
for_devscategory.slug === "coding" ? "TRUE" : "FALSE",即按分类而非内容判断是否为开发者向
typestructuredFormat为 JSON 或 YAML 时输出STRUCTURED,否则TEXT
contributor主作者在前、协作者逗号分隔;GitHub OAuth 用户用githubUsername,其余用用户名或邮箱(src/app/prompts.csv/route.ts 的getUserIdentifier

管理员导入端点 src/app/api/admin/import-prompts/route.ts 定义了type列到数据库字段的完整映射:JSON/YAMLSTRUCTURED(记录structuredFormat),IMAGE/VIDEO/AUDIO各自映射为多模态类型,其余回落TEXT。这解释了为何 PROMPTS.md 中的代码块语言标签只出现md/json/yaml——当前语料以 TEXT 与 STRUCTURED 两类为主。

除 CSV 外,平台还提供 JSON 导出 src/app/prompts.json/route.ts:默认每页 50 条、上限 100 条(DEFAULT_LIMIT = 50MAX_LIMIT = 100,第 13-14 行),支持?page=&limit=&full_content=true参数,且内容默认截断为 500 字符预览(CONTENT_PREVIEW_LENGTH = 500),并基于"总条数 + 最近更新时间"生成 ETag 返回 304 以节省带宽(第 19-23、60-69 行)。三个导出面(Markdown 文件、CSV 端点、JSON API)共同覆盖了"人读、批处理、应用集成"三种消费场景。

五、维护管线:PROMPTS.md 如何与站点自动同步

PROMPTS.md 不靠人工编辑,而是由 scripts/generate-contributors.sh 驱动的同步流程维护,其完整链路为:

用户提交/编辑 Prompt(prompts.chat 站点) │ ▼ 站点数据库(Prompt 表,含软删除与 unlisted 标记) │ ▼ GET /prompts.csv ──► 只导出 isPrivate=false、isUnlisted=false、deletedAt=null 的条目 │ ▼ curl 拉取远端 CSV → 与本地 prompts.csv 按 act 求差集(新增/更新/删除) │ ▼ 逐条更新 PROMPTS.md 条目块 + 重写 CSV 行 │ ▼ 每条 Prompt 一个 git commit(作者=贡献者,含 Co-authored-by)

关键实现细节:

  1. 差集判定(scripts/generate-contributors.sh):以act为键,promptcontributor字段变化(换行符归一化后比较)判定为更新;本地有而远端没有的判定为删除(对应站点侧被 unlist/删除的条目);
  2. 删除优先、更新次之、新增最后(第 253-321 行):删除用正则整体移除条目块,更新做原位替换,新增追加到文件末尾;每步都重写 CSV 并单独提交;
  3. 提交归属还原git_commit,scripts/generate-contributors.sh):通过GIT_AUTHOR_NAME/EMAIL环境变量把每次提交归属到实际贡献者,协作者写入Co-authored-bytrailer,邮箱类贡献者映射到@users.noreply.github.com形式;
  4. 署名脱敏format_contributor_links用邮箱正则识别真实邮箱,一律渲染为@anonymous,避免署名泄露;符合 GitHub 用户名正则(^A-Za-z0-9){0,38}$)的才渲染为主页链接;
  5. 幂等性git_commitgit diff --cached --quiet为空时直接返回 False("no changes, skipping"),重复运行脚本不会产生空提交。

脚本末行的Review with: git log --oneline prompts.csv PROMPTS.md也提示了该管线的产物验证方式:两个文件应始终以"每个 Prompt 一个提交"的节奏成对变化。从这一结构可以推断,PROMPTS.md 的行数增长与 git 历史中的 Add/Update/Remove prompt 提交一一对应,读者可用该日志追溯任一条目(如 "Linux Terminal")的提交者与修改史。

六、如何使用这份语料库

基于文件结构与配套工具链,给出三类典型用法:

1. 人类浏览。直接打开 PROMPTS.md(渲染后条目默认折叠),或按标题在编辑器内检索:由于每个条目前缀均为<summary><strong>标题</strong></summary>,用正则<summary><strong>关键词</strong>即可精确定位条目块。语料主题覆盖编程(Ethereum Developer、SQL Terminal、JavaScript Console)、语言学习(English Translator、Spoken English Teacher)、创作(Novelist、Poet、Rapper)、职业顾问(Recruiter、Career Counselor、Interviewer)与娱乐模拟(Football Commentator、Text Based Adventure Game、AI Trying to Escape the Box)等方向,可按##标题清单快速建立全库地图。

2. 机器消费。优先取 prompts.csv(或站点 CSV/JSON 端点)而非解析 Markdown:CSV 已是规范化数据(标题、内容、开发者向标记、类型、贡献者五列),可直接导入 pandas/DataFrame 做统计、去重或向量化检索。若需程序解析 PROMPTS.md 本身,可按第二节所述模板以<details>…</details>块切分,取summary内文本为标题、首个围栏代码块为内容。

3. 变量化改写。把静态条目改造为参数化模板时,以${name:default}为目标语法(平台运行时识别格式,见 src/components/prompts/variable-fill-modal.tsx),并可借助 src/lib/variable-detection.ts 列出的 7 类正则自查是否还有{{x}}[X]<X>等未规范占位符残留。

七、小结

PROMPTS.md 是一个"数据即文档"的典型案例:它既没有传统文档的章节结构,又凭借严格的条目块模板(<details>折叠 + 标题锚点 + 代码块保真 + 署名行)让 14 万行的社区语料保持机器可解析、人可扫读、git 可审计。其条目内容则沉淀了提示词工程的几种基础范式——角色设定与输出面约束、带外通道的模拟器协议、带默认值的变量占位符、以及 C.R.A.F.T. 式的结构化元提示词——而 scripts/generate-contributors.sh 与 src/app/prompts.csv/route.ts、src/app/prompts.json/route.ts 构成的同步与导出管线,保证了这份语料与线上站点双向一致、CC0 授权下可自由再分发。对提示词工程研究者与 Agent 开发者而言,该文件与其配套数据格式共同构成了一个可直接检索、直接嵌入的开源 Prompt 基准语料库。

【免费下载链接】prompts.chatf.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.项目地址: https://gitcode.com/GitHub_Trending/aw/prompts.chat

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 20:36:15

BlueTooth.rar不是驱动包,而是C#蓝牙工程源码

简介&#xff1a;本资源是一个基于C#开发的Windows 10平台PC端低功耗蓝牙&#xff08;BLE&#xff09;通信工具项目&#xff0c;面向物联网应用开发者、嵌入式与上位机协同开发初学者及高校课程设计实践者&#xff0c;解决Windows环境下BLE设备扫描、连接、服务发现与特征读写等…

作者头像 李华
网站建设 2026/9/5 20:35:28

雷赛MA860H步进驱动器维修测试全流程:从万用表测量到控制卡联动排查

之前处理产线设备时&#xff0c;遇到过一台雷赛 MA860H 步进驱动器频繁报警停机&#xff0c;现场电工直接判定“驱动器坏了”&#xff0c;换新后问题依旧。最后排查下来&#xff0c;真正原因只是电机动力线接头氧化导致相间电阻波动。这件事给我的启发是&#xff1a;驱动器的“…

作者头像 李华
网站建设 2026/9/5 20:27:41

AG vs KSG巅峰对决复盘:BP策略与选手状态的系统分析

如果你最近也在关注 KPL 赛事&#xff0c;大概率已经被 AG 与 KSG 这场第七局巅峰对决刷了屏。两支队伍一路打到 BO7 的最后一场&#xff0c;AG 从 BP 环节开始就陷入被动&#xff0c;随后钟意和一诺的状态也没有撑住阵容的下限&#xff0c;被 KSG 用更完整的体系正面压制。赛后…

作者头像 李华
网站建设 2026/9/5 20:21:59

深度学习训练代码实战:PyTorch模型训练全流程拆解与调参指南

1. 从“看不懂训练代码”到“自己动手调参”&#xff1a;先搞清楚我们在怕什么 每次看到训练脚本&#xff0c;很多人第一反应就是“这玩意儿太玄了”。我记得第一次打开一个完整的PyTorch训练代码时&#xff0c;满屏都是 model.train() 、 optimizer.zero_grad() 、 loss.…

作者头像 李华