发布于 2026-09-19 · 4 分钟阅读

想法和 app 之间,隔着一份 PRD

PFEx 的第一行代码之前,先有的是几份文档。这篇讲我怎么把一个想法和 AI 聊成 PRD、再把 PRD 拆成组件与里程碑,然后按周一步步把它做出来。

阅读英文版本

我想做一个把个人财务当成市场的应用。动手之前,我先做的不是界面,也不是代码,而是把一个还很模糊的想法,和 AI 聊成一份能执行的文档。

先有一个想法

一开始我手里只有一句:记账软件都在报流水,我想让你像看大盘一样看自己的钱。

这句话能当方向,不能当需求。它没说清楚要回答什么问题,也没说清楚不做什么。所以我没有直接开写,而是先坐下来把它逼成几句话。

这个想法本身长什么样,我写在后来的《最初的构思》里。这篇只讲怎么把它一步步做出来。

和 AI 把需求聊清楚

我把那句想法丢给 AI,然后一轮一轮往下问。问的不是"你觉得好不好",而是那些我自己回答不了的细节。问得最多的三个:它到底回答什么问题;那套证券语言里哪些词要真的落到数据模型里、哪些只是界面上好看;哪些事坚决不做。

答案后来都写进了产品设定,这里不展开。真正有价值的是这几轮的问法:它把我的"我觉得不错"换成了"我要回答什么、我不做什么"。

让 AI 写出 PRD

需求聊清楚之后,我让 AI 把它们整理成一份 PRD,放在 doc/prd.md。它改过三轮,最后一版以现有实现为准重写,取代了前面两份拼接稿。

我在 PRD 上只坚持一件事:它得是一份能拿来比对的基准。后面每个任务的验收标准,都要能指回它的某一条。

把 PRD 拆成任务

PRD 是"要什么",还不能直接开工。我接着让 AI 把它拆成任务,产出 doc/tasks.md,标的是 v1.0,日期 2026 年 9 月 19 日。

拆分不按页面来,按组件。所有东西先归成四类:基础设施(core 与 data)、计算引擎(domain/engine 里的纯 Dart)、UI 组件、以及页面模块。层与层之间定死方向:页面只依赖引擎的接口,引擎不碰 IO,data 实现仓库,core 谁都能用。

我还塞了几条硬规则进去,当代码评审的卡点用。两条记得最清:

  • 引擎目录里禁止 import drift、flutter 和 dart:io,这样引擎能独立跑单测;
  • 所有面向用户的字符串必须出自多语言资源文件,不许硬编码。

然后是里程碑。整件事排成 12 周,从 M0 到 M11,每周一个主题:第一周基建与数据层,第二周核心交易流,第三周计算引擎群,然后是看盘 UI、复盘、状态系统、双语、页面补齐、可发布、日韩双语、AI 研报、上架打磨。

每个任务我都要求写清楚四件事:属于哪个组件、依赖哪个前置任务、验收标准对应 PRD 哪一条、用什么测试收口。这几样写全了,任务才真的是可独立开发、可独立验收的。

按里程碑一步步做

有了任务表,剩下的就是按周推进。我让 AI 一次领一个里程碑里的任务,按前面的约定把代码和测试一起交出来。

拿计算引擎那一周举例。验收标准和测试要求我先写死:空账户、负余额、跨天流水这些边界都要覆盖。AI 照着这个标准把引擎和单测一起交出来。引擎是纯函数、不碰 IO,所以这几条能直接跑。

再往后,AI 写页面、写组件、写多语言文案,也写单元测试。每周结束我拿验收标准过一遍,对不上的打回去重做。这套流程里,AI 产出的东西很多,但判断"对不对"的标准,始终是我先写进文档里的那些条款。

复盘

回头看,最开始那几轮聊需求花的功夫,后面全赚回来了,而且赚在过程上:

  • 需求聊成能被验收的条款,后面 AI 才有标准可对,不用靠猜;
  • 先把"不做什么"写进文档,拆任务时才不会自己往里加东西;
  • 任务写成"组件加前置加验收加测试",才能一周一周地独立交付;
  • 文档改了就以最新版为准,每次让 AI 从最新版出发。

想法容易有,一份能被验收的文档不容易有。这中间隔着的,就是我开头和 AI 聊的那几轮。

← 上一篇最初的构思:把一个人的财务当成一个市场

返回开发日志 · 返回个交所首页