--- name: design-exploration description: 新功能设计探索流程。当用户有模糊想法要做新功能/新模块时使用。通过"需求收敛 → 技术调研 → ASCII 批量探索 → HTML 设计稿 → 全状态覆盖 → 需求总结"的结构化流程,从模糊想法产出可交付的设计参考文档,作为 PRD 阶段的输入。 --- 用户有一个模糊的想法,想做一个新功能或新模块,但还没想清楚具体要什么。通过结构化的探索流程,帮助用户从模糊想法收敛到明确的设计方案,并产出完整的设计参考文档。 ## 核心原则 - **不猜,多问** — 没确认范围不出图,没设计规范就问,拿不准就让用户选 - **ASCII 先行** — 先对齐信息结构和布局逻辑,逻辑对了再投入 HTML - **一次多方案** — 批量出 5-8 个方案让用户选方向,不要一个个试 - **全状态是必须的** — 正常态只是起点,异常态、边界情况、交互反馈必须穷举 - **决策要落纸** — 对话中确认的每个决策都写进需求总结,不能只存在对话上下文里 ## 输出物 每次探索产出 **3 个文件**,归档到 `设计/v{版本号}-{模块名}/` 目录下: | 文件 | 内容 | 用途 | |------|------|------| | `需求总结.md` | 背景、目标、功能范围、关键决策、技术约束 | PRD 阶段的输入,讲清楚"为什么做、做什么" | | `{模块名}-设计稿.html` | 主界面 HTML mockup | PRD + 前端开发的视觉参考 | | `{模块名}-全状态设计参考.html` | 所有页面状态、Toast、边界情况、交互规则表 | 前端开发直接对照实现 | 版本号和模块名由用户决定,必须问用户确认。 ## 工作流程 ### 第 1 步:需求发散与收敛 用户说了模糊想法后,主动追问: - **痛点是什么** — 现在遇到了什么问题?为什么想做这个? - **核心场景** — 最典型的使用场景是什么? - **边界在哪** — 这个版本要做什么?不做什么? 整理成结构化的需求共识: ``` 做什么: - xxx - xxx 不做什么: - xxx 载体:独立应用 / 已有应用的新 Tab / 插件 / ... ``` **禁止**:用户说了一句话就开始出图。必须先对齐需求边界。 ### 第 2 步:技术调研(按需) **判断是否需要调研**:如果功能涉及外部数据(配置文件、API、第三方系统、文件格式),必须先调研技术约束。如果是纯 UI 功能不涉及外部依赖,跳过。 调研内容: - 数据存储位置和格式 - 现有系统的接口和限制 - 技术可行性验证 调研结果会直接影响设计方案(比如发现两个工具配置格式不同,决定了界面需要展示"类型"列)。 **禁止**:跳过调研直接画图,画出来发现技术上实现不了。 ### 第 3 步:ASCII 批量探索 一次出 **5-8 个**不同思路的 ASCII 布局方案,每个方案包含: - ASCII 布局图 - 一句话说明核心思路 ``` 方案 A:卡片列表 + 工具勾选 ┌──────────────────────────────────┐ │ ┌────────────────────────────┐ │ │ │ pencil [✓] CC [✓] CX│ │ │ └────────────────────────────┘ │ └──────────────────────────────────┘ 方案 B:表格视图,一行一个 ┌──────────────────────────────────┐ │ 名称 类型 CC CX │ │ pencil stdio [✓] [✓] │ │ github http [✓] [✓] │ └──────────────────────────────────┘ ``` 用户可以: - 直接选一个方案 - 组合多个方案的元素("B 的结构 + E 的开关风格") - 全部否掉,补充新的方向 **禁止**: - 只出 1-2 个方案(用户没有选择空间) - 超过 10 个方案(选择困难) - 方案之间差异太小(换汤不换药) ### 第 4 步:确认设计风格 问用户以下问题: 1. **有没有已有的设计规范?**(如 design-system.html) - 有 → 读取并严格遵循 design tokens(颜色、字号、圆角、间距) - 没有 → 问风格偏好,或直接出图让用户挑感觉 2. **有没有要参考的已有页面?**(外框、导航结构) - 有 → 读取参考页面,对齐外框样式(如 mac-window、sidebar 布局) - 没有 → 按独立页面处理 3. **载体形式?** - 已有应用的新页面/Tab → 必须对齐已有页面的外框和导航 - 独立应用 → 自定义外框 - 其他 → 问清楚 **禁止**:没问就默认使用某个设计规范。 ### 第 5 步:HTML 设计稿 基于选定方案 + 确认的设计风格,输出 HTML mockup: - 使用真实数据填充(不用 lorem ipsum) - 如有设计规范,严格使用 CSS 变量 / design tokens - 如有参考页面,外框结构保持一致 输出后让用户浏览器打开查看,根据反馈微调。微调是具体的小修改(间距、配色、文案),直接执行,不需要重新走方案选择。 ### 第 6 步:全状态覆盖 产出一个完整的全状态设计参考 HTML,固定包含以下内容: #### 必须覆盖的页面状态 | 状态 | 说明 | |------|------| | 正常态 | 有数据的标准展示 | | 加载态 | 数据加载中(spinner + 禁用交互) | | 空态 | 没有数据,引导文案 | | 搜索/筛选无结果 | 有数据但当前条件无匹配 | | 错误态 | 数据加载失败、文件不存在、格式错误等(按场景拆多个) | | 部分可用 | 部分数据源可用、部分失败 | #### 必须覆盖的交互反馈 - **Toast 汇总**:所有操作的成功/失败/警告 Toast,包含具体文案 - Toast 规则:位置、时长(成功短、错误长)、同时最多显示几条 #### 必须覆盖的边界情况 - 长文本截断(名称、路径、URL) - 大量数据滚动 - 其他根据具体场景补充 #### 必须包含的交互行为规则表 表格格式,列定义: | 触发 | 用户操作 | 系统行为 | 反馈 | |------|---------|---------|------| | 用户/系统/异常 | 具体操作 | 详细的系统处理步骤 | Toast/状态变化/界面更新 | 覆盖所有用户操作和系统行为的完整映射,前端开发直接对照实现。 #### 文档结构 - 顶部:标题、版本、日期 - 目录:锚点跳转 - 每个状态一个 section:标签 + 标题 + 说明 + 预览截面 + 标注 - 底部:交互行为规则表 **禁止**:只做正常态就结束。全状态覆盖是本流程的核心交付物。 ### 第 7 步:需求总结 + 归档 按模板(`templates/需求总结-模板.md`)生成需求总结文档。 将对话中确认的所有决策提取出来,写入"关键决策"部分。这些决策往往散落在对话各处,必须主动收集整理,不能遗漏。 三个文件归档到 `设计/v{版本号}-{模块名}/` 目录下。版本号和模块名问用户确认。 ``` 设计/v0.11-MCP管理/ ├── 需求总结.md ├── mcp-manager-设计稿.html └── mcp-manager-全状态设计参考.html ``` ## 过程中的沟通规范 ### 必须问用户的 | 时机 | 问什么 | |------|--------| | 第 1 步 | 痛点、场景、边界(做什么/不做什么) | | 第 3 步 | 选哪个方案 | | 第 4 步 | 有无设计规范、参考页面、载体形式 | | 第 5 步 | mockup 效果是否满意,有无微调 | | 第 6 步 | 全状态覆盖有无遗漏的场景 | | 第 7 步 | 版本号和模块名 | ### 不需要问用户的 | 事项 | 直接做 | |------|--------| | 全状态要不要覆盖 | 必须覆盖,不用问 | | 交互规则表要不要写 | 必须写,不用问 | | 需求总结要不要输出 | 必须输出,不用问 | | Toast 文案 | 先给出建议,用户不满意再调 | ### AI 绝不应该做的 - 用户说了一句模糊想法就开始出 HTML - 只出一个 ASCII 方案 - 只做正常态不管异常态 - 跳过技术调研直接画图(如果涉及外部数据) - 把决策留在对话里不写进需求总结 - 自己编版本号和模块名 - 没问就默认使用某个设计规范