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

11 KiB
Raw Permalink Blame History

Round 2 总简报:重构 ClassHelper 灵动岛 → 给 ChatGPT 的完整提示词

0. 目标变化(以本轮用户要求为准)

用户的新要求:基于 ClassIsland 项目反推出完整提示词,用它来重构 ClassHelper 的灵动岛。 即:不是从零新建一个 ClassIsland 克隆,而是让 ChatGPT 在 ClassHelper 现有仓库(pnpm monorepo,packages/desktop-client 等)里,参照 ClassIsland 的灵动岛(主界面)实现,把 ClassHelper 的灵动岛重构到位;技术栈、工程约定、既有数据与服务全部沿用 ClassHelper。

最终交付:D:\clword\ClassHelper灵动岛重构-给ChatGPT的完整提示词.md(简体中文,给 ChatGPT 的实现任务书,可直接投喂)。

1. 关键事实(已核对,必须遵守)

1.1 ClassHelper 灵动岛现状(详见 docs/app/island.md 与源码)

  • 独立透明窗口、不占任务栏;config.json.islandLayout.layout 为 fixed(经典)或 custom(自定义常驻),默认 fixed;两种布局共用一个原生窗口(src/main/island.ts)。
  • 经典 fixed:胶囊 + 详情卡,消息分普通/紧急、上课时普通通知暂存、普通叫人可点、紧急立即展开;支持细缝、触摸、失焦宽限、鼠标穿透/避让淡化。
  • 自定义 custom:多行 rows + expandedRows(无消息展开内容)、组件方案 schemes(多方案、JSON 导入导出)、组件树 nodes(shared/src/island-layout.ts 的 IslandComponentNode:id/kind/settings/appearance/advanced/children);行有 main / allowNotifications / gap;组件有 hideRules(in-class/no-message/no-class)、align、width、maxWidth;方案级 scale/color/foreground/opacity/radius/separated/spacing。
  • 组件种类:ISLAND_COMPONENTS = date, clock, weather, countdown, schedule, text, separator, slide, rolling, group, stack, notification, homework, call。notification/homework/call 为消息入口组件;组件库只展示前 11 类(消息类走铃铛/面板)。
  • 渲染入口:island.html → LayoutIslandApp.vue(选择经典 IslandApp.vue 或自定义 CustomIslandRuntime.vue),共用 src/island/ComponentNode.vue、ComponentIcon.vue、ClassicNotifications.vue、LessonReminderContent.vue、CoursewareTransfer.vue、spring.ts、squircle.ts、classic-island.css、custom-island.css、custom-runtime.css。
  • 主进程状态:src/main/island.ts(窗口几何/命中/触摸/消息队列/课程提醒/天气/课件);preload:src/preload/island.ts;渲染→主进程 IPC 走 contextBridge 白名单。
  • 课表数据来自服务端解析结果(ScheduleDto、IslandTimePointDto 等),天气用 Open-Meteo(15 分钟刷新、断网缓存标"缓存"),课程提醒含准备/上课/课间/下课前倒数/课中进度,下课前秒数徽标显示在课程名右侧(蓝色圆形,剩余一秒显示 -1)。
  • 课件传输状态优先覆盖岛内容(CoursewareTransfer.vue)。
  • 既有硬约束(AGENTS.md §4):保留经典岛连续圆角、投影常驻、触摸输入、失焦宽限、固定窗口几何护栏;禁止 setBackgroundMaterial() 破坏逐像素透明;消息按 id 去重;通知/叫人双播不得重复;编辑预览不创建额外桌面窗口;默认后台验证不创建可见岛或托盘,只有显式 --visual 才做桌面像素/动画验收。

1.2 ClassIsland 灵动岛基准(上一轮已整理,可直接复用 parts/03,04,05,07,14)

  • 无边框/透明/不抢焦点/默认鼠标穿透;行高 40;行内容 margin 0 12、min-width 20;行间距默认 5;圆角 RadiusX 默认 8(0–20);背景不透明度 0.5、行整体不透明度 1.0;背景 1px 描边 + 0 4 8 2 #48000000;字号 14/16/18/20;进度条 3px;选择框 1.5px 虚线 1/1.5;Fluent/Classic 两套主题;遮罩斜切 5 区权重 [0,0.1,0.2,0.4,0.2,0.1]、区段 360ms + 错峰 120ms、开 QuarticEaseOut / 关 QuadraticEaseIn、文字 delay 260/250ms + scale 1.1→1.0/750ms、退出 200ms (0.5,0,0.75,0);行宽过渡 Fluent 300ms (0.65,0,0.35,1) / Classic 550ms (0,1,0.5,1.1);通知队列优先级、强提醒全屏特效、音效/TTS;组件系统 11 类 + 容器;编辑模式(选择框/拖动/行设置抽屉/添加行/组件库);隐藏规则;多显示器停靠;壁纸取色已停用(P2)。
  • 完整细节在 parts/(上一轮产出):03 tokens、04 主界面、05 组件、07 提醒、14 动画(99 条)、10 设置、11 窗口。可裁剪/改写后复用。

2. 本轮重构决策(Lead 定,所有 part 必须一致)

  1. 在现有仓库内重构,不新建工程、不引入新框架:pnpm@11.8.0 monorepo;Electron ^44.3.0、Vue ^3.5.42、Element Plus ^2.14.5、Pinia ^4.0.3、Vue Router ^5.3.1、Vite ^8.3.0、TS ~5.9.3 原样沿用;不引入 ClassIsland 的 C#/Avalonia、不引入服务端新依赖。
  2. 目标视觉默认改为 ClassIsland 规格:岛可见行高 40、行内边距 12、行间距 5、圆角 8、背景不透明度 0.5、字号 14/16/18/20、进度条 3px、通知气泡/强提醒按 ClassIsland 参数。保留 ClassHelper 经典 WinIsland 外观作为可选风格(islandAppearance.style: 'classisland' | 'winisland',默认 classisland;经典胶囊交互在 winisland 下不变),用于老用户与回退。
  3. 两种模式的定位(最终以 parts-r/01 为准):
    • fixed(默认风格 classisland):重定义为 ClassIsland 风格的信息行——默认 1 行 = 日期 + 课程表,行高 40、圆角 8、背景不透明度 0.5、底部 3px 进度条;消息到来时在同一行内展开 ClassIsland 风格气泡,保留 ClassHelper 的暂存/紧急/叫人/已读规则。原「胶囊 + 详情卡」形态只在 winisland 兼容风格下保留(appearance.family='winisland')。
    • custom(常驻):保留现有 schemes/rows/nodes/expandedRows/编辑器的数据模型,按 ClassIsland 的行/组件/编辑模式/隐藏规则/动画规格重构渲染与交互;行高 40、组件间距、行设置抽屉、组件库拖拽、主行/允许提醒/淡出规则与 ClassIsland 对齐。
  4. 数据来源不迁移到 ClassIsland 本地档案:继续使用 ClassHelper 服务端解析后的 ScheduleDto/IslandTimePointDto/通知/作业/叫人/课件数据;ClassIsland 的 Profile/TimeLayout 只作为"语义参考",不引入其本地 JSON 档案体系。
  5. 消息/提醒:保留 ClassHelper 的优先级、去重、上课暂存、紧急展开、已读回执、安静模式等业务规则;在此基础上叠加 ClassIsland 的气泡两阶段、强提醒特效(Topmost)、倒计时进度条、行内进度条等视觉/交互;两者冲突时以"ClassHelper 业务语义优先,ClassIsland 视觉表现优先"为裁决。
  6. ClassIsland 的自动化/插件/主题市场/管理端/Excel 导入/更新器不在本轮范围(最多作为附录说明不实现);主题只做岛内样式(CSS 变量 + 两套内置风格)。
  7. 配置兼容:config.json.islandLayout 增加 version 字段与迁移函数;旧 fixed/custom 配置必须无损升级(组件节点、方案、外观值、编辑器行为保持),失败可回滚;旧字段 residentEnabled 继续兼容。
  8. 不打扰纪律:所有验证必须无头/离屏(verify:desktop 默认后台快速检查,不创建可见岛/托盘;只有显式 --visual 才做视觉验证),禁止自动弹窗、发声、占用真实桌面。

3. 文档结构(最终提示词)

Part 内容 负责人 文件
0 使用说明 + 给 ChatGPT 的任务声明(重构、约束、交付、工作方式) Lead parts-r/00-preamble.md
1 重构目标与范围(背景、目标态、Keep/Change/Add、非目标) Lead parts-r/01-objective.md
2 ClassHelper 灵动岛现状基线(文件、进程、数据、交互、既有规则) stack parts-r/02-current-state.md
3 ClassIsland 灵动岛基准规格(行为语义:行/组件/提醒/课程/隐藏/课程表/天气) features parts-r/03-classisland-baseline.md
4 目标架构与文件级改造清单(模块划分、文件、接口、IPC、改动类型) stack parts-r/04-file-plan.md
5 数据契约、schema 扩展与配置迁移(islandLayout v2、DTO 映射、迁移/回滚) stack parts-r/05-data-migration.md
6 设计 tokens 与视觉基线(颜色/字体/圆角/间距/阴影/层级/DPI;两套风格) design parts-r/06-tokens.md
7 岛结构与组件规格(窗口/几何/行/背景/进度/遮罩/编辑模式/11+ 组件逐个) ui-island parts-r/07-island-components.md
8 消息、提醒、课程提醒、强提醒特效、天气、课件覆盖(含像素与动画) features parts-r/08-messages-lessons.md
9 编辑器与设置页重构(IslandSettingsView / IslandEditorView / IslandComponentSettings / 设置页) windows parts-r/09-editor-settings.md
10 动画与动效映射(ClassHelper 现状 → 目标;逐项 ms/曲线/延迟/实现;含降级) design parts-r/10-animations.md
11 兼容性、性能、平台与测试基线(迁移回滚、无头验证、性能预算) Lead parts-r/11-compat-tests.md
12 验收清单(逐项可勾选) Lead parts-r/12-acceptance.md
13 重构里程碑(M0–M7) Lead parts-r/13-milestones.md

4. 写作规范(与上一轮一致)

  • 简体中文、祈使句、面向 ChatGPT;不是分析报告。
  • 证据:packages/...:行号(ClassHelper 仓库相对路径);ClassIsland 侧写 repos/ClassIsland/...:行号(相对本工作区),无法确认标【推断】。
  • 必须写清「改哪个文件、改成什么样、为什么、如何验证」;每个 part 末尾含「验收标准」。
  • 不建新工程、不改服务端、不引入新框架;坚持"重构"措辞。
  • 禁止构建/运行/截图/冒烟/启动 Electron,只读分析。用户明确要求后台静默,不要打扰。
  • 不要修改 repos/;只写 parts-r/、analysis/、最终由 Lead 汇总。

5. 待读清单(关键)

ClassHelper:docs/app/island.md、docs/dev/implementation.md、docs/dev/winisland-design-tokens.md、packages/shared/src/{island-layout,constants,motion}.ts、packages/desktop-client/src/main/island.ts、src/island/{LayoutIslandApp,IslandApp,CustomIslandRuntime,ComponentNode,ComponentIcon,ClassicNotifications,LessonReminderContent,CoursewareTransfer,spring,squircle}.ts/vue、src/island/{classic-island,custom-island,custom-runtime,lesson-ending}.css、src/preload/island.ts、src/renderer/island/bridge.ts、src/renderer/views/settings/{IslandSettingsView,IslandEditorView}.vue、src/renderer/components/IslandComponentSettings.vue、src/main/config.ts、src/types/desktop.d.ts。 ClassIsland:上一轮 parts/03,04,05,07,10,11,14 与 analysis/40-baseline.md 已整理,可直接引用;必要时回查 repos/ClassIsland 源码。