欢迎光临
我们一直在努力

AI实战之小程序02-开工前我先让AI把产品和技术边界讲清楚

产品方案总览

摘要:本文分享了在开发Sourcelin Blog的Uniapp小程序时,如何先通过"产品与技术准备"阶段明确项目边界,避免AI在后续开发中盲目扩展。核心要点包括:1)将产品方案与登录策略拆分为独立文档,明确主路径与次级路径;2)定义8周开发阶段和P0/P1/P2功能优先级;3)建立移动端5大核心价值主张;4)创建接口矩阵和UI规范;5)通过结构化提示词限制AI自由发挥范围。这一阶段的价值在于为后续开发提供稳定起点,减少返工。

很多人一做小程序就先让 AI 开页面,我这次没有这么干。Sourcelin Blog 的 Uniapp 小程序在真正写功能前,先完成的是“产品与技术准备”:把页面范围、接口矩阵、UI 方向、登录策略和工程边界讲清楚。这个阶段看起来不像功能开发那么显眼,但它决定了后面每一步会不会返工。

我现在越来越确定一件事:
AI 进入一个真实项目,第一步不是写代码,而是先知道这个项目到底准备做成什么、哪些东西是首版、哪些东西只是预留、哪些边界绝对不能混。

如果这一层没讲清楚,后面的所有提示词都会越来越像“边做边猜”:

  • 这个入口是不是首版就该有
  • 微信登录到底是直登还是强制绑定
  • 树洞、说说、消息是不是都要一次性做完
  • 小程序要不要把 PC 端所有功能都搬过来

这些问题如果不先在文档层收口,AI 每一轮都会重新猜一次。

项目入口先放这里:

  • 在线演示:https://sourcelin.cn
  • Gitee:https://gitee.com/my_lyq/sourcelin-cloud-blog
  • GitHub:https://github.com/SourceLin/sourcelin-cloud-blog

这个阶段到底在准备什么

产品与技术准备流程图

以下是"产品与技术准备"阶段的完整工作流程:

#mermaid-svg-pMPHJB2TxHUIYetb{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pMPHJB2TxHUIYetb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pMPHJB2TxHUIYetb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pMPHJB2TxHUIYetb .error-icon{fill:#552222;}#mermaid-svg-pMPHJB2TxHUIYetb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pMPHJB2TxHUIYetb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pMPHJB2TxHUIYetb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pMPHJB2TxHUIYetb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pMPHJB2TxHUIYetb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pMPHJB2TxHUIYetb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pMPHJB2TxHUIYetb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pMPHJB2TxHUIYetb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pMPHJB2TxHUIYetb .marker.cross{stroke:#333333;}#mermaid-svg-pMPHJB2TxHUIYetb svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pMPHJB2TxHUIYetb p{margin:0;}#mermaid-svg-pMPHJB2TxHUIYetb .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-pMPHJB2TxHUIYetb .cluster-label text{fill:#333;}#mermaid-svg-pMPHJB2TxHUIYetb .cluster-label span{color:#333;}#mermaid-svg-pMPHJB2TxHUIYetb .cluster-label span p{background-color:transparent;}#mermaid-svg-pMPHJB2TxHUIYetb .label text,#mermaid-svg-pMPHJB2TxHUIYetb span{fill:#333;color:#333;}#mermaid-svg-pMPHJB2TxHUIYetb .node rect,#mermaid-svg-pMPHJB2TxHUIYetb .node circle,#mermaid-svg-pMPHJB2TxHUIYetb .node ellipse,#mermaid-svg-pMPHJB2TxHUIYetb .node polygon,#mermaid-svg-pMPHJB2TxHUIYetb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pMPHJB2TxHUIYetb .rough-node .label text,#mermaid-svg-pMPHJB2TxHUIYetb .node .label text,#mermaid-svg-pMPHJB2TxHUIYetb .image-shape .label,#mermaid-svg-pMPHJB2TxHUIYetb .icon-shape .label{text-anchor:middle;}#mermaid-svg-pMPHJB2TxHUIYetb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-pMPHJB2TxHUIYetb .rough-node .label,#mermaid-svg-pMPHJB2TxHUIYetb .node .label,#mermaid-svg-pMPHJB2TxHUIYetb .image-shape .label,#mermaid-svg-pMPHJB2TxHUIYetb .icon-shape .label{text-align:center;}#mermaid-svg-pMPHJB2TxHUIYetb .node.clickable{cursor:pointer;}#mermaid-svg-pMPHJB2TxHUIYetb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-pMPHJB2TxHUIYetb .arrowheadPath{fill:#333333;}#mermaid-svg-pMPHJB2TxHUIYetb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pMPHJB2TxHUIYetb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pMPHJB2TxHUIYetb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pMPHJB2TxHUIYetb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-pMPHJB2TxHUIYetb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pMPHJB2TxHUIYetb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-pMPHJB2TxHUIYetb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pMPHJB2TxHUIYetb .cluster text{fill:#333;}#mermaid-svg-pMPHJB2TxHUIYetb .cluster span{color:#333;}#mermaid-svg-pMPHJB2TxHUIYetb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pMPHJB2TxHUIYetb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-pMPHJB2TxHUIYetb rect.text{fill:none;stroke-width:0;}#mermaid-svg-pMPHJB2TxHUIYetb .icon-shape,#mermaid-svg-pMPHJB2TxHUIYetb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pMPHJB2TxHUIYetb .icon-shape p,#mermaid-svg-pMPHJB2TxHUIYetb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-pMPHJB2TxHUIYetb .icon-shape .label rect,#mermaid-svg-pMPHJB2TxHUIYetb .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pMPHJB2TxHUIYetb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-pMPHJB2TxHUIYetb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-pMPHJB2TxHUIYetb :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

启动小程序项目

产品与技术准备阶段

核心准备工作

页面范围确认

接口矩阵定义

UI设计语言确认

登录策略制定

工程脚手架搭建

确定P0/P1/P2功能优先级

复用front接口 vs 新增接口

移动端5大价值主张

主路径:微信直登次级路径:账号绑定

Uniapp项目结构

输出产品方案文档

输出接口矩阵

输出UI规范

输出登录策略文档

落地Uniapp脚手架

沉淀为可复用资产

进入下一阶段基础框架开发

产品文档里对“产品与技术准备”的目标写得很直接:确认页面范围、接口矩阵、UI 基础规范和 Uniapp 项目脚手架。当前仓库里也能看到这一步的结果已经落地:

  • UNIAPP_MINI_PROGRAM_PRODUCT_DESIGN.md
  • UNIAPP_MINI_PROGRAM_WECHAT_LOGIN_STRATEGY.md
  • sourcelin-ui/sourcelin-ui-uniapp

也就是说,这一步不是停留在“开会结论”,而是已经沉淀成后续开发会反复引用的真实资产。

我为什么要把产品方案和登录策略拆开

微信登录策略流程图

登录策略文档中明确的主路径与次级路径设计:

#mermaid-svg-wTyBuLTMWIrM5uQ8{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .error-icon{fill:#552222;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .marker.cross{stroke:#333333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wTyBuLTMWIrM5uQ8 p{margin:0;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .cluster-label text{fill:#333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .cluster-label span{color:#333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .cluster-label span p{background-color:transparent;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .label text,#mermaid-svg-wTyBuLTMWIrM5uQ8 span{fill:#333;color:#333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .node rect,#mermaid-svg-wTyBuLTMWIrM5uQ8 .node circle,#mermaid-svg-wTyBuLTMWIrM5uQ8 .node ellipse,#mermaid-svg-wTyBuLTMWIrM5uQ8 .node polygon,#mermaid-svg-wTyBuLTMWIrM5uQ8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .rough-node .label text,#mermaid-svg-wTyBuLTMWIrM5uQ8 .node .label text,#mermaid-svg-wTyBuLTMWIrM5uQ8 .image-shape .label,#mermaid-svg-wTyBuLTMWIrM5uQ8 .icon-shape .label{text-anchor:middle;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .rough-node .label,#mermaid-svg-wTyBuLTMWIrM5uQ8 .node .label,#mermaid-svg-wTyBuLTMWIrM5uQ8 .image-shape .label,#mermaid-svg-wTyBuLTMWIrM5uQ8 .icon-shape .label{text-align:center;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .node.clickable{cursor:pointer;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .arrowheadPath{fill:#333333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-wTyBuLTMWIrM5uQ8 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wTyBuLTMWIrM5uQ8 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-wTyBuLTMWIrM5uQ8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .cluster text{fill:#333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .cluster span{color:#333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-wTyBuLTMWIrM5uQ8 rect.text{fill:none;stroke-width:0;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .icon-shape,#mermaid-svg-wTyBuLTMWIrM5uQ8 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .icon-shape p,#mermaid-svg-wTyBuLTMWIrM5uQ8 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .icon-shape .label rect,#mermaid-svg-wTyBuLTMWIrM5uQ8 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wTyBuLTMWIrM5uQ8 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-wTyBuLTMWIrM5uQ8 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-wTyBuLTMWIrM5uQ8 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

已绑定

未绑定

用户点击微信一键登录

后端获取code

查询openId绑定状态

直接登录成功

自动创建mini账号

进入产品主界面

正常使用小程序

用户主动选择绑定已有账号

输入Web账号信息

验证并绑定

登录成功

图注:绿色为主路径,橙色为自动创建路径,粉色为次级路径

当前仓库里哪些文件能证明这一步已经完成

8周开发阶段甘特图

产品方案中定义的8周开发阶段时间线如下:

#mermaid-svg-D50nFKXTu1rsuDdT{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-D50nFKXTu1rsuDdT .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-D50nFKXTu1rsuDdT .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-D50nFKXTu1rsuDdT .error-icon{fill:#552222;}#mermaid-svg-D50nFKXTu1rsuDdT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-D50nFKXTu1rsuDdT .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-D50nFKXTu1rsuDdT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-D50nFKXTu1rsuDdT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-D50nFKXTu1rsuDdT .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-D50nFKXTu1rsuDdT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-D50nFKXTu1rsuDdT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-D50nFKXTu1rsuDdT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-D50nFKXTu1rsuDdT .marker.cross{stroke:#333333;}#mermaid-svg-D50nFKXTu1rsuDdT svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-D50nFKXTu1rsuDdT p{margin:0;}#mermaid-svg-D50nFKXTu1rsuDdT .mermaid-main-font{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-D50nFKXTu1rsuDdT .exclude-range{fill:#eeeeee;}#mermaid-svg-D50nFKXTu1rsuDdT .section{stroke:none;opacity:0.2;}#mermaid-svg-D50nFKXTu1rsuDdT .section0{fill:rgba(102, 102, 255, 0.49);}#mermaid-svg-D50nFKXTu1rsuDdT .section2{fill:#fff400;}#mermaid-svg-D50nFKXTu1rsuDdT .section1,#mermaid-svg-D50nFKXTu1rsuDdT .section3{fill:white;opacity:0.2;}#mermaid-svg-D50nFKXTu1rsuDdT .sectionTitle0{fill:#333;}#mermaid-svg-D50nFKXTu1rsuDdT .sectionTitle1{fill:#333;}#mermaid-svg-D50nFKXTu1rsuDdT .sectionTitle2{fill:#333;}#mermaid-svg-D50nFKXTu1rsuDdT .sectionTitle3{fill:#333;}#mermaid-svg-D50nFKXTu1rsuDdT .sectionTitle{text-anchor:start;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-D50nFKXTu1rsuDdT .grid .tick{stroke:lightgrey;opacity:0.8;shape-rendering:crispEdges;}#mermaid-svg-D50nFKXTu1rsuDdT .grid .tick text{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;fill:#333;}#mermaid-svg-D50nFKXTu1rsuDdT .grid path{stroke-width:0;}#mermaid-svg-D50nFKXTu1rsuDdT .today{fill:none;stroke:red;stroke-width:2px;}#mermaid-svg-D50nFKXTu1rsuDdT .task{stroke-width:2;}#mermaid-svg-D50nFKXTu1rsuDdT .taskText{text-anchor:middle;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-D50nFKXTu1rsuDdT .taskTextOutsideRight{fill:black;text-anchor:start;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-D50nFKXTu1rsuDdT .taskTextOutsideLeft{fill:black;text-anchor:end;}#mermaid-svg-D50nFKXTu1rsuDdT .task.clickable{cursor:pointer;}#mermaid-svg-D50nFKXTu1rsuDdT .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-D50nFKXTu1rsuDdT .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-D50nFKXTu1rsuDdT .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:bold;}#mermaid-svg-D50nFKXTu1rsuDdT .taskText0,#mermaid-svg-D50nFKXTu1rsuDdT .taskText1,#mermaid-svg-D50nFKXTu1rsuDdT .taskText2,#mermaid-svg-D50nFKXTu1rsuDdT .taskText3{fill:white;}#mermaid-svg-D50nFKXTu1rsuDdT .task0,#mermaid-svg-D50nFKXTu1rsuDdT .task1,#mermaid-svg-D50nFKXTu1rsuDdT .task2,#mermaid-svg-D50nFKXTu1rsuDdT .task3{fill:#8a90dd;stroke:#534fbc;}#mermaid-svg-D50nFKXTu1rsuDdT .taskTextOutside0,#mermaid-svg-D50nFKXTu1rsuDdT .taskTextOutside2{fill:black;}#mermaid-svg-D50nFKXTu1rsuDdT .taskTextOutside1,#mermaid-svg-D50nFKXTu1rsuDdT .taskTextOutside3{fill:black;}#mermaid-svg-D50nFKXTu1rsuDdT .active0,#mermaid-svg-D50nFKXTu1rsuDdT .active1,#mermaid-svg-D50nFKXTu1rsuDdT .active2,#mermaid-svg-D50nFKXTu1rsuDdT .active3{fill:#bfc7ff;stroke:#534fbc;}#mermaid-svg-D50nFKXTu1rsuDdT .activeText0,#mermaid-svg-D50nFKXTu1rsuDdT .activeText1,#mermaid-svg-D50nFKXTu1rsuDdT .activeText2,#mermaid-svg-D50nFKXTu1rsuDdT .activeText3{fill:black!important;}#mermaid-svg-D50nFKXTu1rsuDdT .done0,#mermaid-svg-D50nFKXTu1rsuDdT .done1,#mermaid-svg-D50nFKXTu1rsuDdT .done2,#mermaid-svg-D50nFKXTu1rsuDdT .done3{stroke:grey;fill:lightgrey;stroke-width:2;}#mermaid-svg-D50nFKXTu1rsuDdT .doneText0,#mermaid-svg-D50nFKXTu1rsuDdT .doneText1,#mermaid-svg-D50nFKXTu1rsuDdT .doneText2,#mermaid-svg-D50nFKXTu1rsuDdT .doneText3{fill:black!important;}#mermaid-svg-D50nFKXTu1rsuDdT .doneText0.taskTextOutsideLeft,#mermaid-svg-D50nFKXTu1rsuDdT .doneText0.taskTextOutsideRight,#mermaid-svg-D50nFKXTu1rsuDdT .doneText1.taskTextOutsideLeft,#mermaid-svg-D50nFKXTu1rsuDdT .doneText1.taskTextOutsideRight,#mermaid-svg-D50nFKXTu1rsuDdT .doneText2.taskTextOutsideLeft,#mermaid-svg-D50nFKXTu1rsuDdT .doneText2.taskTextOutsideRight,#mermaid-svg-D50nFKXTu1rsuDdT .doneText3.taskTextOutsideLeft,#mermaid-svg-D50nFKXTu1rsuDdT .doneText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-D50nFKXTu1rsuDdT .crit0,#mermaid-svg-D50nFKXTu1rsuDdT .crit1,#mermaid-svg-D50nFKXTu1rsuDdT .crit2,#mermaid-svg-D50nFKXTu1rsuDdT .crit3{stroke:#ff8888;fill:red;stroke-width:2;}#mermaid-svg-D50nFKXTu1rsuDdT .activeCrit0,#mermaid-svg-D50nFKXTu1rsuDdT .activeCrit1,#mermaid-svg-D50nFKXTu1rsuDdT .activeCrit2,#mermaid-svg-D50nFKXTu1rsuDdT .activeCrit3{stroke:#ff8888;fill:#bfc7ff;stroke-width:2;}#mermaid-svg-D50nFKXTu1rsuDdT .doneCrit0,#mermaid-svg-D50nFKXTu1rsuDdT .doneCrit1,#mermaid-svg-D50nFKXTu1rsuDdT .doneCrit2,#mermaid-svg-D50nFKXTu1rsuDdT .doneCrit3{stroke:#ff8888;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges;}#mermaid-svg-D50nFKXTu1rsuDdT .milestone{transform:rotate(45deg) scale(0.8,0.8);}#mermaid-svg-D50nFKXTu1rsuDdT .milestoneText{font-style:italic;}#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText0,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText1,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText2,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText3{fill:black!important;}#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText0.taskTextOutsideLeft,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText0.taskTextOutsideRight,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText1.taskTextOutsideLeft,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText1.taskTextOutsideRight,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText2.taskTextOutsideLeft,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText2.taskTextOutsideRight,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText3.taskTextOutsideLeft,#mermaid-svg-D50nFKXTu1rsuDdT .doneCritText3.taskTextOutsideRight{fill:black!important;}#mermaid-svg-D50nFKXTu1rsuDdT .vert{stroke:navy;}#mermaid-svg-D50nFKXTu1rsuDdT .vertText{font-size:15px;text-anchor:middle;fill:navy!important;}#mermaid-svg-D50nFKXTu1rsuDdT .activeCritText0,#mermaid-svg-D50nFKXTu1rsuDdT .activeCritText1,#mermaid-svg-D50nFKXTu1rsuDdT .activeCritText2,#mermaid-svg-D50nFKXTu1rsuDdT .activeCritText3{fill:black!important;}#mermaid-svg-D50nFKXTu1rsuDdT .titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}#mermaid-svg-D50nFKXTu1rsuDdT :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;} 01/05 01/12 01/19 01/26 02/02 02/09 02/16 02/23产品与技术准备 基础框架 内容阅读 搜索与互动 用户资产 社区扩展 兼容与性能 联调验收 第一阶段第二阶段第三阶段第四阶段第五阶段第六阶段第七阶段第八阶段Sourcelin小程序8周开发计划

我觉得这一步最容易被低估的点,是接口矩阵和页面边界。如果不先讲清移动端复用哪些 /front/** 接口、哪些能力要新增、哪些入口暂时降级,AI 很容易默认“有页面就应该有完整功能”,结果设计出来的不是小程序,而是把 PC 博客缩小后的入口集合。

Sourcelin 这一步目前能确认完成,是因为几个硬证据都已经存在:

  • 产品方案文档已经把 8 个大阶段、页面结构、功能优先级和验收口径写清。
  • 微信登录策略文档已经把直登、绑定旧账号和备用登录拆清。
  • Uniapp 脚手架已经落到仓库,不是文档空转。
  • 比如产品方案里已经把阶段写成:

    第 1 周:产品与技术准备
    第 2 周:基础框架
    第 3 周:内容阅读
    第 4 周:搜索与互动
    第 5 周:用户资产
    第 6 周:社区扩展
    第 7 周:兼容与性能
    第 8 周:联调验收

    这类阶段拆法对 AI 很重要,因为它让任务不再是“把小程序做完”,而是“这次只处理哪一段”。

    我现在会怎么给 AI 下这类任务

    AI提示词优化结构图

    优化后的提示词结构设计:

    #mermaid-svg-InjpOtMFtJnzAb3K{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-InjpOtMFtJnzAb3K .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-InjpOtMFtJnzAb3K .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-InjpOtMFtJnzAb3K .error-icon{fill:#552222;}#mermaid-svg-InjpOtMFtJnzAb3K .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-InjpOtMFtJnzAb3K .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-InjpOtMFtJnzAb3K .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-InjpOtMFtJnzAb3K .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-InjpOtMFtJnzAb3K .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-InjpOtMFtJnzAb3K .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-InjpOtMFtJnzAb3K .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-InjpOtMFtJnzAb3K .marker{fill:#333333;stroke:#333333;}#mermaid-svg-InjpOtMFtJnzAb3K .marker.cross{stroke:#333333;}#mermaid-svg-InjpOtMFtJnzAb3K svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-InjpOtMFtJnzAb3K p{margin:0;}#mermaid-svg-InjpOtMFtJnzAb3K .edge{stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .section–1 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section–1 path,#mermaid-svg-InjpOtMFtJnzAb3K .section–1 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section–1 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section–1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section–1 text{fill:#ffffff;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon–1{font-size:40px;color:#ffffff;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge–1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth–1{stroke-width:17;}#mermaid-svg-InjpOtMFtJnzAb3K .section–1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-0 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-0 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-0 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-0 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-0 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-0{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-0{stroke-width:14;}#mermaid-svg-InjpOtMFtJnzAb3K .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-1 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-1 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-1 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-1 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-1 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-1{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-1{stroke-width:11;}#mermaid-svg-InjpOtMFtJnzAb3K .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-2 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-2 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-2 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-2 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-2 text{fill:#ffffff;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-2{stroke-width:8;}#mermaid-svg-InjpOtMFtJnzAb3K .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-3 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-3 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-3 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-3 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-3 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-3{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-3{stroke-width:5;}#mermaid-svg-InjpOtMFtJnzAb3K .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-4 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-4 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-4 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-4 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-4 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-4{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-4{stroke-width:2;}#mermaid-svg-InjpOtMFtJnzAb3K .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-5 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-5 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-5 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-5 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-5 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-5{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-5{stroke-width:-1;}#mermaid-svg-InjpOtMFtJnzAb3K .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-6 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-6 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-6 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-6 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-6 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-6{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-6{stroke-width:-4;}#mermaid-svg-InjpOtMFtJnzAb3K .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-7 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-7 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-7 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-7 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-7 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-7{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-7{stroke-width:-7;}#mermaid-svg-InjpOtMFtJnzAb3K .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-8 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-8 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-8 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-8 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-8 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-8{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-8{stroke-width:-10;}#mermaid-svg-InjpOtMFtJnzAb3K .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-9 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-9 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-9 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-9 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-9 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-9{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-9{stroke-width:-13;}#mermaid-svg-InjpOtMFtJnzAb3K .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-10 rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-10 path,#mermaid-svg-InjpOtMFtJnzAb3K .section-10 circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-10 polygon,#mermaid-svg-InjpOtMFtJnzAb3K .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-10 text{fill:black;}#mermaid-svg-InjpOtMFtJnzAb3K .node-icon-10{font-size:40px;color:black;}#mermaid-svg-InjpOtMFtJnzAb3K .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .edge-depth-10{stroke-width:-16;}#mermaid-svg-InjpOtMFtJnzAb3K .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled,#mermaid-svg-InjpOtMFtJnzAb3K .disabled circle,#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:lightgray;}#mermaid-svg-InjpOtMFtJnzAb3K .disabled text{fill:#efefef;}#mermaid-svg-InjpOtMFtJnzAb3K .section-root rect,#mermaid-svg-InjpOtMFtJnzAb3K .section-root path,#mermaid-svg-InjpOtMFtJnzAb3K .section-root circle,#mermaid-svg-InjpOtMFtJnzAb3K .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-InjpOtMFtJnzAb3K .section-root text{fill:#ffffff;}#mermaid-svg-InjpOtMFtJnzAb3K .section-root span{color:#ffffff;}#mermaid-svg-InjpOtMFtJnzAb3K .section-2 span{color:#ffffff;}#mermaid-svg-InjpOtMFtJnzAb3K .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-InjpOtMFtJnzAb3K .edge{fill:none;}#mermaid-svg-InjpOtMFtJnzAb3K .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-InjpOtMFtJnzAb3K :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    结构化AI提示词

    前置约束

    读取仓库文档

    AGENTS.md

    rules/api-contract.md

    rules/frontend-uniapp.md

    UNIAPP_MINI_PROGRAM_PRODUCT_DESIGN.md

    UNIAPP_MINI_PROGRAM_WECHAT_LOGIN_STRATEGY.md

    阶段限制

    只处理"产品与技术准备"

    不进入具体页面实现

    核心输出要求

    页面范围确认

    接口矩阵确认

    :复用哪些/front/接口

    :哪些需要新增

    :哪些暂时降级

    UI设计语言方向

    移动端5大价值主张

    随时阅读

    轻量互动

    内容回访

    多端一致

    渐进扩展

    登录策略边界

    主路径:微信直登

    次级路径:账号绑定

    首版不做功能

    P2功能排除

    完整文章发布

    复杂消息系统

    全部导航能力

    下一阶段实施边界

    输出格式要求

    文档中已固定内容

    待联调项目

    后续易跑偏边界

    下一阶段进入点

    如果让我重新开始一次,我不会只说“帮我规划一下小程序”。我更倾向于这种任务写法:

    请先读取仓库根 AGENTS.md、rules/api-contract.md、rules/frontend-uniapp.md,
    再读取 docs/product/UNIAPP_MINI_PROGRAM_PRODUCT_DESIGN.md 和
    docs/product/UNIAPP_MINI_PROGRAM_WECHAT_LOGIN_STRATEGY.md。

    本次只处理“产品与技术准备”阶段,不进入具体页面实现。

    请输出:
    1. 页面范围
    2. 接口矩阵
    3. UI 设计语言方向
    4. 登录策略主路径与次级路径
    5. 首版不做的功能
    6. 下一阶段的实施边界

    这段提示词的关键不在于字多,而在于先把 AI 的自由发挥范围收小。

    一段更有价值的“准备结果”

    我现在更看重的不是文档写了多少字,而是它有没有让后面的开发更少返工。

    比如产品文档里已经把移动端核心价值主张收成了 5 条:

    1. 随时阅读
    2. 轻量互动
    3. 内容回访
    4. 多端一致
    5. 渐进扩展

    有了这种收口,AI 再去写首页、详情、搜索、收藏和树洞时,基本就不会把小程序误做成后台,也不会默认要把 PC 端所有能力一股脑搬过来。

    工程入口

    Uniapp工程入口

    开发过程提示词(优化版)

    请先读取仓库根 AGENTS.md、rules/api-contract.md、rules/frontend-uniapp.md,
    以及 docs/product/UNIAPP_MINI_PROGRAM_PRODUCT_DESIGN.md、
    docs/product/UNIAPP_MINI_PROGRAM_WECHAT_LOGIN_STRATEGY.md。

    本次只处理“产品与技术准备”,不要直接开始补页面功能。

    请先完成:
    1. 页面范围确认
    2. 接口矩阵确认
    3. UI 规范与设计语言确认
    4. 登录策略边界确认
    5. Uniapp 工程目录与脚手架入口确认

    输出时必须说明:
    1. 哪些内容已经在文档中固定
    2. 哪些内容仍是待联调项
    3. 后续阶段最容易跑偏的边界
    4. 下一阶段应该进入什么

    这类任务里 AI 最容易跑偏的点

    • 还没讲清阶段边界,就直接开始做页面
    • 把微信直登、账号绑定、资料补全写成一条流程
    • 把 P2 功能提前塞进首版,比如完整文章发布、复杂消息系统、全部导航能力
    • 没先确定接口矩阵,就默认所有页面都应该有完整交互

    产品与技术准备完成之后,后面的开发才有稳定起点。对我来说,这一步最大的价值不是“写了一堆文档”,而是让 AI 后面不再凭感觉扩展范围,而是按阶段、按边界、按验证口径推进。

    项目地址

    • 在线演示:https://sourcelin.cn
    • Gitee:https://gitee.com/my_lyq/sourcelin-cloud-blog
    • GitHub:https://github.com/SourceLin/sourcelin-cloud-blog
    赞(0)
    未经允许不得转载:171主机测评 » AI实战之小程序02-开工前我先让AI把产品和技术边界讲清楚
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址