你决定做什么,AI 自主做完,你体验确认。
- 你是产品经理 + 最终审核者,只参与重大决策
- AI 是全栈执行者,自主完成 PRD、技术选型、测试、编码、构建、回归验证
- 中间所有环节 AI 自主闭环,不频繁中断你
| 你的职责 | AI 的职责 |
|---|---|
| 决定做哪些功能(产品定型) | 写 PRD + 自查 |
| 启动开发(说"做键盘导航") | 写测试 + 写代码(TDD) |
| 体验验证(好不好用?) | 技术选型 + 依赖安装 |
| 里程碑审核(每个 Tier 完成后) | Lint / Typecheck / 构建 / 回归 |
给每个功能打分的工具。三个维度各 1-5 分,相乘得到总分(满分 125)。
| 维度 | 含义 | 5 分 | 3 分 | 1 分 |
|---|---|---|---|---|
| I (Impact) | 必要性:不做会痛吗? | 刚需痛点 | 明显改善 | 锦上添花 |
| C (Confidence) | 信心:你确定这个评估准吗? | 100% 确定 | 大概是这样 | 猜的 |
| E (Ease) | 容易度:做多容易? | 半天内 | 1-3 天 | 一周以上 |
公式:ICE Score = I × C × E
按 ICE 分数分档。Tier 本身不是方法论,只是把数字分成人能一眼看懂的档位。
| Tier | 分数范围 | 含义 | 对应优先级 |
|---|---|---|---|
| Tier 1 | ≥ 3.5(归一化后)或 ICE ≥ 80 | 必须做 | P0/P1 |
| Tier 2 | 3.0 - 3.5 或 ICE 48-79 | 值得做 | P1/P2 |
| Tier 3 | 2.5 - 3.0 或 ICE 27-47 | 可以做 | P2/P3 |
| Tier 4 | < 2.5 或 ICE < 27 | 暂缓 | P3/P4 |
它们是同一条流水线的三个步骤:
ICE 打分(得到数字) → Tier 分档(得到档位) → Roadmap 排期(得到时间线)
键盘导航: 125 Tier 1 本周做
Session备注: 80 Tier 1 本周做
Session导出: 64 Tier 2 下周做
- ICE 解决"凭什么是这个排名"
- Tier 解决"这些排名怎么分组执行"
- Roadmap 解决"什么时间做什么"
必要性 I=5:不用键盘导航,每次都要鼠标点,高频操作很烦
信心 C=5:100% 确定↑↓选中、Enter进入、Esc返回,没有不确定性
容易度 E=5:半天能做完,只改 SessionList.tsx,不需要新组件
ICE = 5 × 5 × 5 = 125 → Tier 1
必要性 I=4:确实想看花了多少钱
信心 C=3:不确定 opencode 的 token 字段是否都能取到
容易度 E=2:需要新页面 + 图表库 + 数据聚合,至少 3 天
ICE = 4 × 3 × 2 = 24 → Tier 3
你告诉 AI "做 {功能名}" 或 "做 Tier 1"。
- 如果 ROADMAP 已有且 PRD 已通过 → 直接 Phase 2
- 如果 ROADMAP 已有但无 PRD → Phase 1
- 如果 ROADMAP 没有 → Phase 1(先加入 ROADMAP)
AI 自主完成以下工作:
- 更新 ROADMAP.md(ICE + Tier + Estimate + Dependencies)
- 写
docs/features/xxx.md,必须包含:- 用户故事(谁、要什么、为什么)
- 验收标准(正常路径 + 边缘情况)
- 影响范围(会修改的文件、可能影响的功能)
- 技术方案(含数据库变更)
- 测试计划
- 回滚方案(数据库回退 SQL + 新增文件列表)
- Out of Scope(明确不做的事)
- 进度 checklist(全部未勾选)
- PRD 自检(AI 自行完成,不找你):
□ 验收标准是否可测试(不能有"用户体验好"这种主观标准)
□ 边缘情况是否覆盖(空数据、极端数据、组合场景)
□ 技术方案是否可行(检查依赖兼容性、Electron 限制)
□ 影响范围是否完整(读了所有会修改的文件)
□ Out of Scope 是否明确
□ 是否与已有功能的 PRD 矛盾
自检全部通过 → 直接进 Phase 2。不通过 → 自行修正 PRD 再自检。
AI 自主完成以下工作:
① 写测试用例
② 写实现代码
③ 跑测试 → 失败?自行调试(最多 3 次)
④ Lint + Typecheck
⑤ 构建验证(npm run build)
⑥ 全量回归测试(不只是当前功能的测试)
⑦ 每完成一步 → 更新 PRD 的进度 checklist
| 情况 | AI 行为 |
|---|---|
| 技术问题(方案明确、无副作用) | 自主解决,记录决策到 PRD 进度备注 |
| 多个方案各有利弊 | 选最保守的方案,记录理由 |
| 需求遗漏 | 自主补充 PRD 验收标准,标注变更说明 |
| 测试失败 | 自行调试,最多重试 3 次,换方案再试 |
| 功能不可行 / 成本远超预期 | 🔴 停下来找你(影响"做不做"的产品决策) |
| 需要付费外部服务 | 🔴 停下来找你(影响成本) |
| 安全风险 | 🔴 停下来找你(影响安全) |
- 需安装新依赖 → 先问(尤其含 native 模块的包)
- 不得实现 Out of Scope 中的内容
- 不得"顺手"加 PRD 之外的功能
- 严格按 PRD 执行,除非自主修正并记录
AI 输出交付摘要:
"键盘导航已完成。改了 SessionList.tsx + useStore.ts。
请验证以下场景:
1. 按↑↓能选中上/下一条
2. Enter 进入详情
3. Esc 返回列表
4. 空列表时不报错"
你启动 App 手动体验,反馈:
| 你的反馈 | AI 行为 |
|---|---|
| ✅ 通过 | 进入 Phase 4 |
| 🔄 要改(实现问题) | AI 自主修改 → 重新自检 → 再交给你(最多 3 轮) |
| 🔄 要改(需求问题) | 回到 Phase 1 重写 PRD |
| ❌ 取消 | ROADMAP 标 Cancelled |
修改超过 3 轮仍未通过 → AI 建议"取消或拆分该功能"。
- 更新 PRD.md(加新功能的整体描述)
- 更新 ROADMAP.md 状态 → Done
- 更新 PRD 进度 checklist → 全部 ✅
- 问你是否 git commit(不主动提交)
- 问"继续做下一个?" → 是 → Phase 0
| 时刻 | 你做什么 | 频率 |
|---|---|---|
| 产品定型 | 决定做什么功能、ICE 维度、产品方向 | 一次性 |
| 启动开发 | 说"做 XX" 或 "做 Tier 1" | 每个功能 1 次 |
| 体验验证 | 打开 App 感受"好不好用" | 每个功能 1 次 |
| 里程碑审核 | 每个 Tier 完成后整体看一遍 | 每个 Tier 1 次 |
中间的 PRD 编写、技术选型、测试、代码、lint、构建、回归 — 全部 AI 自主完成。
💡 Proposed → 📋 Planned → 📝 PRD Done → 🔨 In Progress → 🔍 Review → ✅ Done
↘
❌ Cancelled
| 状态 | 含义 | 谁触发 |
|---|---|---|
| 💡 Proposed | 刚提出,未评估 | AI(发现新功能点) |
| 📋 Planned | ICE 已打分,Tier 已定 | AI(完成打分) |
| 📝 PRD Done | PRD 已写完并通过自检 | AI(Phase 1 完成) |
| 🔨 In Progress | 正在开发 | AI(Phase 2 进行中) |
| 🔍 Review | 开发完成,等待你验证 | AI(Phase 2 完成) |
| ✅ Done | 已验证通过并提交 | 你(Phase 3 通过) |
| ❌ Cancelled | 取消不做 | 你(任何时候) |
项目根目录/
├── PRD.md ← 产品总文档(持续更新)
├── ROADMAP.md ← ICE + Tier + 状态总览
├── AGENTS.md ← 项目配置(技术栈、构建命令、特殊约束)
├── docs/
│ └── features/
│ ├── keyboard-navigation.md ← Phase 1 产出的小 PRD
│ └── session-notes.md ← Phase 1 产出的小 PRD
├── tests/
│ ├── unit/ ← 数据层 + 逻辑层测试
│ └── integration/ ← IPC / 跨模块测试
└── migrations/ ← 数据库迁移脚本
├── 001-initial.sql
├── 002-add-pinned.sql
└── 003-add-notes.sql
| 文件 | 写什么 | 什么时候更新 |
|---|---|---|
ROADMAP.md |
所有功能 + ICE 分数 + Tier + 状态 + 依赖 | Phase 1 开始时 |
docs/features/xxx.md |
单个功能的详细需求(小 PRD) | Phase 1 |
PRD.md |
产品整体描述 + 所有功能概述 | Phase 4 收尾时 |
AGENTS.md |
项目技术栈、构建命令、特殊约束 | 项目初始化时 |
migrations/xxx.sql |
数据库 schema 变更 | Phase 2 开发中 |
每个 docs/features/xxx.md 使用以下模板:
# {功能名} (ICE: {分数}, Tier: {N}, Estimate: {XS/S/M/L/XL})
## 用户故事
作为 {角色},我想要 {功能},以便 {价值}
## 验收标准
### 正常路径
- [ ] {具体可验证的条件}
- [ ] {具体可验证的条件}
### 边缘情况
- [ ] 空数据时的行为
- [ ] 极端数据量时的性能
- [ ] 与其他功能组合使用时的行为
## 影响范围
- 会修改的现有文件:
- 可能影响的现有功能:
- 新增文件:
## 技术方案
- 实现思路:
- 数据库变更:有/无(具体描述)
- 新增依赖:有/无(具体描述)
## 测试计划
- 测试用例 1:{描述} → 期望 {结果}
- 测试用例 2:{描述} → 期望 {结果}
## 回滚方案
- 数据库变更:有无,如有写回退 SQL
- 新增文件列表(便于删除)
## Out of Scope
- {明确列出本次不做的事情}
## 依赖
- Depends On:{依赖的其他功能,无则写"无"}
## 进度
- [ ] PRD 自检通过
- [ ] 测试用例已写完
- [ ] 实现代码已写完
- [ ] Lint / Typecheck 通过
- [ ] 构建验证通过
- [ ] 全量回归测试通过
- [ ] 等待用户验证
- [ ] 验证通过ROADMAP.md 中每个功能包含以下列:
| 列 | 说明 |
|---|---|
| 功能 | 功能名称 |
| I | Impact 必要性 (1-5) |
| C | Confidence 信心 (1-5) |
| E | Ease 容易度 (1-5) |
| ICE | I × C × E |
| Tier | 1/2/3/4 |
| Estimate | XS=2h / S=0.5d / M=1d / L=3d / XL=5d |
| Depends On | 依赖的其他功能 |
| Status | 状态(见状态流转) |
如果预估超过 L(3 天),AI 主动提出拆分为子功能,每个子功能单独走一遍完整流程。
例:Token/Cost 仪表盘(预估 5 天 = XL)可拆分为:
- 子功能 A:Token 数据聚合逻辑(M,1 天)
- 子功能 B:仪表盘 UI 渲染(M,1 天)
- 子功能 C:按日/周/月筛选(S,0.5 天)
Bug 不需要走完整流程,走简化版:
1. AI 确认 bug 可复现
2. 写测试(先复现 bug)
3. 修复代码
4. 测试通过 + Lint + Typecheck + 构建
5. 告诉你"已修复,请验证"
6. 你验证 → 通过 → commit
不需要 PRD、不需要 ROADMAP、不需要 Tier。
如果中途关了电脑或会话断开:
- AI 读取
docs/features/xxx.md的进度 checklist - 从第一个未勾选项继续
- 如果 checklist 已全部勾选但 ROADMAP 状态不是 Done → 说明在等你验证
| 没有流程 | 有流程 | |
|---|---|---|
| 功能选择 | 想到什么做什么 | ICE 打分 → Tier 分档 → 按顺序做 |
| AI 交互 | 频繁停下来问你 | 自主完成 95% 的决策 |
| 质量保证 | 没有测试,出回归 bug | TDD + 回归测试 |
| 方向把控 | 做 3 天发现方向不对 | PRD 自检确保方向正确 |
| 优先级 | 不知道哪个先做 | ROADMAP 一眼看清 |
| 文档 | 过了一周忘了为什么这样做 | 每个功能有完整 PRD + 进度 |
| 你的参与 | 每步都要确认 | 只在启动和验证时参与 |