6.5 KiB
6.5 KiB
提示词库结构与 Excel 互转规范
本规范用于约束“提示词库”在文件系统与 Excel 之间的一致结构、命名与转换规则,确保后期自动化同步、增量更新与团队协作的稳定性。
1. 目录结构(约定)
prompt-library/
├── prompts/ # 核心输出目录
│ ├── <工作表名称-已净化>/ # 每个 Excel 子表对应一个文件夹
│ │ ├── (行,列)_标题.md # 单元格 → 单文件(仅包含提示词文本)
│ │ └── index.md # 该表分类索引(自动生成)
│ └── index.json # 全局 JSON 索引(自动生成)
├── docs/
│ ├── tools.md # 工具/链接(从表自动提取)
│ ├── support.md # 支持/钱包地址(从表自动提取)
│ ├── excel-data.md # Excel 原始数据快照(自动生成)
│ └── STRUCTURE_AND_CONVERSION_SPEC.md # 本规范
└── scripts/
├── convert_local.py # Excel ↔ 文件 的本地转换器(实现 Excel→文件)
├── config.yaml # 可选配置(数据源/策略)
└── requirements.txt # 依赖
- 只允许在
prompts/<工作表名称-已净化>/下新增/修改提示词文件,其它自动文件(如index.md、index.json)由转换器生成,禁止手改。
2. 命名与净化(Sanitization)
- 工作表文件夹名:对原始 Excel 工作表名称执行净化:
- 移除非法字符:
\\ / : * ? " < > | \r \n - 将空格替换为下划线
_ - 最长 60 字符,超长截断
- 示例:
"学习 提示词/1?"→"学习_提示词1"
- 移除非法字符:
- 提示词文件名:
(行,列)_标题.md- 行、列为 1 基索引(Excel 中第 1 行/第 1 列即 1)
- 标题来源:该行第一个非空单元格的首行文本的前若干词(用于人读),同样执行净化
- 标题仅用于文件名可读性,回写 Excel 时忽略
3. 文件内容规范(强约束)
- 每个提示词文件(.md)内容必须是“对应单元格的原始文本”,末尾追加一个换行;不允许包含:
- Markdown 标题/分隔线/元信息
- 代码围栏(```)
- 版本历史/导航/时间戳
- 编码:UTF-8,换行:LF
4. Excel → 文件 的生成规则
- 每个工作表 →
prompts/<工作表名称-已净化>/ - 行类型判定(逐行):
- 提示词行:该行至少一列非空,且不属于工具/社交/钱包/警告/占位
- 工具/链接:同行包含
http且非 X/Twitter 链接 → 归档docs/tools.md - 社交:链接中包含
x.com/twitter.com→ 归档docs/tools.md - 钱包区块:先出现“表头”(含“网络/网络名称”且含“礼貌要饭地址/钱包/地址”),其后若干行按
(网络, 地址)提取 → 归档docs/support.md - 警告:包含“广告位” → 记录为警告
- 占位:
.../…./....→ 忽略
- 对每个提示词行:
- 对该行每个非空列
c生成:(r,c)_标题.md,文件正文 = 单元格纯文本
- 对该行每个非空列
- 自动索引:
prompts/<表>/index.md:统计、列表与版本矩阵(供浏览用,自动生成)prompts/index.json:全局结构化索引,含各表、各行版本与外部资源(自动生成)docs/excel-data.md:各表数据快照(截取前 3 列),便于审计
5. 文件 → Excel 的回写规则(规范定义,供实现)
说明:当前脚本已实现 Excel→文件;本节定义未来“文件→Excel”时的规范,以便实现反向同步器保持一致性。
- 工作表名:优先使用
prompts/index.json中的categories[].name作为原始工作表名;若缺失,采用文件夹名将_还原为空格(尽力而为)。 - 单元格位置:
- 解析文件名
(r,c)_标题.md得到 1 基r,c,写入 Excel 的第r行、第c列 - 标题部分忽略,仅用于文件名可读
- 解析文件名
- 写入值:文件全文(去掉末尾多余空行)即单元格值
- 缺表/缺行列:自动创建工作表、扩展行列
- 冲突:同一
(r,c)出现多文件时应失败并报告(推荐),或采用“最后写入覆盖”(需在实现中明确开关) - 非提示词文档:
tools.md、support.md不默认回写;如需回写,应定义目标工作表名称与行布局(建议启用配置项)
6. 变更与校验
- 合法性检查:
- 文件名需符合正则:
^\(\d+,\d+\)_.+\.md$ - 内容不得包含本规范禁止的附加信息(元信息、代码围栏等)
- 文件名需符合正则:
- 冲突检测:同一
(r,c)不允许多次定义 - 兼容性:文件夹名与表名的映射以
index.json为准;直接根据文件夹名还原可能出偏差
7. 自动化工具与用法
- 依赖安装:
python3 -m pip install -r prompt-library/scripts/requirements.txt - 运行(Excel→文件):
python3 "prompt-library/scripts/convert_local.py" \ --excel "prompt (2).xlsx" - 行为摘要:
- 为每个工作表生成一个同名(净化后)目录
- 为每个非空单元格生成一个
.md文件(仅含单元格文本) - 重新生成所有索引与快照文档
8. 新增提示词(两种路径)
- 在 Excel 中新增:
- 在目标工作表的目标行、列填写文本
- 运行转换脚本,生成对应
(行,列)_标题.md
- 在文件系统中新增:
- 到
prompts/<工作表名称-已净化>/新建符合命名规范的文件 - 文件正文仅填写提示词文本
- 将在“文件→Excel”实现后由反向同步器写回相应
(行,列)
- 到
9. 设计取舍(Why)
- 只在提示词文件中保留“纯内容”,避免元信息造成噪声与二义性,便于复制/拼接/训练
- 元信息、导航、统计统一由自动化生成到索引与文档中,降低手工维护成本
- 以
(行,列)作为跨介质的“主键”,确保 Excel 与文件的可逆映射
10. 版本与扩展
- 建议在
scripts/config.yaml中引入可选项:- 反向同步开关与目标工作表名策略
- 冲突策略(报错/覆盖)
- 过滤器(忽略某些行/列/关键词)
- 未来可扩展:GitHub Actions/CI 校验规范合规性;支持更多字段映射(如 tag、语言)。
本规范适用于本仓库的所有提示词数据。如需调整,请在 PR 中同步更新 docs/STRUCTURE_AND_CONVERSION_SPEC.md 并说明向后兼容策略。