---
name: prototype
description: 快速验证设计的一次性原型。区分两条分支——逻辑/状态模型用终端交互 App，UI 布局用多变体路由切换。当用户想原型验证、检验数据模型或状态机、探索多种 UI 方案时触发。触发词：原型、prototype、验证方案、快速试验、让我玩一玩、试几个设计。
---

# 原型（Prototype）

原型是**回答一个问题的一次性代码**。问题决定形态，答完即删。

## 选分支

根据用户提示、周边代码、或直接询问来判断问题属于哪类：

- **"这段逻辑/状态模型的设计感觉对吗？"** → [references/LOGIC.md](references/LOGIC.md)。构建一个微型终端交互 App，手动驱动状态机穿越难以凭空推理的边界 Case。
- **"这个界面应该长什么样？"** → [references/UI.md](references/UI.md)。在单个路由上生成几个差异显著的 UI 变体，通过浮动底栏切换。

分支错误会浪费整个原型。若问题确实模糊且用户不在线，则默认按周边代码选择（后端模块→逻辑；页面/组件→UI），并在原型顶部声明该假设。

## 两条分支通用规则

1. **从第一天起就是一次性代码，且明确标记。** 将原型代码放在它实际服务的模块或页面旁边，名称中包含 `prototype` 以示一次性身份。
2. **一条命令即可运行。** 使用项目现有任务管理器（`pnpm <name>`、`python <path>` 等），用户不需要记路径。
3. **默认不持久化。** 状态存内存。若问题本身涉及数据库，使用临时 DB 或带有 "PROTOTYPE — wipe me" 标记的本地文件。
4. **跳过打磨。** 不写测试、不做错误处理（仅保留让原型能运行的最低限度）、不做抽象。目标是快速学到东西然后删掉它。
5. **暴露状态。** 每次操作后（逻辑）或每次切换变体后（UI），打印或渲染完整的相关状态。
6. **完成后删除或吸收。** 原型回答完问题后，要么删除，要么将经过验证的决策折叠进真实代码——不要让它在仓库里腐烂。

## 完成时

原型唯一值得保留的是**答案**。将其记录在某个持久化位置（commit message、ADR、issue，或原型旁边的 `NOTES.md`），连同它所回答的问题一并保存。若用户在场，几句对话即可；若不在，留好占位符供后续填写，然后删除原型。

## 详细指南

- 逻辑原型：[references/LOGIC.md](references/LOGIC.md)
- UI 原型：[references/UI.md](references/UI.md)
