feat: ClassIsland / ClassHelper 灵动岛提示词套件

- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构)
- ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本)
- 投喂指南、分卷、逐节文件
- 调研记录、一致性基线、生成与质检脚本
This commit is contained in:
ClassIsland Prompt Kit committed 2026-11-12 21:59:58 +08:00
commit 22c1784bab
117 files changed
+47759

No files matched your search

+117
View File
@@ -0,0 +1,117 @@
import { readdirSync, readFileSync, writeFileSync } from 'node:fs';
import { join, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
const root = join(dirname(fileURLToPath(import.meta.url)), '..');
const partsDir = join(root, 'parts');
const files = readdirSync(partsDir).filter((f) => /^\d{2}-.+\.md$/.test(f)).sort();
const titles = {
'00': '使用说明 + 任务声明(总入口)',
'01': '项目总纲(定位 / 体验原则 / 架构 / 功能全景)',
'02': '技术栈与工程结构(pnpm/Electron/Vue/Vite、进程模型、构建)',
'03': '设计系统 Token(颜色/字体/圆角/间距/阴影/层级/DPI)',
'04': '主界面(岛)像素级规格(窗口/行/背景/进度/遮罩/编辑/隐藏)',
'05': '组件系统(11 个内置组件逐个规格)',
'06': '课程表/时间表/档案/科目/周次/调课/导入导出',
'07': '提醒系统(队列/提供者/气泡/强提醒/音效/TTS/天气服务)',
'08': '自动化(触发器/行动/规则集)',
'09': '主题系统(Fluent/Classic、主题包、壁纸取色 P2)',
'10': '设置中心(19 个设置页逐项)',
'11': '其它窗口与向导(OOBE/闪屏/崩溃/恢复/更新/换课/Excel/教程…)',
'12': '插件系统、IPC、单实例与自动更新',
'13': '数据模型、存储、备份与迁移(JSON schema)',
'14': '动画与动效总表(99 条)',
'15': '资源清单(图标/字体/音效/天气图标/教程/本地化)',
'16': '质量门禁与验收清单',
'17': '开发里程碑(M0–M8)',
'18': '禁止事项与实现边界(红线)',
'19': '结语',
};
const rows = [];
for (const f of files) {
const t = readFileSync(join(partsDir, f), 'utf8');
const chars = [...t.replace(/\s/g, '')].length;
const cjk = (t.match(/[\u4e00-\u9fff]/g) || []).length;
const tokens = Math.round(cjk * 0.9 + (chars - cjk) * 0.3);
const num = f.slice(0, 2);
rows.push({ num, file: f, title: titles[num] || '', chars, cjk, tokens });
}
const table = rows
.map((r) => `| ${r.num} | ${r.title} | \`${r.file}\` | ${r.chars} | ${r.tokens} |`)
.join('\n');
const totalChars = rows.reduce((a, r) => a + r.chars, 0);
const totalTokens = rows.reduce((a, r) => a + r.tokens, 0);
const md = `# 投喂指南:把这份 ClassIsland 提示词交给 ChatGPT
> 本目录是最终交付物。主提示词共 20 个 part(00–19),合计约 **${totalChars}** 字符(去空白)、**约 ${totalTokens} tokens**。请不要一次性把全部内容塞进小上下文模型;按下面三套方案挑一套。
## 一、交付物
| 文件 | 内容 | 用途 |
|---|---|---|
| \`../ClassIsland-给ChatGPT的完整提示词.md\` | 全量主提示词(20 个 part,含目录) | 唯一权威版本;模型上下文足够时一次投喂 |
| \`vol1-总纲与技术栈(00-02).md\` ~ \`vol5-动画资源验收与结语(14-19).md\` | 5 个分卷 | 适合 128k 上下文模型分批投喂 |
| \`sections/\` | 20 个独立 part 文件 | 适合 32k–64k 上下文模型逐章投喂;也方便只补某一章 |
| \`../analysis/\`、\`../parts/\` | 调研记录与原始 part 源文件 | 供人工核对证据(不投喂给模型) |
## 二、各 part 体量与 token 估算
| # | 内容 | 文件 | 字符(去空白) | 估算 tokens |
|---|---|---|---|---|
${table}
> token 估算按「汉字 0.9、其他字符 0.3」粗算,仅用于选择投喂方式;实际以所用模型 tokenizer 为准。
## 三、三套投喂方案
### 方案 A:一次性投喂(上下文 ≥ 200k tokens)
- 适用:GPT-5 级别 / Claude 长上下文 / Gemini 2.5 Pro 等。
- 做法:粘贴 \`ClassIsland-给ChatGPT的完整提示词.md\` 全文,末尾追加:
> 请严格按此提示词实现「classisland-ts」。先通读全文,输出:①实施计划与完整文件树;②你识别出的歧义点(一次性列出,等我确认);③M0 的验收脚本设计。确认后再开始写代码。
- 注意:长上下文也会「中间遗忘」,务必要求模型在每个里程碑复述本阶段关键数值。
### 方案 B:五卷投喂(上下文 ≥ 128k tokens)
1. 第 1 批:\`vol1\` + 追加话术:「这是项目的总纲、技术栈与工程结构;先只确认理解,不要写代码。请复述 10 条体验原则、技术栈版本、进程模型。」
2. 第 2 批:\`vol2\` +「这是设计 tokens、主界面与组件规格;请输出你将创建的 Vue 组件树与 CSS token 文件草案。」
3. 第 3 批:\`vol3\` +「这是课表、提醒、自动化;请输出数据流与状态机设计。」
4. 第 4 批:\`vol4\` +「这是主题、设置、窗口、插件、数据;请输出 IPC 通道表与数据 schema 清单。」
5. 第 5 批:\`vol5\` +「这是动画、资源、验收、里程碑、红线;请输出最终实施顺序与验收计划,然后从 M0 开始实现。」
- 每批结束时要求模型把「已确认的关键参数」写进一份 \`SPEC-LOCK.md\`,下一批先复述再继续。
### 方案 C:逐章投喂(上下文 32k–64k)
- 适用:GPT-4o 等 32k/128k 模型或需要精细控制时。
- 做法:按 00 → 19 顺序,每次投喂 \`sections/\` 下 1–3 个 part(建议:00+01+02;03+04;05;06;07;08;09+10;11;12+13;14+15;16+17+18+19)。
- 每次投喂加一句:「只实现/修改与本章相关的文件;先复述本章关键数值与验收点,再动手;不要重写其他模块。」
## 四、建议的追问与验收话术
- 开工前:「请先输出 20 个你认为最可能歧义的地方,并给出你的默认决策。」
- 架构评审:「请给出 packages/desktop-client/src 的完整文件树,每个文件一句话职责;标注哪些文件对应提示词的哪个章节。」
- 像素校验:「请给出岛在 1920×1080、缩放 100%、深色 Fluent 主题下的基准截图校验清单(元素/坐标/颜色/字号)。」
- 动画校验:「请列出第 14 部分要求的 99 条动画中,你已实现/未实现的清单,并给出每条的验证方法。」
- 无头验证:「所有自动验证必须无头运行,不得显示可见窗口或播放声音;请提供 headless 测试命令与输出。」
- 数据安全:「请演示一次配置迁移:备份 → 迁移 → 校验 → 失败回滚。」
- 完成前:「请对照第 16 部分逐条勾选,并列出未通过项与原因;对照第 18 部分确认红线。」
## 五、必须向模型强调的三件事
1. **证据路径不是依赖**:文中 \`repos/ClassIsland/...\`、\`repos/ClassHelper-master/...\` 是规格来源,实现时应转写为 TypeScript/CSS,不得在产物中引用这两个仓库。
2. **技术栈不可替换**:pnpm 11 + Electron 44 + Vue 3.5 + Element Plus 2.14 + Pinia 4 + Vite 8 + TS 5.9;更新器自研(禁 electron-updater);岛不得引入 Element Plus 全局样式。
3. **不打扰纪律**:任何自动验证必须无头/离屏,不得弹窗、发声、占用真实桌面(第 18 部分)。
## 六、已知的「与 ClassIsland 原版差异」(模型需在交付说明中列出)
- Avalonia 窗口 → Electron 透明 BrowserWindow(固定包围盒 + 窗内形变,见 04 §4.3)。
- XAML 资源字典/主题 → CSS 变量 + 受控主题包(09)。
- 插件 DLL/.cipx → npm 包 + utilityProcess 宿主(12)。
- 命名管道 IPC → Electron IPC + 可选本地只读 HTTP(12)。
- Excel 导入导出:原版 2.1 已停用,本实现用 xlsx 重建为 P1(06/11)。
- 壁纸取色:原版 2.1 已停用,本实现仅 P2 实验性、默认关闭(09)。
- 置顶轮询:原版 1ms 轮询 → 事件驱动 + ≥1000ms 兜底(04/18)。
`;
writeFileSync(join(root, 'out', '投喂指南.md'), md, 'utf8');
console.log('written out/投喂指南.md');
console.log(md.split('\n').slice(0, 5).join('\n'));