- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构) - ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本) - 投喂指南、分卷、逐节文件 - 调研记录、一致性基线、生成与质检脚本
5.4 KiB
5.4 KiB
18. 禁止事项与实现边界
以下为硬性红线。违反任一项即视为交付不合格。
18.1 关于「不打扰」的硬性要求
- 禁止任何会显示可见窗口或发出声音的自动验证:自动化测试、冒烟脚本、构建检查必须在
--headless/ 离屏 / 隐藏窗口模式下运行;不得创建可见的岛、托盘气泡、系统通知、声音。验证脚本必须默认静默,需要人工观察时由显式参数开启(例如--visual),且不得作为 CI 默认。 - 禁止在开发/构建过程中自动创建桌面快捷方式、开机自启项、全局快捷键;这些只能由用户在设置中主动开启。
- 禁止把主窗口做成会抢占焦点或进入任务栏的普通窗口:默认
focusable=false、skipTaskbar=true、show=false直到首帧准备好;不得使用setAlwaysOnTop之外的 API 强制置顶到系统级(如 Windows 的SetWindowPos HWND_TOPMOST需与 Electron 的置顶设置一致,避免与全屏应用冲突)。 - 禁止用
setBackgroundMaterial()(Electron 的 Windows 材质 API)破坏逐像素透明;透明背景必须由无边框透明窗口 + CSS 自绘实现,以保证圆角与阴影的正确性。 - 禁止自动播放声音:提醒音效仅在提醒触发时播放;调试/测试静音;首次启动不播放。
18.2 技术红线
- 禁止让 Element Plus 的全局默认样式进入岛渲染进程:
island.html不得引入 Element Plus 的全局 CSS;岛使用自研 CSS + 设计 tokens。Element Plus 仅用于设置中心等管理型界面。 - 禁止在渲染进程开启 Node 集成;preload 不得暴露
ipcRenderer、require、process、文件系统能力;跨桥只传纯数据(不得传 Vue Proxy/函数/类实例)。 - 禁止把动画交给
setInterval/setTimeout逐帧驱动(弹簧动画用 rAF + 物理积分;其他用 CSS transition/keyframes/Web Animations)。 - 禁止用 JS 直接改
width/height/top/left触发同步布局做动画;优先transform/opacity,尺寸变化用 FLIP 或弹簧 +ResizeObserver批量更新。 - 禁止使用
unsafe-eval、new Function、远程加载并执行 JS;CSP 必须严格;不得通过file://加载用户可写目录中的可执行脚本。 - 禁止把核心功能依赖云端:断网时课表、提醒、自动化、组件、设置、主题必须全部正常;天气/更新/插件市场允许降级。
- 禁止把敏感信息(令牌、密码、完整用户路径)写入日志或打包进安装包;
check-bundle-secrets式构建门禁必须保留(若实现管理端可选模块)。 - 禁止硬编码绝对路径;所有资源使用相对/
app://协议;品牌图片通过打包资源 URL 引用。 - 禁止引入与原技术栈冲突的框架(如再引入 React/Angular、再引入第二套 UI 组件库做岛);确需引入库时必须说明不可替代性并锁定版本。
18.3 数据与安全红线
- 禁止未备份就迁移/覆盖用户数据:任何 schema 升级、导入、恢复操作先写备份,失败可回滚;删除档案/主题/插件必须二次确认。
- 禁止静默删除或重置用户配置;配置损坏时保留原文件为
.bak并提示。 - 禁止在测试中使用真实班级数据;测试必须使用临时目录与夹具数据;测试结束清理临时数据,不得触碰用户真实配置目录。
- 禁止自动化静默执行危险行动:关机/重启/注销/锁屏/删除文件等行动必须二次确认(或明确的免确认设置),测试模式必须假执行;执行前做权限与参数校验,执行后写审计日志。
- 禁止插件/主题获得默认 Node 权限;插件代码在受限环境运行(独立进程或 Worker + 白名单 API),安装前展示权限。
- 禁止执行任意 URL/命令:仅允许显式协议(http/https)与用户指定程序路径;路径参数做规范化与存在性校验,防止命令注入。
18.4 质量与流程红线
- 禁止用占位符/
TODO交付核心功能:所有 P0/P1 功能必须真实可用;未完成项必须在验收报告中显式列出,不得隐藏。 - 禁止伪造验收结果:截图、日志、测试输出必须来自实际运行;未验证的项标注「未验证」。
- 禁止为了通过验收修改验收标准或删除测试;标准以本提示词为准。
- 禁止跳过像素级检查:主界面、设置窗口、提醒、OOBE 至少各保留一份基准截图与 diff 报告。
- 禁止把「默认值」写成 0/空导致功能不可见:所有默认值必须与第 10、13 部分的默认值表一致。
- 禁止破坏兼容性:数据 schema、插件 API、主题变量一旦发布,只允许增量变更;破坏性变更必须提供迁移与版本字段。
18.5 本提示词未明确时的裁决顺序
当实现细节与本提示词冲突或缺失时,按以下优先级裁决:
- 本提示词明确写出的数值与行为(最高优先级)。
- ClassIsland 的公开文档与截图中可见的行为(可参考
docs.classisland.tech,但不得引入其代码)。 - ClassHelper 已实现的桌面岛约定(
repos/ClassHelper-master/packages/desktop-client/src/island与src/main/island.ts)。 - Fluent Design / iOS 灵动岛的一般设计规范。
- 你的工程判断(必须在代码注释与交付说明中标注「推断」)。