Files
CodeLikeDemo/01-需求与初始设计.md
2026-03-27 18:21:29 +08:00

219 lines
12 KiB
Markdown
Raw Permalink 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.

# 🎮 产品需求文档 (PRD)《Project Vibe: Ship It!》
## 1. 产品愿景与核心体验
* **游戏类型:** 桌面堆叠生存 (Desktop Stacking Survival) + 模拟经营 + Roguelike。
* **目标受众:** 开发者、PM、QA、设计师以及喜欢《Stacklands》或《密教模拟器》的策略玩家。
* **核心体验:** 玩家在一个没有网格的“桌面”上,通过**拖拽合并卡牌**来推进项目进度写代码、提需求、修Bug。在有限的时间内Sprint一边应对由**真实大语言模型 (LLM) 动态生成的突发危机**,一边积攒资源完成交付物。
* **VibeCoding 特色:** 游戏内的终极神卡是【Vibe助手】它可以跨职业融合任何卡牌大幅缩短进度条但有概率引入“技术债”卡牌。
---
## 2. 核心游戏循环 (Core Loop & Roguelike)
游戏采用经典的“局内战斗+局外成长”的 Roguelike 循环。
### 2.1 局内Sprint 冲刺期(生存与合成)
* **周期时长:** 每个 Sprint 现实时间约为 3-5 分钟。
* **胜利条件:** 在倒计时结束前利用桌面卡牌合成出规定数量的【交付物】3 个可用模块),且【项目资金】> 0。
* **失败条件:** 【项目资金】归零(被 Bug 或超时危机扣光)。
* **核心操作:** 拖拽卡牌重叠 -> 触发对应配方 -> 显示进度条 -> 倒计时结束产出新卡/资源。
### 2.2 局外Retrospective 复盘大会(成长抉择)
* **结算与奖励:** Sprint 成功后,剩余的时间和资源按比例转化为【项目奖金】。
* **肉鸽抉择3选1** 玩家从随机刷出的 3 个选项中选择 1 个强化自身:
* *新增高级卡牌:* 如【自动化测试脚本】(永久复用)。
* *获取遗物 (Relics)* 如【敏捷教练】(全局 Buff所有合成时间缩短 10%,但每回合扣除 5% 资金)。
* *清理牌库:* 花费资金销毁桌面上难以处理的【技术债】或【屎山代码】卡。
---
## 3. 核心机制设计
### 3.1 桌面与状态机 (The Board & State)
* **无网格桌面:** 界面是一个类似操作系统的桌面。卡牌可以任意摆放和堆叠。
* **全局资源:** 顶部 UI 显示当前 Sprint 的【倒计时】和【项目资金】。
* **卡牌堆叠判定:** 当卡牌 A 被拖拽并释放 (Drop) 在卡牌 B 上时,系统检索 `Crafting_Recipes` (合成配方表)。若匹配,两张卡牌进入 `Processing` 状态锁定,头顶出现进度条。
### 3.2 基础卡牌与职业卡池 (Classes & Decks)
玩家开局需选择职业,决定初始手牌和专属配方路线。
#### 1. 基础公共卡池 (所有职业共用的环境底座)
* **【资源卡】**
* `专注力 (Focus)`:基础合成消耗品。随时间自然蒸发。
* `咖啡 (Coffee)`:万能提神药。
* `预算 (Budget)`:用于在商店购买服务器或外包。
* `脑洞 (Idea)`:随机飘落在桌面的灵感。
* **【建筑/设施卡】 (放在桌面上长期生效)**
* `咖啡机 (Coffee Machine)` + `预算` = 自动每 15 秒产出 1 杯 `咖啡`
* `云服务器 (Cloud Server)`:承载高级代码,产出项目进度,但每 10 秒消耗 1 点 `预算`
* **【负面/垃圾卡】 (需要想办法消除,否则占满桌面或引爆危机)**
* `Bug`:由脏代码变异,会吃掉附近的 `专注力`
* `技术债 (Tech Debt)`无法移动占据桌面空间。3个 `技术债` 聚在一起会召唤一次 【LLM 重大危机】。
* `无意义的会议 (Pointless Meeting)`:随机抓取桌面上的一张 `实体卡(人)`,使其被锁定 20 秒,产出 `疲惫 (Burnout)`
---
#### 2. 👨‍💻 资深开发 (Developer) 的深度合成树:架构师之路
开发流派的乐趣在于**“从写屎山到重构成微服务”**的基建狂魔体验。
* **T1造砖阶段 (脏与快)**
* `开发人员` + `专注力` = `脏代码 (Dirty Code)` (需 3 秒)
* `脏代码` + `脏代码` = `面条代码 (Spaghetti Code)` (只需 2 秒,但 30% 几率同时产出 `Bug`)
* **T2重构阶段 (质量提升)**
* `面条代码` + `开发人员` + `咖啡` = `干净的代码 (Clean Code)` (需 15 秒)
* `脏代码` + `Vibe AI 助手` = `干净的代码` (只需 2 秒,极速重构!但 10% 几率产出 `开源协议侵权警告(危机卡)`)
* **T3架构阶段 (质变)**
* `干净的代码` + `干净的代码` = `可用模块 (Working Module)`
* `可用模块` + `云服务器` = **【微服务节点 (Microservice)】**(建筑卡:每 5 秒自动产出 1 个 `项目进度` 和 100 `预算`)
* *隐藏配方:* `开发人员` + `无意义的会议` = `摸鱼打代码` -> 产出 `开源组件` (高价值卡牌) + `老板的怒火`
---
#### 3. 📊 产品经理 (PM) 的深度合成树:空手套白狼
产品流派没有直接产出代码的能力,乐趣在于**资源调度、画大饼和踢皮球**。
* **T1需求制造**
* `产品经理` + `脑洞` = `一句话需求 (Vague Requirement)` (极快)
* `一句话需求` + `无意义的会议` = `PRD文档 (PRD)` + `画大饼 (Empty Promise)`卡片。
* **T2白嫖与外包**
* `画大饼` + `开发人员(NPC/队友)` = 临时将该开发者的合成速度提升 200%,但 10 秒后必定产出 `离职倾向 (Burnout)`(极度危险的负面卡)。
* `PRD文档` + `预算(1000)` = `外包团队` -> 产出 `粗糙的模块` (可用但随时会坏)。
* **T3乾坤大挪移 (解决危机的独特方式)**
* `产品经理` + `Bug` = `特性 (Feature)`。*(神级配方:直接把 Bug 卡强行重命名为特性卡,变成可交付物,极其幽默)*
* `产品经理` + `技术债` = `排期延期卡`。*(把技术债塞进排期,消除占用,但会减少 Sprint 最终结算奖励)*
---
#### 4. 🕵️ 测试工程师 (QA) 的深度合成树:陷阱与净化
测试流派的乐趣在于**“找茬”、建立自动化流水线**,看着 Bug 灰飞烟灭。
* **T1挑刺阶段**
* `测试员` + `脏代码` / `面条代码` = `Bug 报告` + `干净的代码` (提纯过程,需 10 秒)。
* `Bug 报告` + `开发人员` = `争吵 (Argument)` + `重构好的代码`
* **T2自动化防御**
* `测试员` + `专注力` + `咖啡` = `断言脚本 (Assert Script)` (消耗品武器卡)。
*`断言脚本` 拖到 `Bug``技术债` 上 = 瞬间将其秒杀,并掉落 `项目质量分`
* **T3建立流水线 (质变)**
* `测试员` + `可用模块` + `云服务器` = **【CI/CD 流水线】**(自动化建筑)。
* *作用:* 只要你把任何 `脏代码` 扔进 【CI/CD 流水线】它会自动吃进去5 秒后吐出 `干净的代码` 或者 `报警邮件`。玩家无需再手动派人去测试。
---
#### 5. 🎨 UI/UX 设计师 (Designer) 的深度合成树:美学的代价
设计师流派主打**提升项目溢价(卖更多的钱)**,但要面对甲方的反复无常。
* **T1原型设计**
* `设计师` + `专注力` = `线框图 (Wireframe)`
* `线框图` + `咖啡` = `高保真原型 (Figma Prototype)`
* **T2前端融合**
* `高保真原型` + `可用模块(后端)` = `绚丽的 App (Gorgeous App)`(交付时获得 3 倍预算奖励)。
* **T3甲方的折磨 (特殊的卡牌连环演变)**
* 当你打出 `绚丽的 App` 时,有概率触发连环负面状态:
* `设计师` + `甲方反馈` = `设计稿_V2`
* `设计师` + `设计稿_V2` = `设计稿_最终版`
* `设计师` + `设计稿_最终版` = `设计稿_打死不改_绝对最终_V8.psd`。(只有这张卡才能真正交付)。
---
### 💡 VibeCoding 视角的 JSON 数据结构设计
有了这么庞大且幽默的配方树,如果你用传统的 IF-ELSE 来写代码绝对会疯掉。但对于 AI 辅助编程来说,你只需要让 AI 帮你搭建一个**基于 JSON 解析的合成引擎**。
你可以直接把这个 JSON 结构发给大模型(如 Cursor让它生成核心逻辑
```json
// recipes.json (合成配方配置表)
[
{
"id": "recipe_spaghetti_code",
"inputs": ["dirty_code", "dirty_code"],
"required_actor": null,
"time_ms": 2000,
"outputs": [
{ "card_id": "spaghetti_code", "chance": 1.0 },
{ "card_id": "bug", "chance": 0.3 }
],
"description": "复制粘贴就是快但也容易出Bug。"
},
{
"id": "recipe_qa_purify",
"inputs": ["spaghetti_code"],
"required_actor": "qa_engineer",
"time_ms": 10000,
"outputs": [
{ "card_id": "clean_code", "chance": 1.0 },
{ "card_id": "bug_report", "chance": 1.0 }
],
"description": "测试老哥强行帮你揪出Bug并提纯代码。"
},
{
"id": "recipe_pm_magic",
"inputs": ["bug"],
"required_actor": "product_manager",
"time_ms": 5000,
"outputs": [
{ "card_id": "feature", "chance": 1.0 }
],
"description": "这不是Bug这是特性"
}
]
```
---
## 4. LLM 动态危机系统 (AI Director)
这是游戏的核心亮点。LLM 将作为“甲方/系统”实时生成针对玩家当前桌面弱点的危机卡。
### 4.1 触发与生成机制
1. **心跳检测:** 每隔 30 秒,游戏抓取当前桌面关键卡牌数量(如:资金 1w脏代码 5测试 0
2. **异步请求:** 将状态发送给 LLM如 OpenAI API请求生成一个针对性的危机。
### 4.2 API 延迟处理策略(极简且优雅)
* **预警卡生成(立即执行):** API 请求发出的瞬间,桌面上立刻凭空掉落一张中立卡牌【⚠️ 甲方正在输入...】。
* **UI 表现:** 卡牌显示 Loading 动画。玩家此时会有未知的压迫感,但无法对其进行操作。
* **翻转与爆发Promise Resolve** LLM 返回 JSON 后,预警卡带有动画翻转为真正的【红色危机卡】,并开始倒计时。
* **本地兜底 (Fallback)** 若请求超过 5 秒未返回,触发兜底逻辑,预警卡翻转为本地配置表中的随机通用危机(如【服务器宕机】)。
### 4.3 LLM 通信数据结构 (JSON 契约)
**System Prompt 要求 LLM 返回以下结构:**
```json
{
"crisis_name": "内存泄漏灾难",
"description": "你的脏代码堆积如山,服务器马上就要炸了!",
"timer_seconds": 30, // 玩家解题的时间限制
"penalty_type": "lose_money", // 超时惩罚:扣除资金
"penalty_value": 20000,
"required_solution_tags": ["need_test_card", "need_focus_card"] // 解除危机需要的卡牌标签
}
```
**解题玩法:** 危机卡带有两个空槽(对应 `required_solution_tags`)。玩家必须在 30 秒内将具有相应 Tag 的卡牌(如 `测试员卡``专注力卡`)拖拽到危机卡上,读条 3 秒后危机解除,转化为奖励。超时则执行惩罚。
---
## 5. VibeCoding 开发任务拆解建议
为了充分利用 VibeCoding 的能力,建议您按照以下阶段向 AI (Cursor/Copilot) 提交 Prompt逐步构建 MVP
### Phase 1: 核心前端框架与拖拽 (MVP)
* **技术栈选型:** React + TypeScript + Vite + TailwindCSS (或者 Zustand 用于全局状态管理)。
* **核心任务 1定义数据结构**。让 AI 帮您生成 `Card`, `Recipe`, `BoardState` 的 TypeScript Interface。
* **核心任务 2实现拖拽与碰撞判定 (Drag & Drop)**。不要用复杂的物理引擎,让 AI 写一个基于 HTML5 DnD API 或 `framer-motion` 的拖拽组件。判定逻辑为:“松开鼠标时,检查当前卡牌的坐标是否与另一张卡牌的包围盒重叠”。
* **核心任务 3实现倒计时状态机**。用 `useEffect``requestAnimationFrame` 实现两个重叠卡牌进入 `Processing` 状态,读条结束后触发回调生成新卡。
### Phase 2: 完善 JSON 配方表与职业系统
* 将配方逻辑完全抽离为静态 JSON 配置。
* **VibeCoding 优势:** 您只需写出 2 个示例配方,可以直接让大模型批量生成几十个符合“软件工程梗”的配方配置表。
### Phase 3: 接入 LLM 危机生成器 (API 联调)
* 编写 `useCrisisDirector` 自定义 Hook。
* 实现“预警卡 -> API Fetch -> 解析 JSON -> 翻转为危机卡 -> 5秒超时本地 Fallback” 的完整异步逻辑链路。
### Phase 4: Roguelike 循环包装
* 增加 Sprint 的总时间计时器。
* 增加结算画面和 3 选 1 的 UI 组件。