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

53 lines
5.4 KiB
Markdown
Raw Blame History

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