- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构) - ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本) - 投喂指南、分卷、逐节文件 - 调研记录、一致性基线、生成与质检脚本
11 KiB
11 KiB
团队总简报:反推 ClassIsland 的「给 ChatGPT 的完整实现提示词」
0. 最终交付物
- 主交付:
D:\clword\ClassIsland-给ChatGPT的完整提示词.md(简体中文,由 Lead 汇总各 part 而成)。 - 该文件是一份可以直接粘贴给 ChatGPT 的提示词:用户角色是「实现者」,提示词要求 ChatGPT 从零实现一个 ClassIsland 等价的桌面课表信息工具,技术栈采用 ClassHelper 的 Electron + Vue 3 技术栈(见 §4)。
- 备选交付:
out/下的分卷版(若有时间)。
1. 任务定义
- 深度研读
repos/ClassIsland(C# / .NET 8 / Avalonia / FluentAvalonia,ClassIsland v2.x 源码,含 MainWindow、Core、Shared、PluginSdk、平台层等)。 - 深度研读
repos/ClassHelper-master(TypeScript / pnpm monorepo / Electron 44 / Vue 3.5 / Element Plus / Pinia / Vite 8 / Socket.IO / Prisma,含 desktop-client 的「灵动岛」实现)。 - 把 ClassIsland 的全部功能、全部界面、全部动画、全部像素级参数反写成一份超详细的实现规格提示词;实现技术栈按 ClassHelper 的栈来写(必要处给出等价映射方案)。
- 输出不是分析报告,而是祈使句提示词:面向 ChatGPT 的实现任务书,要求「必须/不得/应当」,包含具体数值、文件结构、数据结构、交互、动画曲线、验收清单。
2. 硬性纪律(极重要)
- 绝对禁止构建、运行、启动、截图、冒烟、smoke/verify 任何程序;禁止
dotnet build、dotnet run、pnpm dev、electron、npm、任何会弹窗或占用屏幕的命令。用户明确要求「不要打扰我,后台做好」。 - 只允许静态分析:读文件(read 工具,UTF-8)、grep、glob、读取图片尺寸等不启动 UI 的操作。可以运行纯文本处理命令(如读取文件行数),但不得执行安装/构建/启动。
- 不要修改
repos/下任何文件。只在analysis/、parts/、out/写文件;不要动别人的文件。 - 不要提交、不要联网克隆新仓库(需要的信息用已有文件 + 必要时 web_fetch 官方文档/README)。
3. 每个 part 文件的格式规范
文件路径:parts/NN-名称.md。文件内容仅包含该部分的正文,标题从 ## N. 标题 开始(一级标题由 Lead 汇总时生成)。
写作要求:
- 简体中文;技术名词保留英文原名(如 FluentAvalonia、TransparencyLevelHint、Storyboard)。
- 面向 ChatGPT 的实现指令:用「必须 / 不得 / 应当 / 需要」等祈使句;不要写「本项目如何如何」的旁观式分析。
- 每个视觉/行为参数尽量给确切数值:宽高、Margin、Padding、CornerRadius、FontSize、FontWeight、颜色(HEX/资源名)、透明度、动画 Duration(毫秒)、缓动曲线(如 CubicEaseOut、0.65,0,0.35,1.0)、层级(ZIndex/窗口层级)、DPI/缩放规则。
- 每个数值/行为尽量标注来源:
repos/ClassIsland/ClassIsland/MainWindow.axaml:282这种相对路径:行号;无法从源码确认的写【推断】。 - 每个功能点建议覆盖:目的、默认值/默认行为、触发条件、UI 表现(像素级)、动画、边界/异常情况、数据结构(JSON 字段)、与其他模块的联动、验收标准。
- 参照现有代码里的命名(MainWindow、MainWindowLine、Component、Profile、ClassPlan、TimeLayout、Notification、Automation、Ruleset、XamlTheme、Settings 等)。
- 篇幅:不设上限,宁详勿略;但禁止空洞套话。目标每个 part 至少 3000 中文字,核心技术 part 6000+。
4. 技术栈事实(ClassHelper,实现时采用)
来自 repos/ClassHelper-master/package.json、pnpm-workspace.yaml、各 packages/*/package.json、AGENTS.md:
- pnpm@11.8.0 monorepo,Node >= 20.19;根 package.json 为版本单一来源。
- 包:
packages/shared(三端共享类型/常量/权限/动效/岛方案与课件契约)、packages/ui(共享 Vue 控件、主题、tokens.css)、packages/desktop-client(Electron 主进程 + preload + 主窗口渲染进程 + 独立灵动岛渲染进程)、packages/server(Express 5 + Prisma 7 + Socket.IO,API 前缀/api)、packages/web-admin(Vue 管理端 PWA)。 - desktop-client 依赖:Electron ^44.3.0、Vue ^3.5.42、Element Plus ^2.14.5、Pinia ^4.0.3、Vue Router ^5.3.1、axios、socket.io-client、Vite ^8.3.0、TypeScript ~5.9.3、electron-builder 26。
- 灵动岛实现要点(必须复用/对齐):独立
island.html渲染入口 + 独立 BrowserWindow(透明、无边框、置顶、点击穿透、失焦宽限期等,见src/main/island.ts);squircle.ts连续圆角(超椭圆指数 4.2、每角 14 段);spring.ts弹簧动画(stiffness 0.10、damping 0.68、换向动量保留 35%、单帧位移 ≤ 剩余距离 20%、snap 阈值 0.05px、60fps 帧单位);classic-island.css/custom-island.css;配置config.json(主进程config.ts);renderer/composables/motion.ts;renderer/styles/index.css的 CSS token;IPC 走 contextBridge 白名单(src/preload/*)。 - 安全约定:preload 只暴露 contextBridge 白名单、不暴露 ipcRenderer;保留 CSP;离线缓存隔离;不使用
setBackgroundMaterial()破坏逐像素透明。 - 后端在本任务中不要求(ClassIsland 是本地单机应用);如需数据层,优先采用本地文件 + IndexedDB(对齐 ClassHelper 客户端离线缓存模式),不要引入服务器依赖。若必须用到(可选),说明为可裁剪模块。
5. 术语表(统一用词)
- 主界面 / 岛:ClassIsland 的悬浮课表窗口(MainWindow,可拆分为多行「岛」)。
- 主界面行:MainWindowLine(一行;含组件集合、背景、进度条、遮罩、提醒气泡)。
- 组件:Component(日期、时间、倒计时、课程表、天气、文本、滚动、堆叠、分组、分隔线等)。
- 档案:Profile(一套课表/时间表/科目的配置,JSON 文件)。
- 课表:ClassPlan(某周的每日课程);时间表:TimeLayout(时间点 TimeLayoutItem 列表)。
- 时间点:TimeLayoutItem,类型 上课/课间/分割线/行动(OnClass/Breaking/Separator/Action)。
- 提醒:Notification(NotificationRequest/NotificationProvider/NotificationHostService);强提醒:提醒特效(Topmost 全屏遮罩)。
- 自动化:Automation(触发器 Trigger + 动作 Action + 规则集 Ruleset/Rule)。
- 主题:XamlTheme(ClassIsland 用 XAML 资源字典;实现时映射为 CSS 变量 + 主题包,见 part 9)。
- 设置:Settings(
Settings.json,所有字段有默认值)。 - 插件:Plugin(ClassIsland 的 .cipx/DLL 扩展;实现时映射为 npm 包/动态模块,见 part 12)。
- 提醒优先级:NotificationPriority(Low/Medium/High 等,按源码)。
6. 分工与 part 对应
| Part | 内容 | 负责人 | 文件 |
|---|---|---|---|
| 01 | 总纲:产品定位、目标用户、体验原则、总体架构图 | Lead | parts/01-overview.md |
| 02 | 技术栈与工程结构(ClassHelper 栈、目录、进程模型、构建) | stack | parts/02-tech-stack.md |
| 03 | 设计系统 tokens(颜色/字体/字号/圆角/间距/阴影/层级/动效曲线/深浅色) | design | parts/03-design-tokens.md |
| 04 | 主界面(岛)像素级规格:窗口、行、背景、进度、遮罩、编辑模式、隐藏/穿透、多显示器、右键菜单 | ui-island | parts/04-main-window.md |
| 05 | 组件系统:全部组件逐个规格(含设置项、布局、动画) | ui-island | parts/05-components.md |
| 06 | 课程表/时间表/档案/科目/周次/调课/导入导出 | features | parts/06-schedule-profile.md |
| 07 | 提醒系统:提供者、队列、气泡、强提醒、音效、TTS、天气提醒 | features | parts/07-notifications.md |
| 08 | 自动化:触发器/动作/规则集/条件 | features | parts/08-automation.md |
| 09 | 主题系统:内置主题、主题包格式、壁纸取色、主题编辑器 | design | parts/09-themes.md |
| 10 | 设置中心:页面树、每页控件与默认值、搜索、缓存策略 | windows | parts/10-settings.md |
| 11 | 其他窗口:启动闪屏、欢迎向导 OOBE、通知中心、崩溃/恢复、数据迁移、更新、教程、作者/致谢等 | windows | parts/11-other-windows.md |
| 12 | 插件系统 + 多进程 IPC + 单实例 + 自动更新(ClassHelper 映射) | stack | parts/12-plugins-ipc.md |
| 13 | 数据模型与存储:Settings/Profile/ClassPlan/TimeLayout/Automation/Notification JSON schema、备份、迁移、路径 | stack | parts/13-data-storage.md |
| 14 | 动画与动效总表:每个动画的触发、属性、时长、曲线、层级 | design | parts/14-animations.md |
| 15 | 资源清单:图标、字体、音效、图片、本地化、主题预览 | design | parts/15-assets.md |
| 16 | 质量门禁与验收清单 | Lead | parts/16-acceptance.md |
| 17 | 开发里程碑与实现顺序 | Lead | parts/17-milestones.md |
| 18 | 禁止事项与边界(禁止冒烟、性能底线等) | Lead | parts/18-forbidden.md |
7. 产出质量自检(提交前逐条确认)
- 所有关键数值有来源或标注【推断】,没有编造「看起来很精确」的数字。
- 覆盖了该 part 对应源码目录的全部主要文件(列出已读文件清单在
analysis/备注中)。 - 用词遵循术语表;part 之间不冲突(例如窗口圆角、动画时长、颜色 token 名)。
- 有「验收标准」小节:实现者如何自查这一部分做对了。
- 没有出现「我们可以/建议考虑」这类模糊表述。
- 没有运行任何 UI/构建命令。
8. 参考入口(先读这些)
ClassIsland:
repos/ClassIsland/README.md、repos/ClassIsland/AGENTS.md、repos/ClassIsland/doc/(文档)repos/ClassIsland/ClassIsland/MainWindow.axaml(686 行,主界面)、MainWindow.axaml.csrepos/ClassIsland/ClassIsland/Models/Settings.cs(全部设置默认值)repos/ClassIsland/ClassIsland/Controls/MainWindowLine.axamlrepos/ClassIsland/ClassIsland/XamlThemes/{FluentTheme,ClassicTheme}/(主题与样式)repos/ClassIsland/ClassIsland/Controls/Components/(组件)repos/ClassIsland/ClassIsland/Views/(全部窗口)repos/ClassIsland/ClassIsland.Core/(框架、抽象、控件、服务)repos/ClassIsland/ClassIsland/Assets/(图标/字体/音效/教程/Localization) ClassHelper:repos/ClassHelper-master/AGENTS.md、README.md、docs/repos/ClassHelper-master/packages/desktop-client/src/main/island.ts、config.ts、ipc.tsrepos/ClassHelper-master/packages/desktop-client/src/island/*(IslandApp.vue、spring.ts、squircle.ts、classic-island.css)repos/ClassHelper-master/packages/desktop-client/src/preload/*、src/renderer/**repos/ClassHelper-master/packages/ui/src/tokens.css、theme.cssrepos/ClassHelper-master/packages/desktop-client/src/renderer/composables/motion.ts
提示:中文文件是 UTF-8;PowerShell Get-Content 可能乱码,请用 read 工具读文本。