Files
classhelper-island-refactor…/parts/00-preamble.md
T
ClassIsland Prompt Kit 22c1784bab feat: ClassIsland / ClassHelper 灵动岛提示词套件
- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构)
- ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本)
- 投喂指南、分卷、逐节文件
- 调研记录、一致性基线、生成与质检脚本
2026-11-12 21:59:58 +08:00

6.9 KiB
Raw Blame History

ClassIsland 复刻工程:给 ChatGPT 的完整实现提示词(ClassHelper 技术栈版)

文档性质:这是一份「提示词」而非分析报告。请把本文件(或按章节分卷)直接投喂给 ChatGPT,要求它按第 17 部分的里程碑从零实现一个 ClassIsland 等价应用;实现技术栈采用 ClassHelper 桌面端(Electron 44 + Vue 3.5 + Element Plus + Pinia + Vite 8 + TypeScript 5.9 + pnpm monorepo),以等价替换 ClassIsland 原项目的 C# / .NET 8 / Avalonia / FluentAvalonia / XAML。

信息来源:ClassIsland v2.1 源码(repos/ClassIsland,C#/Avalonia)与 ClassHelper 源码(repos/ClassHelper-master,TypeScript/Electron)。文中所有确切数值、资源名、行为均尽量标注 文件:行号 证据;无源码依据处标注【推断】。ClassIsland 的截图与文档仅用于校对视觉语义,不复制其代码。

重要说明:本提示词要求实现者的一切自动验证(构建、冒烟、截图、动画检查)必须无头/离屏运行,禁止弹出可见窗口、禁止播放声音、禁止干扰用户桌面。这是本项目的强制纪律,也是验收的一部分(见第 18 部分)。

使用说明(给人类读者,不投喂给模型)

  1. 整体投喂:全文约 200k tokens,需使用上下文 ≥ 200k 的模型(如 GPT-5 级长上下文 / Gemini 2.5 Pro)才能一次粘贴;将本文件从「## 0.」到结尾整体粘贴,尾附一句:「请严格按此提示词实现,先给出实施计划与文件树,再按里程碑推进。」
  2. 分卷投喂:按 ## 0 + ## 1 + ## 2(基础)→ ## 3## 5(视觉与组件)→ ## 6## 8(业务)→ ## 9## 13(系统与数据)→ ## 14## 19(动画、资源、验收)的顺序分批发送;每批发完后要求模型复述关键参数,避免长上下文丢失。
  3. 推荐追问:「请先输出 20 个你认为最可能歧义的点」「请给出 packages/desktop-client 的完整文件树与每个文件的职责」「请先实现 M0/M1 并给出无头验证脚本」。
  4. 证据约定:文中 repos/ClassIsland/... 与 repos/ClassHelper-master/... 是规格来源路径,不是让你照抄的运行时依赖;实现时应把这些规格转写为 TypeScript/CSS。

0. 给 ChatGPT 的任务声明(从本节开始执行)

0.1 你的任务

从零实现一个名为 ClassIsland(实现代号 classisland-ts)的跨平台桌面应用:它常驻班级多媒体屏幕,以悬浮「岛」显示当天课表、当前课程、倒计时、日期时间、天气等信息;在上下课等重要时间点发出包含音效、语音与全屏特效的提醒;并提供课表编辑、档案管理、组件系统、主题、自动化、插件、自动更新等完整能力。灵感来源是 iOS 灵动岛(Dynamic Island),但它是为教室大屏与「不打扰授课」场景重新设计的桌面工具。

你必须交付可安装、可离线运行、可长时间无人值守运行的 Electron 应用,而不是网页 Demo 或原型。视觉与交互规格必须严格按本提示词执行,尤其是第 3(设计 tokens)、4(主界面)、5(组件)、14(动画)部分中的数值。

0.2 不可协商的技术栈

  • pnpm@11.8.0 monorepo;Node.js >= 20.19;TypeScript ~5.9.3(strict)。
  • Electron ^44.3.0 + electron-builder ^26.15.3;主进程/preload 用 esbuild 打包,渲染层用 Vite ^8.3.0 多入口(index.html 应用窗口、island.html 岛)。
  • Vue ^3.5.42 + Vue Router ^5.3.1 + Pinia ^4.0.3;Element Plus ^2.14.5 仅用于设置/管理类界面,不得进入岛的渲染进程。
  • 三个进程角色:主进程(窗口/调度/配置/更新/IPC)、岛渲染进程(常驻、透明、逐像素自绘)、应用窗口渲染进程(按需创建)。
  • 复用 ClassHelper 已验证的实现模式:独立 island.html + 独立透明 BrowserWindow、连续圆角 squircle.ts、弹簧动画 spring.ts、config.json 原子读写、contextBridge 白名单、tokens.css 设计变量、自研 auto-update.ts(禁止 electron-updater)、崩溃守卫 crash-guard.ts。
  • 不引入服务端依赖;所有业务数据本地存储;可选管理端联动只能作为 P2 可裁剪子包。

0.3 硬性纪律(违反即不合格)

  1. 所有自动验证必须无头/离屏执行;不得显示可见窗口、托盘气泡、系统通知或声音;需要人工观察的验证用显式 --visual 参数开启且不得作为默认。
  2. 渲染层零 Node 权限:preload 只暴露 contextBridge 白名单,不暴露 ipcRenderer;nodeIntegration=false、contextIsolation=true、sandbox=true。
  3. 主窗口(岛)不得抢焦点、默认不进入任务栏;不得使用 setBackgroundMaterial() 等破坏逐像素透明的 API。
  4. 动画必须 60fps:优先 transform/opacity,禁止 setInterval 逐帧驱动、禁止逐帧改布局属性。
  5. 核心功能离线可用;数据写入原子化并自动备份;迁移前先备份。
  6. 不得伪造验收结果;未验证项必须显式标注。

0.4 交付物

  • 完整源码 + pnpm-lock.yaml + 构建/打包脚本;README.md 含运行、构建、打包、数据目录说明。
  • docs/architecture.md、docs/data-schema.md、docs/plugin-api.md、docs/theme-api.md。
  • 至少 1 个示例课表档案、1 个示例主题、1 个示例插件(P1)。
  • 无头测试(单元 + 组件 + 端到端)与第 16 部分的验收报告。

0.5 工作方式

  1. 通读本提示词后,先输出:实施计划、完整文件树、你识别出的歧义点(一次性提问)。
  2. 按第 17 部分的 M0→M8 顺序实现;每个里程碑结束都交付「可无头启动 + 通过该阶段验收」的状态。
  3. 每完成一个模块,写清楚:实现了什么、证据(文件与行号)、未实现/推断项、如何验证。
  4. 遇到本提示词未覆盖的细节:按第 18.5 节的优先级裁决,并在代码注释标注「推断」。
  5. 不得把不同模块混在一起「顺手重构」;保持提交/变更范围单一、可回滚。

0.6 术语与阅读顺序

  • 岛(Island / MainWindow):常驻悬浮主界面;由一行或多行「行(Line)」组成。
  • 行(MainWindowLine):承载组件的横向容器,拥有自己的背景、进度条、遮罩与提醒气泡。
  • 组件(Component):最小显示单元(日期、时钟、倒计时、课程表、天气等),可嵌套。
  • 档案(Profile):一套课表/时间表/科目的配置集合,对应一个 JSON 文件。
  • 课表(ClassPlan) 与 时间表(TimeLayout):见第 6 部分。
  • 提醒(Notification)、自动化(Automation)、规则集(Ruleset)、主题(XamlTheme→CSS 主题包)、插件(Plugin):见对应章节。
  • 阅读顺序:0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13 → 14 → 15 → 16 → 17 → 18 → 19。